1. 즉흥적인 개발 프로세스
즉흥적으로 프로그래밍해보고 사용자가 원하면 수정하는 식으로 작업하여 소프트웨어를 완성하는 방법. 즉 사용자가 만족할 때까지 소프트웨어를 고친다.
2. 폭포수 모델
폭포수 모델은 즉흥적인 개발 프로세스의 문제점을 개선한 것이다. 특히 요구와 설계, 품질 보증의 중요성을 반영한 소프트웨어 공학의 전통적인 개발 방법이다. 폭포수 모델은 각 단계가 끝나기 전, 다음 단계로 진입할 수 있는 기초가 마련되었는지 검토하고 확인하는 품질 보증을 실시한다. 만약 문제를 발견하면 전 단계로 되돌아가 수정한다.
3. 점증적 모델
점증적 모델은 폭포수 모델의 문제점을 보완한 방법이다.
-시스템을 컴포넌트로 나누어 점증적으로 개발한다.
각 컴포넌트는 폭포수 모델을 따라 개발한 후 전체 시스템에 통합한다. 점증적 모델은 어느 정도 위험을 방지하기 위한 방법으로, 한 컴포넌트가 문제를 일으키더라도 개발 전체에 영향을 받지 않고 지속할 수 있다.
-가장 중요한 기능을 하는 코어 부분을 먼저 개발한다.
4. 나선형 모델
나선형 모델은 배리 보엠이 제안한 방법으로 폭포수 모델이 문서 중심의 개발 방법론이라는 우려에서 나왔다. 이 모델의 핵심은 소프트웨어 개발의 위험을 줄이는 것이다. 나선형 모델은 개발 사이클이 한 번씩 돌 때마다 위험을 줄이면서 소프트웨어를 점증적으로 개발해나간다. 사이클은 모두 네 개이며 각 사이클의 컴포넌트와 결과물은 같은 작업으로 구성된다.
5. 진화적 모델
진화적 모델은 반복적이면서 점증적인 방법으로 소프트웨어를 개발하는 방식이다. 첫 번째 반복에서는 모든 사용 사례나 요구를 다루고, 두 번째 반복에서는 분할된 시스템의 조각 중 선택된 조각에서 가장 중요한 위험 요소를 다룬다. 다음 반복에서는 이전 반복의 결과를 바탕으로 구축한다. 이런 식으로 여러 사이클을 반복하며 요구, 설계 구현, 테스트 작업을 점증적으로 진행해나간다.
진화적 모델이 적용된 대표적인 예로는 RUP(Rational Unified Process)모델이 있다. RUP에서는 각 단계를 폭포수 모델처럼 요구 분석, 설계, 구현, 테스트로 부르지 않고 다음과 같이 명명한다.
5.1 도입단계
소프트웨어 프로젝트의 범위를 설정하고 목표를 명확히 한다. 중요한 사용 사례를 찾아내어 소프트웨어 구조와 초벌 설계를 한다. 앞으로의 일정을 계획하고 필요한 자원을 선정하며 구현, 테스트, 통합 시 수행할 구체적인 계획을 세운다.
5.2 정련 단계
시스템의 중요한 요구를 찾아내어 기본이 되는 설계를 완성한다. 일부 구현, 테스트, 통합 플랫폼을 구축한다.
5.3 구축 단계
일종의 제조 단계라 할 수 있다. 이 단계가 끝나면 원시코드가 완성되고 모든 중요한 요구의 테스트가 마무리된다.
4. 전환 단계
사용자에게 릴리스한다. 설치 및 인수 테스트까지 완료하여 사용자가 사용할 수 있도록 한다.
6. 애자일 프로세스
애자일 프로세스는 설계가 변경되어도 이를 잘 수용할 수 있도록 짧게 반복하면서 소프트웨어를 개발하는 방법이다. 어떤 면에서는 반복적이고 진화적인 프로세스와 유사하지만 경험의 축적에 의해 나온 모델이라는 평가를 받고 있다. 소프트웨어 개발이 인력 집약적이라는 데 관심을 두고 사람과 팀 구성에 초점을 맞추었기 때문이다.
<애자일 선언문>
-프로세스와 도구보다 개인과의 소통이 더 중요하다.
-완벽한 문서보다 실행되는 소프트웨어가 더 중요하다.
-계약 협상보다 고객과의 협업이 더 중요하다.
-계획을 따르는 것보다 변경에 대한 응답이 더 중요하다.
애자일 프로세스의 특징
-짧은 릴리스와 반복: 작업을 작은 조각으로 나누어, 되도록 자주 릴리스한다.
-점증적 설계: 초기 단계에는 시스템에 대해 충분히 알지 못하기 때문에 설계를 완성하지 않는다. 가능하면 설계에 대한 결정을 미루고 더 많은 지식이 쌓였을 때 설계를 개선해나간다.
-사용자 참여: 처음부터 변하지 않는 완벽한 표준을 만들려고 하기보다 사용자를 참여시켜 계속 피드백을 제공한다.
-문서 최소화: 필요한 문서만 최소로 작성하고 원시코드를 문서화의 실체로 여긴다.
-비공식적 커뮤니케이션: 지속적으로 대화를 하지만 형식적인 문서를 요구하지는 않는다. 사람들은 비공식적인 대화를 더 중요하게 생각하기 때문이다.
-변화: 요구와 환경의 변경을 가정하고 이를 다룰 수 있는 좋은 방법을 찾아낸다.
애자일 프로세스가 적용된 대표적인 방법론
1. 익스트림 프로그래밍
2. 스크럼
-소프트웨어 개발 팀이 개발 연습을 하면서 개발 능력을 향상할 수 있는 프레임워크
소프트웨어 개발자들의 팀 구성, 팀 구성원의 역할, 일정, 결과물 및 그 외 규칙을 짜는 것을 말함
-제품 개발 과정(스크럼에서는 스프린트라고 부름): 소프트웨어 개발 시 일어나는 일들을 비교적 정확하게 예측하고 위험을 관리할 수 있는 반복적이며 점증적인 접근 방법
(스프린트란, 제품 개발 과정으로 각 스프린트는 계획 회의로 시작
스프린트 계획회의에서는 제품 백로그(제품 개발을 위해 남겨진 일)의 항목을 비롯해 무엇을 출시하고 어떻게 개발할 것인지를 결정한다.
'소프트웨어공학' 카테고리의 다른 글
4. 클래스 모델링 (0) | 2023.04.07 |
---|---|
3. 요구분석 (0) | 2023.04.06 |
2. 객체지향 개념 (0) | 2023.04.05 |
1. 소프트웨어란? (0) | 2023.04.05 |