Agile Software Development

advertisement
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
Download