본문 바로가기

전산 기초/소프트웨어공학

[소프트웨어공학] 소프트웨어 생명 주기(Software Life Cycle)


* 소프트웨어 생명 주기


요구분석 -> 시스템명세 -> 설계 -> 구현 ->테스트-> 유지보수



1. 요구 분석 단계 : Requirement analysis

개발할 소프트웨어의 기능과 제약조건, 목표 등을 소프트웨어 사용자와 함께 명확히 정의하는 단계.

개발해야 할 소프트웨어의 성격을 정확히 이해하고 개발 방법과 필요한 자원과 예산을 예측해야한다.

요구 명세서를 정확하게 작성해야 한다.



2. 시스템 명세 단계 : System Specification

시스템이 무엇을 수행해야 하는가를 정의

시스템 기능 명세서를 작성하여 입력 데이터, 처리내용, 생산 결과가 무엇인지를 정의



3. 설계 단계 : Design

시스템 명세 단계에서 정의한 기능을 실제 수행할 수 있도록 수행 방법을 논리적으로 결정

시스템 구조 설계, 프로그램 설계, 사용자 인터페이스 설계로 구분할 수 있다.

* 하향식 설계(Top-down Design) 

- 하위 단계로 갈수록 더 구체적으로 세부 문제를 정의한다.

- 마지막으로 최하위 단계로 분할(divide)된 작은 단위의 문제들을 각각 처리함으로써 전체 문제를 해결(conquer)한다.

* 상향식 설계(Bottom-up Design) 

- 최하위 단계의 작은 단위를 먼저 해결하고, 이를 이용해 상위 단계의 문제를 해결한다.

- 최하위 단위의 문제들에 대해 기존에 개발되어 있는 문제해결 도구를 재사용하는 경우 개발 기간과 비용 단축, 신뢰성 확보 가능.

* 객체지향 설계(Object-oriented Design) 

- 하위 단위의 문제해결 도구를 재사용한다는 점에서 상향식 설계와 유사

- 작은 단위의 문제에 대해 문제해결을 위한 데이터와 처리방법을 묶어서 객체를 만들고, 객체를 재사용.



4. 구현 단계 : Implementation

설계 단계에서 논리적으로 결정한 문제해결 방법을 특정 프로그래밍 언어를 사용하여 실제 프로그램을 작성

프로그래밍 언어 선택, 기법, 스타일, 순서 등을 결정해야 한다.

사용자의 요구, 프로그래머의 능력, 현재 사용중인 언어, 컴파일러의 가용성과 품질, 

지원 가능한 개발도구, 언어의 호환성, 개발 경험 등을 고려하여 선택해야한다.



5. 테스트 단계 : Test

* 단위 테스트 (Unit Test)

시스템의 최소 구성요소가 되는 모듈들에 대해 개별적으로 시행하여 요구사항 명세서에 기술된 기능을 제대로 수행하는지를 테스트

* 통합 테스트 (Integration Test)

단위 테스트를 통과한 모듈을 모아서 전체 시스템을 완성하기 위해 통합적으로 시행하는 테스트

(하향식 테스트, 상향식 테스트)

* 인수 테스트 (Acceptance Test)

시스템을 완성된 제품으로 보고 실제 데이터를 사용하여 시스템을 테스트하는 과정

실질적으로 시스템이 사용되기 위해 마지막으로 시행되는 테스트

(알파 테스트(관리자, 개발자), 베타 테스트(사용자))



6. 유지 보수 단계

시스템이 인수되고 설치된 후 일어나는 모든 활동을 포괄적으로 의미