NJUG 4 Agile Software Development & Interactive TV application By Soothi Na-Ranong (Bomber) soothi@gmail.com soothi@truevisionstv.com Mobile: +66-8-6563-6763 Topics • Agile Software Development • Interactive TV Application Agile SDLC Software Development Life Cycle Planning Analysis Design Development Testing Deployment Maintenance Waterfall Model Planning Analysis Design Development Testing Deployment Maintenance Iterative Design Development Testing Analysis Planning Initial Planning Deployment Evaluation Maintenance What is Agile? Agile software development is a conceptual framework for software engineering that promotes development iterations throughout the life-cycle of the project. – Wikipedia Agile is an iterative and incremental (evolutionary) approach to software development which is performed in a highly collaborative manner by self-organizing teams with "just enough" ceremony that produces high quality software in a cost effective and timely manner which meets the changing needs of its stakeholders. - Scott W. Ambler in Agile Modeling Agile development provides a set of practices simple enough to engage developers, managers, and customers yet sufficiently sound and disciplined to build quality software with predictability. - Dave Thomas (founding director of AgileAlliance.com) Agile คืออะไร การพัฒนาซอฟแวร์ แบบ Agile เป็ นแนวคิดที่ใช้ เป็ น กรอบ ระเบียบ เพื่อให้ การพัฒนาซอฟแวร์ มีความคล่องตัวสูงสุด หลักการของ Agile ลูกค ้า ลูกค ้า ความพึง่ พอใจของลูกค ้าสาคัญทีส ่ ด ุ บริหาร ต ้องแน่ใจให ้ได ้ว่า Process ทีใ่ ช ้ ชว่ ยให ้งานคล่องตัวจริง ผลงาน ใสใ่ จพัฒนาความสามารถทัง้ ด ้าน programming และ design ตลอดเวลา Welcome changing requirements ลูกค ้า ื่ สาร สอ สง่ มอบงานสมา่ เสมอ ฝ่ าย Business และ Developer ทางานร่วมกันตลอดเวลา คนทางาน ื่ สาร สอ บริหาร สนั บสนุนให ้ Developer มีความสุขกับงานทีท ่ า Face-to-Face conversation ความคืบหน ้าวัดตัวจาก software ทีท ่ างานได ้ ผลงาน ผลงาน Simplicity ผลงานทีด ่ เี กิดจากความคิดของทีมงาน บริหาร พร ้อมทีจ ่ ะเปลีย ่ นแปลงปรับปรุง เพือ ่ ให ้ดียงิ่ ขึน ้ ไปอีก หลักการของ Agile บริหาร ความคืบหน ้าวัดตัวจาก software ทีท ่ างานได ้ ลูกค ้า Welcome changing requirements ต ้องแน่ใจให ้ได ้ว่า Process ทีใ่ ช ้ ชว่ ยให ้งานคล่องตัวจริง พร ้อมทีจ ่ ะเปลีย ่ นแปลงปรับปรุง เพือ ่ ให ้ดียงิ่ ขึน ้ ไปอีก สง่ มอบงานสมา่ เสมอ ผลงาน ื่ สาร สอ ฝ่ าย Business และ Developer ทางานร่วมกัน ตลอดเวลา Face-to-Face conversation คนทางาน สนับสนุนให ้ Developer มีความสุขกับงานทีท ่ า ความพึง่ พอใจของลูกค ้า สาคัญทีส ่ ด ุ ใสใ่ จพัฒนาความสามารถ ทัง้ ด ้าน programming และ design ตลอดเวลา Simplicity ผลงานทีด ่ เี กิดจากความคิด ของทีมงาน Agile Methods • • • • • • • • • Extreme Programming (XP) Scrum Agile Modeling Adaptive Software Development (ASD) Crystal Clear and Other Crystal Methodologies Dynamic Systems Development Method (DSDM) Feature Driven Development (FDD) Lean software development Agile Unified Process (AUP) eXtreme Programming The Rules and Practices of Extreme Programming Planning Coding Designing Testing – – – – – – – – – – – – – – – User stories are written. Release planning creates the schedule. Make frequent small releases. The Project Velocity is measured. The project is divided into iterations. Iteration planning starts each iteration. Move people around. A stand-up meeting starts each day. Fix XP when it breaks. Simplicity. Choose a system metaphor. Use CRC cards for design sessions. Create spike solutions to reduce risk. No functionality is added early. Refactor whenever and wherever possible. Reference: extremeprogramming.org – – – – – – – – – – – – – The customer is always available. Code must be written to agreed standards. Code the unit test first. All production code is pair programmed. Only one pair integrates code at a time. Integrate often. Use collective code ownership. Leave optimization till last. No overtime. All code must have unit tests. All code must pass all unit tests before it can be released. When a bug is found tests are created. Acceptance tests are run often and the score is published. แนวทางปั ฏบัตใิ น XP Coding Planning XP Designing Testing แนวทางปั ฏบัตใิ น XP Small Release User Stories Project Velocity Iteration Planning Release Planning Iteration Planning Move People Around Stand-up Meeting XP Fix XP แนวทางปั ฏบัตใิ น XP Refactoring No functions Added early XP Simplicity System Metaphor Designing CRC cards Spike Solutions แนวทางปั ฏบัตใิ น XP Collective code Owner ship System Metaphor Pair Programming Standards Always Available Sequential Integration Unit Test First Coding XP Move People Around Integrate Often Optimization No Overtime Simplicity แนวทางปั ฏบัตใิ น XP XP Testing Acceptance Test User Stories Unit Test When a Bug is Found User Stories: ตู ้ขายเครือ ่ งดืม ่ อัตโนมัต ิ แสดงยอดเงินทีห ่ ยอดเข ้าไปในตู ้ ยอดเงินเริม ่ ต ้นที่ 0 หลังจาก หยอดเหรียญเข ้าไปในเครือ ่ ง แล ้ว หน ้าจอจะแสดงจานวนเงิน ทีห ่ ยอดเข ้ามา จนกว่าจะกดคืน เหรียญ หรือกดเลือกเครือ ่ งดืม ่ แล ้ว ื้ สน ิ ค ้า กดปุ่ มเลือกซอ ื้ สน ิ ค ้าทีก หากยอดเงินพอซอ ่ ด ิ ค ้าออกมา เครือ ่ งจะปล่อยสน ่ งรับสน ิ ค ้า และทอนเงิน จากชอ ิ ค ้าทีก ทีอ ่ ยูใ่ นตู ้ทีเ่ กินราคาสน ่ ด ่ งรับเงินทอน ออกมายังชอ ิ ค ้าทีซ ื้ ได ้ เปิ ดไฟบนปุ่ มกดสน ่ อ ิ ค ้าจะไม่ ตามปกติแล ้วปุ่ มกดสน มีไฟ แต่หากยอดเงินทีห ่ ยอด ื้ สน ิ ค ้าชน ิ้ เข ้าตู ้เพียงพอทีจ ่ ะซอ ใด ให ้เปิ ดไฟบนปุ่ มนัน ้ ิ ค ้าหมด แสดงข ้อความสน ิ ค ้าใดหมด ให ้แสดงไฟ หากสน ิ ค ้าหมดบน label ของสน ิ ค ้า สน นัน ้ ๆ CRC Vending Machine UI Payment Controller Changer Inventory Product Development Create Unit Test Pair programmers Found bug Create New User Stories Acceptance Test Acceptable Write Code Ready to release Continuous Integration Run Unit Test Pass all tests Testers & User Commit to repository เงินทอนในตู ้ไม่เพียงพอ หากภายในตู ้มีเงินทอนไม่เพียง ิ ค ้าใดๆ พอทีจ ่ ะทอนเงินให ้แก่สน เมือ ่ เปรียบเทียบกับจานวนเงินที่ ิ ค ้านัน หยอดเข ้าตู ้แล ้ว สน ้ ๆ จะ ื้ ได ้ จะเลือก ไม่สามารถเลือกซอ ื้ ได ้แต่เฉพาะทีพ ซอ ่ อดีกบ ั เงิน ทอนเท่านัน ้ Scrum Scrum Scrum เป็ นวิธีการพัฒนาซอฟแวร์ รูปแบบหนึง่ ในหลายรูปแบบของ Agile โดยแนวคิดจะอยูบ่ นพื ้นฐานของ Sprint และพุง่ ความสนใจไปที่การทาให้ สาเร็จ ตามเป้าหมายที่กาหนดไว้ ให้ ได้ ภายใน 30 วัน Scrum Product Owner Scrum Team Scrum Master Index Card By Henrik Kniberg PVR Team PVR Team Development Team Service Planner Developers Architect Service Planner Developers QA Team Graphic Designer Process Every month Brainstorm Session Feature Listing Every month Evaluation Process & Product 1 Month User Story Addition Stories Release Plan Iteration Plan Designing Every week Project Velocity Testing daily Integrate Deliverable Pair Programming Coding 1-2 weeks Acceptance Test Tools • • • • • • • • IDE – Eclipse Bugs Tracking – Bugzilla Knowledge Base – MediaWiki User Story – PowerPoint, Visio Product Backlog – Excel Code repository & version control – Subversion Designing Tool – White board, Paper, PowerPoint, Visio Project Tracking – MS Project, White board References • • • • • • • http://en.wikipedia.org http://www.extremeprogramming.org http://www.ambysoft.com/essays/agileLifecycle.html http://www.agilemanifesto.org http://www.softhouse.se http://www.infoq.com/minibooks/scrum-xp-from-the-trenches http://www.crisp.se/planningpoker/ PVR Architecture Set-top box architecture Applications Middleware Custom Interfaces Middleware Glue Custom Functionality Drivers Real-time operating system Hardware Video Audio Encoder . . . Encoder Modulator EPG management System DVB-SI Generator Multiplexer Conditional Access System Internet ITV application Servers Carousel Server Return Path Server End Planning Poker Estimating without planning poker Planning Poker Estimating without planning poker