文勇 劉春漲 郭瑞
[摘 要]基于CMM核心理念,設計三個由簡單到復雜的軟件小項目,在軟件工程實踐教學中應用,分析應用過程中所收集到的數(shù)據(jù)。分析表明,逐步引入CMM核心理念的實踐教學方法可以協(xié)助學生更好的理解和掌握軟件工程的基本概念與基本原理,可以提升學生掌握相關的基本技能的效率,可以提升學生的軟件組織開發(fā)能力。
[關鍵詞]軟件工程 課程改革 CMM 案例教學
[中圖分類號] G642[文獻標識碼] A[文章編號] 2095-3437(2015)07-0132-02
在《軟件工程課程改革和實踐——基于CMM核心理念》[1]一文中,對CMM的核心理念進行了分析,提出了一個將CMM的關鍵過程域的活動融入軟件工程的教學實踐的循序漸進的案例教學方法,給三個級別的關鍵過程域分別設計了一個典型的軟件實踐項目。本文主要是描述這種教學方法在教學實踐中的具體應用,分析學生在理解和掌握一些軟件工程基本要點過程中的變化。分析表明,采用逐步引入CMM核心理念的實踐教學方法,不但可以協(xié)助學生更好的理解和掌握軟件工程的基本概念與基本原理,而且可以提升學生掌握相關的基本技能的效率,對提升學生的軟件組織開發(fā)能力也有幫助,從而能夠很好地達到軟件工程實踐課程所要求的教學目標。
一、循序漸進案例教學法簡述
針對初始級過程域[2],安排了學生信息管理系統(tǒng)的設計;針對可重復級過程域[2],安排了學校圖書管理系統(tǒng)的設計;針對定義級過程域[2],安排學校教學管理系統(tǒng)的設計。這些系統(tǒng)所需的領域知識對于一般學生來說都能基本滿足,系統(tǒng)的實現(xiàn)所需的技能學生基本滿足,但系統(tǒng)需求以及系統(tǒng)實現(xiàn)的難度逐步增加。每個階段安排一個系統(tǒng)設計,每個系統(tǒng)設計由一個小組承擔。這次實踐參與團隊為軟件工程專業(yè)的一個班級,共52人,分為七個小組,每個小組6-8人,每一組設一個組長。
具體內容描述如下。
二、初始級實施情況
初始級選擇的實踐項目是“學生信息管理系統(tǒng)”。老師將“學生信息管理系統(tǒng)”的需求陳述發(fā)給各小組,要求他們在4個星期內完成該項目,并上交完成此項目的代碼和文檔,但不對文檔做任何要求,完全依靠學生自己在此之前所學知識和實訓經(jīng)驗來完成此項目。
在第1周到第4周的開發(fā)過程中,大部分小組成員在QQ群中抱怨項目太難,有一些學生問了一些問題,一般都是開發(fā)環(huán)境方面的,也有一些問題是有關需求的。教師有時候到現(xiàn)場指導,發(fā)現(xiàn)各個小組的成員在一起討論問題的很少。第5周結束時,各個小組都提交了可運行的程序代碼。
在對各個小組完成的程序進行評審時,發(fā)現(xiàn)以下問題:沒有一個小組能夠完全正確實現(xiàn)項目的要求,大部分小組只實現(xiàn)了簡單的功能,程序運行過程中經(jīng)常異常退出;在檢視項目代碼時,發(fā)現(xiàn)代碼編寫得千奇百怪,沒有統(tǒng)一的風格,沒有任何注釋,閱讀起來很困難;不少小組的代碼只是由個別人完成的,其他成員參與程度低;學生反饋代碼經(jīng)常需要反復修改,總是穩(wěn)定不下來;而有些小組只有代碼,沒有任何設計文檔。
老師對這些問題進行分析和點評,指出軟件開發(fā)是一個復雜過程,需要采用科學的工作方法,然后給大家講解為什么需要軟件工程,軟件工程的基本概念和CMM的基本概念是什么。然后分析CMM中可重復級別的關鍵過程域的KPI;分析如何通過需求管理去分析和管理用戶需求,如何開發(fā)出來滿足用戶需求的產(chǎn)品;分析如何通過軟件項目計劃去分配和調度人力資源;分析如何通過項目跟蹤去監(jiān)控整個項目的進度,當進度出現(xiàn)問題時如何跟老師和團隊成員溝通調整;如何構建一個統(tǒng)一開發(fā)平臺對團隊成員的開發(fā)代碼進行管理。最后重點強調項目開發(fā)不只是編寫代碼;重點強調需求分析文檔、概要設計文檔、項目計劃、測試計劃的重要性;重點強調團隊合作的重要性。
三、可重復級實施情況
可重復級選擇的實踐項目是“圖書管理系統(tǒng)”。老師將“家庭財務管理系統(tǒng)”的需求陳述發(fā)給各小組,要求他們在4個星期內完成該項目,并上交完成此項目的代碼和文檔,對文檔的規(guī)范性和編程的規(guī)范性提出了嚴格要求。要求每小組配備一個需求管理員,負責管理和跟蹤用戶的需求;配備一個配置管理員,負責開發(fā)環(huán)境、代碼和文檔的管理;配備一個測試人員,負責系統(tǒng)測試。跟學生強調分工和協(xié)作的重要性。
在第1周到第4周的開發(fā)過程中,最初,大家主要是熟悉文檔編寫工具的使用,然后主要精力是花費在文檔編寫方面。在文檔編寫時,許多學生感覺非常艱難,提出了許多問題。在代碼編寫階段,許多小組感覺文檔指導作用不大,需求管理員和配置管理員經(jīng)常搞不清自己要做什么,有部分學生插不上手。第5周結束時,各個小組都提交了可運行的程序代碼和開發(fā)文檔。
在對各個小組完成的程序進行評審時,系統(tǒng)的質量比第一期有所提升,但還存在以下問題:文檔的質量較差,沒有一個小組能夠完整寫完開發(fā)文檔,大部分小組只是簡單的書寫了需求文檔和概要文檔,各個階段的文檔之間的關聯(lián)性較差;軟件功能不夠完整,測試也不夠充分,演示過程中出現(xiàn)了不少故障;代碼質量還有較大提升空間,閱讀起來還是不夠清晰。
在對各個小組完成的程序進行評審時,發(fā)現(xiàn)以下問題:雖然都完成了開發(fā)任務,但是沒有一個小組能夠完整寫完開發(fā)文檔,大部分小組只是簡單的書寫了需求文檔和概要文檔,軟件出故障時候不易維護的情況。開發(fā)過程遇到文檔描述不清晰時常需要從需求分析做起,增加了開發(fā)風險。程序有BUG時候,找到問題所在需要耗費很多時間。
老師對這些問題進行分析和點評,指出選定開發(fā)模型之后,下一步工作就是要想辦法盤活整個團隊,然后按部就班做好開發(fā)模型中所規(guī)定的各種任務。盤活整個團隊,需要對團隊成員進行培訓。想要完成各種任務,需要對各個環(huán)節(jié)的產(chǎn)出物進行評審。最后,老師分析CMM中可定義級別的關鍵過程域的KPI;分析如何根據(jù)項目的需要去制訂培訓大綱,從而用這個培訓大綱去指導整個項目組的培訓;分析階段性產(chǎn)出物評審的重要性,提出可以在各個小組中選出那些較為優(yōu)秀的學生作為一個評審團隊;強調編程規(guī)范、文檔規(guī)范、設計模式的重要性。
四、可定義級實施情況
可定義級選擇的實踐項目是“教學管理系統(tǒng)”。老師將“教學管理系統(tǒng)”的需求陳述發(fā)給各小組,要求各個小組按照可定義級的關鍵過程域的要求開展相應的活動,重點放在培訓大綱、培訓計劃和同級評審方面。完成該項目時間為4個星期,并上交完成此項目的代碼和文檔。
在4個星期的開發(fā)過程中,開始時,許多學生抱怨培訓和評審花費時間過多,也抱怨評審專家提的建議過于繁瑣、文檔規(guī)范要求過嚴。因為需求文檔、測試計劃和設計文檔經(jīng)過多次評審才過關,也花費比原來預想多的時間進行了培訓和講解,需求分析階段和設計階段花費時間是原來計劃的三倍,設計完畢之后已經(jīng)沒有時間進行編程了。為了得到最終的系統(tǒng),老師另外給出4周時間進行代碼實現(xiàn)和系統(tǒng)測試。最后的這兩個階段各小組進展得比較順利,心情也比較愉悅。第8周結束后,各個小組都提交了可運行的程序代碼和基本完整的開發(fā)文檔。
第9周對各個小組完成的系統(tǒng)進行了評審,各個小組實現(xiàn)的系統(tǒng)界面美觀,功能完整,運行錯誤發(fā)現(xiàn)較少,有個別項目組做得非常好,只有兩個項目組發(fā)現(xiàn)的錯誤較多。在評審后,老師給學生提出這樣一個問題:為什么我們完成項目比計劃時間要多1倍?大家反饋意見不一,但主要集中在這幾個問題上面:經(jīng)驗不夠;不知道如何計劃各個階段的時間;沒有想到編寫需求分析文檔和設計文檔需要這么多時間;沒有想到要討論清楚一個問題或者培訓一個新技術需要這么多時間。
老師針對時間計劃問題以及各個開發(fā)階段時間問題進行了分析,指出CMM第4級可管理級所增加的活動就是制訂針對項目質量和開發(fā)效率的目標,收集、測量相應指標;利用統(tǒng)計工具分析并采取改進措施,從而達到對軟件過程和產(chǎn)品質量有定量的理解和控制。老師強調想要達到CMM4級目標,必須收集到足夠的開發(fā)活動數(shù)據(jù)并進行合理的分析和利用,才能制訂較為準確的開發(fā)計劃,這個需要學生以后在工作崗位中努力。
五、結束語
本文所描述的循序漸進案例教學法使CMM的核心理念通過三個典型的小項目逐漸展開,有利于學生理解和掌握軟件工程課程的基本要點,提升了學生的綜合知識運用能力,提高了學生的溝通能力,也促進了學生參與項目開發(fā)的積極性,提升了他們從事軟件開發(fā)職業(yè)的信心。下一步我們將考慮為那些優(yōu)秀的高年級學生設計一個CMM可管理級別的實踐項目,在該項目中將對開發(fā)效率和軟件質量提出更高的要求。
[ 注 釋 ]
[1] 文勇,蔣小文,劉春漲.軟件工程課程改革和實踐——基于CMM核心理念[J].大學教育,2014(11):99-100.
[2] 美國卡內基梅隆大學.能力成熟度模型(CMM):軟件過程改進指南(英文版)[M].北京:人民郵電出版社,2002.
[責任編輯:鐘 嵐]