徐海濤,陳 婧
(杭州電子科技大學計算機學院 浙江 杭州 310018)
實踐教學在計算機類專業教育中起著不可替代的重要作用,也是提高人才培養質量的切入點和突破口,高校應將實踐教學環節作為計算機類專業人才培養體系建設的核心任務之一,并采取各種辦法促進學生提高動手能力。為此,杭州電子科技大學在制訂計算機類專業培養計劃時,特別強調了實訓教學環節的重要性,專門設立了“創新實踐”課程。根據學生的興趣方向,分組配備導師進行針對性實訓。通過本課程的學習,學生將會對創新或者創業了解得更為深入,并且學生在相關實踐過程中能提高系統設計及解決實現過程中具體問題的能力,為將來深造或工作帶來實質性幫助。
近年來,國內外很多高校都在進行計算機類專業教育的改革創新,將一些新的教學方法引入實踐教學中。從2020 年開始,本課程組積極探索在創新實踐課程中引入CMMI 和FDD 結合的實踐教學模式改革,并已取得階段性成果。
CMMI(Capability Maturity Model Integration,能力成熟度模型集成)是一種用于評估和改進軟件工程、系統工程和產品開發過程的方法。CMMI 最初由美國國防部(DoD)開發,旨在幫助其承包商改進其軟件工程和系統工程過程,提高其開發的軟件和系統的質量、可靠性。CMMI現在已經成為一種全球性的模型,被廣泛應用于各種類型的組織,包括工業、政府和學術界。CMMI 模型包括五個不同的成熟度等級,每個等級代表了組織的過程成熟度,從初始級別(Level 1)到優化級別(Level 5)。每個等級都定義了一組特定的過程目標和實踐,以幫助組織改進其軟件和系統開發過程的效率和質量。CMMI 為改進一個組織的各種過程提供了一個單一的集成化框架,新的集成模型框架消除了各個模型的不一致性,減少了模型間的重復,增加透明度和理解,建立了一個自動的、可擴展的框架,因而能夠從總體上改進組織的質量和效率。通過實施CMMI模型,可以幫助提高產品和服務質量、提高生產效率和成本效益、提高客戶滿意度、提高員工參與和團隊合作、改善管理決策和控制風險等。CMMI 主要關注點在于成本效益、明確重點、過程集中和靈活性四個方面。
特征驅動開發(Feature Driven Development,FDD)由Jeff de Luca、Eric Lefebvre、Peter Coad 共同開發,是一種敏捷軟件開發方法,其著重點在于快速、可重復地交付高質量的軟件功能。FDD 的主要特點包括以下幾點:
①以功能為中心:FDD強調將軟件開發過程劃分為可重復的、功能完整的特征集,以便于跟蹤和管理軟件功能。
②迭代開發:FDD 鼓勵團隊以迭代方式進行開發,每次迭代都可以交付完整的特征集,并在下一次迭代中進一步完善和優化功能。
③強調團隊合作:FDD強調開發團隊成員之間的緊密合作,以便確保所有人都了解項目的目標和計劃。
⑤強調測量和監控:FDD提倡對項目進度和質量進行測量和監控,以便及時調整開發過程,確保項目成功。
在“創新實踐”課程實訓教學中,總體實施過程使用基于FDD 的軟件開發過程,該方法將實踐過程分為五個階段,分別是:
①開發總體設計階段:在這個階段中,團隊成員通過與客戶的交流,理解并定義項目的總體目標、范圍和需求。然后,團隊將這些需求轉化為一個總體的功能模型,形成一個概覽,作為后續開發的基礎。
②制訂特征列表階段(Build a Features List):在這個階段中,團隊將總體功能模型細化為一組具體的、可執行的特征列表。這些特征是項目開發的基本單位,每個特征都是客戶或用戶希望在軟件中實現的一個功能或者一組相關功能。
③計劃階段(Plan by Feature):在這個階段中,團隊成員根據特征列表,制訂實現這些特征所需的計劃和進度。在制訂計劃時,特征會被分解成更小的、可實現的子任務,然后根據子任務的優先級和依賴關系,制訂一個可行的開發計劃。
④設計特征階段(Design by Feature):在這個階段中,團隊成員對每個特征進行詳細的設計,并將其轉化為代碼實現的方案。設計階段可以迭代多次,直到設計方案滿足客戶需求、符合項目目標并且對后續開發有利。
首先,米勒法官和約翰·桑頓就是文明的象征。他們并沒有壓榨虐待巴克,相反,生活在法官家中,讓巴克天生有了一種自豪感。如果說,巴克與米勒法官只是一種合作關系,那么與桑頓生活在一起,則讓巴克充滿愛意。顯然,作者把桑頓塑造成了一個理想的主人。巴克對桑頓的愛,讓它對桑頓的命令言聽計從。桑頓也成了連接巴克與人類社會的唯一紐帶。桑頓遇害,巴克為主人復仇之后便毅然決然回應了自己內心的呼喚,回歸了荒野。桑頓在此便是人類中心主義的一個反例。一個個主人的更替,只是在尋求理想中的文明“他者”。
⑤構建特征階段(Build by Feature):在這個階段中,團隊成員根據設計方案,進行特征的實現和測試。一旦實現了特征,就會進行集成測試和系統測試,以確保特征符合客戶要求、系統穩定且沒有錯誤。在構建階段中,團隊可以通過不斷迭代,優化特征的實現,以適應客戶需求的變化。
在實際的實施過程中,本課程組對FDD 方法進行了融合CMMI 改進。主要改進如下:
2.2.1 角色分配
在CMMI 中,參與一個軟件項目的角色比較多,一般有項目經理、軟件總設計師、軟件設計師、軟件測試人員、軟件質量保證人員、軟件配置管理人員等。而FDD 的角色一般較少,主要有三種:業務專家、首席架構師和主程序員。本方法中,為了滿足對CMMI 三級所有過程域的支持,采用的角色有:項目經理、業務專家、首席架構師、主程序員、軟件質量保證人員、軟件配置管理員等。
在“創新實踐”課程開始之前,首先讓學生自由組隊,每個團隊的人數限制在6―8 人之間,項目經理由一個具備一定管理能力的學生擔任。業務專家由教師擔任,如一個班級人數比較多,也可以邀請助教、研究生等參與,業務專家作為客戶代表對產品提出需求。首席架構師、主程序員、軟件質量保證人員、軟件配置管理員等角色分別由一名同學擔任。
2.2.2 PPQA 過程域
在傳統的FDD 方法中,并沒有專門的軟件質量保證人員。本混合方法增加了軟件質量保證人員來實現CMMI中PPQA 過程域。
軟件質量保證人員通過參與項目的階段性評審和審計、對項目日常活動與規程的符合性進行檢查、對配置管理工作進行檢查和審計、跟蹤問題的解決情況等內容來保證軟件的質量。此過程中,形成的文檔主要有:《過程評價表》《活動問題報告》《代碼檢查報告》和《產品問題報告》等。
2.2.3 CMMI 標準過程域
FDD支持或部分支持一些CMMI三級過程域,如CM、MA、IPM、PI、R D、RskM 等。為了完全支持這些CMMI過程域,需要確定風險源、風險參數、風險管理策略和制訂風險緩解計劃等,并在項目實施過程中不斷跟蹤風險,適時實施風險緩解計劃。
2.2.4 適度的軟件文檔
CMMI 重視文檔在軟件開發中的作用,而FDD 作為敏捷開發方法卻強調輕文檔。我們認為一定的文檔有利于項目的維護工作,也有利于新成員快速熟悉項目。因此,本混合方法強調適度的軟件文檔。采用的軟件文檔主要包括:產品需求文檔、項目管理文檔、軟件開發文檔、軟件測試文檔、用戶指南等。
2.2.5 強調需求管理
FDD 的一個重要特點是強調對需求的管理。CMMI也非常注重需求管理,包括需求分析、需求跟蹤和需求變更管理等。通過結合CMMI 和FDD 的需求管理方法,可以更好地滿足客戶需求,提高軟件質量。
2.2.6 加強測試和驗證
CMMI 提供了一組測試和驗證的最佳實踐,包括測試計劃、測試執行和測試結果分析等。將這些最佳實踐與FDD的測試方法相結合,可以確保軟件交付的質量和穩定性。
2.2.7 強調團隊合作和溝通
FDD 強調團隊合作和溝通,而CMMI 也強調了團隊協作和知識共享。通過結合這兩個方法,可以確保團隊成員之間的協作和溝通,并促進知識共享,從而提高開發效率和質量。
2.2.8 重視過程改進
CMMI 強調持續的過程改進,包括識別和糾正過程中的問題,并實施改進措施。通過將這些方法與FDD 相結合,可以不斷優化開發過程,提高軟件質量和效率。
本課程組改進的結合Scrum 和FDD 的軟件開發實訓方法已在作者所在的學校計算機及軟件工程專業實施3 個學期,取得了不錯的效果。課程成績優良率、學生滿意度等均得到了提高。另外,因為計算機類專業學生的畢業設計題目相當一部分也是軟件開發類題目,所以經過實施本方法的“創新實踐”課程訓練之后,學生的畢業設計成績也得到了提高。教學效果的統計數據如表1 所示。使用本教學方案后,課程成績優良率比之前平均提升7%,學生滿意度平均提升4.3%,畢業設計優良率平均提升6%(見表1)。

表1 教學效果對比數據
實踐教學是培養具有創新意識的高素質工程技術人才的重要環節,是理論聯系實際、培養學生掌握科學方法和提高動手能力的重要平臺。本文針對結合CMMI和FDD思想的教學法在“創新實踐”課程中的應用進行了探討,提出了一種較為實用的實踐教學方法,在實際教學中也取得了較好的效果。