420 likes | 673 Views
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. S oftware D evelopment L ife C ycle. Planning.
E N D
NJUG 4Agile 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
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 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 เป็นแนวคิดที่ใช้เป็น กรอบ ระเบียบ เพื่อให้การพัฒนาซอฟแวร์มีความคล่องตัวสูงสุด
หลักการของ Agile ลูกค้า ความพึ่งพอใจของลูกค้าสำคัญที่สุด ต้องแน่ใจให้ได้ว่า Process ที่ใช้ช่วยให้งานคล่องตัวจริง บริหาร Welcome changing requirements ลูกค้า ใส่ใจพัฒนาความสามารถทั้งด้านprogrammingและ design ตลอดเวลา ผลงาน ลูกค้า ส่งมอบงานสม่ำเสมอ ฝ่าย Business และ Developerทำงานร่วมกันตลอดเวลา สื่อสาร Simplicity ผลงาน สนับสนุนให้ Developerมีความสุขกับงานที่ทำ คนทำงาน ผลงานที่ดีเกิดจากความคิดของทีมงาน ผลงาน Face-to-Face conversation สื่อสาร พร้อมที่จะเปลี่ยนแปลงปรับปรุงเพื่อให้ดียิ่งขึ้นไปอีก บริหาร ความคืบหน้าวัดตัวจากsoftware ที่ทำงานได้ บริหาร
บริหาร ความคืบหน้าวัดตัวจากsoftware ที่ทำงานได้ ต้องแน่ใจให้ได้ว่า Process ที่ใช้ช่วยให้งานคล่องตัวจริง พร้อมที่จะเปลี่ยนแปลงปรับปรุงเพื่อให้ดียิ่งขึ้นไปอีก ผลงาน ใส่ใจพัฒนาความสามารถทั้งด้าน programmingและ design ตลอดเวลา สื่อสาร ฝ่าย Business และ Developer ทำงานร่วมกันตลอดเวลา Simplicity Face-to-Face conversation ผลงานที่ดีเกิดจากความคิดของทีมงาน คนทำงาน สนับสนุนให้ Developerมีความสุขกับงานที่ทำ หลักการของ Agile ลูกค้า ความพึ่งพอใจของลูกค้าสำคัญที่สุด Welcome changing requirements ส่งมอบงานสม่ำเสมอ
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)
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 testfirst. 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. The Rules and Practicesof Extreme Programming 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 SmallRelease UserStories ProjectVelocity Release Planning Iteration IterationPlanning Planning Move People Around Stand-upMeeting XP Fix XP
แนวทางปัฏบัติใน XP Refactoring Simplicity XP No functions Added early Designing SystemMetaphor CRC cards SpikeSolutions
Coding แนวทางปัฏบัติใน XP Collective code Owner ship SystemMetaphor Move People Around Standards PairProgramming SequentialIntegration AlwaysAvailable Unit TestFirst IntegrateOften Simplicity Optimization XP NoOvertime
แนวทางปัฏบัติใน XP XP Testing Unit Test Acceptance Test When a Bugis Found UserStories
แสดงยอดเงินที่หยอดเข้าไปในตู้แสดงยอดเงินที่หยอดเข้าไปในตู้ เปิดไฟบนปุ่มกดสินค้าที่ซื้อได้ กดปุ่มเลือกซื้อสินค้า แสดงข้อความสินค้าหมด ยอดเงินเริ่มต้นที่ 0 หลังจากหยอดเหรียญเข้าไปในเครื่องแล้ว หน้าจอจะแสดงจำนวนเงินที่หยอดเข้ามา จนกว่าจะกดคืนเหรียญ หรือกดเลือกเครื่องดื่มแล้ว ตามปกติแล้วปุ่มกดสินค้าจะไม่มีไฟ แต่หากยอดเงินที่หยอดเข้าตู้เพียงพอที่จะซื้อสินค้าชิ้นใด ให้เปิดไฟบนปุ่มนั้น หากยอดเงินพอซื้อสินค้าที่กด เครื่องจะปล่อยสินค้าออกมาจากช่องรับสินค้า และทอนเงินที่อยู่ในตู้ที่เกินราคาสินค้าที่กดออกมายังช่องรับเงินทอน หากสินค้าใดหมด ให้แสดงไฟสินค้าหมดบน label ของสินค้านั้นๆ User Stories: ตู้ขายเครื่องดื่มอัตโนมัติ
CRC VendingMachine UI PaymentController Changer Inventory Product
เงินทอนในตู้ไม่เพียงพอเงินทอนในตู้ไม่เพียงพอ หากภายในตู้มีเงินทอนไม่เพียงพอที่จะทอนเงินให้แก่สินค้าใดๆ เมื่อเปรียบเทียบกับจำนวนเงินที่หยอดเข้าตู้แล้ว สินค้านั้นๆ จะไม่สามารถเลือกซื้อได้ จะเลือกซื้อได้แต่เฉพาะที่พอดีกับเงินทอนเท่านั้น Pair programmers Testers& User Development Create New UserStories Foundbug CreateUnit Test Acceptance Test Acceptable Write Code Ready to release ContinuousIntegration Run UnitTest Pass all tests Commit torepository
Scrum Scrumเป็นวิธีการพัฒนาซอฟแวร์รูปแบบหนึ่งในหลายรูปแบบของ Agileโดยแนวคิดจะอยู่บนพื้นฐานของSprintและพุ่งความสนใจไปที่การทำให้สำเร็จ ตามเป้าหมายที่กำหนดไว้ให้ได้ ภายใน 30 วัน
Scrum ProductOwner ScrumTeam ScrumMaster
Index Card By Henrik Kniberg
PVR Team DevelopmentTeam QATeam Graphic Designer Developers ServicePlanner Architect ServicePlanner Developers
Every month EvaluationProcess& Product Designing Testing daily Coding Integrate Process Every month Brainstorm Session Feature Listing 1 Month User Story AdditionStories Release Plan IterationPlan Deliverable PairProgramming AcceptanceTest Every week ProjectVelocity 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/
Set-top box architecture Applications Middleware Custom Interfaces Middleware Glue Custom Functionality Drivers Real-time operating system Hardware
DVB-SIGenerator Encoder Encoder Multiplexer Modulator Conditional Access System Video . . . Audio EPG managementSystem Internet ITV applicationServers Carousel Server Return Path Server
Planning Poker Estimating without planning poker
Planning Poker Estimating without planning poker