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
Software Development Life Cycle SDLC Software Development Life Cycle Planning Analysis Design Development Testing Deployment Maintenance
Waterfall Model Planning Analysis Design Development Testing Deployment Maintenance
Iterative Design Development Analysis Testing Planning Deployment Evaluation Initial Planning 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 ความพึ่งพอใจของลูกค้าสำคัญที่สุด ต้องแน่ใจให้ได้ว่า Process ที่ใช้ ช่วยให้งานคล่องตัวจริง บริหาร ลูกค้า Welcome changing requirements ใส่ใจพัฒนาความสามารถทั้งด้าน programming และ design ตลอดเวลา ผลงาน ลูกค้า ส่งมอบงานสม่ำเสมอ ฝ่าย Business และ Developer ทำงานร่วมกันตลอดเวลา สื่อสาร ผลงาน Simplicity สนับสนุนให้ Developer มีความสุขกับงานที่ทำ คนทำงาน ผลงานที่ดีเกิดจากความคิดของทีมงาน ผลงาน สื่อสาร Face-to-Face conversation บริหาร พร้อมที่จะเปลี่ยนแปลงปรับปรุง เพื่อให้ดียิ่งขึ้นไปอีก ความคืบหน้าวัดตัวจาก software ที่ทำงานได้ บริหาร
หลักการของ Agile ความคืบหน้าวัดตัวจาก software ที่ทำงานได้ ต้องแน่ใจให้ได้ว่า Process ที่ใช้ ช่วยให้งานคล่องตัวจริง พร้อมที่จะเปลี่ยนแปลงปรับปรุง เพื่อให้ดียิ่งขึ้นไปอีก บริหาร ลูกค้า ความพึ่งพอใจของลูกค้าสำคัญที่สุด Welcome changing requirements ส่งมอบงานสม่ำเสมอ ใส่ใจพัฒนาความสามารถทั้งด้าน programming และ design ตลอดเวลา Simplicity ผลงาน ผลงานที่ดีเกิดจากความคิดของทีมงาน ฝ่าย Business และ Developer ทำงานร่วมกัน ตลอดเวลา Face-to-Face conversation สื่อสาร สนับสนุนให้ Developer มีความสุขกับงานที่ทำ คนทำงาน
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 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. Coding 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. Designing 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. Testing 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. Reference: extremeprogramming.org
แนวทางปัฏบัติใน XP Coding Planning XP Designing Testing
แนวทางปัฏบัติใน XP XP Planning User Stories Release Planning Iteration Small Release User Stories Project Velocity Release Planning Iteration Iteration Planning Planning Move People Around Stand-up Meeting XP Fix XP
แนวทางปัฏบัติใน XP XP Designing Simplicity System Metaphor CRC cards Refactoring Simplicity XP No functions Added early Designing System Metaphor CRC cards Spike Solutions
Sequential Integration แนวทางปัฏบัติใน XP Collective code Owner ship System Metaphor Move People Around Standards Pair Programming Sequential Integration Always Available Unit Test First Coding Integrate Often Simplicity Optimization XP No Overtime
แนวทางปัฏบัติใน XP XP Testing Unit Test Acceptance Test User Stories When a Bug is Found User Stories
User Stories: ตู้ขายเครื่องดื่มอัตโนมัติ แสดงยอดเงินที่หยอดเข้าไปในตู้ ยอดเงินเริ่มต้นที่ 0 หลังจากหยอดเหรียญเข้าไปในเครื่องแล้ว หน้าจอจะแสดงจำนวนเงินที่หยอดเข้ามา จนกว่าจะกดคืนเหรียญ หรือกดเลือกเครื่องดื่มแล้ว เปิดไฟบนปุ่มกดสินค้าที่ซื้อได้ ตามปกติแล้วปุ่มกดสินค้าจะไม่มีไฟ แต่หากยอดเงินที่หยอดเข้าตู้เพียงพอที่จะซื้อสินค้าชิ้นใด ให้เปิดไฟบนปุ่มนั้น กดปุ่มเลือกซื้อสินค้า หากยอดเงินพอซื้อสินค้าที่กด เครื่องจะปล่อยสินค้าออกมาจากช่องรับสินค้า และทอนเงินที่อยู่ในตู้ที่เกินราคาสินค้าที่กดออกมายังช่องรับเงินทอน แสดงข้อความสินค้าหมด หากสินค้าใดหมด ให้แสดงไฟสินค้าหมดบน label ของสินค้านั้นๆ
CRC Vending Machine UI Payment Controller Changer Inventory Product
Continuous Integration Development Create New User Stories Found bug Pair programmers Create Unit Test Acceptance Test Acceptable Write Code Ready to release Testers & User Continuous Integration Run Unit Test เงินทอนในตู้ไม่เพียงพอ หากภายในตู้มีเงินทอนไม่เพียงพอที่จะทอนเงินให้แก่สินค้าใดๆ เมื่อเปรียบเทียบกับจำนวนเงินที่หยอดเข้าตู้แล้ว สินค้านั้นๆ จะไม่สามารถเลือกซื้อได้ จะเลือกซื้อได้แต่เฉพาะที่พอดีกับเงินทอนเท่านั้น Pass all tests Commit to repository
Scrum
ตามเป้าหมายที่กำหนดไว้ให้ได้ ภายใน 30 วัน Scrum Scrum เป็นวิธีการพัฒนาซอฟแวร์รูปแบบหนึ่ง ในหลายรูปแบบของ Agile โดยแนวคิดจะอยู่บนพื้นฐานของ Sprint และพุ่งความสนใจไปที่การทำให้สำเร็จ ตามเป้าหมายที่กำหนดไว้ให้ได้ ภายใน 30 วัน
Scrum Product Owner Scrum Team Scrum Master
Index Card By Henrik Kniberg
PVR Team
PVR Team Development Team QA Team Graphic Designer Developers Service Planner Architect Service Planner Developers
Evaluation Process & Product Every month Brainstorm Session Feature Listing Evaluation Process & Product Every month 1 Month User Story Addition Stories Release Plan Iteration Plan Designing Deliverable Pair Programming daily Acceptance Test Testing Coding Every week Integrate Project Velocity 1-2 weeks
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
. Internet Encoder Video Audio Encoder Modulator DVB-SI Generator Multiplexer Conditional Access System EPG management System Internet ITV application Servers Carousel Server Return Path Server
End
Planning Poker Estimating without planning poker
Planning Poker Estimating without planning poker