본문 바로가기

정보통신/IT

3. 소프트웨어 생명 주기

오늘은 소프트웨어 생명 주기에 대해서 알아보겠습니다.
1. 소프트웨어 생명 주기(Software Life Cycle)
: 소프트웨어 생명 주기는 소프트웨어 개발 방법론의 근원이 되는 내용으로 소프트웨어 개발을 위해 운용 및 유지, 보수와 같은 과정을 각 단계로 구분한 것이다.
 -소프트웨어 생명 주기는 소프트웨어 개발 단계 및 주요 활동 그리고 그 결과에 대한 산출물로 나타낸다. 소프트웨어 수명 주기라고도 할 수 있다.
-소프트웨어 생명 주기 모형은 소프트웨어 생명 주기를 형태로 표현한 것으로 소프트웨어 프로세스 모형 혹은 소프트웨어 공학 패러다임으로 부르기도 한다.
-개발자는 개발 방법에 따라 특정 모형을 선택하여 사용할 수 있으며, 개별적인 모형도 사용할 수 있다.
-일반적으로 사용하는 소프트웨어 생명 주기 모형으로는 프로토타입 모형, 나선형 모형, 폭포수 모형, 에자일 모형 등이 존재한다.

2. 프로토타입 모형
: 사용자의 요구사항을 정확하게 파악하기 위해 실제 개발 예정인 소프트웨어 본보기 제품을 만들어 최종 결과물을 예측하는 모형
- 본보기 제품은 인터페이스에 중점을 두어 개발한다.
- 소프트웨어의 개발이 완료 후 오류가 발생하는 폭포수 모형의 문제점을 보완하기 위한 모형
- 시스템의 모형을 만드는 과정으로 요구된 소프트웨어를 구현하는데, 추후 구현 단계에서 사용될 골격 코드가 된다.

3. 나선형 모형
: 폭포수 모형 및 프로토타입 모형의 장점에 위험 분석 기능을 더한 모형이다.
- 소프트웨어 개발과정에서 발생하는 위험을 관리 및 최소화하기 위함이 목적이다.
- 나선을 따라 돌듯이 여러 과정을 거치며 점차 완벽한 결과를 만들기 위한 것으로, 점진형 모형이라고도 한다.
- 여러 과정을 거치며 개발 과정이 반복되므로 빠지거나, 유지보수 과정이 필요 없다.

4. 폭포수 모형
: 마치 폭포수는 위로 올라갈 수 없듯이 개발 과정에서 이전 단계로 돌아갈 수 없다는 전제하에 단계별로 확실하게 마무리 짓고 그 결과를 철저하게 검토하여 승인 과정을 거친 후에 다음 단계로 진행될 수 있는 방법론이다.
- 가장 오래되고 넓게 사용된 전통적인 생명 주기 모형
- 각 단계가 끝나야 다음 단계로 진행될 수 있으므로 선형 순차적 모델이다.
- 매뉴얼을 작성하여 제품의 일부를 만들어야 한다.
- 두 개 이상의 과정이 병행하여 수행되지 않는다.
- 각 단계가 끝나면 명확한 결과물이 나와야 한다.

5. 에자일 모형
: '신속한', '민첩한'이라는 의미의 에자일은 사용자의 요구사항을 빠르고 유연하게 대처할 수 있도록 일정한 주기를 반복하면서 진행하는 개발 모형
- 어느 특정 개발론이 아니라 좋은 점은 신속하게 진행하여 낭비 없게 만들기 위해 사용자와의 소통에 초점을 맞춘 방법론을 통칭
- 개발 주기가 짧으며 반복하기 때문에 주기마다 생산되는 결과물에 대한 고객의 평가와 요구사항을 적극적으로 수용한다.
-고객의 요구사항에 우선순위를 부여하여 진행하며 소규모 프로젝트, 숙련된 개발자에게 적합하다.


첫째, 프로세스와 도구보다는 고객과 상호작용에 초점을 둔다.
둘째, 방대한 문서보다는 진행되는 소프트웨어에 더 가치를 둔다.
셋째, 계약 협상보다 고객과 협업에 신경 써야 한다.
넷째, 계획대로 진행하는 것보다 변화에 반응하는 것을 더 중요하게 생각한다.


1. 유용한 소프트웨어를 빠르고, 지속해서 제공하여 사용자를 만족시킨다.
2. 개발이 완료되는 시점이라도 변화하는 요구사항을 적극적으로 수용한다.
3. 주 단위로 실행되는 소프트웨어를 제공한다.
4. 사용자와 고객은 개발 기간 동안 함께 협업한다.
5. 팀 구성은 개발 의지가 확고한 사람과 구성하며, 개발에 필요한 환경과 지원을 제공한다
6. 같은 공간에서 일하며 상호작용한다.
7. 지속 가능한 개발을 진행하며 일정한 속도로 개발한다.
8. 개발의 진행도 평가는 작동하는 소프트웨어를 기준으로 한다.
9. 민첩성 향상을 위해 기술적 우수성과 좋은 설계에 관심을 가진다.
10. 단순화를 추구한다.
11. 최상의 설계는 스스로 일을 주도하는 팀에서 나온다.
12. 더 효과적인 팀이 되기 위해 고민하고 행동한다.

'정보통신 > IT' 카테고리의 다른 글

6. 인공지능(A.I) & 로봇(Robot)  (0) 2022.10.12
5. XP(eXtreme Programming) 기법  (0) 2022.10.09
4. 스크럼(Scrum) 기법  (0) 2022.10.09
2. 컴파일과 빌드의 차이점  (1) 2022.10.08
1. C 언어의 장점  (0) 2022.10.08