본문 바로가기
개발

소프트웨어 생명 주기(Software Life Cycle)

by chan10 2021. 4. 13.

소프트웨어 생명 주기(Software Life Cycle)?

소프트웨어를 체계적으로 개발하고, 관리하기 위해 개발 과정을 단계별로 나누어 구분한 것입니다.

일반적으로 소프트웨어 개발 과정은 아래와 같이 이루어집니다.

 

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

 

소프트웨어 생명 주기는 여러가지 모형이 있는데 이 모형에 따라 개발 과정은 달라집니다.

) 폭포수 모형, 프로토타입 모형, 나선형 모형, 애자일 모형

 

1. 요구사항 분석(Requirement Analysis)

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

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

-   기능(Function), 행위(Behavior), 데이터(Data) 측면에서 요구 사항을 체계적이고 구체적으로 분석하고, 실제 개발될 소프트웨어가 실행될 환경에 대해서도 분석, 검토를 수행합니다.

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

 

2. 시스템 명세(System Specification)

-   시스템이 무엇을 수행해야 하는가를 정의하는 단계입니다.

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

-   시스템 기능 명세서를 작성해야 합니다.

 

3. 설계(Design)

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

-   개발할 소프트웨어의 전반적인 아키텍쳐를 구상하고, 구성 요소간 사용할 프로토콜을 정의하며, 사용자 인터페이스를 결정합니다. 또한 데이터베이스를 사용할 경우 데이터베이스 스키마를 설계합니다.

-   프로그램 구현을 위한 구체적인 자료구조와 알고리즘을 결정합니다.

 

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

-   시스템 구조 설계 : 시스템을 구성하는 내부 프로그램이나 모듈 간의 관계와 구조 설계

-   프로그램 설계 : 프로그램 내의 각 모듈에서의 처리 절차나 알고리즘을 설계

-   사용자 인터페이스 설계 : 사용자가 시스템을 사용하기 위해 보여지는 부분 설계

 

설계 방식

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

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

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

 

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

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

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

 

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

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

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

 

4. 구현(Implements)

-   설계 단계에서 논리적으로 결정한 문제해결 방법(알고리즘)을 특정 프로그래밍 언어를 사용하여 실제 프로그램을 작성하는 단계입니다.

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

-   사용자의 요구, 프로그래머의 능력, 현재 사용중인 언어, 컴파일러의 가용성과 품질, 지원 가능한 개발도구, 언어의 호환성, 개발 경험 등을 고려하여 선택해야 합니다.

 

5. 테스트(Testing)

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

-   숨어있는 오류를 찾아내어 시스템 완성도를 높이는 단계입니다.

-   테스트 단계는 단위 테스트, 통합 테스트, 인수 테스트로 진행됩니다.

-     단위 테스트(Unit Test) : 구현된 개별 모듈에 대해 테스트를 시행하여 요구사항 명세서에 맞게 제대로 수행하는지를 테스트

-   통합 테스트(Integration Test) : 각 모듈들을 통합해서 제대로 동작하는지 여부를 시행하는 테스트

-   인수 테스트(Acceptance Test) : 시스템을 완성된 제품으로 보고 실제 데이터를 사용해 테스트

: 실질적으로 시스템이 사용되기 위해 마지막으로 시행되는 테스트(알파 테스트(관리자, 개발자), 베타 테스트(사용자))

 

6. 유지 보수(Maintenance)

-   시스템이 인수되고, 설치된 후 일어나는 모든 활동을 의미합니다.

-   프로그램 오류 수정, 시스템 디자인 수정, 새로운 요구사항 추가, 시스템 사용환경 변화에 대한 교정 등

 

[참고 사이트] 이트(1), 이트(2), 이트(3)

 

 

'개발' 카테고리의 다른 글

[개발] 기능 정의서 개요  (0) 2021.05.10
[개발] Use Case 다이어그램 이란??  (0) 2021.04.22
UML(Unified Modeling Language)다이어그램 이란??  (0) 2021.04.15
MVC패턴이란?  (0) 2021.04.07