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