소프트웨어 생명주기 프로세스 개념
작업의 순서를 따라서 제시된 방법으로 수행하면 원하는 결과를 얻게 되는 것을 말한다. 공식적인 가이드라인이나 프로세스 없이 개발을 하게 되면 코딩, 수정이 계속 해서 반법된게 된다.
어떤 일을 하기 위한 특별한 방법으로 단계나 직업으로 구성됨이라고 정의되어있다. 소프트웨어 공학에서 프로세스 라는 단어는 소프트웨어를 개발하는 공정을 정의하는 것이다. 즉 정의된 작업들을 어떠한 순서로 어떤 방법으로 하는가를 다르는 방법론이다.
작업 공정이 없는 소프트웨어 개발이 있다면?
작업 공정이 없는 소프트웨어를 개발할 경우 개발 작업의 순서는 프로그래밍 -> 만족할때 까지 수정 -> 개선을 위한 방법 제시 의 방법을 계속해서 반복할 것이다. 이처럼 개발 작업을 하게 된다면 사용자의 요구를 잘 이행하지 못하고 작업의 중요성을 깨닫지 못하는 등 즉흥적으로 계속 코딩하게 되면 일정, 의로자의 요구사항에 도달하지 못할 가능성이 커진다.
소프트웨어 생명 주기란?
소프트웨어 생명주기는 개발 및 유지보수에 필요한 작업들을 체계적으로 정리한 개발 방법론의 바탕으로 개발을 위한 정의, 운용 유지보수 등의 과정을 단계별로 나눈것이다.
소프트웨어 개발 단계와 각 단계별 활동, 결과에 대한 산출물로 표현 한다.
개발자는 문제의 유형, 개발 방법에 따라 특정한 생명 주기 모형을 선택하여 사용하거나, 개별적인 모형을 사용할수 있다.
한만디로 정의하면 요구분석부터 유지 보수 까지 전 공정을 체계화한 절차 라고 할 수 있다.
요구사항 분석 -> 설계 -> 구현 -> 테스트 -> 유지보수
다양한 요구상을 고려해 새로운 제품이나 변경될 제품의 요구와 조건을 결정하는 단계
개발할 소프트웨어 기능과 제약 조건 등을 실제 사용자와 함께 정의하는 단계
기능 / 비기능 요구사항으로 구분
기능 요구사항
개념 - 시스템이 제공하는 기능
특징 - 기능성, 완전성 , 일관성
ex) 쇼핑몰 장바구니 기능, 결제수단은 신용카드 포인트 결제, 무통장 입금
비기능 요구사항
개념 - 시스템이 수행하는 기능 이외의 사항
특징 - 신뢰성, 사용성, 효율성 , 유지보수성, 이식성, 보안성
ex) 시스템은 24시간 가동 필요, 특정 함수 호출은 3초 초과 금지, 패치/ 업그레이드 필수
설계 단계에서 논리적으로 결정한 문제 해결 방법을 특정 언어를 사용 및 구현 하는 단계
인터페이스 개발 / 자료 구조 개발/ 오류 처리
단위 테스트
사용자 요구사항에 대한 단위 모듈을 테스트 하는 단계
통합 테스트
단위테스트를 통과한 모듈 사이의 인터페이스로써 통합된 컴포넌트 간의 상호작용을 검증하는 단계
시스템 테스트
통합된 단위 시스템의 기능이 시스템에서 정상적으로 수행되는지를 검증하는 단계
인수테스트
계약상의 요구사항이 만족되었는지 확인하기 위한 테스트 단계
유지보수
시스템이 인수되고 설치된 후 일어나는 모든 활동
대표적인 생명 주기 모형
폭포수 모델( Waterfall Model)
폭포수 모델의 특징은 이전 단계로 돌아갈 수 없다. 그렇기 때문에 각 단계에서 확실하게 진행하여 결과를 검토하고 승인하는 과정을 마친 후에 다음 단계로 진행할 수 있다.
가장 오래되고 폭넓게 사용된 고전적인 생명 주기 모형
한 단계가 마무리 되어야 다음 단계로 넘어가는 순차적인 모형
각 단계를 마친 후에는 다음 단계를 위한 결과물이 명확하게 나와야된다.
두개 이상의 과정이 병행하여 수행하지 않는다.
타당성 검토 > 계획 > 요구사항 분석 > 설계 > 구현 > 테스트 > 유지보수
프로토타이핑 모델 (Prototyping Model)
고객이 요구한 주요 기능을 프로토타입을 구현하여, 고객의 피드백을 반영하여 소프트웨어를 만들어가는 모델
프토타입의 뜻은 평가 받기 위한 실물 크기의 모형으로써 구현단계의 골격
요구분석이 쉽고 타당성 검증이 가능하나 프로토 타입의 폐기에 따른 비용 증가
나선형 모델(Spiral Model)
시스템 개발시, 위험을 최소하하기 위해 점진적으로 완벽한 시스템으로 개발해 나가는 모델
고객 평가까지 진행되었다가 다시 계획 및 정의 돌아가는 반복적인 개발 모델
위험성 감소와 변경에 유연한 대처가 가능하나, 단계 반복에 따른 관리 어려움
계획 및 정의 > 위험 분석 > 개발 > 고객 평가
반복적 모델(Iteration Model)
구축 대상을 나누어 병렬적으로 개발 후 통합, 반복적으로 개발하여 점증적으로 완성시키는 모델
대규모 프로젝트를 여러 개발자들이 일을 나누어 개발하다가 나중에 통합하는 방식
병행 개발로 일정 단축이 가능하나, 병행 개발에 따른 관리 비용이 증가