1-1. 소프트웨어 개발방법론
(1) 소프트웨어 생명주기 모델
1. 소프트웨어 생명주기(SDLC) 모델 개념
- 시스템의 전체적인 공정에 대한 작업 프로세스를 모델화 한 것
2. 소프트웨어 생명주기 모델 프로세스
요구사항 분석 -> 설계 -> 구현 -> 테스트 -> 유지보수
- 요구사항 분석 (기능 / 비기능 요구사항)
- 설계 (시스템 구조 / 프로그램 / 사용자 인터페이스 설계)
- 구현 (인터페이스 / 자료구조 개발, 오류 처리)
- 테스트 (단위 / 통합 / 시스템 / 인수 테스트) 단통시인
- 유지보수 (예방, 완전, 교정, 적응 유지보수)
3. 소프트웨어 생명주기 모델 종류 (폭프나반)
- 폭포수 모델 (타당성 검토 -> 계획 -> 요구사항 분석 -> 설계 -> 구현 -> 테스트 -> 유지보수)
- 프로토타이핑 모델
- 나선형 모델 (계획 및 정의 -> 위험 분석 -> 개발 -> 고객 평가) (계위개고)
- 반복적 모델
(2) 소프트웨어 개발 방법론
1. 소프트웨어 개발방법론 개념
- 소프트웨어 개발 전 과정에 지속적으로 적용할 수 있는 방법
- 개발의 시작부터 시스템을 사용하지 않는 과정까지 전 과정을 형상화한 방법론
2. 소프트웨어 개발 방법론 종류
구조적 방법론
- 전체 시스템을 기능에 따라 나누어 개발, 이를 통합하는 분할 및 정복 접근 방식
- 프로세스 중심의 하향식 방법론
- 구조적 프로그래밍 표현을 위해 나씨-슈나이더만(Nassi-Shneiderman) 차트 사용
나씨-슈나이더만 : 논리의 기술에 중점을 둔 도형식 표현 방법
정보공학 방법론 : 관리 절차와 작업 기법을 체계화한 방법론, 주로 대형 프로젝트에서 쓰임
객체지향 방법론
컴포넌트 기반 방법론 : 컴포넌트를 조립해서 하나의 새로운 응용 프로그램을 작성하는 방법론
애자일 방법론 : 사람이 중심이 되어 쇼율적으로 시스템을 개발할 수 있는 신속 적응적 경량 개발방법론
제품 계열 방법론 : 공통된 기능을 정의하여 개발하는 방법론
3. 애자일 (Agile)
- XP, 린(Lean), 스크럼(SCRUM) 등이 있다.
- XP의 5가지 가치 : 용기, 단순성, 의사소통, 피드백, 존중
- XP의 12가지 기본 원리
기본 원리 설명 짝 프로그래밍 개발자 둘이서 짝으로 코딩하는 원리 공동 코드 소유 시스템에 있는 코드는 언제라도 수정 가능하다는 원리 지속적인 통합 매일 여러 번씩 소프트웨어를 통합하고 빌드해야 한다는 원리 계획 세우기 고객이 요구하는 비즈니스 가치를 정의하고, 어떤 부분에서 지연될 수 있는지 알려주어야 한다는 원리 작은 릴리즈 작은 시스템을 먼저 만들고, 짧은 단위로 업데이트한다는 원리 메타포어 공통적인 이름 체계와 시스템 서술서를 통해 고객과 개발자간의 의사소통을 원활하게 한다는 원리 간단한 디자인 요구사항에 적합한 가장 단순한 시스템을 설계한다는 원리 테스트 기반 개발(TDD) 작성해야 하는 프로그램에 대한 테스트를 먼저 수행하고, 테스트를 통과할 수 있도록 코드를 작성한다는 원리 리팩토링 기능을 바꾸지 않으면서 중복제거, 단순화 등을 위해 시스템을 재구성한다는 원리 40시간 작업 일주일에 40시간 이상을 일하지 말아야 한다는 원리 고객 상주 고객을 프로젝트에 풀타임으로 상주시켜야 한다는 원리 코드 표준 코딩 표준을 정의해야 한다는 원리 - 스크럼(SCRUM) : 매일 정해진 시간, 장소에서 짧은 시간의 개발을 하는 방법론
주요 개념 설명 백로그 제품과 프로젝트에 대한 요구사항 스프린트 2~4주의 짧은 개발 기간을 반복 수행 스크럼 미팅 데일리미팅이라고 하며 매일 15분정도 To-Do List 계획 수립 스크럼 마스터 프로젝트 리더 스프린트 회고 스프린트 주기를 되돌아보며 개선점 등을 확인 및 기록 번 다운 차트 남아있는 백로그 대비 시간을 표현한 차트 - 린(LEAN) : 비 요소를 제거하여 품질을 향상시킨 방법론 (도요타의 린 시스템 품질기법을 적용)
- 린의 7가지 원칙 :낭비제거, 품질내재화, 지식 창출, 늦은 확정, 빠른 인도, 사람 존중, 전체 최적화