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

Posted by 꿈디렉터
2018. 9. 12. 05:00 Computer Science/자료구조

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


안녕하세요 꿈디렉터입니다.

오늘은 소프트웨어 생명주기 대해서 이야기를 해볼게요.

먼저 정의를 내려보면

소프트웨어를 체계적으로 개발하고 관리하기 위해서 개발 과정을

단계별로 나누어 구분한 것이라고 합니다.

보통 6단계로 구분을 해요.

아래 표를 보면서 이야기를 해볼게요.


일반적인 6단계입니다.


1. 요구분석 단계

먼저 요구분석 단계입니다. 요구 분석단계는 문제 분석 단계 라고도 하는데요.

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

개발할 소프트웨어의 성격을 정확히 이해하고 개발 방법과 필요한 개발 자원 및 예산 예측 후 요구명세서 작성을 하는 단계죠.



2. 시스템 명세

두번째는 시스템 명세단계입니다. 시스템이 무엇을 수행해야 하는가를 정의하는 단계로

입력 자료, 처리 내용, 생성되는 출력이 무엇인지를 정의를 한 후 시스템 기능 명세서 작성하는 단계입니다.



3. 설계 단계

세번째는 설계단계입니다. 여기에선 시스템 명세 단계에서 정의한 기능을 실제로 수행하기 위한 방법을 논리적으로 결정하는 단계인데요.

시스템, 프로그램, UI 설계로 나뉘죠.


- 시스템 구조 설계

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


- 프로그램 설계

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


- 사용자 인터페이스 설계

• 사용자가 시스템을 사용하기 위해 보여지는 부분 설계


위와 같습니다.


설계방법을 설명 드릴게요


하향식 설계 방법입니다.


상위단계에서 하위단계로 설계해가면서 점차 구체적으로 설계하는 방법인데요.

이것을 보통 분할방식 설계라고 합니다.


반대로 상향식 설계방법입니다.


작은단위부터 먼저 해결하고 이를 활용해서 큰단위의 문제를 해결하는 방법입니다.

하위단위의 문제해결 도구를 재사용기법으로 전체 문제를 해결하는 장점이 있습니다.


4. 구현 단계

네번째는 구현단계입니다. 구현단계에서는 설계 단계에서 논리적으로 결정한 문제 해결 방법(알고리즘)을

프로그래밍언어를 사용하여 실제 프로그램을 작성하는 단계입니다.


이때 프로그래밍 기법은 두개로 나뉩니다.


• 구조화 프로그래밍

지정문과 조건문, 반복문만을 사용하여 프로그램을 작성

순차구조, 선택구조, 반복구조의 세가지 제어구조로 표현

구조가 명확하여 정확성 검증과 테스트 및 유지보수 용이


• 모듈러 프로그래밍

프로그램을 여러 개의 작은 모듈로 나누어 계층 관계로 구성하는 프로그래밍 기법

모듈별로 개발과 테스트 및 유지보수 가능

모듈의 재사용 가능



5. 테스트 단계

다섯번째는 테스트단계입니다. 테스트 단계에서는 개발한 시스템이 요구사항을 만족하는지, 실행결과가 예상한 결과와

정확하게 맞는지를 검사하고 평가하는 일련의 과정입니다. 테스트단계가 정말 중요한 이유중에 하나는 미쳐 발견하지못한

오류를 발견할수 있기때문입니다. 3단계의 테스트 단계가 있습니다.


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

• 시스템의 최소 구성요소가 되는 모듈에 대해서 개별적으로 시행

2단계 : 통합테스트(Integration test)

• 단위 테스트를 통과한 모듈을 연결하여 전체 시스템으로 완성하여 통합적

으로 시행하는 테스트

• 구성요소 연결을 점진적으로 확장하면서 테스트 시행

3단계 : 인수 테스트

• 완성된 시스템을 인수하기 위해서 실제 자료를 사용한 최종 테스트



6. 유지보수 단계

마지막은 유지보수 단계입니다. 시스템이 인수되고 설치된 후 일어나는 모든 활동입니다.

이후 일어나는 커스터마이징, 구현, 테스트 등 모두 이 단계입니다.

그렇기때문에 소프트웨어 생명주기에서 가장 긴 기간입니다.

유지보수의 유형에는 네가지의 유형이 보이는데요. 수정형, 적응형, 완전형, 예방형입니다.


• 수정형 유지보수

사용 중에 발견한 프로그램의 오류 수정 작업

• 적응형 유지보수

시스템과 관련한 환경적 변화에 적응하기 위한 재조정 작업

• 완전형 유지보수

시스템의 성능을 향상시키기 위한 개선 작업

• 예방형 유지보수

앞으로 발생할지 모를 변경 사항을 수용하기 위한 대비 작업


'Computer Science > 자료구조' 카테고리의 다른 글

재귀호출 Recursive call 팩토리알 (Factorial)  (0) 2018.09.18
자료구조 개요  (0) 2018.09.11