: 과정을 잘 정의된 task로 나누고 순서를 정한 것
No software process
Software process 범위
1) software development process : 직접적으로 개발과 연관되어 있는 task에 관련된 절차
2) support process : 간접적으로 개발을 도와주는 task에 관련된 절차
Software development process
= Software development model
= Software development life cycle (SDLC)
: 소프트웨어 개발에 직접 관여하는 활동 혹은 절차
개발 절차가 필요한 이유
Software Activities
1) 요구사항 분석 (Requirement engineering)
2) 설계 (Design)
3) 구현 (Implemenntation)
4) 검증 (Verification & Validation)
5) 유지/보수 (Maintecance)
1) Predictability (예측 가능성) : 동일한 절차를 따라 수행했을 때 이전 프로젝트의 비용, 품질 등 데이터를 참조하면 새로 진행할 프로젝트에 대해 예측이 가능하다.
2) 테스트, 유지보수가 쉽다. -> 비용이 많이 드는 단계
3) 계획하지 않았던 변화에 잘 대응할 수 있다. (주기적인 feedback)
4) 오류를 수정하는 데 적은 비용이 든다. - 후반부로 갈수록 버그 수정에 필요한 비용이 늘어남
⭐️ 특징
1) The waterfall model : 전통적, one-shot
2) Rapid prototyping model : 계속 유저에게 피드백 받기
3) The evolution model : 계속 유저에게 피드백 받기
4) The spiral model : 위험 분석 위주로
5) The V model : 많은 테스팅이 필요한 경우 - 고위험 환경에서 사용되는
6) The unified process : waterfall model + 반복적으로 진행
=> waterfall model 과 변형 모델
코딩 전 충분한 시간을 가져 계획을 세우고 고객과 대화하여 요구사항 파악이 핵심
장점 : 절차가 단순명료하여 산출물들이 정확하게 정의가 되어있어 예측이 쉽고, 관리가 명확하다.
=> 미리 계획을 세울 수 있는 도메인에 적용
단점 :
-- 각 단계마다 문서 작업이 필수이기 때문에 코딩시간 대비 문서작성 시간이 더 오래 걸린다.
-- 절차 변화 대응에 유연하지 못한다.
-- 장점 : 유연한 피드백
-- 단점 :
--장점 : 즉각적인 피드백
-- 단점 : 계획 수립의 어려움 - 피드백에 따라 방향이 달라지기 때문에
-- 장점 :
-- 단점 :
각 단계 설명
1) Inception (도입) : 프로젝트나 할 일들의 범위 지정 (명확하지 않으면 프로토타입을 만들기도)
2) Elaboration (설계) : 시스템 아키텍쳐 설계 -> 명확한 구조
3) Construction (구현): 개발 - 릴리즈 - 피드백 반복
4) Transition (전이) : waterfall 모델에서의 마지막 단계들의 활동 비중이 커짐 (최종 산출물 배포 등)
: 문서보다는 프로그래밍에 초점을 맞추고 고객과의 커뮤니케이션 중요시
특징
1) Individuals and interactions : 팀의 중요성, 고객의 피드백
2) Working software : 실제 동작하는 소프트웨어를 보여주는 방식
3) Customer collaboration : 고객과 협업 하는 방식 (소프트웨어를 보여주고 피드백 받는 식)
4) Responding to change : 최소한의 계획으로 변화에 대응하는 방식
Q. 요구사항을 잘 이해하고 있나요?
A: Yes -> 전통적인 모델
A: No -> 변화에 잘 적응하는 모델 (agile), 경직된 절차를 따르기엔 어려움이 있음
Q. 어떤 리스크가 있나요?
A: 리스크를 충분히 파악하고 있고, 감당 가능 -> 전통적인 모델
A: 리스크가 높고 변경 가능성도 높다 -> agile
Q. 고객과 충분히 많은 소통이 가능한가요?
Q. 프로젝트의 기대되는 주기, 스케줄의 제약성
Q. 개발자들의 전문성
: 간접적으로 개발을 지원하는 프로세스
Agile methods
구조적 분석과 설계 방법
객체지향 분석 설계 방법
용어