자료구조, 운영체제, 네트워크, 시스템설계/NCS

시스템 설계1 : 시스템 개요 및 발단 단계, 시스템 개발 절차, 소프트웨어 개발 절차

개발자 aloe 2022. 11. 19. 18:39
728x90

개발자들 세계에서 시니어들이 시스템 설계를 한다는 이야기를 들어본적이 있을것이다.

도대체 그게 뭔가? 코드만 짜면 되는게 아닌가 라는 생각을 할 수 있지만 

내가 생각하기에 이러한 개념없이 단순 코드만 짜는 사람을 코더 라고 생각하며

어느정도 시스템 설계 단계를 거치고 코드를 짜는 사람을 개발자라고 할 수 있지 않나 라는 생각을 하고있다.

나 역시 많이 부족하지만 오늘은 시스템 설계가 무엇인지 알아보기 위한 첫 시간을 가져보도록 하겠다.

 

일단 여담으로 아래와 같은 명품 시계의 모습을 보자. 엄청나게 정교하며 각 부품 태엽들이 맞물려 돌아가고 있다.

이 시계를 만드는 장인과 우리 개발자들은 뭔가 비슷한 모습이다 있다.

시계라는 개념대신 프로그램을 즉 어떠한 앱을 만들거나 웹을 만들거나 등 어떻게 이것에 대하여 각 기능, 부품 등을 만들지, 맞물려 잘돌아게 할지에 대하여 정의 하는게 개발자의 시스템 설계 라고 생각한다. 

 

https://kimssine.tistory.com/39

 

 

시스템이란?

 

정의 

System =시스템= 체계 

공통점인 목적을 가지고 있는 구성 요소들을 상호 결합 

유기적인 집합체 : 구성체들이 서로 밀접하게 관련을 가지고 있어서 떼어 낼 수 없음

 

특성

  • 목적성 : 구성요소의 기능은 서로 다르나, 하나의 공통된 목적을 가짐
  • 자동성 : 조건에 따라 가장 적절한 처리로 대응 
  • 제어성 : 이상에 대한 사전 감지 및 수정 (규칙에 이탈되는 상황에 대한 감지 및 수정) 
  • 종합성 : 여러 구성 요소들의 집합 => 종합적으로 동작

 

기본 요소

입력(Input) : 처리 방법, 제어 조건, 처리할 데이터를 투입

출력(Output) : 처리된 결과를 출력

처리(Process) : 입력된 자료를 처리 조건에 따라 변환 및 가공

제어(Control) : 기본요소들이 각 과정을 올바르게 행하는지 감독 

피드백(Feedback) : 처리된 결과가 만족되기 위한 재입력

 

 

시스템 분석가(SA)

  • 개념  SA: System Analyst 
  • 전반적 시스템과 요구 사항을 파악하고 해결책을 마련하는 사람 
  • 목적과 현 시스템의 문제점을 알고 해결책을 제시할 수 있는 사람 
  • 업무 내용 또는 시스템 분석능력 보유
  • 컴퓨터 기술과 관리 기법을 앎
  •  시간 관리를 잘 하는 사람 
  • 컴퓨터 H/W와 S/W에 대한 전반적인 지식의 소유자 
  • 업계의 동향 및 관계 법규 등을 잘 파악 
  • 창조력, 응용력, 현장 분석 경험이 풍부 
  • 사용자와 프로그래머, 경영진 간의 의사소통을 중재

이글을 읽고 있는 독자들은 스스로 판단하기에 각 항목에 따라 점수를 매겨 보기 바란다. (각 항목 10점 만점)

 

 

시스템 개발 절차 

SDLC : System Development Life Cycle

시스템 개발 과정에서 공통적으로 반복되는 단계

 

순서: 시스템 조사 => 시스템 분석 => 시스템 설계 => 시스템 구현 => 테스트 => 시스템 운용 => 유지보수

 

1. 시스템 조사 : 문제 제기에 따른 예비 조사와 기초 조사를 포함

2. 시스템 분석 : 요구 분석 명세서 작성(SRD), 기능 분석, 예비 설계, 비용 분석 수행

3. 시스템 설계 : – 구체화, 기본 설계(PDR), 상세설계(CDR)를 수행

4. 시스템 구현 : 프로그래밍 (이 부분만 한다면 단순 코더)

5. 테스트 : – 사용자 요구사항 검증(통합 테스트, 시스템 테스트, 인수 테스트)

6. 시스템 운용 : 실제 업무에 활용

7. 유지 보수 : 수정/적응/완전/예방 유지보수

 


그렇다면 이 시스템 개발을 소프트웨어 관점에서 바라봐 보자 

 

소프트웨어 개발 절차 

순서: 요구 분석 => 설계 => 구현(코딩) => 테스트(시험) => 유지보수

 

1. 요구분석

– 소프트웨어의 기능, 성능, 제약 조건 등에 대하여 기술하고 검토 (자료 수집 → 요구 사항 도출 → 문서화 → 검증)

– 기능적, 비기능적, 사용자, 시스템 요구 사항 등으로 분류

– 산출물: 요구 분석 명세서(SRS)

 

2. 설계 – 산출물: 설계서(SDD)

3. 구현 – 프로그래밍

4. 테스트 – 단위, 통합, 시스템, 인수/수락 시험

5. 유지보수

 

 

 

728x90