敏捷開發方法在澳大利亞核科學與技術協會
儀器控制軟件中的應用
P.V.Hathaway, T.Lam, N.Hauser, A.Gotz, F.Franceschini
Bragg 研究所, ANSTO
“讓有能動性的人去做項目。給他們合適的環境,滿足他們必須的條件,
并相信他們能把工作做好! [1]
1 摘要
ANSTO(Australian Nuclear Science and Technology Organisation,澳大利亞核科學與技術協會)的中子波儀器項目最多控制八臺和特定輔助設備相關聯的儀器。該項目預計在2006年中期完成。
這個系統的控制軟件的需求由一個國際委員會提出,軟件架構將取決于來自于至少三個洲的專家的建議。項目的成功在很大程度上依賴于開發隊伍的溝通能力,以及他們對于突發需求和資源變更做出適當反應的能力。
同傳統的有嚴格的文檔、確定的計劃和過程的軟件開發方法不同,敏捷軟件開發方法更強調對于項目目標的持續逼近、開發者的個人能力,以及小組成員之間的溝通。
本文探討了在科技組織中應用敏捷開發方法的一些主要原則,并說明了到目前為止這些原則在中子波儀器項目中的效果。
2 科技組織中的軟件開發過程
“每隔一段時間,開發組反思一下如何能夠提高效率,
然后相應的調整以后的開發過程! [1]
目前的軟件工程通過一些要素來界定軟件的規模,這些要素至少包括時間、范圍、包括預算在內的各種資源。在項目開展的過程中,這些要素經常會有一些突發的變化,某一個要素的變化往往會對其他因素造成很大的影響。對這些變化的不成功的處理往往會導致整個項目的失敗。
科研項目往往會有更多的變更,允許項目根據以后研發的情況做出調整,甚至為了迎合項目成果的變化重新定義項目的范圍和資源。在項目規劃的時候,往往對項目的情況作出最壞的打算,允許項目花費比收益高很多的成本,或者僅僅取得遠遠比它可能獲得的效果少得多的效果。
目前,科研軟件開發的成功往往在很大程度上依賴開發者的個人能力,以及一個在這個領域積累了多年經驗的開發小組。這種情況在已經發布的科研軟件中占有越來越大的比例。
下一代的項目需要的是將開發者的技術經驗和他們應用工具的能力盡量的結合起來。
3 敏捷軟件開發宣言
過去十年中提出的很多軟件開發方法都是建立在開發者的實力的基礎上的。他們認識到了個人的貢獻,密切的和頻繁的交流,以及和軟件本身多次的交互的重要作用。其實,軟件本身才是項目的唯一目標。
這些方法論的提出者和實踐者在2001年組織了專門的會議,提出了他們對于這些方法的宣言:
我們試圖通過實踐或者幫助別人來探討開發軟件的更好方法。
通過探討我們達成一致:
個人能力和人際關系 勝過于 過程和工具
可正常工作的軟件 勝過于可理解的文檔
和客戶合作 勝過于 合同談判
對變更做出反應 勝過于按照計劃開發
一般,別人關注右面的項目,而我們更關注左面的。
此外,開發組根據宣言制定了一些原則,并把它們形成文檔。這些原則和一般的開發方法的主要區別如下:
- 敏捷方法更強調在預測的基礎上的變化。設計和構建的計劃中包括了對于需求、設計概念等的變更的管理,并通過有效的溝通把風險降低。
- 敏捷方法更強調人而不是過程。開發者被認為是具有專業技能和主動性的技術專家。小組中最適合做出計劃的人來充當管理的角色?蛻舯徽J為是評判系統應該如何更有效運行的裁判。
被稱為敏捷的方法很多,例如XP,功能驅動程序設計,Scrum, Crystal,以及漸進軟件開發。這些方法在各自一定的領域內發揮重要作用,因此很難成為對所有項目都適用的方法。
Fowler認為,漸進的過程適合于以下類型的項目:
- 需求不明確,或者不穩定。
- 有責任心和主動性的開發者。
- 客戶了解項目的情況,也愿意參與項目。
此外,科研組織內很多項目是有小團隊完成,組織內有比較好的合作氛圍,開發內容會警察尕省變化,這些都很適合使用敏捷方法。
4 案例學習:中子波儀器項目
"樸素—把工作效率盡量提高的藝術—是最基本的。" [1]
NBIP(The Neutron Beam Instruments Project,中子波儀器項目)的主要任務是為一個正在準備實施的儀器提供一個先進、穩定、可擴展的控制系統,并能夠積累操作員的經驗。這個項目的特殊之處在于,開發組是在沒有硬件設備,甚至有時連元器件都沒于的條件下開始工作的。
目前,準備各個儀器所需要的組件正在快速的進行,在當前的條件下開發一個一般性系統的時機已經成熟。最關鍵的問題是,隨著儀器設備的到位和安裝,必須同步開發相關的驗證軟件?刂葡到y必須能夠同八臺完全不同的儀器和輔助設備集成使用。
為了實現這些目標,必須開發以下適用于所有的儀器的系統:
- 控制系統:一個公共的核心控制系統,可以是應所有的儀器。
- 用戶界面:在公共框架的基礎上可以用戶訂制的界面。
- 開發方法、實踐和工具:確保這些系統的開發是可控制的,能夠在一定的時間內實現。
最終我們選擇了一套已有的軟件模塊,一些開源工具,傳統的軟件開發方法和敏捷開發技術。
5 NBI項目管理和軟件開發方法
“只有自律性強的組織才可能產生出最好的軟件架構、需求、設計!盵1]
NBI項目作了嚴格的計劃,詳細的預算、風險控制,進程跟蹤以及文檔管理,這些使得該項目成為一個非常成功的案例。在實現這些需求的同時,項目組希望該項目的開發過程是最好的。
大多數軟件開發都包括一些共同的部分,例如:
- 目標
- 具有不同背景、完成不同任務的角色
- 具有足夠的經驗和技術,可以完成這些任務的團隊
- 為開發系統建立的一組正式或非正式的規范
- 一套技術,例如開發語言、工具、組件以及用于開發目標系統的其他產品
文章來源于領測軟件測試網 http://www.kjueaiud.com/