1) 현대적 프로그래밍 기술 계속적으로 적용
2) 품질이 유지되도록 지속적 검증
3) 개발 관련 사항 및 결과에 대한 명확한 기록 유지
: 소프트웨어 개발 방법론의 바탕이 되는것으로, 소프트웨어 개발을 위해 정의, 운용, 유지보수 등의 과정을 단계별로 나눈것
1) 폭포수 모형 (Waterfall Model)
타당성 검토 -> 계획 -> 요구분석 -> 설계 -> 구현(코딩) -> 시험(검사) -> 유지보수
2) 프로토타입 모형 (Prototype Model, 원형 모형)
요구수집->빠른설계->프로토타입구축->고객평가->조정->구현->요구수집->...
3) 나선형 모형 (Spiral Model, 점진적 모형)
계획 -> (위험)분석 -> 개발 -> 평가 반복!
4) 애자일 모형 (Agile Model)
애자일 개발 핵심가치 4가지
1. 프로세스와 도구보다는 개인과 상호작용에 더 가치를 둔다
2. 방대한 문서보다는 실행되는 SW에 더 가치를 둔다
3. 계약 협상보다는 고객과의 협업에 더 가치를 둔다
4. 계획을 따르기보다는 변화에 반응하는것에 더 가치를 둔다
1) 제품 책임자 (Product Owner)
2) 스크럼 마스터 (Scrum Master)
3) 개발팀 (Development Team)
#1 제품 백로그: 개발 요구사항을 우선순위에 따라 나열, 지속적 업데이터, 백로그에 작성된 스토리 기반으로 릴리즈플랜 수립
#2 스프린트 계획 회의: 백로그 중 이번 스프린트에서 수행할 작업 대상으로 단기일정 수립, 스토리를 태스크(Task)라는 작업 단위로 분할 후 개발자별로 수행할 작업 목록인 스프린트 백로그 작성
#3 스프린트(Sprint): 실제 개발작업 진행하는 과정으로, 2-4주 소요(짧은 기간!!). Sprint Backlog 작성된 Task 대상으로 작업시간 추정하여 개발 담당자에게 할당, 개발자가 원하는 태스크를 직접 선별하도록 하는 것이 좋음. Task - To Do / In Progress / Done
#4 일일 스크럼 회의: 매일 약 15분정도 짧은 시간 진행상황 점검, 보통 서서 진행하며 남은 작업시간은 소멸차트(Burn-down Chart)에 표시. SM은 발생한 장애 해결 도움.
#5 스프린트 검토 회의: 부분 또는 전체완성제품이 요구사항에 부합하는지 사용자가 포함된 참석자 앞에서 테스트 진행, 한 주당 한 시간 내로 진행. PO는 피드백 정리 후 백로그 업데이트
#6 스프린트 회고: 주기 되돌아보며 규칙준수했는지, 개선점 없는지 등을 확인하며 해당 스프린트 끝나고 하거나 주기적으로 진행
XP는 수시로 발생하는 고객의 요구사항에 유연한 대처 위해 고객의 참여-개발과정의 반복 극대화하여 개발생산성 향상시킴
XP의 5가지 핵심가치: 의사소통, 단순성, 용기, 존중, 피드백
👉🏻 의사선생님 피존용기에 담(단)아주세요
사용자 스토리: 고객요구사항->간단한 시나리오 / 내용은 기능단위 구성, 필요한 경우 간단한 테스트사항 기재
스파이크(Spike): 기술문제에 대한 위험 감소 위해 별도로 만드는 간단 프로그램 / 처리할 문제 외의 다른 조건 모두 무시
이터레이션: 하나의 릴리즈를 더 세분화한 단위 / 일반적으로 1-3주 / 이 기간동안 새로운 스토리 작성 가능
테스트 과정에서 발견한 오류는 다음 이터레이션에 포함, 테스트 완료시 다음 이터레이션 진행
XP의 주요 실천 방법 (영어로도 알아야 함)
#1 Pair Programming(짝 프로그래밍): 다른 사람과 함께 프로그래밍 수행함으로써 개발에 대한 책임 공동으로 나눠가짐
#2 Collective Ownership(공동 코드 소유): 개발 코드에 대한 권한과 책임 공동 소유
#3 Test-Driven Development(테스트 주도 개발): 실제 코드 작성 전 테스트케이스 먼저 작성하며 자신이 무엇을 해야 할지 파악/ 지속적 진행 위해 자동화된 테스팅 도구 사용
#4 Whole Team(전체 팀): 개발에 참여하는 모든 구성원(고객포함) 각자 자신의 역할 알고 책임 가져야 함
#5 Continuous Integration(계속적 통합): 모듈단위로 나눠서 개발된 코드 작업 마무리시 통합
#6 Small Relases(소규모 릴리즈): 릴리즈기간 짧게 반복 -> 고객요구변화 신속한 반응
#7 Design Improvement or Refactoring(디자인 개선 또는 리팩토링): 프로그램 기능의 변경 없이 단순화, 유연성 강화 등을 통한 시스템 재구성
참고 도서 📚
2022 시나공 정보처리기사 필기