소프트웨어 생명 주기
소프트웨어를 개발하기 위해 정의하고 운용, 유지보수 등의 과정을 각 단계별로 나눈것
1. 폭포수 모형(Waterfall Model)
•
폭포에서 한번 떨어진 물을 거슬러 올라갈 수 없듯이 소프트웨어 개발도 이전 단계로 돌아갈 수 없음
•
소프트웨어 공학에서 가장 오래되고 폭넓게 사용된 전통적인 모형, 고전적 생명 주기 모형
•
소프트웨어 개발 과정의 한 단계가 끝나야만 다음 단계로 넘어갈 수 있음
•
다음 단계를 수행하기 위한 결과물이 명확하게 산출되어야 함
•
순서적: 각 단계 사이에 중복이나 상호작용이 없음
•
각 단계의 결과는 다음 단계가 시작되기 전에 점검
•
직능 중심의 프로젝트 조직이 결과물 정의가 중요
•
크고 복잡한 오래 지속되는 프로젝트에 적합
•
장점
1.
프로세스가 단순하여 초보자가 쉽게 적용 가능
2.
중간 산출물이 명확, 관리하기 좋음
3.
코드 생성 전 충분한 연구와 분석 단계
•
단점
1.
소용없는 다종의 문서를 생산할 가능성 있음
2.
애매한 부분이 남아 있거나 프로세스 진행 과정에 변경될 수 있는데 이를 수용할 수 없음
3.
테스트 작업이 프로젝트 후반, 즉 시스템이 완성된 후에 시작됨
2. V 모델(V-Model)
•
폭포수 모델의 확장 형태
•
생명주기 단계별로 상응하는 테스트 단계가 존재
•
V 형태로 진행 - 아래 방향으로 진행하다가 코딩 단계를 거치면서 위로 향함
•
테스트 중요시 - 적정 수준의 품질 보증
•
폭포수 모델에 비해 반복과 재처리 과정이 명확함
•
테스트 작업을 단계별로 구분하므로 책임 소재가 명확함
3. 프로토 타입 모형(Prototype Model, 원형 모형)
•
사용자의 요구사항을 정확히 파악하기 위해 실제 개발될 소프트웨어에 대한 견본(시제)품을 만들어 최종 결과물 예측하는 모형
•
요구 사항에 대한 피드백을 받기 위해 시스템을 실험적으로 만들어 사용자에게 보여주고 평가하게 하는 방법
•
프로토 타이핑 도구
◦
화면 생성기
◦
시스템의 작동을 시뮬레이션 하여 사용자가 볼 수 있는 반응을 보여줌
•
공동의 참조 모델
◦
사용자와 개발자의 의사소통을 도와주는 좋은 매개체
•
프로토타입의 목적
◦
단순한 요구 추출 – 만들고 버림
◦
제작 가능성 타진-개발 단계에서 유지 보수가 이루어짐
4. 나선형 모형(Spiral Model, 점진적 모형)
•
폭포수 모형과 프로토타입 모형의 장점에 위험 분석 기능을 추가한 모형
•
소프트웨어의 기능을 나누어 점증적으로 개발
◦
실패의 위험을 줄임
◦
테스트 용이
◦
피드백
•
보헴이 제안
•
위험 최소화 목적
•
점진적 모형
•
여러 번의 점증적인 릴리스(Incremental Releases)
•
반복 순환 단계
◦
목표, 방법, 제약 조건 결정
◦
위험 요소 분석 및 해결
◦
개발과 평가
◦
다음 단계의 계획
(추가)
정보처리기사에서는 이렇게 나오니 참고하자. (시험에 나온다면 위에 있는걸로 하겠음)
5. 애자일 모형(Agile Model)
•
고객의 요구사항 변화에 유연하게 대응할 수 있도록 일정한 주기를 반복하면서 개발과정 진행
•
스프린트(Sprint) 또는 이터레이션(Iteration)이라고 불림
•
반복되는 주기마다 만들어지는 결과물에 대한 고객 평가와 요구 적극 수용
•
2~6주간의 짧은 주기로 개발을 반복
•
실행되는 소프트웨어를 개발하여 단계적으로 시스템 전체를 완성
•
애자일 선언
1.
형식적인 문서보다는 커뮤니케이션을 통하여 프로젝트가 목표를 향하여 나아가게 함
2.
사용자는 문서가 아니라 실행되는 소프트웨어를 통하여 요구를 확인
3.
사용자의 요구는 비즈니스 환경에 따라 프로젝트 중간에 바뀔 수 있음을 고려
4.
짧은 주기 동안 요구 정의에서 구현, 테스트까지 이루어지며 각 반복 주기의 반성 의견을 다음 계획에 포함
•
애자일 개발 4가지 핵심 가치
1. 프로세스와 도구보다는 개인과 상호작용에 더 가치를 둔다.
2. 방대한 문서보다는 실행되는 SW에 더 가치를 둔다.
3. 계약 협상보다는 고객과 협업에 더 가치를 둔다.
4. 계획을 따르기 보다는 변화에 반응하는 것에 더 가치를 둔다.