摘要:本文介紹了軟件學院“軟件項目管理”課程的實踐方式與考核方式。該課程實踐模擬團隊協作完成一個項目,在整個課程實踐中,每個學生輪流做一次項目經理,從領導者與被領導者兩種角度體會軟件項目管理。課程實踐的考核由教師與學生共同完成,為組員分配成績作為項目經理的一種職權,不僅幫助項目經理能夠有一定的管理力度,同時也讓同學體會如何正確使用職權。
關鍵詞:軟件項目管理;軟件工程;課程實踐;課程考核方法
中圖分類號:G642文獻標識碼:B
文章編號:1672-5913(2007)05-0026-03
1 引言
“軟件項目管理”幾乎是所有軟件學院的必修課程,這門課程不同于傳統的“軟件工程”課程,但與PMBOK定義的項目管理也有所不同,它不是抽象的項目管理,而是軟件工程項目的項目管理,必須結合軟件項目的特點。
由于傳統教學主要講授概念、理論、方法,學生的實踐能力較弱,在實踐中也不知如何應用所學的理論方法,因此現在教改強調實踐能力的培養,學生也急于實踐體驗,往往又忽視基本概念、理論與方法的學習。但是沒有理論指導實踐,實踐會變得盲目、不系統,會走很多彎路。管理科學的理論是總結許多失敗與成功的經驗教訓之后提煉抽象而來的,真正掌握了理論方法,實踐才會更科學、更系統,同時也能避免走彎路。
“軟件項目管理”的實踐不像軟件系統分析設計、數據庫設計、面向對象設計等課程那樣,讓學生完成設計文檔及編碼實現就可以了。如果學生僅僅提交相關文檔,根本無法體會實際的項目管理所涉及的各種問題,如計劃、質量管理等,尤其是那些非文檔能體現的管理問題,如溝通、人力資源管理等。
為此,我們在教學中,課堂講授主要采取理論結合案例進行教學,學生在課程實踐過程中模擬企業的項目管理,親自體驗項目管理,自己解決問題,并且參與到考核中。
2 軟件項目管理案例教學
管理科學的理論大多來自于實踐,但卻是經過整理、抽象的理論方法。面對這些理論,學生看到的是文字、符號、圖表,要將這些文字、符號、圖表再用于實踐、指導實踐卻是一件不容易的事情。
管理的課程不結合案例講解很容易變成空洞的說教,無法引起學生的興趣,理論方法也難以被學生理解掌握,但完全講案例又容易變成講故事、就事論事,曾有學生要求課上全部講案例分析,但案例分析的基礎是理論,如果不講清楚理論無法系統、科學地分析案例。
因此,課堂教學我們采用理論結合案例的教學方法。授課以理論教學為主,但為了使學生理解、掌握理論方法,所有的理論教學都穿插小案例,而為了使學生對完整的項目管理有一定了解,課上會有一兩個大案例分析使學生將所學知識融會貫通。
課上所選案例幾乎都是國內的案例,而且大多數是授課教師親身經歷過的案例。事實上,影響一個項目的因素非常多,我們從文獻資料上看到的案例描述是不完整的,所以很難對這些案例有真切的體會,在分析講解時也會牽強,只有對自身經歷過的案例,講解時才能全面、深刻、生動。
此外,我們采取開放式的互動教學。由于每次開課選課人數都在200-300人,無法實時互動,但鼓勵學生在課間提問及課后通過郵件提問,這樣可以過濾一些絕大多數同學都明白的非常基本的問題,對于對同學都有意義的問題,教師會在課堂上給學生進行講解。尤其是有多年實習工作經驗的同學,會提出非常實際但在許多企業解決得不好或沒有解決的問題,教師在課堂上對這些問題給予解答,使其他同學在學習的過程中也能感受到來自企業的實際案例。
3 通過課程實踐軟件項目管理
理論在抽象的過程中必須抽取部分,落到一個點上,但是實踐能夠涉及到許多點,而且相互關聯影響,遠比理論描述復雜得多。如何將理論變成可操作的方法、有效的策略?解決某一問題有許多方法,哪種最合適呢?
親自實踐獲取的感悟是最深刻的。讀、聽所獲取的感悟、理解只在表層,必須實踐,才能深刻理解所學的理論方法。為了讓學生有深刻的體會,必須讓學生通過課程實踐體會軟件項目管理中的問題,利用所學的理論與方法解決這些問題。
課程實踐主要是模擬團隊開發的組織與管理過程,讓學生組成小組,共同協作完成課程實踐。課程實踐不僅要求學生完成一些文檔,還要求學生提交每次任務的組織過程,包括會議記錄、問題與解決方案及效果,最后還需要提交一份將整個課程實踐過程作為一個實踐案例的案例分析。
下面分別從幾個方面介紹作業實踐的內容、方式與考核。
團隊組建:課程實踐要求學生自愿組成項目小組,五人一組,小組成員在每次作業中輪流擔任項目組長,完成不同任務。小組人員不宜太少,如果太少,組員間協調的復雜度不夠;如果太多,對于松散的學生小組而言,協調的難度太大,難以完成課程實踐。
團隊組建完全由學生自己組隊,可以采取招聘的方式。比如,在學院網站上招聘自己需要的組員。一般,有項目經驗的同學喜歡組成一個小組,沒有項目經驗的同學往往組成一個小組,但是由于這些沒有項目經驗的同學非常認真、投入,反而在實踐過程中收獲更多,完成作業的質量也更高。
選題:團隊組建完成之后,每個小組通過討論選擇一個虛擬或實際的軟件項目,以此項目展開整個課程實踐。課程實踐中途不允許更換項目,這樣,學生在選擇項目時就要認真分析討論。
作業內容:課程實踐要求提交五份作業,相當于完成五次任務。五次任務分別是針對所選項目完成以下工作:
(1)立項報告:對所選項目進行技術、市場、經濟等各個方面的可行性分析,重點是確定項目的目標、范圍、關鍵技術等。立項報告是項目管理的綱要性指導文件。
(2)工作量估算:這是項目管理的的基礎,項目的計劃、任務的分配、成本等都依賴于工作量估算。作業要求利用課程講授的估算方法,先對項目規模進行估算,在規模估算的基礎上,利用課程講授的估算方法進行工作量估算。
(3)項目計劃:項目計劃包括過程計劃、資源計劃、文檔計劃、風險計劃、質量計劃、人力資源計劃及進度等多項計劃,要求學生在工作量估算的基礎上制定計劃。
(4)任務分配:是在工作量估算和項目計劃的基礎上,將任務進行合理分解,并且在一定的時間約束下分配給每個組員。
(5)十大風險清單:每次作業分為兩部分,一部分是提交上述文檔,一部分是提交作業過程記錄文檔,包括會議記錄、所遇問題及解決方法等。
輪崗:為了使每個同學都能夠深切體會到項目管理中的各種問題,要求每個同學都做一次項目經理,在其他作業中擔任組員。在做項目經理的過程中,每個學生體會收獲都不一樣,每個同學遇到的問題也都不一樣。當遇到問題時,學生可以向教師咨詢,但是教師不參與解決問題,完全由同學自己解決問題。
這種方式使學生真正體會了團隊溝通協作。許多問題來自于溝通,而溝通帶來的問題往往與人的性格有關,而非技術或能力,這使許多同學意識到溝通的重要性,也意識到自身素質在團隊合作中的重要性。
通過角色的輪換,使學生體會項目經理的職責與權利,體會組織、領導一個團隊協同工作的各種問題,同時也學習如何被領導,如何與他人合作共同完成一項任務,使學生從領導者與被領導者兩種角度體會軟件項目管理。同時,每次作業也都訓練學生完成軟件項目管理中的重要工作,如立項、項目計劃、軟件估算、風險管理等。
考核方式:教師在收到作業后,給每個小組打分,這個分數是項目組的成績,也是項目經理的成績。然后,將成績發給同學,由項目經理給每個組員打分。項目經理根據組員在本次作業中的表現給組員分配成績,遵循的原則是小組平均成績不超過小組成績。
為組員分配成績作為項目經理的一種職權,不僅幫助項目經理在整個任務執行中能夠有一定的管理力度,同時也讓同學體會如何正確使用職權。當小組成員對項目經理的成績分配有異議時,可以向教師提出申訴,由教師經過調查進行協調,或給予仲裁。
教師對小組作業考核的指標包括所提交文檔的質量、過程文檔的質量、解決問題的方法、以及提交作業的時間等。項目經理對小組成員的考核標準包括工作量、完成任務的質量等。
作業講評:教師會對每份作業批注,明確指出哪部分完成得好,哪部分存在不足,應該如何改進。在下次課堂上,教師會講評優秀作業和完成質量較差的作業,讓學生知道差距,從實例中學習如何改進。
4 課程實踐效果分析
“軟件項目管理”課程經過近十輪的教學,課程實踐也在不斷改進中。但無論怎樣改進,課程實踐的效果很大程度上取決于學生的投入。一些小組為了完成作業經常一起討論到凌晨一兩點,他們在考核時也很認真,項目經理會認真根據每個小組成員的工作給予合理的成績,這些學生反映通過課程實踐真正體會了軟件項目管理。而一些小組卻可能每次作業委托一個同學完成,最后的成績每個人都是平均成績,這些學生大多數是工作繁忙的在職學生,他們由于工作繁忙難以投入大量時間與精力。
在課程結束時提交的課程實踐案例分析中,學生收獲最大的是對于溝通管理的理解,以及作為項目經理的問題解決能力的重要性的認識。當然,也實際訓練了作業所要求掌握的知識與方法。
本課程實踐沒有要求學生提交項目的需求分析文檔、設計文檔、代碼等,但要完成工作量估算,至少要完成需求分析。無論如何,沒有要求學生實現軟件系統,學生還不能完全體會到軟件項目管理中的問題,尤其是與技術、開發相關的問題。所以,經過幾次課程實踐之后,本課程的課程實踐與分析設計課程的作業結合起來,要求兩門課程的項目小組一樣,用同一個項目完成所有作業。這樣,學生就可以在課程實踐中完整體會軟件項目管理。
參考文獻:
[1] [美] 斯蒂夫·邁克康奈爾.快速軟件開發[M].北京:電子工業出版社.
[2] [美] 斯蒂夫·邁克康奈爾..微軟項目求生法則[M].北京:.機械工業出版社.
[3] [美] 愛德華·.尤登.死亡之旅棗超常規軟件項目的開發實踐[M].北京:電子工業出版社.
[4] [美] 羅伯特·格拉斯.軟件開發的滑鐵盧棗重大失控項目的經驗與教訓[M].北京:電子工業出版社.
收稿日期:2006-11-14
作者簡介:康一梅,女,1994年中科院自動化所博士畢業,曾在北京金益康、北京亞訊數碼、北京首創前鋒等公司任研發中心總經理、技術總監等職。先后為中科院軟件學院、北航軟件學院講授《軟件項目管理》、《系統分析設計》等課程,現為北航軟件學院嵌入式軟件專業主任。