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