-> 지난 시간: 공학의 개념과 그 공학에서는 보안적 요소가 중요하다. 즉 품질과 생산성이 중요해서, 단계적으로 수행한다. 즉, 프로세스라는 하나의 작업 묶음을 단계적으로 수행하는 것이다. 그런데 그 묶음을 어떻게 구성할지에 대한 게 프로세스 모델이다. 또한, 그 묶음의 각 단계를 어떻게 수행할 지를 정의하는 것이 방법론이다.
프로세스 모델
-> 모델의 이름과 단계 잘 기억하기
-> 각 프로젝트에 적합한 모델 선정 중요
: 이미 잘 알고 있는 문제나 연구 중심 문제, 변화가 적은 문제에 적합
-> 순차적으로 진행이 된다. 한 단계가 끝나야 다음 단계 실행
-> 결과물 정의가 중요 (전체 계획 중요)
-> 명확한 기능이 있는 경우에 유용
-> 코딩 이전까지의 설계 단계가 길다 (문서화가 많음)
: 사용자의 요구 사항이 추상적일 때, 새로운 요구가 많은 경우에 적합 (새로운 기술, 명확한 요구 분석이 힘들 때 좋음)
-> 불분명한 요구 분석 명확히 하기 위하여 sample 하나 만드는 것
-> 앞의 과정이 너무 길다는 폭포수 모델의 단점 보완
-> 꼭 필요한 기능만 추려서 타당성을 보는 모델 (모델 하수를 만드는 것과 같음)
-> 단순한 요구만을 추출한 후 버림
-> 새로운 요구가 많은 경우에 적합
1. 실험적 방법: 최종꺼 버리고, 처음부터 새로운 SW개발 (단지 요구 만을 얻음
2. 진화적 방법: 최종꺼 버리지 않고, 지속적으로 발전시켜 나감-> 나선형 모델 (위험분석)
: 여러 사이클로 나눠서 release (리스크 적은 모델)
-> 프로토 타이핑 모델을 기반으로 하고있음
-> 몇 가지의 기능으로만 release하고 직접 사용해보면서 진화시켜 나감
: 진화적 프로토타이핑 모델에 위험분석 추가
-> 진화적 모델의 special case이다. (눈두덩이 굴리면서 점점 커짐)
-> 초기에 위험성 추출하고 해결할 수 있는 모델
-> 점증적 개발
: 폭포수 모델에서 테스팅 단계를 강화한 모델 (폭포수 모형의 변화)
-> 앞선 단계들을 모두 테스팅하는 과정이 포함된다.
-> 작업과 결과의 검증에 초점-> 오류 줄일 수 있음-> 신뢰성이 높이 요구되는 분야에 좋음
: 여러 개로 나누어서 각각에 대해 각 단계를 검사하는 모델
-> 폭포수 모델처럼 한 단계에 다 표현하지 않고 나누어서 표현
-> 반복적 개발 방법
: 절차와 도구보다 소통을 중시/ 잘 바뀌는 요구 사항 반영해서 개발 쉽게
-> 코딩때까지의 준비기간이 너무 길어진다는 폭포수 모델의 단점을 보완
-> 계속 변화하기 때문에, 최종 결과물을 생성하는 건 바람직하지 않고, 계속해서 소통하는 것이 중요하다
-> 단위 별로
: ISPI/ISC 12207에는 지원과 관련된 프로세스가 정의되어있음
프로세스 방법론
: 프로세스의 각 단계들을 어떻게 수행할 것인지
: 로직 중심/ 모듈
-> 분할과 정복: 하나의 기능을 세세하게 모듈로 쪼개서 처 (복잡한 문제 쉽게 다룰 수 있음)
-> 구조도: 모듈 간의 관계를 나타내는 그래프
: 데이터 중심/ 엔티티
-> 데이터 중심으로 전략 계획 수립하고, 데이터 중심으로 접근
: 객체 중심/ 유스케이스 분석
-> 각각을 객체라고 생각하여, 객체 사이에 호출을 통해 원하는 기능을 수행함 (복잡한 대규모 시스템 모듈화)
⭕ 나의 언어로 정리:
작업의 묶음을 프로세스라고 한다. 프로젝트의 종류에 따라 그 프로세스에 어떤 모델을 적용할지 즉, 그 묶음을 어떻게 처리할지가 달라진다. 프로세스 모델의 종류는 7가지 정도가 있고, 방법론은 각 단계를 어떻게 수행할지를 의미하는 것으로 3가지가 있다.
1. 폭포수 모델: 순차적, 명확한 기능과 요구사항
2. 프로토 타이핑-> 진화적 모델: 필요한 기능들만을 추려서 요구를 분석 후 버림 -> 요구사항이 불명확, 점증적으로 release/
3. 나선형 모델: 진화적 방법 + 초기에 위험 분석 (대규모 프로젝트에 적합)
4. V모델: 폭포수 모델의 단점 보완
5. 애자일 모델: 소통 중시
6. unified 모델
7. 지원 프로세스