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

소프트웨어 개발 사이클(Software Development Life Cycle)

본클라쓰 2010. 6. 26. 17:10

 

소프트웨어 개발 사이클(software development life cycle)은 소프트웨어 개발부터 폐기까지의 순서이다.

 

일반적으로 '요구사항 분석 → 시스템 설계 → 프로그램 설계 → 프로그램 구현 → 테스트 → 시스템 설치 → 유지 보수'의 순서로 진행된다.

 

이를 좀더 세분화할 수 있는데 다음과 같다.

 

1. 개발준비

2. 시스템 요구사항 분석

3. 소프트웨어 요구사항 분석

4. 시스템 설계

5. 소프트웨어 구조 설계

6. 소프트웨어 상세 설계

7. 코딩 및 단위 시험

8. 소프트웨어 통합

9. 소프트웨어 자격 시험

10. 시스템 통합

11. 시스템 자격 시험

12. 소프트웨어 설치

13. 인수 지원

 

 

이 중에서 가장 중요한 단계는 '분석과 설계'이다. 이 두 공정을 기초 공정이라고 하며 전체 개발 사이클에서 50%이상 비중을 차지할 만큼 중요한 단계이다. 분석과 설계 단계에서는 프로그램의 논리적인 구조를 설계하며, 실제 프로그램을 아니지만 프로그램을 제작하는데 가장 중요한 단계다. 분석 설계에 실패하면 아무리 우수한 프로그래밍 기술을 가지고 있다 하더라도 좋은 소프트웨어를 만들 수 없다.

 

 

각 단계별 역할은 다음과 같이 정의할 수 있다.

 

요구사항 분석 단계(requirements analysis)는 사용자 관점에서 시스템의 요구 사항을 수집하는 단계이다. 시스템에 필요한 기능, 성능, 인터페이스 요구 사항 등이 포함된다. 이 과정을 '업무분석'이라 한다. 이 때 타당성 조사도 반드시 해야 한다.

 

요구 사항 분석이 끝나면 산출물로 요구 사항 명세서가 나온다. 요구 사항 명세서는 프로젝트 관련 모든 사람이 읽고 이해하기 쉽도록 작성되어야 하며, 요구 사항 명세서가 고객과 개발회사 간의 계약서라 할 수 있다.

 

설계(design) 단계는 요구 사항 분석 단계에서 산출된 요구 사항들을 설계도면에 옮기는 것이다. 분석과정은 개념적 단계이고, 설계과정은 물리적 단계이다. 설계는 구현될 시스템의 성능에 직접적인 영향을 주며, 설계 단계의 산출물은 설계 명세서이다.

 

구현(implementation) 단계는 설계의 결과를 사용자가 사용할 수 있는 형태로 변환하는 과정이다. 시스템의 기능이 수행 가능한 형태로 나타난다. 코딩이라고 하며 개발 과정 중에서 구현 비용은 30%정도 이다. 구현 단계에서 발생되는 복잡성과 문제점은 대부분 분석/설계 단계가 잘못되어 나타나는 경우가 많다.

 

시험(test) 단계는 시스템의 오류를 발견하고 수정하는 작업이다. 공식적, 비공식적인 방법을 통하여 오류를 검출한다. 시험은 요구사항, 설계, 구현의 모든 과정에 대한 최종 점검을 의미한다.

 

테스트 방법에는 informal acceptance testing로 정해진 test case가 아닌 일정 범위 안에서 시험하는 방법, formal acceptance testing로 사용자가 정해진 test case에 의해 시험하는 방법, beta testing인 사용자가 마음대로 시험하는 방법등이 있다.

 

유지보수 단계는 작성된 시스템을 유지하고 보수하는 단계이다.

 

 

시스템은 개발할 때부터 유지보수에 대비해 만들어야 한다. 기존 시스템이 부실하게 설계되고 문서화되어 있지 않을 경우 유지 보수가 불가능하다. 따라서 분석/설계 및 문서화의 중요성이 부각된다.