[소프트웨어 공학] 소프트웨어 개발 프로세스란
소프트웨어 개발 프로세스?
소프트웨어 개발 프로세스란 소프트웨어 개발 절차, 방식을 의미합니다. 목표로 하는 소프트웨어를 개발하기 위해 무엇을, 언제, 어떻게 할 것인가를 정의해놓은 것입니다. 비슷한 말로는 소프트웨어 생명 주기(software life cycle)이 있습니다.
기본 프로세스 단계
Feasibility study -> Requirements engineering -> Design -> Implementation -> Verification and validation -> Operation, maintenance, and evolution
1. Feasibility study (타당성 조사)
타당성 조사는 경영진 차원에서 이뤄지는 경우가 많습니다. 이 단계에서 투입 비용 대비 이익을 평가합니다. 즉, 돈이 되는지 판단하고 프로젝트를 진행할지 말지를 결정합니다.
2. Requirements engineering (요구 공학)
요구사항은 시스템이 제공하는 서비스 및 운영 상의 제약 사항에 대한 설명입니다. 이 단계에서 요구사항을 도출하고 요구 사항을 문서화하고 요구사항 하나하나를 검증합니다.
3. Design (what을 how로 변환하는 작업)
요구사항이 정리되면 만들어야 할 소프트웨어가 무엇인지 명확해집니다. 그럼 중요한 건 이것을 어떻게 만들것인가 입니다. 디자인이 정해지면 코드가 구현됩니다. 디자인과 구현은 맞물려서 돌아가는 경우가 많습니다.
4. Implementation (코드로 구현)
말그대로 코드로 구현하는 걸 말합니다.
5. Verification and validation (검사)
verification은 개발 과정에서 요구 사항을 잘 충족하였는지를 validation은 결과물이 제대로 되었는 가를 확인하는 과정입니다.
이를 확인하는 대표적인 방법이 테스팅입니다. 소스 코드를 검사하고 그 결과 SW의 문제점을 발견하면 이를 수정합니다.
6. Operation, maintenance, and evolution (유지보수)
이후에 현장에서 SW를 사용하며 문제를 유지 보수하는 단계입니다.
소프트웨어 개발 프로세스 모델
소프트웨어 기본 프로세스 단계는 하나 하나가 소프트웨어 개발을 위해 필요한 단계입니다. 해당 단계를 어떻게 다루냐에 따라 모델의 차이가 생기는거지 모델에 따라 단계를 빼먹거나 하지는 않습니다.
대표적인 모델은 폭포수 모델입니다. 소프트웨어 개발 프로세스 6단계를 우직하게 순서대로 진행하는 모델입니다.
프로세스가 단순하고 개발자가 이해하기 쉽다는 장점이 있습니다. 단점은 변화가 어렵고 동작하는 SW가 늦게 나타난다는 점입니다.
폭포수 모델 외에도 V 모델, 나선형 모델, 애자일 모델 등이 있습니다.