SlideShare una empresa de Scribd logo
1 de 30
Agile development(敏捷開發)
2014/04/03
Sway Wang
Outline
• 傳統的軟體工程
• 敏捷開發(Agile development)
• Extreme Programming
• Scrum
• 實務上常使用的工具
• 結論
傳統的軟體工程
• Capability Maturity Model Integration(CMMI)
• UML
• 瀑布式開發(Waterfall Development )
• 強調寫文件的重要性
•需求分析規格書
•系統分析規格書
•系統設計規格書
•系統測試設計規格書
•系統測試計畫書
•系統測試報告書
Use-case diagram
Class diagram
Sequence diagram
敏捷開發(Agile development)
• 1995年後,陸續有人提出敏捷開發的觀念
• Lightweight agile software development methods
•主張軟體有容易改變的特性,改變是無法避免的
•擁抱改變以及即時回饋
• Small release (release週期短,2周~一個月)
The Agile Manifesto (敏捷宣言)
•Individuals and interactions over processes and tools
•Working software over comprehensive documentation
•Customer collaboration over contract negotiation
•Responding to change over following a plan
個人與互動 重於 流程與工具
可用的軟體 重於 詳盡的文件
與客戶合作 重於 合約協商
回應變化 重於 遵循計劃
雖然右側項目有其價值,但我們更重視左側項目。
http://agilemanifesto.org/
The Agile Principles (敏捷原則)
•最為優先的事情是透過早期與持續交付有價值的軟體來使客戶滿
意。
•歡迎需求的變動,即使是在開發的晚期。敏捷式流程駕馭變動來
作為客戶的競爭優勢。
•頻繁的交付工作產生的軟體,自數週至數月,週期越短越好。
•領域專家與開發成員必須一同作業,並貫穿整個專案開發時期。
•使用積極的工作成員來建構專案,給予他們環境以及支援所需的
一切,然後信任他們能夠完成工作。
The Agile Principles (敏捷原則)
•在開發團隊中最快也最有效的傳遞資訊方法就是面對面的溝通。
•工作產生的軟體是衡量進度最主要的依據。
•敏捷式流程倡導水平一致的軟體開發
•專案發起者,開發人員以及使用者都必須持續的維持專案進度。
•持續重視技術的優勢以及設計品質
•最好的架構、需求以及設計會出現在能夠自我管理的團隊裡
•在規律的反覆之間,團隊會反省與思考如何更有效率,然後相對
的來調整與修正團隊的開發方式。
http://agilemanifesto.org/principles.html
Reference Book
http://www.amazon.com/Software-Development-
Principles-Patterns-Practices/dp/0135974445
Extreme Programming(XP)
•Extreme Programming was created by Kent Beck(Facebook)
•強調自動測試和軟體品質
•Pair programming
•Unit test(單元測試)
•Code review
•Refactoring (重構)
•Test driven development(TDD)
•測試程式取代文件
Reference Book
http://www.amazon.com/Extreme-Programming-
Explained-Embrace-Edition/dp/0321278658
Pair Programming
• 兩人共用一台電腦一起開發程式
• 常見疑問:生產力減半
• 軟體品質 v.s.
軟體開發速度
• 優點
– 軟體品質佳
– 經驗傳承
– 同份code有兩個人懂
Unit Test(單元測試)
• 測試單一模組的正確性 (比如說函式或類別)
• 在修改程式碼後通常會重跑一次所有的單元測試,確認功能正常
• 如何讓程式容易被測試是一門學問
– Class之間低耦合
– 高模組化
– 所有邏輯都寫在main或一個if的程式難以被測試
• 自動測試framework
– C#: Nunit
– Java: JUnit
Code review
• (Google)使用者commit code時會先執行
coding style檢查,並由系統分配一位
reviewer進行code review。
Refactoring(重構)
• XP鼓勵經常做重構
• 要有完整的單元測試下才能進行重構
Test Driven Development(TDD)
• 開始實做程式碼前先寫測試程式
• 通過所有測試程式後程式就開發完成
• 優點:
– 開發程式時自然會容易測試
– 寫測試程式時可以順便釐清問題
Scrum
• 更精簡的一種敏捷開發方法
• 不需要複雜的基礎建設,使用便條紙管理
Item
Daily Meeting
昨天做了什麼事?(或 今天做了什麼事, 依開會時間而定)
今天要做什麼事?(或 明天要做什麼事, 依開會時間而定)
工作上是否遇到任何阻礙或問題?(主持者(Scrum Master)必須快速解決成員
所遇到的困難。)
實務上常搭配的工具
Version Control System
Issue Tracking System
• 改善傳統Email + Excel 的方法
• Ex: Redmine, trac, mantis
• 團隊內部透明
• 處理事項目前的執行狀態
• 優先權的分配
• 執行人
• Wiki功能
Continuous integration(持續整合)
• CI Server
• 固定時間自動從SVN上check out code編
譯(Daily build)
• 自動執行單元測試以及靜態程式碼分析工
具
• 產生報表和email通知相關人員
OOP
• 要寫出好的測試程式,程式的架構很重要
結論
• 敏捷開發對團隊內成員個人能力要求較高
• 目前主流開發方式是混用各種方法的適合
團隊的地方,調整成適合內部使用的方法
Q & A
• Thanks for your listening!!

Más contenido relacionado

Similar a Agile development

Agile introduction
Agile introductionAgile introduction
Agile introductionJen-Chieh Ko
 
Scrum敏捷开发示例
Scrum敏捷开发示例Scrum敏捷开发示例
Scrum敏捷开发示例Xiaoyan Chen
 
Scrum深入淺出
Scrum深入淺出Scrum深入淺出
Scrum深入淺出Taien Wang
 
QCon shanghai2013-davidko-如何利用 kanban让 scrum 更完美
QCon shanghai2013-davidko-如何利用 kanban让 scrum 更完美QCon shanghai2013-davidko-如何利用 kanban让 scrum 更完美
QCon shanghai2013-davidko-如何利用 kanban让 scrum 更完美Jen-Chieh Ko
 
Scrum gathering 2014sharing v4
Scrum gathering 2014sharing v4Scrum gathering 2014sharing v4
Scrum gathering 2014sharing v4Jen-Chieh Ko
 
Nb的敏捷
Nb的敏捷Nb的敏捷
Nb的敏捷oulan
 
项目管理敏捷方法
项目管理敏捷方法项目管理敏捷方法
项目管理敏捷方法Weijun Zhong
 
Simple Rule Agile China 2009
Simple Rule   Agile China 2009Simple Rule   Agile China 2009
Simple Rule Agile China 2009JohnnLi
 
2013/10: Q con shanghai2013-davidko-如何利用 kanban让 scrum 更完美
2013/10: Q con shanghai2013-davidko-如何利用 kanban让 scrum 更完美2013/10: Q con shanghai2013-davidko-如何利用 kanban让 scrum 更完美
2013/10: Q con shanghai2013-davidko-如何利用 kanban让 scrum 更完美AgileCommunity
 
美团前端架构简介
美团前端架构简介美团前端架构简介
美团前端架构简介pan weizeng
 
我們與Azure DevOps的距離
我們與Azure DevOps的距離我們與Azure DevOps的距離
我們與Azure DevOps的距離Edward Kuo
 
Angular從入門到實戰(二)
Angular從入門到實戰(二)Angular從入門到實戰(二)
Angular從入門到實戰(二)志龍 陳
 
Project GATE 的敏捷實踐之路
Project GATE 的敏捷實踐之路Project GATE 的敏捷實踐之路
Project GATE 的敏捷實踐之路AgileCommunity
 
Scrum从理论到实践
Scrum从理论到实践Scrum从理论到实践
Scrum从理论到实践isnofate
 
互联网持续交付整形记
互联网持续交付整形记互联网持续交付整形记
互联网持续交付整形记Ryan YU
 
Discover agile(agile tour)-owen chen-iji
Discover agile(agile tour)-owen chen-ijiDiscover agile(agile tour)-owen chen-iji
Discover agile(agile tour)-owen chen-ijiOdd-e
 

Similar a Agile development (20)

Agile introduction
Agile introductionAgile introduction
Agile introduction
 
Scrum敏捷开发示例
Scrum敏捷开发示例Scrum敏捷开发示例
Scrum敏捷开发示例
 
SCRUM
SCRUMSCRUM
SCRUM
 
軟體架構模式
軟體架構模式軟體架構模式
軟體架構模式
 
Scrum深入淺出
Scrum深入淺出Scrum深入淺出
Scrum深入淺出
 
QCon shanghai2013-davidko-如何利用 kanban让 scrum 更完美
QCon shanghai2013-davidko-如何利用 kanban让 scrum 更完美QCon shanghai2013-davidko-如何利用 kanban让 scrum 更完美
QCon shanghai2013-davidko-如何利用 kanban让 scrum 更完美
 
Scrum gathering 2014sharing v4
Scrum gathering 2014sharing v4Scrum gathering 2014sharing v4
Scrum gathering 2014sharing v4
 
Nb的敏捷
Nb的敏捷Nb的敏捷
Nb的敏捷
 
Nb的敏捷
Nb的敏捷Nb的敏捷
Nb的敏捷
 
UiGathering 2012.07 Slide (Derek Liu)
UiGathering 2012.07 Slide (Derek Liu)UiGathering 2012.07 Slide (Derek Liu)
UiGathering 2012.07 Slide (Derek Liu)
 
项目管理敏捷方法
项目管理敏捷方法项目管理敏捷方法
项目管理敏捷方法
 
Simple Rule Agile China 2009
Simple Rule   Agile China 2009Simple Rule   Agile China 2009
Simple Rule Agile China 2009
 
2013/10: Q con shanghai2013-davidko-如何利用 kanban让 scrum 更完美
2013/10: Q con shanghai2013-davidko-如何利用 kanban让 scrum 更完美2013/10: Q con shanghai2013-davidko-如何利用 kanban让 scrum 更完美
2013/10: Q con shanghai2013-davidko-如何利用 kanban让 scrum 更完美
 
美团前端架构简介
美团前端架构简介美团前端架构简介
美团前端架构简介
 
我們與Azure DevOps的距離
我們與Azure DevOps的距離我們與Azure DevOps的距離
我們與Azure DevOps的距離
 
Angular從入門到實戰(二)
Angular從入門到實戰(二)Angular從入門到實戰(二)
Angular從入門到實戰(二)
 
Project GATE 的敏捷實踐之路
Project GATE 的敏捷實踐之路Project GATE 的敏捷實踐之路
Project GATE 的敏捷實踐之路
 
Scrum从理论到实践
Scrum从理论到实践Scrum从理论到实践
Scrum从理论到实践
 
互联网持续交付整形记
互联网持续交付整形记互联网持续交付整形记
互联网持续交付整形记
 
Discover agile(agile tour)-owen chen-iji
Discover agile(agile tour)-owen chen-ijiDiscover agile(agile tour)-owen chen-iji
Discover agile(agile tour)-owen chen-iji
 

Más de Sway Wang

Design patterns and MV
Design patterns and MVDesign patterns and MV
Design patterns and MVSway Wang
 
Duck Typing and Multiple Inheritance
Duck Typing and Multiple InheritanceDuck Typing and Multiple Inheritance
Duck Typing and Multiple InheritanceSway Wang
 
How to select password(Chinese)
How to select password(Chinese)How to select password(Chinese)
How to select password(Chinese)Sway Wang
 
Introduction to Python
Introduction to PythonIntroduction to Python
Introduction to PythonSway Wang
 
Introduction to Perl
Introduction to PerlIntroduction to Perl
Introduction to PerlSway Wang
 

Más de Sway Wang (10)

Code review
Code reviewCode review
Code review
 
Refactoring
RefactoringRefactoring
Refactoring
 
MCU compare
MCU compareMCU compare
MCU compare
 
Solid
SolidSolid
Solid
 
Design patterns and MV
Design patterns and MVDesign patterns and MV
Design patterns and MV
 
Duck Typing and Multiple Inheritance
Duck Typing and Multiple InheritanceDuck Typing and Multiple Inheritance
Duck Typing and Multiple Inheritance
 
How to select password(Chinese)
How to select password(Chinese)How to select password(Chinese)
How to select password(Chinese)
 
Introduction to Python
Introduction to PythonIntroduction to Python
Introduction to Python
 
Libusb
LibusbLibusb
Libusb
 
Introduction to Perl
Introduction to PerlIntroduction to Perl
Introduction to Perl
 

Agile development