소프트웨어 개발 방법론
개념
- 소프트웨어 개발 전 과정에 지속적으로 적용할 수 있는 방법, 절차, 기법
- 소프트웨어를 하나의 생명체로 간주. 개발의 시작부텀 소프트웨어의 소멸까지의 과정을 형상화한 방법론
종류
- 구조적 방법론 (Structure Development)
- 프로세스 중심의 하향식 방법론
- 나씨-슈나이더만 차트
- 논리의 기술에 중점을둔 도형식 표현 방법
- 연속, 선택 및 다중선택, 반복 등 제어 논리 구조로 표현
- 조건이 여러개인 곳의 처리를 시각적으로 명확히 식별하는데 적합
- 정보공학 방법론 (Infomation Engineering Development)
- 정보시스템 개발에 필요한 관리 절차와 작업 기법을 체계화한 방법론
- 개발주기를 이용해 대형 프로젝트를 수행하는 체계적 방법론
- 객체 지향 방법론(OOD : Object Oriented Development)
- 객체라는 기본 단위로 시스템을 분석, 설계하는 방법론
- 복잡한 현실 세계를 사람이 이해하는 방식으로 시스템에 적용하는 방법론 (객체지향의 개념)
- 객체, 클래스, 메시지 이용
- 컴포넌트 기반 방법론 (CBD : Component Based Development)
- 컴포넌트를 조립해 하나의 새로운 응용 프로그램을 만드는 방법론
- 개발 기간 단축 ( 생산성 향상)
- 새로운 기능 추가 용이 (확장성)
- 재사용이 가능
- 애자일 방법론 (Agile Development)
- 아래에서 설명
애자일 ( 중요 )
개념
- 경량 개발 방법론
- 절차보다는 사람이 중심.
- 변화에 유연하고, 신속하게 적응하면서 효율적으로 시스템 개발
- 개발 기간이 빠르며, 폭포수 모형과 대비되는 방법론
등장 배경
- 개발 환경의 변화
- 소프트웨어 개발 트렌드가 모바일로 변화
- 시장 적시성과 잦은 배포의 중요성 부각
- 기존 개발 방법론의 한계
- 전통적인 것은 문서 및 절차 위주로 변화에 신속한 대응이 어려움
- 빠르게 적용하고, 효율적으로 개발할 수 있는 방법론 필요성 증가
유형
XP (Extreme Programming)
의사소통 개선과 즉각적 피드백으로 소프트웨어 품질을 높이기 위한 방법론
1-3주의 반복적인 개발주기
XP의 가치
- 용기(Courage)
- 단순성(Simplicity)
- 의사소통
- 피드백
- 존중
요약하면 서로 존중하면서 용기를 내 다른 사람들과 의사소통을 하는 것이라고 생각하면 쉬울 것 같다.
스크럼(Scrum)
매일 정해진 시간, 장소에서 짧은 개발을 하는 팀을 위한 프로젝트 관리 중심 방법론
- 백로그 - 제품과 프로젝트에 대한 요구사항
- 스프린트- 2-4주의 짧은 개발 기간 반복 수행해 개발 품질 향상
- 스크럼, 데일리 미팅 - 매일 15분 미팅으로 To do List 수립
- 스크럼 마스터 - 프로젝트 리더.
- 스프린트 회고 - 규칙 준수 여부나 개선점 기록. 일정 주기로 실행
- 번 다운 차트(Burn Down Chart) - 남은 백로그 대비 시간 (일의 진행정도)을 시각화한 차트. 수직(백로그), 수평(남은 시간)
린(Lean)
도요타의 린 시스템 품질기법을 개발 프로세스에 적용.
JIT (Just In Time), 칸반(Kanban)보드 사용
- 낭비제거
- 품질 내재화
- 지식 창출
- 늦은 확정
- 빠른 인도
- 존중
- 전체 최적화
애자일 VS 전통적 방법론 비교
비교 대상 | 애자일 방법론 | 전통적 방법론 |
계획 수립 | 유동적 범위 설정 | 확정적 범위 설정 |
업무수행 | 팀 중심 | 관리자 주도적. 개인 단위 |
개발/검증 | 반복 주기 단위로 개발 / 검증 | 분석->설계->구현->테스트 순차적 |
팀 관리 | 업무 몰입, 팀 평가 | 경쟁, 개별 평가 |
문서화 | 강조 : 문서화 < 코드 | 상세한 문서화 |
성공요소 | 고객 가치 전달 | 계획 / 일정 준수 |
유형 | XP, 스크럼, 린 | 워터폴, 프로토타입, 나선형 |