前言:想要寫出一篇令人眼前一亮的文章嗎?我們特意為您整理了5篇軟件開發(fā)培訓計劃范文,相信會為您的寫作帶來幫助,發(fā)現(xiàn)更多的寫作思路和靈感。
【關鍵詞】軟件;策劃;風險分析
【中圖分類號】TP399
【文獻標識碼】A
【文章編號】1672—5158(2012)10-0416-01
引言
嵌入式軟件已經(jīng)在我國航天導彈武器系統(tǒng)等尖端產(chǎn)品中得到廣泛的應用。目前,《GJB5000A-2008軍用軟件研制能力成熟度模型》已經(jīng)并實施,航天嵌入式軟件項目的研制過程逐漸要依據(jù)這個標準進行。軟件作為航天控制系統(tǒng)的關鍵部分,其地位顯得越來越突出,分系統(tǒng)級軟件規(guī)模已經(jīng)超過數(shù)萬行。同時從事軟件研制人員已經(jīng)形成一個組織分工明確、相互配合緊密的團隊,從任務書、需求分析、概要設計、詳細設計、代碼實現(xiàn)、軟件測試、交付和維護等環(huán)節(jié),每個崗位可能涉及到多個人員。如何通過軟件項目策劃,保證軟件研制流程明晰、可控、軟件產(chǎn)品質(zhì)量可靠,成為型號研制工作的一個不可或缺的重要環(huán)節(jié)。
1 項目策劃的目的
隨著管理要求日益嚴謹,軟件管理由粗放式向精細化和準確化轉(zhuǎn)型成為大勢所趨,利用軟件策劃幫助研制方提高研制進度管理的有效性,保證產(chǎn)品質(zhì)量、提升核心競爭力已經(jīng)成為共識。策劃的目的是為執(zhí)行軟件工程和管理軟件項目制定合理的計劃,旨在使軟件開發(fā)人員及管理人員充分了解軟件項目策劃過程,使項目管理人員遵照過程實施項目策劃活動、制定項目開發(fā)計劃及執(zhí)行相關策劃活動。
2 軟件策劃前提和輸入
項目策劃的前期,軟件項目組成員要積極參加整個系統(tǒng)項目的早期策劃活動,并在系統(tǒng)方案的制定和評審過程中,共同討論方案報告,協(xié)商有關軟件項目的目標、范圍、進度、資源等,從而逐步了解軟件在系統(tǒng)中的作用、進度、功能等。同時對設計輸入的任務書要進行認真評審,對其每項內(nèi)容了如指掌,并納入配置管理。參加項目策劃活動的人員還要接受相關培訓。
3 軟件策劃的規(guī)程
軟件策劃需經(jīng)多個步驟,從而對整個項目階段工作進行全面梳理。根據(jù)輸入的任務書和標準等,首先依據(jù)策劃的主要內(nèi)容,制定軟件策劃的工作計劃,然后選擇軟件生命周期模型,確定軟件開發(fā)階段,其次就要進行工作分解結構(WBS)分解,這是策劃中非常重要的步驟。在此基礎上進行規(guī)模、工作量、成本和進度估計,最后形成軟件開發(fā)計劃。其中有多個非常關鍵的環(huán)節(jié),直接影響策劃的真實性和可執(zhí)行性,因此需要重點關注。
3.1 工作分解結構
工作分解結構(Work Breakdown Structure,簡稱WBS)是歸納和定義整個軟件項目范圍的一種最常用方法,它將一個項目分解成易于管理的幾個部分或子項,以確保找出完成項目工作范圍需要的所有工作元素。
工作分解結構是對軟件工作產(chǎn)品和軟件過程進行分解,以層次結構來組織軟件項目的產(chǎn)品元素和活動元素,將項目的軟件工作產(chǎn)品和軟件過程分解為較小的、更易于管理的元素。
WBS分解時,通常按照樹型結構,不斷將項目的最終目標分解到一些較小工作單元,直到這些工作單元可以被很容易地“控制”住為止。在劃分任務時,任務的顆粒度不能太大,也不能太小。顆粒度太大,難以及時發(fā)現(xiàn)問題;顆粒度太小,就會增加管理成木。任務的顆粒度最小可以到半天,最大到周,一般以小于3天為宜,也就是說項目經(jīng)理能夠在1周中至少檢查2次成員的工作進展情況。適當?shù)娜蝿疹w粒度便于監(jiān)控,另一方而也有利于調(diào)整任務。當出現(xiàn)任務拖期時,可以比較靈活地重新安排人員接手其他人員的任務。
3.2 項目估計
根據(jù)WBS分解的項目內(nèi)容進行項目估計,項目估計包括項目規(guī)模、工作量和成本的估計,這是整個策劃中的關鍵環(huán)節(jié),只有項目估計盡量準確,才能保證項目進度、質(zhì)量能夠受控。為了保證項目估計合理性,可采用下面措施:
1)借助歷史數(shù)據(jù)。歷史數(shù)據(jù)是“經(jīng)驗”的量化,通過和歷史項目的數(shù)據(jù)對比,可降低估計的風險。在借鑒歷史數(shù)據(jù)時,要注意數(shù)據(jù)的可比性,要考察項目類型是否類似、生命周期模型是否類似等。
2)采用多種估計方法互相驗證。在估計時可以采用多種估計方法,然后對多種方法的結果進行對比,通過分析其差異以判斷合理性。
3)細分任務。任務拆分的越詳細,就越容易估計,越容易和歷史數(shù)據(jù)對比。內(nèi)容任務要完備。估計時要識別出所有工作,不要有遺漏。
4)有估計經(jīng)驗的人參與估計。一方面要對參與估計的人員進行培訓,另一方面需要在實踐中積累估計經(jīng)驗。每次估計完成后,都要和實際的情況進行對比,經(jīng)過3-5次反復,則可積累估計經(jīng)驗,提高估計準確性。
多人分別估計并形成估計表,然后由項目負責人進行匯總形成軟件估計報告。
3.3 資源和管理計劃
人力資源策劃方面要包含完成軟件開發(fā)項目必需的人員數(shù)量,姓名,指明項目管理、軟件工程、正式軟件測試、軟件產(chǎn)品評價、軟件配置管理等分別所需的人員數(shù)目及總數(shù)。相應崗位若需通過相應崗位的培訓考核,則還要制定培訓計劃。
項目負責人要確定軟件項目相關的利益相關方,包含硬件設計人員、任務提出方、測試設備負責人、用戶代表、評測機構等。從而協(xié)調(diào)制定相關的計劃或關鍵點,描述利益相關方的權限和責任,以及與其它組織的關系。
基礎設施資源的策劃要同步進行,估計時參考類似項目的歷史數(shù)據(jù),根據(jù)項目需求、工作產(chǎn)品的規(guī)模,考慮開發(fā)環(huán)境、測試環(huán)境、目標環(huán)境或者這些環(huán)境的任何適當組合情況下所需的基礎設施資源。同時制定測試計劃、配置管理計劃、質(zhì)量保證計劃、風險管理計劃、數(shù)據(jù)管理計劃、里程碑評審計劃和溝通計劃等。對上述計劃確認后進行配置管理。
4 風險估計
標識風險源為項目研制過程中檢查隨時間而更改的狀態(tài)提供了基礎,直接顯示出影響項目研制目標的各個因素。風險源來自項目的內(nèi)部和外部。隨著項目的進展,可能會發(fā)現(xiàn)更多的風險源。項目策劃階段就要識別和分析風險,并制訂風險減緩計劃,才能進一步跟蹤項目風險,及時消除各個風險源帶來的影響。
5 形成軟件開發(fā)計劃
策劃輸出的果就是軟件開發(fā)計劃,根據(jù)WBS分解的結果,根據(jù)軟件任務、任務的工作量、項目成本、任務之間的銜接關系、系統(tǒng)的約束條件和人員分配表等,得出項目的進度和關鍵路徑,并得出軟件項目預算,連同項目進度及網(wǎng)絡圖寫入階段軟件開發(fā)計劃,在形成項目計劃過程中,如出現(xiàn)各項約束條件與任務進度沖突情況,需重新估計。軟件開發(fā)計劃應通過正式評審,從而保證具有相應約束力,并納入管理和控制。
【關鍵詞】電力崗位應知應會標準;培訓模型;智能化
1、建設背景
電力企業(yè)培訓模型被提及比較多的有電力企業(yè)崗位勝任能力模型等,但由于各種原因以及和實際培訓工作存在一定差距,始終沒有找到合適的方法加以推廣和利用。行業(yè)內(nèi)一度認為職業(yè)勝任能力模型“看起來很美“,但是無法在實際教育培訓工作中加以應用。
2010年,佛山供電局作為廣東電網(wǎng)公司教育培訓創(chuàng)先工作的責任單位之一,主要負責學習項目子體系創(chuàng)先工作。學習項目體系是教育培訓創(chuàng)先的主線,圍繞公司組織能力需求,全面梳理內(nèi)部知識,以關鍵技術技能培訓標準和課程課件建設為突破口,實現(xiàn)對公司內(nèi)部知識的系統(tǒng)管理。以崗位勝任力為基礎,以崗位說明書、作業(yè)指導書、關鍵績效指標等為依據(jù),對應專業(yè)(工種)、崗位和作業(yè)目錄,制訂覆蓋公司管理、技術和技能專業(yè)領域的、以應知應會為核心的能力培訓標準。借助國內(nèi)外企業(yè)培訓先進理念,從課程設置和課程設計入手,開發(fā)菜單式培訓課程,使每一個崗位的專業(yè)知識和業(yè)務技能模塊化,形成具有廣東電網(wǎng)特色的學習項目培訓系列教材和電子化課件。
佛山供電局根據(jù)本單位實際情況,分析了國內(nèi)外的先進培訓手段,結合廣東電網(wǎng)公司創(chuàng)先工作思想及智能電網(wǎng)先進思路。積極探索利用信息化手段和網(wǎng)絡技術,在原有網(wǎng)絡教育培訓系統(tǒng)的基礎上,開發(fā)基于崗位應知應會標準的電力智能化網(wǎng)絡培訓系統(tǒng)。
2、崗位應知應會的標準的定義
崗位應知應會標準,是指員工完成某崗位工作所應具備的理論知識和技術能力,將這些知識和能力進行梳理和規(guī)范后,制定出的可量化的標準。
崗位應知應會標準是各單位開展年度培訓需求分析和制定培訓計劃的主要依據(jù),是系統(tǒng)建設的核心。
崗位應知應會標準模型(圖1):
3、系統(tǒng)的構建策略
3.1建設思路
由于系統(tǒng)建設的成敗關鍵在于崗位應知應會模型的建立,主要工作都圍繞崗位應知應會模型建設來展開,根據(jù)廣東電網(wǎng)教育培訓創(chuàng)先工作方案的要求,建設以崗位勝任力為基礎,以崗位說明書、作業(yè)指導書、技術標準,以及設備和技術參數(shù)、關鍵績效指標等為依據(jù),對應專業(yè)(工種)、崗位和作業(yè)目錄,制訂覆蓋公司管理、技術和技能專業(yè)領域的、以應知應會為核心的能力培訓標準。
佛山供電局人力資源部和信息中心通力合作,開展了崗位應知應會標準培訓模型信息化落地工作。邀請專業(yè)咨詢公司及軟件開發(fā)公司,對人力資源部梳理出的工作內(nèi)容進行了進一步研究和劃分,擬定需求分析說明書、系統(tǒng)架構設計、擬定應知應會培訓項目編碼規(guī)范和項目開發(fā)監(jiān)理,由實施廠家進行系統(tǒng)設計、開發(fā)以及相關數(shù)據(jù)轉(zhuǎn)換工作。
3.2建設方法
3.2.1業(yè)務再造流程先固化后優(yōu)化。為了保證流程再造成果得以迅速推廣應用,在項目實施中佛山供電局采取“先固化后優(yōu)化”的工作思路,由“點到面”的推廣方法對系統(tǒng)進行逐步的升級和完善。
3.2.2集中開發(fā)、統(tǒng)一部署。該系統(tǒng)是在原有系統(tǒng)的基礎上進行功能擴充改造,以佛山供電局為中心進行集中的軟件開發(fā)、測試,統(tǒng)一對各部門和區(qū)供電局進行部署。
3.2.3加強業(yè)務流程再造宣貫與培訓。為更好落實“先固化后優(yōu)化”的實施策略,佛山供電局通過專項培訓情況,開展了針對培訓業(yè)務人員的流程擴充成果的逐層宣貫工作。
3.2.4充分發(fā)揮監(jiān)理的作用。利用監(jiān)理方豐富的實施管理經(jīng)驗深度介入項目的組織管理工作,從項目的準備工作開始時就要求監(jiān)理方深度介入項目的每一個環(huán)節(jié),配合做好項目的組織、進度監(jiān)控、成果審查和測試等工作,保證了項目的進度和質(zhì)量。
3.3系統(tǒng)的架構
3.3.1信息系統(tǒng)總體架構(圖2)
3.4建設目標
佛山供電局網(wǎng)絡教育培訓系統(tǒng)在原有的網(wǎng)絡教育培訓系統(tǒng)上進行擴充,在充分考慮與人力資源等其他業(yè)務系統(tǒng)進行集成的基礎上進行建設,主要實現(xiàn)以下建設目標:依據(jù)佛山供電局崗位應知應會標準,建立一套科學、靈活的全員培訓管理體系,實現(xiàn)培訓項目的全過程管理;提高培訓宏觀管理能力,依據(jù)單位對人才的需要,制定切實可行的培訓方案,并依據(jù)遠近期目標,選擇所需的培訓知識和技能及評估績效等;建立員工的全方位培訓檔案管理,可記錄員工的歷次培訓情況、培訓得分等,作為對員工技能的考核與能力選拔的重要依據(jù);可依據(jù)培訓目標制訂詳盡、周密并可操作的培訓,并可從培訓、業(yè)務主管部門、直屬上級等不同層次對培訓目標的監(jiān)督考核,保證嚴格按培訓計劃與要求將培訓落到實處。
4、系統(tǒng)的主要功能介紹
4.1應知應會標準固化與維護 由各負責單位培訓員負責錄入標準,可實現(xiàn)各個崗位的應知應會標準維護。通過人員編碼與崗位代碼的一對一映射關系,可自動形成人員編碼與培訓項目代碼的一對多映射關系。
4.2崗位符合度評估 根據(jù)人員和崗位信息,通過一定的公式和邏輯關系,得出個人積分,依據(jù)崗位應知應會標準,計算出人員崗位符合度。
4.3培訓需求調(diào)查管理 由員工所在部門利用崗位應知應會標準,確定員工應知應會差距清單,識別差距對員工培訓的要求,從而得出年度培訓需求,形成年度需求報告。
4.4培訓計劃生成 年度培訓計劃應包括崗位應知應會培訓需求調(diào)查每年自動生成的、員工自己選擇的、直接上級領導指定的。由各單位培訓員負責匯總錄入每個人的計劃,自動形成部門年度培訓計劃初稿。對下年度培訓項目進行策劃,選擇合適的方式和時間,編制培訓預算。
4.5培訓項目實施管理 實現(xiàn)培訓課程管理、題庫管理、師資管理、培訓機構管理、培訓場地管理、專家團隊管理和培訓證書管理。根據(jù)年度培訓項目計劃,舉辦培訓班,網(wǎng)上報名,培訓班上報,并進行歸檔,并可進行在線的考試和成績登記。
4.6培訓考核與評價 將教育培訓目標考核的內(nèi)容在系統(tǒng)中進行定義,對能夠自動采集的數(shù)據(jù)實現(xiàn)自動采集。下一步在時機成熟時,將試行由各責任單位定義培訓目標考核指標及評價標準,并經(jīng)人事部審查后正式。
4.7統(tǒng)計分析與報表 可動態(tài)分析每個員工培訓情況與崗位的符合度情況,作為了解員工知識結構與水平、以及人員選拔的依據(jù)之一,可依據(jù)某一崗位統(tǒng)計出單位內(nèi)非本崗位員工崗位培訓度情況,并按積分從高到低進行排序;直接上級、主管部門可動態(tài)跟蹤、統(tǒng)計員工的培訓情況,有針對性的了解需求、組織培訓;員工可動態(tài)的查看本人需培訓的課程,本人的培訓檔案與積分情況,以便及時參加相關培訓,能動態(tài)地查看計劃與完成情況的對比。
5、系統(tǒng)的建設和推廣解決的問題
5.1實現(xiàn)了局培訓的全員覆蓋 系統(tǒng)的使用實現(xiàn)了全局全員培訓的完全覆蓋。截止到2012年7月,系統(tǒng)已經(jīng)穩(wěn)定運行了了將近2年時間,審核并固化了全局698個崗位應知應會標準,為支持網(wǎng)絡培訓應用,開發(fā)了將近400門電子課件,并同步建設了基本涵蓋所有崗位的配套題庫數(shù)萬道,節(jié)約培訓成本,提高效率。
5.2實現(xiàn)了培訓的智能化全過程管理 依據(jù)佛山供電局崗位應知應會標準,按崗位制訂培訓方案,自動生成員工的培訓計劃,并結合課程課件,推送到員工的學習任務中,實現(xiàn)員工學習過程的監(jiān)控,培訓積分的自動計算、學習檔案的自動歸檔,實現(xiàn)培訓項目的全過程管理,有效提高培訓宏觀管理能力,并可依據(jù)遠近期目標,選擇所需的培訓知識和技能及評估績效等;
5.3實現(xiàn)對員工崗位符合度評估 根據(jù)人員和崗位信息,計算個人積分,依據(jù)崗位應知應會標準,推算出人員崗位符合度??砂磫T工進行分類統(tǒng)計,查看詳情后,可查看具體的員工已完成的課程與實際應學習的課程之間的對照關系,為員工績效評價和人才選拔提供依據(jù)。
5.4實現(xiàn)網(wǎng)絡培訓的在線管理 實現(xiàn)從培訓項目的建立到培訓效果分析等一系列在線管理功能。可由系統(tǒng)生成學員報名、辦班管理、學員學習情況監(jiān)測與統(tǒng)計、培訓效果評估、月度、季度、年度等報表,實現(xiàn)辦班管理的網(wǎng)絡化、數(shù)字化,提高各項數(shù)據(jù)查詢的速度與準確性;
5.5實現(xiàn)培訓的監(jiān)督考核管理 可依據(jù)培訓目標制訂詳盡、周密并可操作的培訓,并可從培訓、業(yè)務主管部門、直屬上級等不同層次對培訓目標的監(jiān)督考核,保證嚴格按培訓計劃與要求將培訓落到實處。
6、小結
國外先進企業(yè)早已有通過培訓模型信息化來實現(xiàn)智能化培訓的案例,國內(nèi)一些較先進企業(yè)也已經(jīng)逐步開展崗位勝任力模型及崗位知識庫的建設工作,但大多由于電子化培訓資源不足沒有得到很好的推廣。
佛山供電局基于崗位應知應會標準的電力智能化網(wǎng)絡教育培訓系統(tǒng)的建設以“智能化、實用化、標準化、集約化”為基本原則,以“創(chuàng)先”為指導思想,運用“大規(guī)模、低成本、高效益”的遠程網(wǎng)絡教育為主的培訓方式,以崗位課程體系為指引,以課件教學為依托, 以培訓管理機制為約束,以崗位符合度考核為手段的培訓教育模式,強調(diào)以人為本、整合培訓資源、優(yōu)化培訓流程、注重培訓效果,使得員工的知識、技能、工作方法、工作態(tài)度以及工作價值觀得到改善和提高,從而發(fā)揮出最大的潛能,提高個人和企業(yè)的業(yè)績,推動企業(yè)和個人的不斷進步,實現(xiàn)企業(yè)和個人的雙重發(fā)展,使教育培訓工作在服從企業(yè)主業(yè)發(fā)展過程中逐步發(fā)揮重要作用。
參考文獻
[1]廣東電網(wǎng)公司遠程教育系統(tǒng)建設規(guī)范
[2]佛山供電局網(wǎng)絡教育培訓系統(tǒng)擴充需求說明書
[3]佛山供電局網(wǎng)絡教育培訓系統(tǒng)擴充建設實施方案
關鍵詞:GJB5000A;軟件研制能力成熟度模型;過程域;軍用軟件;配置管理;軟件工程
0 引言
隨著現(xiàn)代武器裝備中計算機技術發(fā)展的日新月異,軟件在其中的比重越來越大。各種軍用產(chǎn)品中的很多重要功能不得不依靠軟件設計來完成,但傳統(tǒng)的過程管理模式已滿足不了日益增長的軟件研制要求。
為了評價軟件研制單位是否具有相應的軟件研制能力,總裝備部制定了GJB5000A-2008《軍用軟件研制能力成熟度模型》,并交由新時代認證中心組織實施認證。通過貫徹GJB5000A的要求并不斷改進的軟件過程,各軍工企業(yè)已經(jīng)認識到過程改進后可以縮短軟件開發(fā)周期、節(jié)省成本、提高軟件可靠性等好處。
通過GJB5000A二級認證評價,是軍用軟件開發(fā)單位的基本要求和建立軟件過程控制體系的第一步,也是提高軟件工程化水平的基礎。結合GJB5000A二級實施現(xiàn)狀和評價中發(fā)現(xiàn)的各類問題,分析GJB5000A實施的關鍵點,對解開軟件改進過程中的疑點和困惑具有重要的意義。
1 GIB5000A二級過程概述
1.1 GJB5000A軟件研制能力等級
軍用軟件研制能力成熟度模型采用分級表示法,共分5個等級(見表1)。所有認證工作必須從2級(已管理級)開始,每一個成熟度等級都是下一個等級的必要基礎,所以跳躍式實施認證是達不到預期和無意義的。
1.2 GJB5000A二級過程概述
GJB5000A二級是軟件開發(fā)單位實施軟件工程化的開始。它包含了7個過程域:配置管理(CM)、測量與分析(MA)、項目監(jiān)控(PMC)、項目策劃(PP)、過程和產(chǎn)品質(zhì)量保證(PPQA)、需求管理(ReqM)和供方協(xié)議管理(SAM)。這7個方面是軟件開發(fā)過程的控制關鍵點,由于軟件研制過程參與人員多、部門多、人員技術水平參差不齊,這些特點增加了軟件過程改進實施的難度。
表1 軟件能力成熟度等級及特征
任何一個過程域?qū)嵤┎坏轿?,都會影響到項目計劃的?zhí)行和產(chǎn)品的交付。由于項目中涉及軟件外包問題較少,因此不對供方協(xié)議管理(SAM)問題進行分析。下文主要分析GJB5000A過程中相關的6個過程域的關鍵點及問題。
2 配置管理(CM)
軟件配置管理主要是控制軟件技術狀態(tài),保證工作產(chǎn)品在整個軟件生命周期中受控。軟件配置管理活動主要包含配置標識、配置控制、配置審核、配置狀態(tài)記實、軟件發(fā)行和管理。其中在實施軟件配置管理的過程中容易忽略下面幾個關鍵問題。
沒有明確配置項選擇準則。為防止重要的軟件配置項沒有得到控制,同時避免浪費過多資源管理不重要的資料,應在過程文件中列出如何選擇軟件配置項,必要時應列出應控制的軟件配置項清單。
沒有建立軟件配置管理的多級控制。對于大型軟件開發(fā)單位,往往參與人員眾多,單位結構復雜,只建立一個軟件技術狀態(tài)管理機構,是無法有效實施軟件過程管理的。因此建立二級軟件配置管理機構是可行的:項目級和組織級,這樣可以提高組織對軟件變化的反應和問題的處理能力。
沒有明確軟件配置審核的要求。軟件配置審核包含功能配置審核、物理配置審核和配置管理審核。進行軟件配置審核時,應分清這三中審核的界限和要求,才能有效地在不同時機發(fā)現(xiàn)軟件配置管理的問題。
3 測量與分析(MA)
進行軟件測量與分析主要是為改進軟件過程,便于采取糾正措施達到組織的目標。通過測量活動,組織可以找到如何提高軟件質(zhì)量、節(jié)約成本、提高用戶滿意度等方法。其中在實施軟件測量與分析的過程中容易忽略下面幾個關鍵問題。
沒有分析過程和活動的評價準則。對于選擇的測量項進行合適的分析,有助于檢查數(shù)據(jù)的必要性和可靠性。只有通過建立評價準則,才能夠從數(shù)據(jù)中找到問題的所在。
不能清晰反映測量項和測量目標的關系。如果測量項和測量目標的關系不明確,就無法正確理解測量項和進行優(yōu)先級排序,所以要細化項目中測量項和測量目標的映射關系。
4 項目監(jiān)控(PMC)
軟件項目監(jiān)控主要是在項目未按計劃執(zhí)行并發(fā)生顯著偏離時,能及時采取糾正措施。通過計劃監(jiān)督項目中的參數(shù)、承諾、項目風險、數(shù)據(jù)管理、利益相關方和評審等方面,在發(fā)生顯著偏離計劃時能及時分析和解決問題。其中在實施軟件項目監(jiān)控的過程中容易忽略下面幾個關鍵問題。
一些重要評審和會議缺少利益相關方的參與。往往在一些里程碑會議上,會議組織者未按計劃要求或由于種種原因沒有邀請有關人員參與評審。這樣不利于問題的解決和溝通,為后續(xù)工作的開展埋下了隱患。
缺少里程碑的評審準則。在評審過程中,項目應明確制定里程碑評審規(guī)程,并對參與人員、評審內(nèi)容等方面進行約束,這也是項目實現(xiàn)承諾、提高用戶滿意度的有效手段。
5 項目策劃(PP)
軟件項目策劃是進行軟件過程控制的前提,保證你能按正確的方法去開發(fā)軟件。軟件策劃活動是通過歷史數(shù)據(jù)進行估計,通過估計編制計劃,依據(jù)計劃開展各種活動。其中在實施軟件項目策劃的過程中容易忽略下面幾個關鍵問題。
沒有依據(jù)工作量導出工作進度。項目軟件負責人在安排任務進度時如何合理安排資源既是工作的重點,也是難點。利用估計工作量來劃分階段,便于區(qū)分各種活動之間的關系,也是唯一估計進度的手段。
制定項目培訓計劃時沒有考慮項目組成員的實際技能和能力。按照傳統(tǒng)管理方式,項目在開始制定管理計劃時,往往容易忽略人員的各種技能的培訓,簡單認為能開發(fā)軟件就行。事實上,進行項目管理軟件開發(fā)人員必須懂得在軟件開發(fā)過程中所涉及過程域的要求和組織制定的過程文件。
6 過程和產(chǎn)品質(zhì)量保證(PPQA)
過程和產(chǎn)品質(zhì)量保證是對項目計劃進行跟蹤與監(jiān)控,說明具體的方法,為軟件項目的實際進展提供足夠的可見度。軟件質(zhì)量保證活動往往已得到組織的重視和認可,但在開展評價活動時必須保持客觀性和有效性。其中在實施軟件過程和產(chǎn)品質(zhì)量保證的過程中容易忽略下面幾個關鍵問題。
沒有明確如何處理不符合項的準則或規(guī)程。對于不修改不符合項的關閉問題,不是交由當事人,也不是交由QA人員,而是由高層經(jīng)理決定的。在實際進行項目管理過程中,如果不明確關閉的準則并考慮到特殊問題的處理,容易造成問題記錄不正確或出現(xiàn)遺留問題。
在項目早期工作中沒有及時進行審核。如果軟件質(zhì)量保證人員等到項目計劃評審后,才開始審核,就會出現(xiàn)審核不及時、工作不到位的情況。所以在制定過程文件時應增加早期策劃質(zhì)量審核的要求,將工作做細避免遺漏。
7 需求管理(ReqM)
需求管理主要是管理項目的產(chǎn)品和產(chǎn)品部件的需求,并標識這些需求與項目的計劃和工作產(chǎn)品之間的不一致性。需求管理對軟件過程及工作產(chǎn)品影響很大,因為需求總是在變化而且如何獲得需求的承諾是放在軟件開發(fā)面前的難題。其中在實施軟件需求管理的過程中容易忽略下面幾個關鍵問題。
需求跟蹤矩陣不完整,特別是非功能性需求的跟蹤不到位。對需求進行逆向跟蹤是很有必要的,對于需求的雙向跟蹤,即要有水平和垂直的跟蹤,才能夠?qū)崿F(xiàn)承諾,并有效地保障了軟件開發(fā)的過程不偏離。
沒有評估需求變更對原承諾的影響。任何需求變更不止是對開發(fā)進度、進度、人員有影響,對現(xiàn)有約定的影響也需要進行分析,有助于管理好需求,更好地做出判斷是否需要采用更好的控制方法。
8 結論
實現(xiàn)GJB5000A二級軟件過程目標和要求是一項系統(tǒng)工作。它需要發(fā)動組織各個層面上員工的主動性和創(chuàng)造性,才能夠克服各種管理上和技術上的難點和關鍵問題。任何組織進行過程改進不考慮自身的現(xiàn)狀,去照搬某個單位的解決辦法是不切實際的,因此需要結合軟件工程實踐的最佳經(jīng)驗,才能選擇實際的改進方法和措施。
在推進軟件工程化工作中,選擇軟件研制能力成熟度模型已成為眾多航空企業(yè)提升軟件管理和研制能力的新要求。越來越多的軟件專業(yè)人才將會致力于軟件過程的轉(zhuǎn)變,通過及時總結技術經(jīng)驗避免走不必要的彎路,促進航空軟件技術水平的提高。
參考文獻:
[1] GJB5000A-2008軍用軟件研制能力成熟度模型.
關鍵詞:技能型軟件人才;教學理念;職業(yè)技能;教學方法
軟件藍領一詞來源于印度,泛指技能型軟件專門人才。目前全球軟件與服務外包市場規(guī)模依然巨大,并以膨脹方式持續(xù)增長,外包市場需要大量技能型軟件專門人才。上世紀末,“千年蟲”解決方案成就了印度,使之成為軟件與服務外包產(chǎn)業(yè)強國,令世人矚目。在印度的軟件企業(yè)中,軟件開發(fā)如同傳統(tǒng)產(chǎn)業(yè)的流水線作業(yè),每個基礎編程人員按照規(guī)定的工序加工某個標準件,從而實現(xiàn)工業(yè)化生產(chǎn),正如印度卡納塔卡邦首席行政長官Krishna在解讀為什么班加羅爾會成為印度乃至亞洲的硅谷時回答,除了教育,還是教育。
目前,在我國軟件企業(yè)中,人才缺乏是制約軟件企業(yè)發(fā)展的主要瓶頸之一。我國各級各類教育機構依然存在著教學內(nèi)容與市場實際需求脫節(jié),面臨最大的教學問題是企業(yè)求賢若渴、卻英才難覓,其根源在于傳統(tǒng)的“本科壓縮型”人才培養(yǎng)模式問題。筆者針對技能型軟件人才培養(yǎng)過程中實踐教學環(huán)節(jié)的教學問題,從教學理念、教學內(nèi)容和教學方法3個方面進行實踐和總結,其目的是為了探索軟件工程專業(yè)本科生教育的人才培養(yǎng)模式。
1 若干教學問題
2001年12月教育部和國家計委聯(lián)合發(fā)出通知,批準清華大學等35所高校試辦示范性軟件學院,旨在通過軟件學院的建立,實現(xiàn)軟件人才的跨越式發(fā)展。在示范性軟件學院計劃中,明確提出面向軟件產(chǎn)業(yè)培養(yǎng)高素質(zhì)的工程型軟件實用人才的專業(yè)定位。2003年教育部批準建立了36個示范性軟件職業(yè)技術學院。2004年IEEE-CS組織了軟件工程知識體系指南SWEBOK2004,在指南中劃分了軟件需求、軟件設計、軟件構造、軟件測試、軟件維護、軟件配置管理、軟件工程管理、軟件工程過程、軟件工程工具和方法、軟件質(zhì)量等lO個關鍵知識域,規(guī)定了每個知識域中的具體教學內(nèi)容,如“軟件需求”知識域有需求基礎、需求過程、需求獲取、需求分析、需求規(guī)格說明、需求確認、需求實踐等教學主題。
回顧多年的軟件工程專業(yè)發(fā)展,我國各高校中已有近200多所院校開設了軟件工程專業(yè),各級各類培訓機構相繼出現(xiàn)。為了支持軟件與服務外包人才的培養(yǎng),自2006年起,商務部開始實施服務外包“千百十工程”人才培訓計劃,2007年教育部在“質(zhì)量工程”中加大了對信息類專業(yè)的支持力度,軟件工程專業(yè)列入第2類特色專業(yè)建設項目,2011年國務院學位委員會正式公布了修訂的學科目錄,把軟件工程新增為一級學科。這充分說明軟件工程專業(yè)和學科在國家戰(zhàn)略層面上已經(jīng)提升到一個新的高度。
政府層面安排的各級各類專項培訓資金,主要用于支持大學生增加軟件與服務外包專業(yè)知識和技能,鼓勵外包企業(yè)新增大學生就業(yè)崗位的各類人才培訓項目,重點培訓大學應屆畢業(yè)生和尚未就業(yè)的大學畢業(yè)生,以及服務外包企業(yè)新入職員工。培訓內(nèi)容包括軟件與服務外包企業(yè)人才定制培訓、從業(yè)人員資質(zhì)培訓、國際認證培訓、行業(yè)標準及相關知識產(chǎn)權培訓、大學生實習項目及勤工儉學培訓、企業(yè)新人職人員崗前業(yè)務技能培訓等。政府層面出臺的政策目標,主要是為了建立軟件與服務外包人才的培養(yǎng)培訓體系,調(diào)整專業(yè)結構以適應軟件產(chǎn)業(yè)需要,加強高校學生實習實訓工作,深化高校與軟件與服務外包企業(yè)的合作等。
綜上所述,市場對人才需求仍有較大缺口,適應產(chǎn)業(yè)市場不斷發(fā)展的軟件工程專業(yè)教育任重道遠。培養(yǎng)技能型軟件人才已經(jīng)到了應該采用全方位、多渠道、企業(yè)廣泛參與的多種培養(yǎng)模式,才能從根本上解決目前企業(yè)人才短缺、現(xiàn)有人才結構不合理等問題。高校的根本任務是人才培養(yǎng),要實現(xiàn)人才培養(yǎng)與企業(yè)需求之間的無縫銜接,本文主要討論3方面教學問題:
(1)實踐教學理念。在教師組織教學過程中,其教學理念必須符合產(chǎn)業(yè)標準和項目規(guī)范,軟件項目的成功取決于項目團隊,項目團隊必須遵循軟件工程規(guī)范,規(guī)范是指項目規(guī)程和實施項目的相關技術標準,與之相關的專業(yè)知識只求其核心的基礎知識,不求知識全面。
(2)職業(yè)技能結構。通常職業(yè)能力貫穿整個職業(yè)生涯,其職業(yè)技能可以劃分為,特定技能、通用技能、核心技能3個層次,其中的核心技能具有普遍適用性,在職業(yè)生涯中受益終生,此外個人的職業(yè)素養(yǎng)也是一種職業(yè)能力,主要有交流能力、溝通和表達能力、文檔的規(guī)范寫作、分工合作、團隊協(xié)作、敬業(yè)奉獻等。
(3)實踐教學方法。在項目實施過程中,必須遵循軟件工程原則,根據(jù)“項目經(jīng)理系統(tǒng)分析員軟件工程師具體程序員”的人才結構組建項目團隊,按照項目管理流程和技術規(guī)范實施項目,其教學內(nèi)容必須緊跟產(chǎn)業(yè)技術、及時更新教材內(nèi)容,注重實用性和針對性,項目實訓從最簡單的項目做起,在強調(diào)掌握具體專業(yè)技能的同時,要求學生善于交流、勤于溝通,逐步提高職業(yè)能力。
2 實踐教學理念
印度軟件企業(yè)快速進步的重要原因之一就是能夠按照軟件產(chǎn)業(yè)發(fā)展的需要,通過多層次、多渠道方式培養(yǎng)人才,形成多層次的人才結構。分析軟件產(chǎn)業(yè)特點,任何大型軟件項目的實施,團隊是項目成功實施的重要基礎,如圖1所示;把大項目分解成無數(shù)小模塊任務,要求按照具體的技術規(guī)范和標準施工,遵守項目流程,如圖2所示;不同層次上的人員有著具體而明確的分工,在合作或協(xié)同的過程中,需要具備相應的溝通技巧和職業(yè)素養(yǎng),團隊角色職責如表1所示。
在項目實施的過程框架中,工作指南規(guī)定了要完成的任務步驟、方法、進度等,各“角色”執(zhí)行任務時必須參照工作指南,工作模板是指“角色”按照計劃進度完成具體任務以及必須完成的各種文檔結構,QC根據(jù)指南,逐一核對任務列表,通過檢查表監(jiān)督各角色是否按進度執(zhí)行。在項目實施過程中,項目團隊為了一個共同的目標(某個項目)一起學習和工作,團隊必須具有良好的溝通機制。例如項目專用的公告牌(公告、通知、狀態(tài)報告),項目郵件列表;項目網(wǎng)站(文檔、團隊成員主頁、相關的技術論文和筆記以及自學培訓材料),項目會議(關于簡報和問題解決方案),關于團隊成員工作的最佳實踐會議和討論,面對面交談等。
在教與學的過程中,教師必須思考如何讓學生盡可能塊地掌握實際動手開發(fā)能力,盡快與產(chǎn)業(yè)技能接軌,要求學生給自己制造一個理由來組織學習型工作團隊,通過發(fā)放團隊工作規(guī)范和模板,簽訂團隊工作責任書、內(nèi)部承諾等方式來提高團隊學習效率。通過教學實踐,明確人才培養(yǎng)目標,總結并提出團隊、規(guī)范、交流的教學理念,團隊是項目基礎,規(guī)范是項目規(guī)程和技術標準,交流是團隊成員的基本素養(yǎng),其教學理念符合產(chǎn)業(yè)需求和企業(yè)實際。
3 職業(yè)技能結構
全球軟件產(chǎn)業(yè)市場呈現(xiàn)兩大特點,國際化分工合作步伐加快、產(chǎn)業(yè)化技術更新加速。前者使得軟件服務外包成為全球性軟件市場中的追逐熱點,涌現(xiàn)了象印度、愛爾蘭、以色列等一些軟件外包強國,后者說明軟件產(chǎn)業(yè)中的技術從業(yè)人員必須時刻保持適應產(chǎn)業(yè)發(fā)展的技術能力和技能,尤其是直接面對軟件開發(fā)環(huán)節(jié)中的技能型軟件人才。
印度軟件人才培養(yǎng)模式的獨到之處就在于軟件企業(yè)的人才結構合理,其軟件教育的核心理念是緊跟國際軟件領銜企業(yè)的技術發(fā)展,快速更新教材,注重實用性和針對性,使畢業(yè)生能迅速適應企業(yè)的需要,可承擔任何大型軟件項目中具體某個環(huán)節(jié)的規(guī)范且熟練工作。對于軟件產(chǎn)業(yè)來說,教育部門提供大量技能型軟件人才是軟件工業(yè)化生產(chǎn)的基礎,同時這種專門化知識結構的人才模式也將推進軟件流水線生產(chǎn)的標準化。因此,必須分析研究技能型軟件人才需要什么樣的知識、能力和素質(zhì)結構,應該尋找培養(yǎng)這種能力結構的方式方法。
職業(yè)能力包括貫穿技術人員整個職業(yè)生涯的就業(yè)和創(chuàng)業(yè)能力、工作能力、職業(yè)轉(zhuǎn)換能力?,F(xiàn)行教育部門或軟件企業(yè)中的技能型軟件人才的職業(yè)能力之內(nèi)涵必須得以重新構造;已經(jīng)不僅僅是動手能力、操作能力和理論知識的代名詞,職業(yè)態(tài)度、敬業(yè)精神、團隊合作交流和職業(yè)行為評價等因素都應納入到職業(yè)能力的培養(yǎng)中去。以職業(yè)活動為導向,以職業(yè)能力為核心的原則正在改變學科導向的職業(yè)教育培養(yǎng)體系,產(chǎn)業(yè)現(xiàn)場的實際需要和認同正在主導專業(yè)教育的內(nèi)容和形式。接受任務、解決問題、執(zhí)行規(guī)范、完成任務,這是最基本的標準。例如對于低檔軟件人員不懂操作系統(tǒng)、計算機原理、關系數(shù)據(jù)庫原理等常識,并不妨礙他編寫代碼、使用工具開發(fā)用戶層界面等專門工作。所謂技能訓練,就是掌握最基本、最必要的專業(yè)基礎知識的前提下,在較淺的程度內(nèi)掌握幾種計算機程序設計語言,然后學習目前流行且高效率的軟件開發(fā)工具(如果企業(yè)需要,還可以學習一些更加專用的軟件開發(fā)工具),學習實用的軟件編程、數(shù)據(jù)管理、硬件維護等技術。
在教學實踐中,我們提出“圍繞編程規(guī)范,研究技能知識結構”的課程建設思想,把技能型軟件人才的職業(yè)能力分為特定技能、通用技能、核心技能3個層次,其中核心技能是范圍最窄、通用性最強的技能,體現(xiàn)了職業(yè)活動中的最基本技能,具有普遍適用性,在職業(yè)生涯中受益終生。特定技能可以理解為按照國家職業(yè)分類來劃分范圍,例如各種職業(yè)資格證書的認證考核。通用技能通常比特定技能的口徑要寬,可以理解為在一組特征和屬性相同或者相近的職業(yè)群中體現(xiàn)出來的共性技能和知識要求。我們提出軟件工程專業(yè)的“職業(yè)技能”邊界,按照軟件階段劃分,制定不同階段所要求的職業(yè)技能,例如編碼階段,要求有規(guī)范代碼書寫、單元測試能力,專業(yè)教師(或項目經(jīng)理)要善于觀察、發(fā)掘、培養(yǎng)新人,根據(jù)學生的各自特點,固化訓練或交叉培養(yǎng)設計、編碼、測試、文檔書寫或管理能力。按照職業(yè)成長過程區(qū)分,哪些人是技術型,哪些是項目管理型。哪些技能操作型人才。高校不是企業(yè),企業(yè)也不該承擔高校職能;在校企合作過程中,圍繞職能能力訓練,企業(yè)和高校之間有職責分工的邊界,例如外包委托、實習見習活動等等。在職業(yè)素養(yǎng)和能力方面,著重在交流表達、規(guī)范寫作、分工合作、團隊協(xié)作、敬業(yè)奉獻等方面對學生加以訓練。我們提出的軟件工程專業(yè)的“職業(yè)素養(yǎng)”邊界,堅持任何人都有“用”的原則,關鍵“用”到實處。刁鉆苛刻的人“用”到測試上去,勤奮好勝的人“用”到技術攻關上,豁達人緣好的人“用”到項目協(xié)調(diào)上去,條理規(guī)矩的人“用”到設計上去。
在軟件工程專業(yè)的人才培養(yǎng)方案中,專業(yè)知識只求核心基礎知識,不求全面知識,知識教學內(nèi)容必須與技術發(fā)展同步更新。軟件工程專業(yè)“職業(yè)技能”方面的教材較少,這類課程建設有一定難度,需要大量的人力、物力投入。一方面,通過校企合作、校際協(xié)作來組織開發(fā)此類課程,另一方面,借鑒真實項目的仿真實訓來開發(fā)此類課程,此類項目的文檔比較規(guī)范齊全,可實施規(guī)范訓練。在校企合作的真實項目軟件開發(fā)過程中,應該根據(jù)學生年級高低,使課程教學和訓練僅局限于某個開發(fā)階段,例如編碼階段,著重讓學生看懂詳細設計文檔、規(guī)范編碼書寫、模塊單元測試。另外,在課程教學和項目訓練過程中,必須強調(diào)學生的說(交流)、寫、做,特別是說和寫?!罢f”可以通過組織定期或不定期、正式或非正式的會議討論,“寫”可以寫個人小結或技術分析等。這些內(nèi)容和要求都應該作為課程建設的必須內(nèi)容,并用恰當規(guī)范的格式或流程編寫起來。
4 實訓教學方法
根據(jù)培養(yǎng)目標和技能要求,通過校企合作形式,開發(fā)出一系列實訓項目,構建了以實訓項目為主題的實訓環(huán)境,明確提出以項目實訓為主的教學方式。通過教學實踐,提出以“職業(yè)技能為根本、工作體驗為主題、知識點恰到好處”的教學方法,如圖3所示。
以實訓項目為主題的工作模式,是仿照軟件企業(yè)規(guī)范的運作模式,由教師(或項目經(jīng)理)演示需求分析、總體設計文檔,安排學生編寫詳細需求、詳細設計文檔,將學生分成項目小組,分片包干,個人承包,每人都有機會承擔項目的某個具體內(nèi)容(如編制模塊,編寫測試計劃和測試報告等)。旨在提高學生的規(guī)范化開發(fā)能力和團隊分工協(xié)作,強化程序設計基礎,使學生掌握軟件開發(fā)所必需的知識與技能,熟練運用開發(fā)環(huán)境和工具。
以項目實訓為主題的實訓模式,通過實訓平臺讓學生依照軟件開發(fā)的規(guī)范流程進行訓練,做到、學到、用到,加深理論、技術和實踐的結合,通過平臺讓學生對自己的工作做出總結,闡明個人成果的理論依據(jù)、技術規(guī)范及采用的技術手段等。在項目實施過程中,必須遵循軟件工程原則,必須按照項目管理流程和技術規(guī)范實施項目,注重實用性和針對性,項目實訓從最簡單的項目做起,在掌握專業(yè)技能的同時,注重學生實踐操作能力和分工協(xié)作能力的培養(yǎng),鍛煉交接工作能力,培養(yǎng)責任心與完成任務的決心。
關鍵詞 軟件工程教育 角色體驗 軟件工程知識體系 工程文檔
1 引言
軟件產(chǎn)業(yè)是互聯(lián)網(wǎng)和新一代信息技術發(fā)展的重要基礎,軟件工程作為一門研究用工程化方法構建和維護有效的、實用的和高質(zhì)量的軟件的學科,始終是軟件產(chǎn)業(yè)發(fā)展的根基。對于計算機專業(yè)人才的培養(yǎng),軟件工程在計算機高等教學中占有重要地位。但是無論從學生、教師還是業(yè)界的反饋都可以看出,軟件工程教學的實際效果遠未達到我們的期望。系統(tǒng)完整的軟件工程知識體系建立仍然面臨眾多挑戰(zhàn),理論與實踐結合的創(chuàng)新人才依然難尋,完整嚴謹和有效的軟件工程架構風格依然遙遠。作為高校教師,我們必須從軟件工程的教、學、研進行深入的研究,探索一條行之有效的教學培養(yǎng)方法。
軟件工程是“將系統(tǒng)性的、規(guī)范化的、可定量的方法應用于軟件的開發(fā)、運行和維護,其重點在于軟件的分析與評價、規(guī)格說明、設計和演化,同時還涉及管理、質(zhì)量、創(chuàng)新、標準、個人技能、團隊協(xié)作和專業(yè)實踐等”。①相比于其他的計算機專業(yè)課程,軟件工程的教學有很大的不同。軟件工程中重要的技術和開發(fā)原理來源于應用和實際商業(yè)軟件開發(fā),之后這些核心技術被提煉和整合形成原則和理論基礎而引入課堂,教授給學生。通過軟件工程課程的學習,學生需要了解和掌握軟件工程的理論、技術和方法,具備作為軟件工程師所需的專業(yè)能力。優(yōu)秀的軟件工程研究者David Parnas將軟件工程計劃分成三個階段執(zhí)行:(1)首先,詳細說明軟件工程師可能要執(zhí)行的一些任務;(2)定義軟件工程師需要的知識體;(3)將其實施作為一個培訓計劃。②③由此可見,軟件工程是一門綜合性和實踐性很強的學科,傳統(tǒng)的教學模式和教學方法在軟件工程教學中存在很大不足,人為地強調(diào)實踐或者理論基礎無法有效地培養(yǎng)學生的綜合技能和水平,從而直接影響了課程的教育質(zhì)量和教學效果。
軟件工程課程必須面向解決實際問題,即如何成功地開發(fā)可靠的、可用的、可維護的軟件系統(tǒng),滿足用戶的要求。這包含了需求分析、規(guī)劃說明、設計、構建、測試、操作和維護等軟件生命周期的各個階段。目前,軟件工程教學主要包含兩部分:課堂教學和實踐教學。以傳統(tǒng)的教師為導向的教學方式為主,實踐教學為輔。教師在課堂上講授軟件工程方法、原則、技術等知識;實踐教學主要是采用實驗課的方式,由學生設計完成一個項目。根據(jù)多年教學的經(jīng)驗和我們調(diào)查反饋的結果,很多學生在本課程學習時感到茫然和無所適從,理論的東西感覺抽象難以理解,缺乏學習熱情和興趣。針對軟件工程課程的特點,我們認真分析調(diào)研了課程教學存在的問題,總結分析導致課程教學效果不理想的主要原因如下:
1.1 課程設置安排不盡合理
軟件工程是一門涉及內(nèi)容較多的綜合性學科,所教授的原理、方法較為抽象。軟件工程中核心的技術和開發(fā)原理均來源于實際商業(yè)軟件開發(fā),經(jīng)提煉形成原理和方法而引人課堂。目前,大部分高校將軟件工程課程設置在大三,對于剛剛完成兩年大學公共基礎課和專業(yè)基礎課教育的學生來講,軟件開發(fā)的基礎理論和概念仍然匱乏,與軟件工程相關的前期課程前后脫節(jié)。尤其在計算機科學專業(yè)課程設置中,只有一學期的必修的軟件工程課,在這么有限的時間內(nèi)學生很難掌握軟件工程的理論與實踐的精髓,從而造成大多數(shù)學生認為是在學習枯燥無用的理論。
1.2 理論和實踐的脫節(jié)
軟件工程是一門實踐性很強的課程。相比于其他的計算機學科的課程,軟件工程課程核心和精髓不可能從教師的授課和課本的理論學習而獲得,靠“死讀書,讀死書”是無法完成本課程的學習的,實踐和理解相結合的融會貫通非常重要。在實際軟件開發(fā)中真刀真槍的實現(xiàn),在練習中理解基本原理,在真正練的過程中提升理論的水平是軟件工程課程教學和實踐的有效方法。
1.3 重代碼,輕文檔
在軟件工程課程的教學中,大部分的學生甚至部分教師都會自然地認為實現(xiàn)高效整齊的代碼是課程學習中最重要的工作,對于文檔工作未有足夠的重視。在實際軟件開發(fā)的工程實踐中,一般認為代碼的工作量只占到整個工程工作量的30%左右,完整、有效的各種文檔,包括設計文檔、算法文檔、說明文檔、維護文檔等是整個軟件工程核心。因而在軟件工程的教學中,我們必須轉(zhuǎn)變觀念,突出工程文檔的重要性,將各種統(tǒng)一、標準、高效和實用的文檔設計和撰寫方案融匯到課程的教學中,并且與軟件工程理論和代碼編寫結合,形成完整的的理論、算法、代碼和文檔并重的教學新方法。
1.4 缺乏軟件工程知識體系的系統(tǒng)概念
商用和實際應用軟件開發(fā)的工作是系統(tǒng)的團隊工作模式,單打獨斗無法完成商業(yè)和實用軟件開發(fā)。然而,現(xiàn)在軟件工程的教學中,教師和學生注重的是單個原理和系統(tǒng)的學習,從而造成了學生軟件編程風格五花八門,程序可讀性差,軟件工程的完整知識體系混亂。團隊工作的模式要求程序員在整個工程中需要承擔不同的角色,不同的角色承擔的任務不同,又同時需要與其他的角色互相配合溝通,從而完成整個工程的開發(fā)。這一點,在目前軟件工程的教學中非常缺乏,為此我們需要建立系統(tǒng)的概念,將角色體驗的模式引入軟件工程課程教學中。
在參考文獻④中,Nurkkala和Brandle對軟件工程教學進行了分析,并對現(xiàn)行軟件工程教學方法中存在的問題進行了總結:(1)沒有產(chǎn)品——學生在學習中僅僅是創(chuàng)建項目,而并非真正地開發(fā)商業(yè)級別的產(chǎn)品;(2)持續(xù)時間短——通常軟件工程課程只安排一或兩個學期,課程受限于時間過短很難真正理解軟件工程的方法、原理等在實際軟件工程項目中如何應用,并完成開發(fā)真正的產(chǎn)品;(3)高流動性——對于一個項目來講,每個學期都有新學生加入意味著人才庫始終只有很少的人,新加入的學生很難基于之前的經(jīng)驗開發(fā)其自身的技能;(4)低復雜性——由于學習必需時間以及學生本身技能的限制,只能開發(fā)簡單的應用;(5)無法維護——作為持續(xù)時間過短結果,學生沒法經(jīng)歷軟件開發(fā)非常重要的一個方面,即系統(tǒng)維護階段;(6)沒有客戶——學習過程中,大多數(shù)軟件工程項目都沒有真正的與客戶進行接觸,而實際的開發(fā)中必須要了解客戶的需求,根據(jù)客戶的需求進行軟件開發(fā)。
綜合上述分析,我們深入調(diào)研了現(xiàn)行軟件工程課程教學的困難和挑戰(zhàn),分析了國內(nèi)外報道的先進的軟件工程課程教學的新方法,結合我們幾年來課堂教學的經(jīng)驗大膽改革課程體系框架和教學內(nèi)容,積極探索案例教學和實踐教學模式,提出了角色體驗和工程文檔應用于軟件工程教學的新方法和新思路。我們強調(diào)建立理論與實踐相結合的軟件工程知識體系,采用任務驅(qū)動的角色體驗方法,加強學生協(xié)同分工和集成創(chuàng)新能力;突出強調(diào)工程文檔在軟件工程應用開發(fā)生命周期的重要作用,建立軟件工程中規(guī)范化的任務、知識體系和實施培訓的流程。
本文第二部分將介紹目前報道的國內(nèi)外軟件工程教學的有效方法,第三部分介紹我們探索的引入角色體驗和工程文檔的軟件工程教學新思路,第四部分進行總結。
2 國內(nèi)外現(xiàn)行有效軟件工程教學方法
為了解決以上提到的軟件工程教學中存在的不足,目前,國內(nèi)外已經(jīng)提出了多種教學方法來改進軟件工程課程教學。范銳⑤等人提出了基于“做中學”的教學理念的“項目驅(qū)動、案例教學”的軟件工程教學模式,其教學理念認為軟件工程教學不能單純依靠理論講解,強調(diào)實踐對于軟件工程教學的重要性,在學生的實踐過程中,采用項目團隊方式進行項目開發(fā),學生分組分工,明確每個人所承擔的職責,以此培養(yǎng)團隊意識?!绊椖框?qū)動”的教學方式,將整個軟件工程教學過程包含于一個完整的項目之中,學生通過完成項目學習和掌握軟件工程的包含的知識,實現(xiàn)對知識的掌握和應用。
陳建國⑥等人針對傳統(tǒng)以教師為主的軟件工程教學方法提出了改進,在傳統(tǒng)的軟件工程教學中引入了集體工作、實驗、案例學習、合作教育相結合的軟件工程教學方法,詳細地論述了這四部分對軟件工程教學作用以及對學生掌握軟件工程方法的幫助。采用了合作教育的方式,學校和企業(yè)合作為學生提供真正的商業(yè)軟件開發(fā)的機會,增強學生理論與實際的聯(lián)系,使得軟件工程教學中的項目管理、軟件過程、質(zhì)量保證等不再那么抽象難于理解。
近年,國外對于軟件工程教學方法中存在的不足提出了不少有效學習方法,其中相當一部分方法著重強調(diào)了協(xié)同工作⑦⑧⑨在軟件工程教學中的重要作用,在教學中分成多個小組,使學生加入其中,這些小組的組織結構與組內(nèi)分工與實際的項目開發(fā)小組完全相同,這樣學生在學習的過程中完全按照實際的工程開發(fā)的需要進行學習,使得學生學習中能充分掌握軟件工程的方法、原則等的實際應用。此外,還提出了一些其他軟件工程教學的有效教學方法,如使用Liu⑩形式化方法教學;Deveaux豘等提出專注于軟件開發(fā)過程中的文檔,Deveaux認為在教學中很難獲得實際的足夠大具有開發(fā)意義的項目,而文檔的學習卻可以使學生充分了解軟件工程項目的基本原則,方法等內(nèi)容;Li豙則成功地將統(tǒng)一過程方法應用于實際的教學當中;Pandey豛在教學中使用競爭的方法教授學生開發(fā)原則;更有一些在軟件工程的教學中采用游戲的方法,豜使學生充當游戲中項目小組的項目經(jīng)理的角色來學習軟件工程。Scott豝等人在本科生的軟件工程教育中采用了開源工具,并將之整合到軟件工程課程中,通過學生的反饋對比,表明此種方法獲得了很好的效果。
3 角色體驗與工程文檔結合的軟件工程教學方法
3.1 國內(nèi)軟件工程教學現(xiàn)狀
在實際的課程教學中,運用了案例開發(fā),與企業(yè)合作等方法,并結合國內(nèi)外其他一些有效的軟件工程教學法后,我們發(fā)現(xiàn)學生在有限的時間內(nèi)所能理解的軟件工程知識相當有限。在對計算機科學專業(yè)的學生進行調(diào)查時,我們發(fā)現(xiàn)大約80%學生對大三進行的軟件工程課程沒什么興趣。他們認為那只是枯燥的理論課學習和繁瑣的文檔編寫。在前兩年專業(yè)基礎課學習中,他們幾乎沒有接觸到文檔編寫,大部分項目的完成都是在草稿紙上設計然后直接進入程序編寫階段。他們認為這樣可以一步到位,省去很多繁瑣的細節(jié)。當然,正如我們前面提到,在本科教學中,學生在課堂上能實現(xiàn)的項目只能是中小型項目,復雜性低。學生無法感受到缺乏軟件工程流程中首要的基礎工作而可能造成的困難和嚴重的后果,所以學生們大多認為寫各種各樣的文檔是在浪費時間。而對于教師來說,到大三軟件工程課時,在沒有大型項目做支持的情況下,再教導學生編寫文檔的重要性,似乎沒有說服力,也很難扭轉(zhuǎn)學生已經(jīng)形成的直接編程的習慣。所以在計算機學科的學習中,我們大膽改革教育的方式并修訂了階段性的培養(yǎng)目標,形成一種潛移默化提升學生綜合能力和水平的模式。在本科生進入大專院校就讀后,計算機專業(yè)課程,尤其是編程課程的項目設計上需盡早地讓學生接觸到軟件工程知識的基本概念和方法。從大一專業(yè)課開始,學生們就需要開始完成簡單的項目。如果教師們可以從一開始就讓他們了解到軟件工程的生命周期,接觸到軟件工程流程中的各個步驟,從簡單到復雜地進行實踐,到大三的軟件工程課時他們就會對這些知識已經(jīng)有所了解,并不會感覺到枯燥,因為在前兩年的學習中他們一直都使用這些方法,已經(jīng)養(yǎng)成了良好的軟件工程的習慣。
3.2 基于文檔撰寫的潛移默化式教學法
我們經(jīng)常只會在軟件開發(fā)或維護過程出現(xiàn)問題時才意識到那些被忽略的文檔的重要性。在我們的調(diào)查中,軟件工程師們大約有60%以上都認為自己的文檔的編寫能力只是一般,有些甚至不會撰寫文檔(見表1)。很多工程師在學校并沒有受到專業(yè)的訓練,只有到工作中才開始慢慢學習與實踐,但是經(jīng)常由于時間有限,項目截止日期逼近而只好疏于對文檔的編寫或是只能犧牲其質(zhì)量。如果我們在本科教學中盡早地讓學生接觸到各類文檔,在撰寫項目文檔的過程中,學生不但能學習到軟件工程的流程,也能把撰寫文檔的技能鍛煉熟練,更重要的是他們會漸漸地把文檔的撰寫與管理當成一種習慣,當成一種必須。這樣,無論是大型項目還是小規(guī)模項目,他們都會用一定的軟件工程流程來完成。一開始的小項目中,也許他們并不能理解為什么要撰寫那么多文檔,但當他們到高年級創(chuàng)建相對復雜的項目時就能體會到文檔的好處。他們就能領會,計算機軟件并不只是程序,還應該有一整套文檔資料。這些資料都是在開發(fā)過程中產(chǎn)生出來的,對軟件管理人員,開發(fā)人員,維護人員,測試人員,客戶,包括程序員自己都是必不可少的。那么如何開始這種潛移默化式教學法呢?教師們要對所有四年的專業(yè)課程進行分析,總結出需要參加這個軟件工程教學計劃課程和項目。加入到這個計劃里的課程教師要設計符合這個計劃的項目,并將文檔撰寫作為對學生必須的要求。在整個計劃中,建議提供一套完整統(tǒng)一的各類文檔的模板以供學生們使用,包括軟件需求說明書,軟件設計說明書,軟件測試說明書,項目開發(fā)計劃書等。這些模板要一致,學生在所有課程中要使用一致的模板,由簡化版到完整版,低年級的學生先使用簡化版的模板,讓他們漸漸地學習撰寫文檔。比如一年級的項目可以只要求寫軟件需求說明書。在模板的設計中,最好是和企業(yè)界運用的文檔保持一致,然后進行簡化,給學生提供一種他們可以勝任的文檔模板,然后逐年增加內(nèi)容,最終可以與業(yè)界使用的文檔保持一致。這個計劃的實施需要得到計劃內(nèi)課程教師們的認同,通力合作,把學生四年的學習列入計劃,并隨時進行監(jiān)督。經(jīng)過四年的訓練,學生的寫作能力一定能得到大幅度提高,對軟件工程的認識也會非常深入,畢業(yè)后能夠勝任商業(yè)軟件和應用軟件的開發(fā)要求。
3.3 基于角色體驗的軟件工程課程教學法
上面提到的文檔式教學法是為了訓練學生創(chuàng)建各類軟件工程文檔的能力。在課堂項目中,由于時間有限,一個學生往往不可能完成整套文檔的撰寫。在低年級階段,在小型或中型項目中,學生學習了軟件需求和軟件設計文檔,學生應該可以單獨完成。但當項目變得相對復雜,大多課程項目都是以團隊合作的形式來完成。教師通常知道哪些同學組成一個團隊,但并不清楚或關心這些同學在項目組里擔任的角色。這樣,在四年的學習中,有些同學在項目組里只保持著一種角色,如只擔任了程序員或測試員,并沒有機會對各個相應的角色進行體驗,導致他們知識的不全面。與文檔教學法相結合,我們提出一種叫做角色體驗的教學法,和文檔式教學法同步進行,一同潛移默化地將軟件工程知識注入學生腦海。所有加入計劃的課程要統(tǒng)一安排項目組成員,目的是讓每個學生在這些課程項目完成的過程中能體驗所有的軟件工程角色,并完成這一角色相對應的文檔。這樣不但訓練了每個學生各種文檔的寫法,讓學生了解了軟件工程生命周期整個團隊要進行的工作,而且鍛煉了學生互相合作的團隊精神,避免學生在團隊中只依賴于幾個學習相對比較優(yōu)秀的學生來完成項目。假設我們要訓練學生四個角色:項目經(jīng)理,系統(tǒng)分析設計師,程序工程師,和測試工程師,我們需要至少四門課程加入此計劃。如圖-1所示,四個學生分為一個項目組,經(jīng)過這四門課程項目的訓練,他們可以完成這四個角色的訓練,學會四種文檔的撰寫,體驗各個角色在軟件工程流程中的職責。如果要增加角色和文檔種類的話,可以適當調(diào)整學生團隊組員數(shù)目與職責。經(jīng)過這樣的訓練,學生對團隊合作一定會有更加深入的認識,也能提高隊員的溝通能力,以改善畢業(yè)生在企業(yè)界缺乏溝通能力的現(xiàn)狀。
經(jīng)過四年的文檔與角色的潛移默化式訓練,一定能大幅提高學生的軟件工程能力。相比單純的一到兩門軟件工程課程,學生對軟件工程的理解要深入得多,實踐能力也會大幅度提高。由于計算機科學專業(yè)課程設置并不像軟件工程專業(yè)對軟件工程的教學那么有針對性而且課時較少,所以這種方法尤其適合計算機專業(yè)的教學。