본문 바로가기
CSTS (일반등급)

CSTS 6장 소프트웨어 생명 주기 모델과 테스트

by record2840 2025. 5. 22.

1. 순차적 개발 모델

 

1.1) 폭포수 모델
가장 오래된 전통적인 모형
소프트웨어 개발을 요구사항 분석에서 시작하여 설계, 코딩, 테스트, 유지보수의 전 과정을 체계적이고 순차적으로 접근
모든 테스트 관련 작업이 코딩 후에 이루어짐
사용자의 요구사항이 개발자에게 익숙한 경우, 요구사항 변경이 개발 도중에 빈번하게 이루어지지 않는 경우에 적합한 개발 모형
(
장점) 개발과정을 거치면서 소프트웨어에 관해 문서와 정보가 많이 산출되므로 코딩이 완료된 후 테스트 작업에 필요한 정보를 쉽게 얻을 수 있다.
(
단점) 테스트 작업은 코딩 단계 후의 한 단계. 개발이 거의 완료될 무렵에 결함을 발견하여 수정할 때 비용과 시간이 많이 든다.

 

1.2) V 모델
테스트를 개발과 동등하게 취급
테스트 활동은 개발이 시작됨과 동시에 시작

SDLC
테스트 계획
테스트 분석
및 설계
요구사항 인수 테스트 STLC
테스트 실행
요구사항 분석 시스템 테스트
구조 설계 통합 테스트
상세 설계 컴포넌트 테스트
코딩(구현)
V 모델

 

2. V & V 모델 (Verification & Validation)
검증: 검증은 시스템이 명세를 만족하는지 검사하는 프로세스 →
시스템을 올바르게 만들고 있는가?    시스템 명세
확인: 시스템이 사용자의 요구사항을 만족하는지 검사하는 프로세스  
사용자의 요구사항을 만족하는가?   요구사항

 

3. 진화적 개발 모델
개발원칙 : 이터레이션(Iteration) + 점진적(Incremental)
각 구성요소와 추가 요구사항을 여러 이터레이션을 통해 개선 발전시켜 최종 완성품을 개발한다.
각 이터레이션마다 테스트 수행 계획을 작성하며 이 계획에 따라 테스트를 수행한다.
à 각 개발단계에서 테스트 관련 프로세스가 수행된다.

 

 3.1) 나선형 개발 모델

(= 메타 생명 주기 모델)
요구사항이 개발 초기에 완전하게 정의되어 있지 않고 부분적으로 정의된 경우에 반복적으로 요구사항을 정제하고 확장하는 과정을 사용자가 받아들일 수 있는 완전한 시스템이 개발될 때까지 반복
기술적으로 어렵거나 고객의 비즈니스 가치를 최상으로 만드는 요구사항들에 대해 우선 프로토타입을 개발하고 프로토타입에 대한 테스트 및 사용자의 평가를 거쳐 다음 개발 주기를 시작한다.
나선의 각 타원에서 한가지 모델만 채택할 필요는 없으며 생명 주기 모델을 여러 개 혼합하여 개발할 수 있다.
매 단계에서 적당한 테스트가 이루어지므로, 개발 과정에서 발생하는 많은 문제점을 해결할 수 있는 기회를 제공한다.
프로세스 한 주기마다 사용자에게 피드백을 받기 때문에 폭포수 모델처럼 개발이 거의 완료가 된 후에 심각한 문제가 발견되는 일이 생길 가능성이 거의 없다.

 

4. 애자일 개발 모델
사람 및 상호 의사 교환 > 프로세스, 도구
동작하는 소프트웨어 > 포괄적인 문서
고객과의 협력 > 계약 협상보다 우선
변화에 반응하는 것 > 계획을 따르는 것
이터레이션에서 산출된 시스템은 내부 개발자가 관리하는 것이며, 사용자에게 외부적으로 릴리즈되는 것은 최종 반복 주기의 산출물
반복주기는 보통 1~4(실무 2~4) 주기마다 새로운 요구사항이 추가되어 개발
고객이 실제 동작하는 소프트웨어를 빠르게 볼 수 있어 일의 진척 정도를 눈으로 확인 가능 (동작하는 소프트웨어가 포괄적인 문서보다 우선)
고객에게 높은 비즈니스 가치를 가져다주는 요구사항에 우선선위를 높게 둔다(고객과의 협력이 계약 협상보다 우선한다.)
자주 변경될 수 있는 고객의 요구사항을 탄력적으로 처리할 기회를 제공(변화에 반응하는 것이 계획을 따르는 것보다 우선) 단 이터레이션이 시작되면 요구사항 변경은 받아들이지 않아야 한다.

 

4.1) XP(eXtreme Progamming)
지속적인 개발을 위해 프로그래머가 과도한 작업을 피하는 것이 중요하다
짝 프로그래밍을 통해 개발자 간의 지식 전달 및 공유를 꾀하고 있다.

 

테스트 주도 개발(Test-Driven Development TDD) –
애자일 개발에서 중요한 개념
프로그램에 대한 테스트 케이스를 먼저 작성하고, 이 테스트 케이스로 테스트되는 실제 프로그램의 코드를 나중에 작성

지속적 통합 (Continuous Integration, CI)
애자일 개발에서 중요한 실천 규칙
어느 한 시점이 아니라 지속적으로 통합을 수행하는 것
통합 지연에 따른 비용 증가를 막을 수 있다.
빠른 결함 발견으로 비용을 감소할 수 있다.
항상 빌드 가능한 소프트웨어 버전이 있기 때문에 소프트웨어 품질에 대한 확신이 있다

 

※ 이미지 넣은 것은 시험에 빈칸 채우기가 나오므로 알아야 한다. 

 

반응형