프로그램 아키텍쳐/소프트웨어공학

시스템 개발 단계

본클라쓰 2012. 3. 5. 11:24

 

시스템 개발 주기와 소프트웨어 수명 주기에서 가장 큰 동통점은 시스템이 사용자에게 무엇(what)을 제공하는가를 먼저 정의하고, 시스템 구현에 필요한 어떻게(how)는 나중에 설계한다는 점이다.

이것은 사용자의 관심과 평가가 집중되는 시스템 외부가 확정되어야 시스템 구현에 따른 시행 착오를 줄일 수 있기 때문이다.

 

시스템 개발 단계는 시스템 개발 주기나 소프트웨어 수명주기가 서로 혼용되어 사용되고 있지만, 여기서는 소프트웨어 수명 주기의 각 단계를 중심으로 한 시스템 계획, 시스템 분석, 시스템 설계, 시스템 구현, 시스템 시험, 시스템 유지 보수 순서로 간략하게 살펴본다.

 

 

1. 시스템 계획(System Planning)

 

시스템 계획은 새로운 시스템을 개발할 것인지에 대한 예비 조사 또는 개선된 시스템을 개발할 것인지에 대한 기초 조사를 통하여 시스템의 목적, 주요 기능, 성능 등의 자료 수집(면담 조사, 질문 조사, 관찰 조사 등)을 토대로 사용자가 당면하고 있는 문제점을 발견하고, 발견한 문제들에 대해서 해결 방법이 있는지를 찾아내어 개선안을 제시하며, 사용자의 요구 사항을 명확히 설정하는 단계이다.

 

현 시스템의 문제점 분석 및 개선안을 파악하여 사용자의 요구 사항을 충족시킬 수 있는 시스템의 정의, 명확한 목적 및 목표를 설정하여 시스템의 개발에 대한 검토(시장 점유율, 개발비용의 효율성 등) 및 기술적 타당성 검토(개발 능력, 사용 환결의 적합성 등), 대체 방안들을 조사하여 개발 여부를 결정한다.

 

그 결과 시스템을 개발하기로 결정되며, 수행할 단계와 단계별 세부 활동들을 설정하고, 누가 언제까지 무엇을 어떻게 수행할 것인지에 대한 개발 계획서(인력 계획, 설비 계획, 비용 계획, 시간 계획 등)를 수립하여 소프트웨어 개발 계획안(타당성 검토 보고서)을 최고 의사 결정권자에게 승인 받아 시스템 개발에 착수한다.

 

시스템 조사시 문제점으로는 다음과 같다.

  • 조직 확대에 따른 현행 시스템의 결점
  • 수작업으로 인한 업무의 신뢰성 결여
  • 업무가 노동 집약적이며, 처리비용이 많이 소요
  • 문서 양식의 비표준화로 문서 관리 시 혼란 초래

 

 

2. 시스템 분석(System Analysis)

 

시스템 분석은 시스템 계획 단계의 시스템 조사에서 얻은 정보를 토대로 해서 무엇을 할 것인지, 무엇 때문에 해야 하는지, 어떻게 해야 하는지 등의 방법을 결정하는 것으로 기능 분석(Functional Analysis), 예비 설계(Preliminary Design), 비용 효과 분석(Cost Benefit Analysis) 과정을 거쳐 수행된다.

 

기능 분석은 요구 분석 또는 요건 분석이라고도 부르며, 여기서는 최고 경영자에게 하위 담당자까지 각 계층의 모든 사용자들이 정말로 무엇을 필요로 하는지를 찾아내어 전산화의 목적이나 이를 위해 필요한 기능을 명확히 정의하는 단계이다.

 

여비 설계는 기본 설계라고도 하며, 기능 분석에서 정의한 기능들을 어떻게 컴퓨터 시스템으로 구현할 것인가를 결정하는 단계이다. 이 단계에서는 컴퓨터 시스템과 관련된 구체적인 사항들이 결정되므로 개발할 시스템의 모델이 처음으로 가시화된다. 이 때 시스템의 특성, 정보 모델, 하드웨어 등을 어떻게 설정하느냐에 따라 여러 종류의 시스템 대안이 나온다.

 

비용 효과 분석은 전산화의 비용과 효과를 대비하여 전산화의 유효성을 확인하고 최선의 시스템 안을 선정하는 단계이다. 즉, 손해를 보느냐, 이익을 보느냐, 어느 것이 이익을 보느냐를 결정하는 것이다.

 

 

3. 시스템 설계(System Design)

 

시스템 설계는 시스템 분석 과정에서 정의된 사용자의 요구 사항을 토대로 업무 처리 절차에 맞는 설계도를 작성하는 단계로서 기본 설계와 상세 설계로 구분할 수 있다.

 

기본 설계는 외부 설계, 개략 설계, 개요 설계라고도 부르며, 소프트웨어의 논리적 구조, 자료 구조, 자료 저장소, 구성 요소들간의 관계를 개략적으로 표현하는 설계 작업으로 코드 설계, 출력 설계, 입력 설계, 파일 설계, 프로세스 설계, 신뢰성 설계 순서로 진행된다.

 

상세 설계는 내부 설계, 세부 설계, 모듈 설계라고도 부르며, 소프트웨어의 내부 구조, 처리 절차, 테스트 계획에 대해 구체적으로 표현하는 설계 작업으로 코드 설계, 출력 설계, 입력 설계, 파일 설계, 프로그램 설계 순서로 진행된다.

 

 

4. 시스템 구현(System Implementation)

 

시스템 구현은 시스템 설계 단계에서 산출된 설계 내용을 컴퓨터가 인식할 수 있는 프로그램 코드로 변환, 작성하는 단계로서 프로그래밍 또는 코딩이라고도 한다.

 

시스펨 구현 방법으로는 구조적 프로그래밍, 모듈화 프로그래밍, 단계적 세분화, 추상화 레벨, 하향식 및 상향식 프로그래밍 기법 등이 있다.

 

구조적 프로그래밍은 프로그램 형태, 프로그램 설계, 프로그래밍 코딩, 프로그램 테스트에 구조와 규율을 적용시키는 방법론으로서 계층적이고 순서적이며 표준화된 제어 구조(순차 구조, 선택 구조, 반복 주고)를 사용하여 모듈화 프로그램이 가능하게 하는 프로그래밍 기법이다.

 

모듈화 프로그래밍은 하나의 프로그램을 논리적으로 작은 모듈로 분활하여 설계하는 방법론이다. 즉, 프로그램의 부분 부분을 다른 프로그램이 재 사용할 수 있도록 모듈 단위로 설계한 것이다. 이 방법은 복잡한 프로그램의 작성이 용이하고, 작성된 프로그램의 유지 보수가 용이하고, 프로그램의 오류 수정이 쉽다.

 

단계적 세분화(Stepwise refinement)는 일련의 세분화 단계를 수행함으로써 프로그램을 개발하는 방법론이다. 즉, 프로그램 문제를 해결하기 위해 필요한 기본 절차상의 작업과 자료를 정의하고, 각 세분화 단계에서는 하나 또는 몇 개의 프로그램 작업이 여러 개의 작은 작업들로 나누어진다.

 

추상화 레벨은 프로그램을 개념적 계층이나 레벨로 나누어 가장 최상의 레벨을 가장 추상화된 형태로 나타내는 방법으로 가장 최하위의 레벨에서 프로그래밍 언어로 표현한다.

 

하향식 프로그래밍은 최상위 모듈을 먼저 설계, 코딩, 테스트하고 다음으로 그 하위 단계의 모듈들을 진행시키는 방법이다. 이 때 각각의 모듈에 초점을 두어 각 모듈이 하나의 시스템 단위로서 올바른 기능을 수행하는가를 시험하는 단위 테스트가 수행된다.

 

상향식 프로그래밍은 최하위 모듈을 먼저 설계, 코딩, 테스트하고 그 다음 상위 단계의 모듈들을 진행시키는 방법이다.

 

 

5. 시스템 시험(System test)

 

시스템 시험은 소프트웨어가 개발되는 과정마다 품질 보증을 위해 단위 테스트, 통합 테스트, 확인 테스트, 시스템 테스트, 인수 테스트로 이루어진다.

 

단위 테스트(Unit Test)는 각 모듈의 초점을 두고, 각 모듈이 하나의 시스템 단위로서 올바른 기능을 수행하는지 여부를 시험하는 것으로 모듈내의 제어 경로를 점검하기 위하여 주로 화이트 박스 테스트 기법을 적용한다.

 

통합 테스트(Integration Test)는 단위 테스트가 완료된 모듈들을 소프트웨어 패키지로 통합된 소프트웨어를 대상으로 문제의 검증과 프로그램 구조에 관련된 결과에 중점을 두고 시험하는 것으로 주로 블랙 박스 테스트 기법을 적용한다.

 

확인 테스트(Validation Test)는 분석 단계에서 설정된 테스트 기준에 관련된 사항들을 시험하는 것으로 소프트웨어 기능과 성능이 사용자의 요구 사항에 만족하는지를 확인하는 것이다.

 

시스템 테스트(System Test)는 확인된 소프트웨어가 다른 시스템 구성 요소들과 통합되어 전반적인 기능과 목표에 도달되었는지 여부를 확인하는 것이다.

 

인수 테스트(Acceptance Test)는 개발이 완료된 시스템을 사용자의 환경에서 시스템의 기능과 성능을 확인하는 것이다.

 

 

6. 시스템 유지 보수

 

시스템 유지 보수는 시스템이 개발 완료되어 사용자에게 인도된 후에 발생하는 여러 가지 문제점에 대해 수정하거나 새로운 기능을 추가하거나 다른 운용 환경으로 전환하는 등의 작업을 관리하는 절차를 말한다.

 

유지 보수의 유형에는 하자 보수, 기능 개선, 환경 적응, 예발 조치로 구분할 수 있다.

 

 

출처 : 시스템 분석 설계, 정익사, 이창희, 서동린, 김용수 공저

'프로그램 아키텍쳐 > 소프트웨어공학' 카테고리의 다른 글

컴퓨터에 의한 오류 검사  (0) 2012.03.05
시스템의 특성  (0) 2012.03.05
테스트  (0) 2011.12.22
소프트웨어 프로젝트 관리  (0) 2011.12.21
소프트웨어 위험 요소  (0) 2011.12.05