SW개발방법론활용
SW개발방법론선정
- 소프트웨어 개발 생명주기 모델의 개념과 모델 종류별 특징을 이해
- 정형화된 개발방법론의 특징을 고려하여 응용 소프트웨어 특성에 맞는 개발방법론을 선정
- 소프트웨어 공학기술의 요구사항 분석 기법인 요구 공학 방법론을 이해
- 소프트웨어 비용 산정 모델의 종류와 특징을 이해
용어사전
- 소프트웨어 개발 생명 주기
- 타당성검토 -> 분석 -> 설계 -> 개발 -> 테스트 -> 운영 -> 유지보수 -> 폐기단계의 생명주기를 가짐
- 요구공학
- 요구사항을 정의하고, 문서화, 관리하는 프로세스
Software Life Cycle 소프트웨어 개발 생명주기 개념
- 소프트웨어를 어떻게 개발할 것인가에 대한 추상적 표현으로 순차적 또는 병렬적 단계로 나눈 것
- 소프트웨어 생명주기를 표현하는 형태
- 소프트웨어 개발 생명주기
- 타당성검토 -> 분석 -> 설계 -> 개발 -> 테스트 -> 운영 -> 유지보수 -> 폐기
- 개발자는 문제의 유형이나 개발 방법 등에 따라 특정 모델을 선택
- 소프트웨어 생명주기 모델 종류
- 폭포수 모델
- 프로토타입 모델
- 나선형 모델
- 애자일 모델
1. Waterfall Model 폭포수 모델
- 각 단계를 확실히 완료한 후 그 결과를 검토하고 승인 과정을 거친 후 다음 단계를 진행하는 개발 방법론
- 고전적 라이프 사이클 패러다임이라고 하며, 개발 과정의 앞 단계가 완료되어야만 다음 단계로 넘어갈 수 있는 선형 순차적 모형
2. Prototype Model 프로토타입 모델
- 사용자 요구사항을 정확히 파악하기 위해 실제 개발될 소프트웨어에 대한 프로토타입을 만들어 최종 결과물을 예측하는 모형
- 시제품은 발주자나 개발자 모두에게 공동의 참조 모델을 제공
- 최종 결과물이 만들어지기 전에 의뢰자가 최종 결과물의 일부 또는 모형을 볼 수 있음
- 추후 구현 단계에성의 구현의 골격이 됨
- 소프트웨어 개발이 완료된 시점에서 오류가 발견되는 폭포수 모형의 단점을 보완하기 위한 모형
3. Spiral Model 나선형 모델
- 보헴이 제안한 것으로, 폭포수 모형과 프로토타입 모형의 장점에 위험 분석 기능을 추가한 모형
- 나선을 따라 돌 듯이 여러 번의 소프트웨어 개발 과정을 거쳐 점진적으로 완벽하게 소프트웨어를 개발하는 것으로 점진적 모형이라고도 함
- 개발 순서
- 계획 및 정의 -> 위험 분석 -> 공학적 개발 -> 고객평가
- 소프트웨어를 개발하면서 발생할 수 있는 위험을 관리하고 최소화하는 것이 목적
- 비용이 많이 들고 시간이 오래 걸리는 대규모 시스템 구축에 적합함
4. Agile Model 애자일 모델
- 애자일은 ‘민첩한’, '기민한’이라는 의미
- 스프린트 또는 이터레이션이라고 불리는 짧은 개발 주기를 반복하며 개발과정 진행
- 각 개발주기마다 만들어지는 결과물에 대한 고객의 평가와 요구를 적극적으로 수용
- 소규모 프로젝트, 고도로 숙달된 개발자, 급변하는 요구사항에 적합
- 애자일 개발 핵심 4가지
- 프로세스와 도구보다 개인과 그들의 협업에 더 가치를 둔다.
- 포괄적인 문서화보다 제대로 작동하는 소프트웨어에 더 가치를 둔다.
- 계약 협상보다 고객과의 협력에 더 가치를 둔다.
- 계획에 따르기보다 변화에 대응하는 것에 더 가치를 둔다.
- 개발 모형
- SCRUM
- 매일 정해진 시간에 정해진 장소에서 짧은 시간의 개발을 하는 팀을 위한 프로젝트 관리 중심의 방법론
- 30일 마다 동작 가능한 제품을 제공하는 스프린트(Sprint)를 중심으로 한다.
- Backlog : 제품과 프로젝트에 대한 요구사항
- Sprint : 30일 단위 반복(Iteration)의 짧은 개발기간으로 분리하여 반복적 수행
- 스크럼미팅 : 매일15분 정도 미팅으로 오늘과 내일의 해야 할 일 계획 수립
- 스크럼마스터 : 프로젝트 리더, 스크럼 수행 시 문제 인식 및 해결하고자 노력
- XP : eXtreme Programming
- 의사소통 개선과 즉각적인 피드백에 의한 단순한 코딩으로 SW품질을 높이기 위한 방법론
- 1~3주 반복(Iteration)
- 5가지 갗치
- 용기
- 단순성
- 의사소통
- 피드백
- 존경
- Kanban
- Lean
- 도요타 생산시스템을 재정립한 경영 방법론인 Lean 시스템의 품질기법을 소프트웨어 개발에 적용한 개발 방법론
- 낭비요소 제거를 통한 프로세스 향상이 목적
- 7가지 원칙
- 낭비제거
- 품질 내재화
- 지식 창출
- 늦은 확정
- 빠른 인도
- 사람 존중
- 전체 최적화
- Crystal
- ASD : Adaptive Software Development
- FDD : Feature Driven Development
- DSDM : Dynamic System Development Method
- DAD : Disciplined Agile Delivery
- SCRUM