第三次作業 敏捷軟件開發
敏捷軟件開發
Scrum是叠代式增量軟件開發過程,通常用於敏捷軟件開發。Scrum包括了一系列實踐和預定義角色的過程骨架。Scrum中的主要角色包括同項目經理類似的Scrum主管角色負責維護過程和任務,產品負責人代表利益所有者,開發團隊包括了所有開發人員。雖然Scrum是為管理軟件開發項目而開發的,它同樣可以用於運行軟件維護團隊,或者作為計劃管理方法:Scrum of Scrums.
創始人
Jeff Sutherland
Jeff Sutherland的第一份工作居然是美國空軍戰鬥機飛行員,還曾於1967年獲得了"壯誌淩雲"稱號,完成過100次飛越北部越南的作戰任務。服役後期,他到斯坦福大學拿下統計學碩士學位,並在美國空軍學院教授數學統計學和概率學。11年軍旅生涯結束後,他成為了科羅拉多醫學院的教師並獲得了博士學位。在諾貝爾化學獎得主萊納斯·鮑林的贊助下,他以放射學、生物學及預防醫學助理教授的身份參與了維生素與癌癥研究中心的創立,擔任八年國家癌癥中心的主要研究員,負責科羅拉多地區所有癌癥患者的數據統計和IT方案與研究,整合了國家註冊、臨床試驗、流行病學研究和癌變的超級計算機數學模型。1983年,他進入了一家遍及北美、經營著150家銀行的公司,職務為先進系統副總裁及ATM業務部總經理。此後,Sutherland先後擔任了11家軟件公司的CEO、CTO或者工程副總裁,積累了豐富的軟件開發經驗。
Ken Schwaber
Ken Schwaber最初的職業也很特別--商船經理。在隨後40多年開發生涯的前10年中,他曾經編寫過操作系統,搞過嵌入式,為IBM大型機開發系統軟件;先後在芝加哥大學、伊利諾伊理工學院、王安公司實驗室工作,並逐漸展現出在軟件開發方法上的天賦。在CASE工具和結構化方法熱門的時候,他自己創辦了ADM公司,從事軟件開發方法培訓服務。期間,公司開發了軟件方法自動化工具MATE,用來生成各種軟件流程所需的模板、計劃等,生意很好。
特性
Scrum過程
Scrum是一個包括了一系列的實踐和預定義角色的過程骨架(是一種流程、計劃、模式,用於有效率地開發軟件)。Scrum中的主要角色包括同項目經理類似的Scrum主管角色負責維護過程和任務,產品負責人代表利益所有者,開發團隊包括了所有開發人員。
在每一次沖刺(一個15到30 天周期 ,長度由開發團隊決定),開發團隊創建可用的(可以隨時推出)軟件的一個增量。每一個沖刺所要實現的特性來自產品訂單(product backlog,我覺得翻譯成"產品目標"更恰當), 產品訂單(產品目標)是指按照優先級排列的需要完成的工作的概要的需求(目標)。哪些訂單項(目標項目)會被加入一次沖刺,由沖刺計劃會議決定。 在會議中,產品負責人告訴開發團隊他需要完成產品訂單中的哪些訂單項。開發團隊決定在下一次沖刺中他們能夠承諾完成多少訂單項。 在沖刺的過程中,沒有人能夠變更沖刺訂單(sprint backlog),這意味著在一個沖刺中需求是被凍結的。
管理Scrum過程有很多實施方法,從白板上的即時貼到軟件包。Scrum最大的好處是它非常容易學習,而且應用Scrum不需要太多的投入。
敏捷方法之極限編程(XP)和 Scrum區別
區別之一: 叠代長度的不同
XP的一個Sprint的叠代長度大致為1~2周, 而Scrum的叠代長度一般為 2~ 4周。
區別之二: 在叠代中, 是否允許修改需求
XP在一個叠代中,如果一個User Story(用戶素材, 也就是一個需求)還沒有實現, 則可以考慮用另外的需求將其替換, 替換的原則是需求實現的時間量是相等的。而Scrum是不允許這樣做的,一旦叠代開工會完畢, 任何需求都不允許添加進來,並有Scrum Master嚴格把關,不允許開發團隊受到幹擾。
區別之三: 在叠代中,User Story是否嚴格按照優先級別來實現
XP是務必要遵守優先級別的。但Scrum在這點做得很靈活,可以不按照優先級別來做,Scrum這樣處理的理由是:如果優先問題的解決者,由於其它事情耽擱,不能認領任務,那麽整個進度就耽誤了。另外一個原因是,如果按優先級排序的User Story #6和#10,雖然#6優先級高,但是如果#6的實現要依賴於#10,則不得不優先做#10。
區別之四:軟件的實施過程中,是否采用嚴格的工程方法,保證進度或者質量
Scrum沒有對軟件的整個實施過程開出工程實踐的處方,要求開發者自覺保證。但XP對整個流程方法定義非常嚴格,規定需要采用TDD、自動測試、結對編程、簡單設計、重構等約束團隊的行為。
"豬"角色
豬是全身投入項目和Scrum過程的人; they are the ones with "their bacon on the line."
產品負責人代表了客戶的意願。這保證了Scrum團隊在做從業務角度來說正確的事情。產品負責人編寫用戶故事,排出優先級,並放入產品訂單。Scrum主管(或促進者)促進Scrum過程,他的主要工作是去除那些影響團隊交付沖刺目標的障礙。Scrum主管並非團隊的領導(由於他們是自我組織的),而是負責屏蔽外界對開發團隊的幹擾。Scrum主管確保Scrum過程按照初衷使用。Scrum主管是規則的執行者。開發團隊負責交付產品的團隊。由5至9名具有跨職能技能的人(設計者,開發者等)組成的小團隊完成實際的開發工作。。
"雞"角色
雞角色並不是實際Scrum過程的一部分,但是必須考慮他們。敏捷方法的一個重要方面是使得用戶和利益相關者參與到過程中的時間。參與每一個沖刺的評審和計劃,並提供反饋對於這些人來說是非常重要的。
用戶軟件是為了某些人而創建!就像"假如森林裏有一棵樹倒下了,但沒有人聽到,那麽它算發出了聲音嗎","假如軟件沒有被使用,那麽它算是被開發出來了麽?"利益所有者(客戶,提供商)影響項目成功的人,只直接參與沖刺評審過程。經理為產品開發團體架起環境的那個人。
評價
由於市場營銷通常以項目的方式運作,許多一般項目管理的原則應用在市場營銷上。市場營銷也可以像項目管理技術那樣進行優化。以Scrum方法進行市場營銷被認為有助於克服市場營銷經理們所遇到的問題。短時和固定的會議對於小的市場營銷團隊來說很重要,這是因為團隊的每一個成員都可以了解其他人在做些什麽,以及整個團隊在朝著什麽方向前進。Scrum在市場營銷中應用可以:
在早期發現可能的問題,可以更快地,最小損失地應對問題。 根據Scrum的主要原則 "沒有問題被掃入地毯下",Scrum鼓勵每一個團隊成員描述他所遇到的困難,而這個困難可能會對整個團隊的工作造成影響。降低財務風險。 在每一個沖刺周期的開始,企業所有者可以不付出任何代價的改變任何市場營銷的因素:包括增加投資以誇大顧客數量,減少投資直至未知風險被減輕,或用於支持其他活動。使得市場營銷計劃更靈活。采用沖刺的短期市場營銷計劃可以更加有效。如果一種促銷方法在沖刺過程中顯示無效,市場營銷經理有機會將其換成另一種促銷方法。向每一個團隊成員說明每一個小的,但重要的任務的交付時間也變得更容易。使得客戶以不同的方式參與。
HappyChat開發計劃
按照敏捷軟件開發過程開發,目前完成了部分軟件功能,待改善
我方GITHUB源地址:https://github.com/APPdoctrine/HappyChat
第三次作業 敏捷軟件開發