소프트웨어 공학 이론 정리 -5장- <Perescriptive Process 마무리와 요구사항 분석의 시작>
-
Agility Principles
-Customer의 만족은 Customer가 요구하는 가치를 제공하는 소프트웨어를 최대한 빠르게 전달시킬 수 있을 때 충족된다.
-요구사항은 반드시 바뀌며, 바뀌는 요구사항을 잘 받아들일 수 있어야 한다.
-소프트웨어의 증진은 매주[Not Monthly] Stakeholder에게 내용을 전달해 피드백을 확인받으며 가치를 입증 받아야 한다.
-Stakeholder는 서로 face-to-face 하여 communication을 하게 되며, 이들 모두 같이 agile team에 소속된다.
-팀으로 이뤄지는 process는 기술적인 전문성과, 좋은 디자인, 단순화라는 가치를 얻게 해준다.
-Customer의 요구에 맞는 소프트웨어를 제작하는 것이 가장 중요한 목적이다.
-팀워크의 방향성은 지속 가능하다? [하나의 요구사항만이 아닌, 여러 요구사항을 지속적으로 끝까지 이뤄 나갈 수 있도록 한다.]
-Agile team은 스스로 조직되는 팀이다. 따라서 상호간 신뢰할 수 있는 개발이 지속될 수 있으며 이는 Solid한 디자인과 고객을 만족시킬 수 있는 결과를 생산할 수 있다.
-팀의 문화[성격]은 마치 자기성찰[반성]하 듯해왔던 일들을 돌아보며, 팀을 개선해 가장 큰 목적인 customer의 만족도를 높여 나가야 한다.
Agile Process Scrum Framework
-하루 작업이 끝나면 15분간 데일리 미팅을 하게 된다. [Scrum]
-Product Backlog : 해야 하는 일들이 우선순위 별로 정리되어 있다.
-Sprint Backlog : 전력질주하여 빨리 해결해야 하는 일 들
-New Functionality is demonstrated at end of sprint
Scrum Details
-Backlog Refinement Meeting : 개발자와 stakeholder들이 Product Backlog를 만들기위해 갖는 회의
-Sprint Planning Meeting : backlog 중 sprint해야하는 작업을 분류하고 다음 sprint 작업 또한 정의한다.
-Daily Scrum Meeting : [15 min Max] 팀 멤버가 당일 한 일과, 앞으로 해야 할 일을 이야기 나누며 작업 현황을 동기화한다.
-Sprint Review : 동작가능한 Demo를 Stakeholder에게 제공하고 피드백을 제공 받는다. [Approval or Rejection]
-Sprint Retrospective : Sprint가 종료되고, 어떤 것을 증진시킬 수 잇는지, 어떤 일이 잘 진행됐는지 논의.
-장점
제품의 owner가 우선순위를 정할 수 있다.
팀이 의사결정을 할 수 있다.
문서화가 가볍다.
빈번한 업데이트를 할 수 있다.
-단점
변화에 대한 기회비용을 조절하기 쉽지 않다.
매우 큰 규모의 팀에겐 맞지 않다.
전문적인 팀 구성을 요구한다.
Extreme Programming (XP) Framework
-Planning 유저의 요구사항과 가치, 테스트의 기준, 몇 주기를 거칠 것인지에 대한 기획
-Design OOP 기준으로 Class를 만들 때, CRC[Class Responsibility Collaboration]을 기초로 디자인한다. 솔루션을 분류하고 해당 솔루션에 맞는 프로토타입을 설계한다. [Design에서 프로토타입을 만든다. 다만 Running이 안될 수 있다.]
-Coding 프로그래머를 짝지어 개발시킨다. 그 후 Refactoring 과정을 거친다.
-Testing Customer가 받아들일 수 있는지 Testing한다. Unit test를 Coding-Testing에 걸쳐 진행한다.
-Release 프로젝트가 얼마나 속도감 있이 진행되고 있는가를 계산하고, 앞으로의 일을 결정한다.
XP Details
-XP Planning : User Stories, Team Estimates Cost, 품질향상을 위한 Stories 정리, 무조건 완성되어야 하는 날짜를 정하고, 프로젝트의 진행 속도를 계산한다.