摘要:軟件項目管理是軟件工程教學中的一個重要組成部分。本文在項目管理理論的基礎上,結(jié)合軟件工程教學的實際,以電子商務網(wǎng)站工程建設為實踐項目,提出了項目驅(qū)動的軟件項目管理教學思想。軟件工程項目實踐與理論教學相結(jié)合,培養(yǎng)了學生團隊合作精神和解決實際問題的能力,提高了教學的質(zhì)量和水平。
關(guān)鍵詞:實踐教學;項目驅(qū)動;軟件項目管理:軟件工程
隨著信息技術(shù)的飛速發(fā)展,軟件產(chǎn)品的規(guī)模也越來越大,復雜程度越來越高,項目失敗的概率也隨之增長。研究表明,軟件項目失敗的原因主要有兩個:一是錯誤的軟件項目管理;二是應用項目的復雜性。實踐證明錯誤的軟件項目管理是導致軟件項目失控的直接原因。各軟件企業(yè)為了能高效高質(zhì)地開發(fā)軟件產(chǎn)品,都在積極將軟件項目管理引入開發(fā)活動中。然而在“軟件工程”的教學中,軟件項目管理的教學效果卻不盡人意。一方面,教材中的案例缺乏完整性、系統(tǒng)性和實用性;另一方面,軟件項目管理的講授方式不是十分合理,學生重視力度不夠。作者將結(jié)合多年的軟件工程教學經(jīng)驗,對軟件項目管理的教學方法進行分析和探討。
1軟件項目管理的教學內(nèi)容及特點分析
軟件項目管理[1]是為了使軟件項目能夠按照預定的成本、進度、質(zhì)量順利完成,而對人員、產(chǎn)品、過程和項目等進行分析和管理的活動。軟件項目管理是軟件工程教學中的重要內(nèi)容,它涉及了軟件項目管理的五個標準化過程組和范圍管理、時間管理、成本管理、質(zhì)量管理、人力資源管理、溝通管理、風險管理、采購管理、項目綜合管理九大知識領域,幾乎覆蓋了軟件產(chǎn)品從立項到結(jié)束的整個過程。圖1形象地展示了軟件項目管理與軟件開發(fā)過程在時間上的先后順序。
大多企業(yè)的優(yōu)秀管理者都是具有豐富經(jīng)驗的人員,同樣,軟件項目管理水平的高低偏重于軟件項目管理經(jīng)驗的積累。軟件項目管理的學習不僅僅是要掌
圖1軟件項目管理與軟件開發(fā)過程的時序圖
握基本的原理、方法和完成相關(guān)的設計文檔,更重要的是將理論應用于實踐,讓學生真正理解理論的作用,體驗在實際項目實施中理論知識的具體應用場景,培養(yǎng)學生的軟件項目管理思想。立足于軟件項目管理的教學目標和要求,結(jié)合軟件項目管理自身的特點,分析研究認為,項目驅(qū)動的軟件項目管理教學
方法能夠充分調(diào)動學生學習的積極性,培養(yǎng)學生動手實踐和主動探索的精神,提高教學的質(zhì)量和水平。
2項目驅(qū)動的實踐教學法
項目驅(qū)動教學法[2]是一種以建構(gòu)主義為理論基礎的教學方法,它以項目開發(fā)為主線展開教學,整個教學過程是一種在教師的指導下,以學生為主體的協(xié)作過程。這種教學法的主要特點是始終以項目中的任務展開教學,既注重最終的實踐結(jié)果,又注重完成項目的過程。其中教師的職責在于使學習者置身于探索知識之中,通過具體項目的開發(fā)提供真實的“情境”,即實際項目中需要解決的問題。然后,通過教師的指導,學生之間的討論來解決問題。這種模式旨在把學生融入任務完成的過程中,讓學生積極地學習,自主進行知識的建構(gòu),以培養(yǎng)學生綜合能力為最終目標。
2.1項目驅(qū)動教學對學生能力的培養(yǎng)
(1) 培養(yǎng)學生自主學習的能力。項目驅(qū)動教學法中任務的設定真正實現(xiàn)了以學生為主體的教學方針,學生為了完成任務就會主動去圖書館或相關(guān)的網(wǎng)站查閱信息,從而可以豐富知識,提高自學能力。
(2) 培養(yǎng)學生團隊合作的能力。把全班學生分成幾個小組,每組項目的完成情況,影響小組每個成員的評價,因此為了團隊的整體利益,小組成員之間就會不可避免地展開討論和爭辯,最終達成共識,相互協(xié)作完成任務。
(3) 培養(yǎng)學生分析問題、解決問題的能力。任務設計后,讓學生自己討論,分析任務,提出問題,充分發(fā)揮了學生在學習過程中的主動性、積極性和創(chuàng)造性。這種分析問題和解決問題的能力同樣可以應用到其它的領域。
(4) 培養(yǎng)學生實踐創(chuàng)新能力。實踐是創(chuàng)新的源泉。對于同一個任務,每個小組采用的解決方案不盡相同。他們可以根據(jù)自己的知識背景和對任務的認識,對任務的實現(xiàn)方法進行大膽的設計,從而培養(yǎng)學生的創(chuàng)新思維,提高學生的創(chuàng)新能力。
總之,項目驅(qū)動的任務式教學方法能夠充分發(fā)揮學生的主觀能動性,全面提高他們的綜合素質(zhì)。
2.2項目驅(qū)動教學法的操作過程
“項目驅(qū)動”教學模式是教學過程中諸要素相互作用而形成相對穩(wěn)定的組織結(jié)構(gòu)和操作程序。 采用“項目驅(qū)動”教學法,在軟件工程項目實施的每個階段,我們均采用“項目任務——分析任務——理論學習——完成任務——評價總結(jié)任務”的教學模式。學生在完成“項目任務”的操作過程中,發(fā)現(xiàn)問題、解決問題,通過對任務的剖析,豐富了學習的經(jīng)驗、提高了學生完成任務的能力。
3教學實施
從軟件工程的角度講,軟件項目管理過程主要分為七個階段[3]:可行性研究階段、需求分析階段、設計階段、編碼階段、測試階段、驗收階段和維護階段。我們在“軟件工程”的教學過程中,打破以往按教材編排順序講授知識的方式,以軟件項目的管理過程為講授順序,并以一個完整的具體項目實施為依托進行“軟件工程”教學。其中軟件項目管理的教學內(nèi)容將穿插到軟件生存周期各個階段進行講授,各階段將會不可避免地包含相同的管理內(nèi)容,通過學生重復學習與實踐,可以使其深刻體會軟件項目管理的思想。本校計算機專業(yè)大三學生的“軟件工程”課程共54課時,我們按照理論教學與實踐教學1:1的比例,先進行相關(guān)理論知識的講解,然后進行課程實驗的具體實踐,結(jié)合“PetStore電子商務網(wǎng)站”的建設,讓學生及時運用所學內(nèi)容來完成項目任務,通過將軟件項目管理的教學內(nèi)容貫穿到項目實施的整個過程來實施教學。
3.1教學準備
(1) 設置項目任務。在教學實施前,教師應根據(jù)教學進度、教學目標和要求制定教學計劃,并將PetStore系統(tǒng)建設分成各個相對獨立的子項目,將相關(guān)的理論知識分散在各個子項目中。學生應根據(jù)教師的安排認真閱讀項目要求,查閱相關(guān)資料,對相關(guān)問題進行思考分析,并為課堂討論做好準備。
(2) 建設團隊。我們對學生按“項目小組”以自由組合的方式建立軟件開發(fā)團隊[4],每個團隊不得超過6人,各組成員根據(jù)實際項目開發(fā)的過程進行分工。項目經(jīng)理由小組成員討論推薦產(chǎn)生,負責整個項目的規(guī)劃、實施和控制。系統(tǒng)分析師、軟件測試工程師和開發(fā)工程師通過自我推薦或項目經(jīng)理指定產(chǎn)生。項目中的每項任務要落實到人且規(guī)定該任務的起止日期和時間。
(3) 建設規(guī)范的實驗、實訓室。根據(jù)項目驅(qū)動教學的特點,不僅需要學生提交書面的階段性文檔,還要通過具體的實踐實現(xiàn)項目任務,提交項目作品。因此規(guī)范化的實驗、實訓室成為項目順利完成的保障。
3.2教學內(nèi)容
我們將從軟件的生存周期著眼,利用階段化的項目管理方法,結(jié)合項目實踐,對工程化生產(chǎn)中的管理工作進行講解。對于軟件項目的每一個階段均要做出工作計劃,在階段結(jié)束之后,要對該階段的工作活動進行總結(jié)評價,并對后續(xù)階段的時間、人員、資金方面的需求做出估計。下面按軟件項目的開發(fā)階段,以PetStore系統(tǒng)的建設為例,詳細介紹軟件工程中軟件項目管理的教學內(nèi)容及相關(guān)的項目實施任務。
3.2.1問題定義與可行性研究階段
問題定義與可行性研究階段主要涉及的項目管理教學內(nèi)容包括:確定項目實施范圍、項目目標、評估實施過程中主要的風險、制定項目實施的進度計劃、成本和預算計劃、人力資源計劃等。
針對PetStore系統(tǒng)的開發(fā)建設,我們讓老師模擬實際的用戶,學生在對用戶調(diào)查的基礎上,結(jié)合軟件項目管理理論知識,通過查閱資料、小組成員之間的討論,編寫詳細的“系統(tǒng)目標與范圍的說明書”。按照說明書的內(nèi)容和要求,分析項目可能存在的風險,建立“風險項目檢查表”。明確系統(tǒng)流程,建立系統(tǒng)邏輯模型,制定不同的解決方案。通過與用戶的溝通,考慮經(jīng)濟上、技術(shù)上的可行性,比較選擇一個較優(yōu)的解決方案。在任務完成的過程中,學生可以真正感受到非文檔所能體現(xiàn)的管理問題,如人力資源管理、溝通管理、風險管理等。
3.2.2需求分析階段
本階段將更加全面、準確地分析PetStore系統(tǒng)的需求,主要涉及的管理工作為需求管理、質(zhì)量管理、溝通管理等。通過與用戶的多次溝通,明確系統(tǒng)可以分為用戶管理、商品管理和維護庫存數(shù)據(jù)庫三大功能模塊,每個大的功能模塊又可分為若干小模塊,如用戶的注冊模塊、登陸模塊、修改模塊等。為保證PetStore系統(tǒng)的開發(fā)質(zhì)量,需要在此階段制定軟件質(zhì)量標準,主要包括功能性、穩(wěn)定性、經(jīng)濟性、適用性、可靠性、安全性、可維護性等指標。明確系統(tǒng)的各種需求后,編寫“軟件需求規(guī)格說明書”。
3.2.3軟件設計階段
軟件設計是一個將需求轉(zhuǎn)變?yōu)檐浖愂?表達)的過程,程序的質(zhì)量主要是由設計的質(zhì)量來決定。本階段主要包括范圍管理、質(zhì)量管理、時間管理、溝通管理等軟件項目管理方面的內(nèi)容。例如在PetStore系統(tǒng)設計的過程中,根據(jù)“需求規(guī)格說明書”中需求分析方法,確定所采用的軟件設計方法及系統(tǒng)數(shù)據(jù)、軟
件框架。軟件設計階段的任務主要包括PetStore系統(tǒng)界面設計、數(shù)據(jù)庫設計、數(shù)據(jù)結(jié)構(gòu)設計、編寫設計文檔等。在設計過程中始終要求按照質(zhì)量標準予以實施,并及時進行質(zhì)量評估。學生完成PetStore系統(tǒng)設計后,可以邀請用戶或其他小組成員參與設計復審。復審時,設計人員要提出對設計方案的詳細說明,答復與會者的問題,并記下重要的評審意見。
3.2.4編碼階段
編碼階段涉及的軟件項目管理教學內(nèi)容主要有風險管理、質(zhì)量管理、進度控制、成本管理、時間管理、配置管理、項目度量管理等。針對PetStore系統(tǒng),按照設計文檔的要求,對系統(tǒng)的各個功能子模塊采用自己熟悉的語言進行編碼設計。在PetStore的功能模塊開發(fā)過程中,并不能完全保證項目按照開發(fā)計劃進行,為了能使項目進度和開發(fā)計劃同步,軟件管理者在項目開始后應時刻關(guān)注計劃執(zhí)行情況,隨時進行風險分析,調(diào)整項目進度,使實際進度與計劃進度保持一致。編碼結(jié)束后,由項目小組的技術(shù)人員對代碼是否按規(guī)范編寫進行審核,以保證編碼的質(zhì)量。
3.2.5測試階段
測試階段主要涉及的軟件項目管理教學內(nèi)容有質(zhì)量控制、配置管理等。針對PetStore系統(tǒng),在編碼階段由項目開發(fā)者實現(xiàn)單元測試,測試階段由獨立于開發(fā)人員的測試人員進行“漸增式”的集成測試,最后,對照需求說明書,完成確認測試,并編寫相應的測試報告文檔。在測試過程中,學生利用配置管理的CASE工具,可以了解配置管理在軟件開發(fā)中的具體應用及其所起到的重要作用。
3.2.6運行和維護階段
運行和維護階段的軟件項目管理內(nèi)容主要包括維護成本估算、配置管理、風險管理、維護管理文檔的編寫。在PetStore系統(tǒng)的維護中,加強文檔的建設,做到任何事情均有記錄,任何變更均可回朔,利用維護日志和軟件修改報告記錄維護過程中的具體實施情況,學生可以根據(jù)維護情況參照開發(fā)工作量來估計維護的費用。此階段還可以讓學生選擇合適的自動配置管理工具來實施配置管理。
3.3教學總結(jié)
我們要求學生按PetStore項目生命周期的開發(fā)階段進行階段性項目總結(jié)。每個階段的教學結(jié)束后,老師給學生一定的時間來實現(xiàn)PetStore 系統(tǒng)相關(guān)的內(nèi)容,同時要求每個項目小組派一名代表在課堂上對階段性的工作實施過程進行講解,讓全班學生共同討論,相互交流不同的觀點,以期從討論中發(fā)現(xiàn)自己的不足和別人的優(yōu)點,同時也能活躍課堂氣氛,培養(yǎng)學生主動思考的意識。
在“軟件工程”軟件項目管理的教學過程中,我們注重的不是具體某一管理技術(shù)的學習,而是讓學生深刻體會軟件項目管理的過程,培養(yǎng)學生軟件項目管
理的思想。
4結(jié)語
實踐表明采用“項目驅(qū)動”的軟件項目管理教學方式,可以將學習置于一個真實的軟件項目開發(fā)環(huán)境中,讓學生親自動手操作來學習“死”的理論,加強理論與實際的聯(lián)系,從而激發(fā)了學生的創(chuàng)新意識,調(diào)動了其學習積極性,培養(yǎng)了學習興趣,提高了他們分析問題和解決問題的能力,達到了教學目標和要求,起到了良好的教學效果。
參考文獻:
[1] 張建成. 周嗚樂. 淺談軟件項目管理[J]. 信息技術(shù)與信息化,2008(5):84-86.
[2] 鄧銳,佘維. 基于篩選機制的高職軟件技術(shù)專業(yè)項目驅(qū)動教學探討[J]. 計算機教育,2008(22):113-114.
[3]Php Metzger,John Boddie. 軟件項目管理—過程控制與人員管理[M]. 北京:電子工業(yè)出版社,2002.
[4] 裴小兵. 基于軟件開發(fā)團隊的軟件工程教學實踐研究[J]. 計算機教育,2008(2):55-56.
Application of the Thinking of Software Project Management in \"Software Engineering\" Teaching
ZHANG Zhong-lin, WANG Jian-sheng, LAN Li
(School of Electronic and Information Engineering, Lanzhou Jiaotong University, Lanzhou 730070, China)
Abstract: Software Project Management is an important component of the Software Engineering Teaching. On the basis of the project management theory, this paper combine the practice of the software engineering teaching and take the construction of the e-commerce Web site for the practice, putting forward a teaching ideas of a project-driven software management. By combining the practice of software engineering projects with the theory of teaching has cultured the students the spirit of teamwork and the ability to solve practical problems and has improved the quality and level of teaching.
Key words: practice teaching; project-driven; software project management; software engineering
(編輯:姚彥如)