Software Model

라이프 사이클 모델

폭포수 모델

고전적인 모델로 간결하지만 각 단계를 완료해야 다음 단계로 넘어간다는 특성 때문에 실제로 적용하기에는 어려움이 있다. 이를 보완하기 위해 사시미 모델(폭포수 모델의 각 단계가 이전 단계와 겹치는 부분이 존재)같은 파생형이 나오기도 했다.

요구 단계

  1. 요구사항 분석
  2. 설계
  3. 구현
  4. 평가
  5. 유지보수

나선형 모델

반복 사이클이 존재하는 모델로써 폭포수 모델과 달리 마지막에 문제가 발생해도 대처가 가능하다. 다만 어느 한 주기가 길어지면 폭포수 모델에 가까워질 수 있다.

요구 단계

  1. 계획 : 요구 사항 분석 및 목표 설정, 대안 제시 및 제약사항 도출
  2. 위험 분석 : 위험 요인 분석 및 해결
  3. 개발 : 알고리즘 디자인, 구현, 테스트
  4. 평가 : 현재 주기의 결과 분석 및 다음 주기 계획 수립

애자일 모델

고객의 변경사항을 개발 과정에 쉽게 반영하도록 구성하는 것

요구 사항

  1. 프로세스와 도구보다 개인과 상호작용 우선
  2. 문서보다 소프트웨어 우선
  3. 협상보다 협력 우선
  4. 계획보다 변화에 대처를 우선

소프트웨어 공학 방법론

통합 프로세스

  1. 도입 : 대체로 짧은 단계, 타당성 분석, 비즈니스 사례 작성 등 프로젝트의 비용과 일정, 범위를 정의
  2. 구체화 : 모든 요구사항을 문서화, 아키텍처 수립
  3. 구축 : 아키텍처를 바탕으로 요구사항 구현
  4. 이행 : 제품을 고객에게 전달 및 피드백

레셔널 통합 프로세스

프로세스의 각 부분을 워크플로로 정의한다. 워크플로에는 책임자, 작업, 결과, 이벤트를 포함한다. 특정 코어 프로세스 워크플로는 커스터마이즈 할 수 없다.

코어 프로세스 워크플로

  1. 비즈니스 모델링 : 비즈니스 프로세스 모델링, 요구사항을 명확히 하는 것이 목적
  2. 요구사항 : 문제 분석 및 검토
  3. 분석 및 디자인 : 아키텍처와 서브시스템 디자인
  4. 구현 : 모델링, 코딩, 소프트웨어 테스트
  5. 테스팅 : 계획, 구현, 소프트웨어 품질 시험 평가
  6. 배치 : 계획, 릴리스, 지원 등
  7. 형상관리 : 구상부터 제품 시나리오 전 과정 관리
  8. 환경 : 개발도구 제작 및 유지보수

스크럼

애자일 모델을 구현하는 방법론 중 하나
스프린트 : 2~4주 정도 길이의 반복 주기

역할 Product Owner : 요구사항에 우선순위를 매겨 백로그에 추가하는 역할
Scrum Master : 프로세스 운영 담당. 일일 스크럼 회의를 열기도 한다.

프로세스
일일 스크럼 회의 : 날마다 진행되는 회의. 모든 팀원은 지난 스크럼에 한 일, 오늘 스크럼에 할 일, 목표 진행 과정에서 발생한 문제를 답해야한다.
스프린트 계획 : 스프린트동안 구현할 기능 정의
스프린트 리뷰 : 스프린트 결과 평가 및 분석
데모 : 스프린트 주기가 끝났을 때 시연할 결과물

익스트림 프로그래밍

의사소통, 단순성, 피드백, 용기, 존중을 핵심 가치로 갖는 방법론. 12가지 기본 원칙을 가지고 있다.

기본원칙

  1. 페어 프로그래밍 : 모든 코드를 2명이 짝을 이루어 개발한다. 한 사람이 코드를 작성하고 다른 사람은 코드를 검토한다.
  2. 진행하면서 계획 : 개발을 진행하면서 계획을 수정하고 보완한다.
  3. 지속적 테스트 : 실제 코드를 작성하기전 단위 테스트부터 작성한다.
  4. 고객 참여 : 고객와 개발팀이 의견을 주고 받아 요구사항을 명확히한다.
  5. 지속적 통합
  6. 수시로 리팩토링
  7. 조금씩 릴리스
  8. 코드 작성 규칙
  9. 코드 공유
  10. 간결한 디자인 : 당장 필요한 기능만 구현하고, 나중에 개선할 여지를 남긴다.
  11. 공통 메타포 : 모든 팀원이 멘탈 모델 혹은 이름을 공유해야한다.
  12. 최상의 작업 시간 : 프로그래머가 적절한 휴식을 취하도록한다. 주 40시간 이하를 권장한다.