관리 메뉴

피터의 개발이야기

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

개발이야기

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

기록하는 백앤드개발자 2021. 2. 19. 08:00
반응형

 

 

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

소프트웨어를 체계적으로 개발하기 위해, 개발 과정을 요구분석 -> 시스템명세 -> 설계 -> 구현 ->테스트-> 유지보수 단계로 나누어 구분합니다.

 

 

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

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

- 개발할 소프트웨어의 성격을 정확히 이해하고, 개발 방법과 필요한 개발 자원 및 예산을 예측 단계

- 요구명세서를 산출물로 작성

 

2. 시스템 명세(System Specification)

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

- 입력자료, 처리내용, 생성되는 출력이 무엇인지를 정의

- 시스템 기능 명세서 작성

 

3. 설계(Design)

- 시스템 명세 단계에서 정의한 기능을 실제로 수행하기 위한 방법을 논리적으로 결정하는 단계

- 시스템 구조 설계 ; 시스템을 구성하는 내부 프로그램이나 모듈 간의 관계와 구조 설계로 구분할 수 있습니다.

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

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

* 하향식 설계(Top-down Design)
   - 하위 단계로 갈수록 더 구체적으로 세부 문제를 정의한다.
   - 마지막으로 최하위 단계로 분할(divide)된 작은 단위의 문제들을 각각 처리함으로써 전체 문제를 해결(conquer)한다.
* 상향식 설계(Bottom-up Design) 
   - 최하위 단계의 작은 단위를 먼저 해결하고, 이를 이용해 상위 단계의 문제를 해결한다.
   - 최하위 단위의 문제들에 대해 기존에 개발되어 있는 문제해결 도구를 재사용하는 경우 개발 기간과 비용 단축 및 신뢰성 확보.
* 객체지향 설계(Object-oriented Design) 
   - 하위 단위의 문제해결 도구를 재사용한다는 점에서 상향식 설계와 유사
   - 작은 단위의 문제에 대해 문제해결을 위한 데이터와 처리방법을 묶어서 객체를 만들고, 객체를 재사용.

 

4. 프로그래밍(Programming)

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

    ex) 사용할 언어 선택, 프로그래밍 기법과 스타일, 프로그래밍 순서

- 프로그래밍 기법

    ex) 구조화 프로그래밍, 모듈러 프로그래밍

 

5. 테스트(Testing)

 - 개발한 시스템이 요구사항을 만족하는지, 실행결과가 예상한 결과와 정확하게 맞는지를 검사하고, 평가하는 일련의 과정

 - 숨어있는 오류를 최대한 찾아내어 시스템 완성도를 높이는 단계

 

 - (1단계) 단위 테스트(Unit Test)

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

 

 - (2단계) 통합 테스트(Integration Test)

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

 

 - (3단계) 인수 테스트 (Acceptance Test)

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

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

   

 

6. 유지보수(Maintenance)

 - 시스템이 인수되고, 설치된 후 일어나는 모든 활동

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

 

 

정리참조
https://songeunjung92.tistory.com/10
반응형
Comments