프로세스와 방법론의 비교
2.1 소프트웨어 생명주기
- SW 개발에 대한 기술적, 관리적 이슈를 다루는 작업
- 서로 다른 목적, 서로 협력하여 전체 목적 만족
2.2 프로세스
- SW 시스템을 구축하기 위하여 수행되는 작업 단계
- SW 개발에 대한 기술적, 관리적 이슈를 다루는 작업
- 프로젝트 중심 프로세스
- 개발 프로세스
- 관리 프로세스
- 기타 프로세스
- 형상 관리 프로세스
- 프로세스 관리 프로세스
프로세스의 정의
- 작업 결과와 검증 조건 명확히 정의
- 작업 방법
- 진입 조건, 출구 조건
- 좋은 프로세스 특성 : 예측 가능성, 테스팅과 유지보수 용의성
- 좋은 프로세스 특성2 : 변경 지원, 결함 제거
2.3 프로세스 모델
- 일반적인 모델이 될만한 프로세스를 기술한 것
- 대표적인 프로세스 모델
- 폭포수 모델
- 프로토타이핑 모델
- 나선형 모델
- 진화적 모델
- Unified Process
- 애자일 프로세스
폭포수 모델(Waterfall model)
- 가장 오래되고 널리 사용된 프로세스 모델
- 각 단계가 다음 단계 시작 전에 끝나야 함(순서적)
- 직능 중심의 프로젝트
- 결과물 정의가 중요, 크고 복잡한 오래 지속되는 프로젝트에 적합
- 프로세스가 단순하여 초보자 쉽게 적용 가능, 중간 산출물이 명확, 관리 용이
- 소용없는 다종 문서 생산, 애매한 부분이 남아 있을 때 수용 X, 시스템 완성 후 시작(시간 오래 걸림)
V 모델(V model)
- 검증을 강화하는 관점에서 폭포수 모델 확장한 모델
프로토타이핑 모델(Prototyping model)
- 요구 사항에 대한 피드백을 받기 위해 시스템을 실험적으로 만들어 사용자에게 보여주고 평가하는 방법
- 도구
- 화면 생성기
- 시스템의 작동을 시뮬레이션 하여 사용자가 볼 수 있는 반응 보여줌
- 공동 참조 모델
- 사용자와 개발자의 의사소통을 도와주는 좋은 매개체
- 목적
- 단순한 요구 추출 - 만들고 버림
- 제작 가능성 타진
- 장점
- 사용자 의견 반영 Good
- 사용자 관심 증대, 개발자는 요구 명확히 도출
- 단점
- 오해, 기대심리 유발
- 관리가 어려움
- 적용
- 개발 착수 시점에 요구가 불투명할 때
- 실험적으로 실현 가능성 타진해보고 싶을 떄
나선형 모델(Spiral model)
- SW의 기능을 나누어 점증적으로 개발
- 실패 위험 줄임
- 테스트 용이
- 피드백
- 여러 번의 점증적인 릴리스(incremental release)
- 반복 순환 단계
- 목표, 방법, 제약 조건 설정
- 위험 요소 분석 및 해결
- 개발과 평가
- 다음 단계의 계획
- 장점
- 대규모 시스템 개발에 적합
- 반복적인 개발, 테스트
- 단점
- 관리가 복잡
- 위험 분석을 잘못하여 지나친 경우 피해가 큼
- 성공 사례가 많지 않음
- 적용
- 재정적 또는 기술적 위험 부담이 큰 경우
- 요구 사항이나 아키텍처 이해가 어려운 경우
진화적 모델(Evolution model)
- 개발 사이클이 짧은 환경
- 빠른 시간 안에 시장에 출시하여야 이윤 직결
- 개발 시간 줄이는 법 - 시스템을 나누어 릴리스
- 릴리스 구성 방법
- 점증적 방법 - 기능별 릴리스
- 반복적 방법 - 릴리스 할 떄마다 기능의 완성도 높임
- 장점
- 몇 가지 부족해도 초기에 사용 가능
- 사용자 요구 빠르게 반영
- 새로운 기능을 가진 SW에 대한 시장 빨리 형성
- 문제를 신속, 꾸준하게 고쳐 나갈 수 있음
- 단점
- 큰 프로젝트에 부적합
- 실패의 위험이 큼
- 프로젝트 진행이 위험 분석에 크게 의존
Unified 프로세스
- 도입(inception)
- 1, 2회 정도 반복으로 도입 단계 진행
- 유스케이스 모델, SW 구조, 계획 작성
- 정련(elaboration)
- 여러 번 반복 과정으로 이뤄짐
- 대부분 유스케이스 작성
- 아키텍처 설계
- 구축(construction)
- 남아 있는 유스케이스에 대하여 구현 통합
- 전환(transition)
- 시스템 배치 , 사용자 교육
- 베타 테스팅, 결함 수정, 기능 개선
- 장점
- 문서화가 잘 되어 있어 교육받기 좋음
- 시간, 노력 줄임
- 쉽고 빠르게 코드 재사용
- 단점
- 프로세스가 너무 복잡, 이해하기 어렵고 적용 X
- 의사소통에 대한 가이드 X
애자일 프로세스
- 2~6주간의 짧은 주기로 개발 반복
- 실행되는 소프트웨어를 개발하여 단계적으로 시스템 전체 완성
- 애자일 선언
- 형식적인 문서보다 커뮤니케이션을 통하여 프로젝트가 목표를 향하여 나아가게 함
- SW을 통하여 요구 확인
- 사용자 요구는 비즈니스 환경에 따라 프로젝트 중간에 바뀔 수 있음
- 짧은 주기 동안 요구정의에서 구현, 테스트까지 이루어지며 각 반복 주기의 반성의견을 다음에 포함
익스트림 프로그래밍(eXP)
- 사용자 스토리, 매일 빌드와 통합, 테스트 주도 개발, 페어 프로그래밍
스크럼(Scrum)
- 개발 팀원 모두가 함께 소통하고 협력하여 짧은 주기를 반복하며 SW를 개발 하는 작업, 역할, 결과물
- 백로그를 정하고 여기에 우선순위 분여
- 짧은 주기(스프린트)
2.4 지원 프로세스
- ISO/IEC 12207에서의 프로세스 그룹
관리 프로세스
- 비용과 품질 목표를 달성하기 위하여 프로젝트 관리하는데 필요한 모든 작업
- 프로젝트 모니터링과 제어는 개발 프로세스의 모든 단계를 포함하므로 가장 긴 기간 동안 이루어짐
품질 보증 프로세스
- 프로세스와 프로덕트와 대한 품질을 관리하고 향상
- 인스펙션 프로세스
- 개발 결과에서 결함을 찾거나 방지하기 위한 노력
- 정의된 프로세스에 따라 동료 그룹이 작업 결과를 검사
- 프로세스 관리 프로세스
형상 관리 프로세스
- 개발 중에 발생하는 변경을 체계적으로 컨트롤 하는 것
- 개발 작업과 독립적인 작업
2.5 방법론
- SW 프로세스의 각 작업을 어떻게 수행하느냐를 정의
- 프로세스
- 일반적으로 개발할 때 하여하는 할 작업만을 명시
- 어떤 관계가 있는지 나타내지 않음
구조적 방법론
- 분리와 정복 원리 적용
- 자료 흐름도를 구조도로 변경하는 과정
정보공학 방법론
- 기업 중심
- 전략적 시스템 계획 중심
- 데이터 중심
- 분할과 정복
- 공학적 접근
- 사용자의 적극적 참여
객체지향 방법론
- 자료와 함수를 가까운 곳에 정의하여 객체로 묶고 객체 사이 메시지를 호출하여 원하는 기능 담당