Software Model
라이프 사이클 모델
폭포수 모델
고전적인 모델로 간결하지만 각 단계를 완료해야 다음 단계로 넘어간다는 특성 때문에 실제로 적용하기에는 어려움이 있다. 이를 보완하기 위해 사시미 모델(폭포수 모델의 각 단계가 이전 단계와 겹치는 부분이 존재)같은 파생형이 나오기도 했다.
요구 단계
- 요구사항 분석
- 설계
- 구현
- 평가
- 유지보수
나선형 모델
반복 사이클이 존재하는 모델로써 폭포수 모델과 달리 마지막에 문제가 발생해도 대처가 가능하다. 다만 어느 한 주기가 길어지면 폭포수 모델에 가까워질 수 있다.
요구 단계
- 계획 : 요구 사항 분석 및 목표 설정, 대안 제시 및 제약사항 도출
- 위험 분석 : 위험 요인 분석 및 해결
- 개발 : 알고리즘 디자인, 구현, 테스트
- 평가 : 현재 주기의 결과 분석 및 다음 주기 계획 수립
애자일 모델
고객의 변경사항을 개발 과정에 쉽게 반영하도록 구성하는 것
요구 사항
- 프로세스와 도구보다 개인과 상호작용 우선
- 문서보다 소프트웨어 우선
- 협상보다 협력 우선
- 계획보다 변화에 대처를 우선
소프트웨어 공학 방법론
통합 프로세스
- 도입 : 대체로 짧은 단계, 타당성 분석, 비즈니스 사례 작성 등 프로젝트의 비용과 일정, 범위를 정의
- 구체화 : 모든 요구사항을 문서화, 아키텍처 수립
- 구축 : 아키텍처를 바탕으로 요구사항 구현
- 이행 : 제품을 고객에게 전달 및 피드백
레셔널 통합 프로세스
프로세스의 각 부분을 워크플로로 정의한다. 워크플로에는 책임자, 작업, 결과, 이벤트를 포함한다. 특정 코어 프로세스 워크플로는 커스터마이즈 할 수 없다.
코어 프로세스 워크플로
- 비즈니스 모델링 : 비즈니스 프로세스 모델링, 요구사항을 명확히 하는 것이 목적
- 요구사항 : 문제 분석 및 검토
- 분석 및 디자인 : 아키텍처와 서브시스템 디자인
- 구현 : 모델링, 코딩, 소프트웨어 테스트
- 테스팅 : 계획, 구현, 소프트웨어 품질 시험 평가
- 배치 : 계획, 릴리스, 지원 등
- 형상관리 : 구상부터 제품 시나리오 전 과정 관리
- 환경 : 개발도구 제작 및 유지보수
스크럼
애자일 모델을 구현하는 방법론 중 하나
스프린트 : 2~4주 정도 길이의 반복 주기
역할 Product Owner : 요구사항에 우선순위를 매겨 백로그에 추가하는 역할
Scrum Master : 프로세스 운영 담당. 일일 스크럼 회의를 열기도 한다.
프로세스
일일 스크럼 회의 : 날마다 진행되는 회의. 모든 팀원은 지난 스크럼에 한 일, 오늘 스크럼에 할 일, 목표 진행 과정에서 발생한 문제를 답해야한다.
스프린트 계획 : 스프린트동안 구현할 기능 정의
스프린트 리뷰 : 스프린트 결과 평가 및 분석
데모 : 스프린트 주기가 끝났을 때 시연할 결과물
익스트림 프로그래밍
의사소통, 단순성, 피드백, 용기, 존중을 핵심 가치로 갖는 방법론. 12가지 기본 원칙을 가지고 있다.
기본원칙
- 페어 프로그래밍 : 모든 코드를 2명이 짝을 이루어 개발한다. 한 사람이 코드를 작성하고 다른 사람은 코드를 검토한다.
- 진행하면서 계획 : 개발을 진행하면서 계획을 수정하고 보완한다.
- 지속적 테스트 : 실제 코드를 작성하기전 단위 테스트부터 작성한다.
- 고객 참여 : 고객와 개발팀이 의견을 주고 받아 요구사항을 명확히한다.
- 지속적 통합
- 수시로 리팩토링
- 조금씩 릴리스
- 코드 작성 규칙
- 코드 공유
- 간결한 디자인 : 당장 필요한 기능만 구현하고, 나중에 개선할 여지를 남긴다.
- 공통 메타포 : 모든 팀원이 멘탈 모델 혹은 이름을 공유해야한다.
- 최상의 작업 시간 : 프로그래머가 적절한 휴식을 취하도록한다. 주 40시간 이하를 권장한다.