소프트웨어를 경제적으로 개발하기 위해 고안된 방법인 '소프트웨어 개발 방법론/프로세스' 활용하기
소프트웨어 개발 방법론 = 소프트웨어 공학 패러다임
∎ 폭포수 모델
- 하향식으로 전개된다.
- 다음 단계에서 문제가 발견되면 다시 이전 단계로 돌아갈 수 있다.
- 계획 : 일정, 인력, 비용, 제약사항 등이 반영되어 있다.
소프트웨어가 필요한 고객사가 제안요청서를 작성하면, 이를 바탕으로 여러 개발 회사가 제안서를 작성한다.
이 중 경쟁 입찰을 통해 개발 회사가 정해진다.
- 요구사항 분석 : 소프트웨어가 필요하게 된 원인, 배경에 대한 분석을 해야한다. 그를 위해 내/외부 환경에 대한 분석을 해야한다.
내부 환경 : 필요한 인력 규모의 축소, 생산비 절감, 생산력 증가 등
외부 환경 : 경쟁사의 동향, 사회적 법규 변화, 시장 변화 등
분석한 내용은 요구사항 명세서의 형태로 문서화되어야 한다.
- 설계 : 요구사항 명세서에는 무엇을 할것인지 기록되어 있고, 설계는 그것을 어떻게 실현할 것인가가 기록되어 있다.
결과물은 설계 명세서이다.
- 구현/코딩 : 소프트웨어 개발 과정에서 비용은 40~50%는 요구사항 분석과 설계에 들어가며, 20%의 정도만 코딩에 사용이 된다.
요구사항 분석과 설계의 과정이 매우 중요하다.
- 시험 : 구현된 코드가 정확한지, 오류가 없는지 찾아내는 과정이다.
최소한의 비용과 시간으로 최대한의 오류를 찾아내는 것이 목표이다.
결과물은 시험 명세서이다.
- 유지보수 : 새로운 기능을 추가하거나, 새로운 운영체제에 맞게 정비를 하거나 등등을 위해 이루어진다.
유지보수 과정은 재 요구분석, 재 설계, 재 구현, 재 시험의 과정이 필요하여 비용이 많이 들어간다.
✔ 폭포수 모델의 장/단점
- 장점 : 단계별로 나뉘어져 있어 한눈에 확인하고 관리하기 편하다.
- 단점 :
- 초기에 요구사항이 정확하지 않은 프로젝트의 경우, 폭포수를 이용하면 다시 이전 단계로 돌아가기 유연하지 않다.
- 대부분 순환이 발생하기 때문에 순차적인 프로세스를 따라가기 어렵다.
- 요구사항을 초기에 구체적으로 기술하기 어렵다.
- 중요한 문제점이 뒤에서 발견될 수 있다.
폭포수 모델의 단점을 극복하기 위해 '시제품 모델', '나선형 모델'이 출현하였다.
∎ 시제품/원형 모델
- 시제품을 만들어 어떻게 요구사항이 적용되었는지 미리 확인한다.
- 장점 :
- 피드백을 초기에 받을 수 있다.
- 사용자와 시스템간의 인터페이스에 초점을 맞추어 개발한다.
- 시스템 기능이 사용자에게 보여지므로 오해가 규명된다.
- 생각지 못했던 기능과 서비스가 발견된다.
- 단점 :
- 완제품에서 확인할 수 있는 부분은 미리 확인할 수 없다.
- 시제품을 위한 비용이 추가로 발생한다.
- 단점 극복 : 시제품을 사용자의 교육에 활용할 수 있고, 완제품 시험 과정에 만들어 놓은 것을 활용할 수도 있다.
∎ 나선형 모델
- 위험 분석이 가능한 모델이다
- 개발 도중 발생할 수 있는 사회적 변화 등에 맞춰 문제없이 개발할 수 있도록 나선형으로 진행한다.
- 나선형으로 단계를 여러번 돌면서 변화를 적용할 수 있게 한다.
- 장점 :
- 완벽한 요구 분석이 가능하고, 과정을 지켜보면서 조금씩 투자 할 수 있다.
- 비용이 많이 들고, 시간이 오래 걸리는 '초고속 정보통신망 개발' 같은 사업에 적합하다.
- 단점 : 반복적인 과정으로 인해 비용이 많이 들고, 개발 기간도 길어진다. 이러한 부분 때문에 상업적 시장보다 국가적인 프로젝트에서 주로 사용된다.
과정이 복잡하여 관리에 어려움이 생긴다.
∎ 4세대 기법
- 자동화 도구(CASE)들을 이용하여 코드를 작성하는 방법이다.
- 코드를 최적화하기 위한 과정이 아직 필요하다.
- 응용 분야가 다양해지는 현실에서 모든 요구사항을 맞출 수 있는 도구 개발이 어렵다.
∎ V형 모델
폭포수 모델에 테스트 과정을 합친것
모든 방법론의 공통점은 정의 ➞ 개발 ➞ 유지보수의 단계를 거친다.
'CS 지식 > 소프트웨어 공학' 카테고리의 다른 글
요구사항 분석 (기능 분석, 상태 분석, 정보 분석) (0) | 2024.08.10 |
---|---|
요구사항 분석 (인터뷰, 설문 조사) (0) | 2024.08.09 |
소프트웨어 공학의 목표 (0) | 2024.08.09 |
개발 환경 & SW 응집도 결합도 (정보처리기사) (0) | 2024.08.09 |
UI 설계 (정보처리기사) (0) | 2024.08.09 |