본문 바로가기

자격증/정보처리기사

소프트웨어 개발 방법론

소프트웨어 생명주기 (SDLC) : 시스템의 요구분석부터 유지보수까지 전 공정을 체계화한 절차

 

소프트웨어 생명주기 프로세스 : 요구사항 분석 -> 설계 -> 구현 -> 테스트 -> 유지보수

요구사항 분석 - 요구와 조건을 결정하는 단계. 기능/비기능 요구사항으로 나뉨

설계 - 수행 방법을 논리적으로 결정하는 단계.

구현 - 특정 프로그래밍 언어를 사용하여 실제 프로그램을 작성하는 단계.

테스트 - 검사, 평가 ex) 단위/통합/시스템/인수 테스트

유지보수 - 시스템이 인수되고 설치된 후 일어나는 모든 활동

 

소프트웨어 생명주기 모델 종류 : 폭프나반

폭포수 모델 - 각 단계를 확실히 마무리 지은 후 다음 단계로 넘어가는 모델, 가장 오래된 모델, 선형 순차적 모형, 고전적 생명주기 모형, 적용 경험과 성공 사례가 많음, 단계별 정의와 산출물이 명확, 요구사항 변경이 어려움.

타당성 검토 -> 계획 -> 요구사항 분석 -> 설계 -> 구현 -> 테스트 -> 유지보수

프로토타이핑 모델 - 고객이 요구한 주요기능을 프로토타입으로 구현하여 고객의 피드백을 반영하여 소프트웨어를 만들어가는 모델

나선형 모델(Spiral Model) - 위험을 최소화 하기 위해 점진적으로 완벽한 시스템으로 개발해 나가는 모델

계획 및 정의 -> 위험 분석 -> 개발 -> 고객평가 (계위개고)

반복적 모델 - 병렬적으로 개발 후 통합하거나 반복적으로 개발하여 완성시키는 모델

 

모델 간 비교

구분 폭포수 모델 프로토타이핑 모델 나선형 모델 반복적 모델
절차도 요구사항 분석
-> 설계
-> 구현
-> 테스트
요구사항 분석
-> 프로토타입 개발
-> 프로토타입 평가
-> 구현
-> 테스트
계획 및 정의
-> 위험분석
-> 개발
-> 고객 평가 ->.........
개발 대상 -> 분석 설계 -> 구현
특징 순차적 접근 프로토타입 개발 위험분석, 반복 개발 병행개발
장점 이해가 용이, 관리가 편리 요구분석 용이, 타당성 검증 가능 위험성 감수와 변경에 유연한 대처 병행개발로 인한 일정 단축 가능
단점 요구사항 변경이 어려움 프로토타입 폐기에 따른 비용 증가 단계 반복에 따른 관리 어려움 병행개발에 따른 관리 비용 증가

 


소프트웨어 개발 방법론 : 소프트웨어 개발 전 과정에 지속적으로 적용할 수 있는 방법, 절차, 기법

 

소프트웨어 개발 방법론 종류

구조적 방법론 - 기능에 따라 나누어 개발하고 통합하는 분할과 정복 접근 방식의 방법론, 하향식 방법론, 나씨-슈나이더만 차트 사용

나씨-슈나이더만 차트 ?
도형식 표현 방법으로 시각적으로 명확히 식별하는데 적합하다.
연속, 선택 및 다중 선택, 반복 등의 제어 논리 구조로 표현

정보공학 방법론 - 개발주기를 이용해 대형 프로젝트를 수행하는 체계적인 방법론

객체지향 방법론 - 객체라는 단위로 시스템을 분석 및 설계하는 방법론, 객체, 클래스, 메시지를 사용

컴포넌트 기반 방법론 - 컴포넌트를 조립해서 하나의 새로운 응용 프로그램을 작성하는 방법론, 개발 기간 단축으로 인한 생산성 향상, 새로운 기능 추가 쉬움(확장성), 소프트웨어 재사용이 가능

애자일 방법론 - 사람이 중심이 되어 변화에 유연하고 신속하게 적응하면서 효율적으로 시스템을 개발할 수 있는 신속 적응적 경량 개발방법론

제품 계열 방법론 - 임베디드 소프트웨어를 작성하는데 유용한 방법론, 공통된 기능을 정의하여 개발하는 방법론, 영역/응용 공학으로 구분

 

애자일(Agile)

 - 사람이 중심이 되어 변화에 유연하고 신속하게 적응하면서 효율적으로 시스템을 개발할 수 있는 신속 적응적 경량 개발방법

 - 개발 기간이 짧고 신속하며 유동적으로 개발할 수 있다.

 

개발 트렌드가 모바일 환경으로 변화하고 잦은 배포의 중요성이 부각되면서 애자일 방법론이 등장하였다.

변화에 신속한 대응이 어려운 기존 개발방법론의 한계로 등장하였다.

 

애자일 방법론 유형 - XP, 스크럼, 린

XP - 의사소통 개선과 즉각적 피드백으로 소프트웨어 품질을 높이기 위한 방법론

XP의 5가지 가치 - 용기, 단순성, 의사소통, 피드백, 존중 (용단의피존)

XP의 12가지 기본원리 - 짝 프로그래밍, 공동 코드 사용, TDD, 리팩토링, 지속적인 통합, 작은 릴리즈, 메타포어, 코드표준, 간단한 디자인, 40시간 작업, 고객 상주, 계획 세우기

 

스크럼 - 매일 정해진 시간, 장소에서 짧은 시간의 개발을 하는 팀을 위한 프로젝트 관리 중심 방법론

백로그 - 요구사항

번다운 차트 - 남아있는 백로그 대비 시간을 그래픽적으로 표현한 차트

 

린 - 낭비 요소를 제거하여 품질을 향상시킨 방법론 ex) JIT , 칸반

 

애자일 VS 전통적 방법론

비교 대상 애자일 방법론 전통적 방법론
계획수립 유동적 범위 설정 확정적 범위 설정
업무수행 팀 중심 개인 단위, 관리자 주도적 명령과 통제
개발/검증 반복 주기 단위 순차적
팀관리 팀 평가 개별 평가
문서화 코드를 강조 문서화를 강조
성공요소 고객 가치 전달 계획/일정 준수
유형 XP, 스크럼, 린 폭포수, 나선형, 프로토타입