前言:一篇好文章的誕生,需要你不斷地搜集資料、整理思路,本站小編為你收集了豐富的軟件工程主題范文,僅供參考,歡迎閱讀并收藏。
關鍵詞:軟件工程;課程群;課程設計
中圖分類號:G642 文獻標識碼:B
文章編號:1672-5913 (2007) 20-0005-03
軟件工程是計算機學科的重要學科分支,在本科計算機類各專業(yè)中都開設一些軟件工程的課程,在研究生教學中,無論是碩士還是博士,都設置軟件工程的研究方向,開設高一級的軟件工程課程。本文中,軟件工程課程群是指包括各層次的軟件工程類課程。另外,軟件工程又是一門發(fā)展非常迅速的學科,早年在研究生中講述的內容現在放在本科中講。因此,這些課程存在定位不明確,課程間內容交叉重復等問題。本文根據本科生和研究生兩個層次對軟件工程類課程的教學要求,闡述軟件工程課程群的定位、課程設置、主要課程的知識單元和知識點。
1定位
首先分析社會對各層次計算機專業(yè)學生在軟件工程方面的知識和能力要求。我們認為計算機類本科學生畢業(yè)后,主要從事計算機軟件的開發(fā)工作,他們應掌握軟件工程的基本概念、基本原理和基本方法,并能運用這些概念、方法、原理,參與和/或從事軟件開發(fā)的某些活動(如分析、設計、編碼、測試等)。軟件工程方向的研究生主要著重研究能力的培養(yǎng),畢業(yè)后主要承擔系統(tǒng)分析員和/或系統(tǒng)設計員角色,甚至承擔項目經理的角色,他們應掌握軟件工程的研究動態(tài),了解軟件工程最新的研究成果,具備有關軟件的系統(tǒng)分析、構架設計和軟件項目管理的知識和能力。
根據以上分析,我們認為,本科生軟件工程課程群應以軟件工程的基本概念、基本原理和基本方法為主線,使學生具備扎實的軟件工程基本理論知識、熟練的編程能力、較好的團隊合作能力和實驗能力,同時具備一定的分析與解決問題能力和創(chuàng)新能力。研究生軟件工程課程群應以研究課題為主線,使學生掌握軟件工程最新的研究動態(tài),對其中若干個研究方向有深入的了解,具備較強的分析與解決問題能力和創(chuàng)新能力,以及基本的軟件項目組
織和管理能力。
2課程設置
軟件工程課程群按學生的層次可分為本科生軟件工程課程群和研究生軟件工程課程群,按課程類別可分為必修課和選修課。
根據上述定位,本科生軟件工程課程群的必修課包括軟件工程和軟件實踐,有些學校在軟件工程課中包括足夠的實踐時間,可將它們合并成一門軟件工程課。選修課可根據各校的特點開設不同的課程,如面向對象的分析與設計、軟件體系結構、基于構件的軟件開發(fā)、軟件測試等,也可將研究生的某些課程作為本科高年級學生的選修課。
研究生軟件工程課程群的必修課可包括高級軟件工程、軟件項目管理和專題討論,其中專題討論沒有固定的教材,它以若干專題(如軟件復用技術、模型驅動體系結構、軟件產品線等)的最新論文為主,以報告和討論的形式進行。選修課可根據導師的研究方向選擇合適的課程,如需求工程、軟件過程、形式方法等。
3教學內容
本節(jié)參照國外相關的資料,結合我們多年的教學實踐,給出軟件工程課程群中各必修課的知識單元。
3.1軟件工程(本科生)
本科軟件工程課程的內容應覆蓋教育部計算機科學與技術教學指導委員會制訂的計算機科學與技術本科專業(yè)規(guī)范(計算機科學方向)中有關軟件工程的主要知識單元,該課程以軟件工程的基本概念、基本原理和基本方法為主,著重國內比較流行的結構化分析與設計方法、面向對象分析與設計方法和常規(guī)的軟件測試方法。同時對一些較新的軟件開發(fā)模型、方法和技術(如基于構件的軟件開發(fā)模型和方法、敏捷開發(fā)方法、CMM&CMMI、Web工程等)做簡單的介紹,以便學生今后自學。
3.2軟件實踐(本科生)
該課程是本科軟件工程課程的一門后繼實驗課,以某種軟件開發(fā)方法(如面向對象方法)和軟件過程(如統(tǒng)一軟件過程RUP)為基礎,引導學生完成一個完整的軟件項目開發(fā)全過程,包括需求獲取、需求分析、系統(tǒng)設計、實現以及測試等基本步驟。該課程主要培養(yǎng)學生的分析與解決問題能力、團隊合作能力、實驗能力和創(chuàng)新能力
3.3高級軟件工程(研究生)
該課程選擇當今軟件工程研究的熱點課題作為主要內容,其知識單元可包括:基于構件的軟件工程、軟件產品線、軟件體系結構、模型驅動體系結構(MDA)、面向方面程序設計(AOP)、需求工程、面向對象測試技術、逆向工程和再工程、Agent技術、形式方法、高可信軟件,開源軟件等。值得注意的是,在一門高級軟件工程課程中很難詳細介紹上述所有的內容,各校可根據自己的特點和研究方向,選擇幾個(以3~5個為宜)知識單元作重點介紹,對其他知識單元可只做簡單的介紹。
下面給出幾個知識單元所包含的知識點。
基于構件的軟件工程(CBSE)主要包括:CBSE基本概念,軟件構件規(guī)格說明,構件模型,基于構件的開發(fā)過程,基于構件開發(fā)的語義完整性,構件組裝和集成,預測系統(tǒng)的可信度,軟件產品線體系結構中的構件,商用第三方構件(COTS)及構件獲取技術,基于構件的軟件體系結構,基于構件軟件的測試與質量保證,構件的可變性機制,軟件構件庫,構件交易,構件描述與檢索等。
軟件產品線(SPL)主要包括:軟件產品線的基本概念,軟件產品線的基本活動(核心資產開發(fā),產品開發(fā),管理),領域工程與應用系統(tǒng)工程,SPL經濟學,軟件產品線實踐域,軟件產品線實踐模式,產品線組裝,基于產品線的應用系統(tǒng)開發(fā)技術等。
軟件體系結構主要包括:軟件體系結構的原則和實踐,體系結構框架/方法,體系結構模型與MDA,集成框架,軟件體系結構設計與分析,體系結構風格,軟件體系結構文檔,軟件體系結構評估與確認,面向服務體系結構(SOA),體系結構模式,企業(yè)體系結構等。
模型驅動體系結構(MDA)主要包括:MDA基本概念,MDA規(guī)格說明,MDA模型(CIM,PIM,PSM),模型轉換,模型語言(如可執(zhí)行的UML,對象約束語言OCL等),元建模,MDA過程,領域建模,系統(tǒng)模型,平臺無關建模,平臺特定的實現等。
3.4軟件項目管理(研究生)
該課程的知識單元包括:綜合管理,范圍管理,時間管理,成本管理,質量管理,人力資源管理,溝通管理,風險管理,采購管理,敏捷項目管理,外包管理,軟技能等。下面給出其中若干個知識單元所包含的知識點。
綜合管理:項目,項目范圍陳述,項目管理計劃(編制過程,內容),項目執(zhí)行的管理,項目評價,項目的監(jiān)督和控制,集成的變更控制,實施報告,配置管理,關閉項目。
范圍管理:啟動過程,項目選擇方法,項目合同,范圍管理計劃(編制過程,范圍陳述,范圍定義),創(chuàng)建WBS,范圍驗證過程,范圍蔓延,范圍變更控制過程,目標管理(MBO),影響曲線。
時間管理:活動定義過程,活動排序過程,圖示方法(優(yōu)先圖示方法(PDM),箭頭圖示方法(ADM),條件圖示方法,圖形評價和評審技術(GERT), 項目網絡圖,關鍵路徑方法(CPM),計劃評價和評審技術(PERT)等),PERT對CPM的估算,活動資源估算,活動持續(xù)時間估算,估算工具,進度表開發(fā)過程,進度控制過程,凈價值術語和公式。
成本管理:資源計劃編制過程,成本估算(術語,過程,COCOMO模型,工具),成本管理計劃,成本預算過程,成本基線,項目投資需求,成本控制過程,實施度量,預測完成,凈價值術語和公式。
質量管理:質量計劃編制過程,質量保證計劃,過程改進計劃,質量保證過程,質量控制過程,統(tǒng)計質量控制(SQC),質量改進過程。
人力資源管理:人力資源計劃編制,組織計劃編制,項目管理中人的因素,責任委派矩陣,獲取項目組,員工獲取過程,項目管理者的角色和責任,項目組(建造過程),小組動力,管理項目組,角色與責任,領導風格,能力類型,沖突管理,6動機理論,小組性能估算,管理知識員工。
溝通管理:溝通計劃編制,溝通管理計劃,信息分發(fā),溝通模型,溝通風格,溝通方法,溝通鏈接規(guī)則,溝通障礙,溝通技巧,績效報告,管理涉眾,管理收尾。
風險管理:風險管理計劃編制,實用方法,風險標識,風險分析(定性分析,可能性與風險影響,定量分析,靈敏性分析,決策樹分析,預期貨幣價值,概率方法),風險響應(計劃編制,工具與技術),可保險風險,風險監(jiān)督與控制過程,影響曲線。
采購管理:采購計劃編制,購買和獲取計劃,合同計劃,成本補償合同,固定價格合同,工作陳述,申請計劃編制過程,請求供方響應,申請過程,供方選擇,源選擇過程,談判,合同,合同管理,合同變更控制,合同收尾。
敏捷項目管理:Agile宣言和原則,迭代與演化開發(fā),產品業(yè)主,敏捷管理需求,敏捷估算與計劃編制,敏捷設計,敏捷文檔,敏捷軟件構造,敏捷編程,人員管理問題,敏捷質量保證,敏捷項目管理,項目評審,敏捷度量。
外包管理:識別全球業(yè)務機遇,組織模型與商業(yè)策略,全球項目的特征和挑戰(zhàn),全球項目經理的技能,國際及多種文化的交融,IP保護與其他法律方面,采購道德規(guī)范,道德規(guī)范法規(guī),試驗計劃,風險管理,軟件過程與實踐的改進,建立團隊,需求管理及客戶/供應商關系,開發(fā)方法學,全球軟件開發(fā)(GSD)與全球軟件工程(GSE),溝通、協(xié)調和協(xié)作,離岸項目的管理,克服距離和時間,文化交叉的處理,全球項目的安全問題,全球項目收尾,從業(yè)人員教育培訓及知識管理。
軟技能:領導能力,批判性思考,職業(yè)道德規(guī)范,自我激勵,誠實,小組工作,風險捕獲,適應性,人際關系,工作壓力承受、壓力管理,創(chuàng)造性,影響力,研究能力,問題解決能力,組織能力,多文化處理能力,學習能力,時間管理,口頭溝通,文字溝通,細心周到。
4小結
本文介紹了軟件工程課程群的設計,在具體實施時,可根據各校的特點,對上述課程設置、知識單元、知識點進行裁剪。下一步將繼續(xù)完善各課程的知識單元和知識點,為軟件工程課程群建設打好基礎。
參考文獻
[1] 教育部高等學校計算機科學與技術教學指導委員會. 計算機科學與技術本科專業(yè)規(guī)范[M]. 北京:高等教育出版社,2006 .
作者簡介
錢樂秋(1942-),男,復旦大學計算機科學與工程系教授,博士生導師,主要研究方向為軟件工程。
關鍵詞:軟件工程;綜合實踐;軟件過程;迭代開發(fā)
為了提高軟件工程人才培養(yǎng)的水平,增強學生的實踐能力,文獻[1]基于建構主義認知學說提出了一種創(chuàng)新的人才培養(yǎng)模式。該培養(yǎng)模式的特點是在第6―7學期引入長周期的綜合實訓。為便于實施,該綜合實訓可按學期分成兩段。其中第6學期的實訓為期20周,如何開展全面的軟件工程過程實踐,是本文要探討的對象。此實訓將部分原在課堂講授的理論課貫穿在實訓中講解,并要求學生以小組為單位完成軟件開發(fā)項目,從而理解和掌握軟件開發(fā)過程與技術。為有效開展此實訓,本文依據現有軟件過程理論和經驗,對實訓中的軟件過程進行探討。
1概念與研究的必要性
軟件開發(fā)過程是指在工業(yè)化環(huán)境(如軟件公司、大型軟件開發(fā)團隊)開發(fā)軟件的有先后順序的一系列活動。它是將各種軟件技術組織在一起的粘合劑,是合理高效開發(fā)軟件產品的保證[2]。對軟件過程的描述,往往包括過程模型、活動、角色、制品等方面。
軟件工程綜合實訓課程的目的是為了讓學生熟悉軟件開發(fā)過程,掌握軟件開發(fā)技術,增強實際動手能力。它與實際軟件開發(fā)有以下幾點不同:
1) 目標不同。前者以培養(yǎng)學生為目標,后者以生產軟件為目標。
2) 實踐主體不同。前者為學生,后者為工作者。
3) 環(huán)境不同。前者在學校的模擬環(huán)境進行,后者處于具體的軟件開發(fā)環(huán)境。
這意味著實訓教學中應該采用接近實際的軟件開發(fā)過程,但又不能完全照搬實際過程。這是我們必須探討綜合實訓軟件開發(fā)過程的原因。以下從軟件開發(fā)過程模型、過程角色、主要活動及對學生的考核等幾方面對軟件工程綜合實訓的軟件開發(fā)過程進行討論。
2綜合實訓的軟件過程模型
歷史上,出現過多種軟件過程模型,但大致可分為線性模型和迭代模型兩類。線性模型也稱瀑布模型,已被實踐證實不能適應需求變化的場景。迭代模型認為軟件開發(fā)是一個反復的過程,比較符合軟件復雜、易變的本質,是當今軟件開發(fā)的主流思想。
在考慮實訓教學軟件過程模型的選取時,應以簡單易行、便于軟件技術學習、便于軟件過程理解為出發(fā)點。單從簡單易行的角度,采用瀑布模型比較有吸引力。瀑布模型的步驟和章法清晰,教學組織方便。但是,如果使用瀑布模型,對迭代過程的介紹只能停留在口頭上,學生無法從實踐中領會這一重要的過程思想。瀑布模型是一次性完成需求描述,然后做全面
設計。這不利于由淺入深、循序漸進地掌握軟件架構、設計和編碼方面的技術。如果采用迭代式模型,雖會令實訓的組織和管理變得復雜,但既可以領會瀑布模型的章法,也可以克服瀑布模型的弊端。對于本文所針對的長達一個學期的綜合實訓,其教學目標是多維和綜合的,既要在過程中傳授顯性知識,也要通過過程組織和實踐指導傳遞隱性知識。如采用瀑布模型,會將開發(fā)過程理想化,而使很多隱性知識和實踐經驗難以傳播。因此長周期的綜合實訓采用迭代式過程模型更合理。
按照有關迭代開發(fā)經驗[3],對于小型項目,以3周為一次迭代較合適。我們決定將20周的實訓分為開始1周、結束1周、中間6次迭代18周。各次迭代的目標如表1所示。
表中,迭代1的任務是發(fā)掘和初步表述系統(tǒng)的主要需求,并設計系統(tǒng)原型;迭代2要完成系統(tǒng)的主要功能,約占全部功能的30%~40%;迭代3完成系統(tǒng)的全部功能;迭代4對系統(tǒng)架構進行優(yōu)化,增加業(yè)務邏輯層;迭代5進一步優(yōu)化系統(tǒng)架構,增加數據讀寫層;跌代6使用現有框架對系統(tǒng)進行重構。
在實際的軟件開發(fā)過程中,早期迭代要著重于影響架構的功能和性能需求的實現,從而一開始就為系統(tǒng)選擇合理的架構。但在實訓教學中,按由淺入深的教學規(guī)律,在學生具備一定的開發(fā)經驗后引入架構設計知識。因此,前幾次迭代較少涉及架構設計的細節(jié),所完成的軟件在架構方面是不成熟的。在后幾次迭代中,通過對代碼的重構逐漸完成軟件架構的優(yōu)化,從而讓學生牢牢樹立架構設計的理念。這是實訓軟件過程與實際軟件過程的區(qū)別。
上述各次迭代的目標,也是系統(tǒng)開發(fā)的里程碑。教師檢查各次迭代提交制品的同時,也考核了學生團隊的成績。
3綜合實訓過程中的角色
基于文獻[4]及文獻[5]的思想,軟件工程綜合實訓學生團隊應設置對等角色。即每個小組成員擔任一種角色,負責一個方面的工作,同時又是其他成員所負責工作的參與者。這既是實際開發(fā)團隊的做法,也最適合學生的學習。
考慮到項目規(guī)模較小,實訓時間較長,一個小組人數不宜過多。以5人一組,分別扮演組長、開發(fā)經理、計劃經理、測試經理、技術支持經理等角色,各角色職責主要為[4]:
1) 組長:負責小組建設,讓小組成員有共同的目標和項目愿景,激勵士氣,維持紀律,安排任務,主持每周小組例會、成員互評等。
2) 開發(fā)經理:主持小組開發(fā)工作,包括需求、分析與設計、實現等過程。
3) 計劃經理:負責帶領小組制訂項目計劃和迭代計劃,督促各成員按要求完成工作日志,制訂項目周計劃,整理項目周報,對計劃進行跟蹤,在例會或計劃會議上通報項目進度。
4) 測試經理:負責測試計劃的制訂,編寫測試用例,組織測試實施及管理,組織每日集成測試。
5) 技術支持經理:組織執(zhí)行配置管理、變更控制、數據庫管理及風險管理,培訓本組成員正確使用工具軟件,督促每日代碼簽入、簽出。
上述角色職責涉及的各種活動,詳見第4節(jié)說明。指導教師在實訓中的角色是代表客戶方提出對系統(tǒng)的要求,同時也是學生開發(fā)活動的指導者和監(jiān)督者。
在實際的軟件開發(fā)過程中,團隊成員的角色在一個項目中是固定的。但在實訓過程中,為了讓學生得到更全面的訓練,可規(guī)定每兩次迭代交換角色一次。這樣在整個實訓中,每人都可以擔任三種不同的角色。這是實訓過程不同于實際過程的地方。
4綜合實訓過程的主要活動及制品
依據文獻[4]和文獻[6],將學生在綜合實訓中的活動領域分為兩大類,一類是核心開發(fā)域,包括業(yè)務分析、需求、分析與設計、實現、測試、部署等;一類是核心支持域,包括團隊管理、計劃管理、配置管理、環(huán)境支撐等。各活動域的活動種類、制品及負責角色如表2所示,共有約30種活動。
上述活動涉及很多學生尚不了解的知識。對于其中適合講授的顯性知識,由專題主講老師在過程中集中講授;對于可以通過實踐過程習得的隱性知識,通過實訓指導書對有關活動的規(guī)范和引導,讓學生在活動中領悟。需要集中講授的知識可以分成以下幾個模塊:
1) 項目輔導。介紹有關小組建設、小組溝通、工作理念、計劃管理等方面的知識,對開發(fā)過程的紀
律、工作程序、會議等作具體的指導。
2) 軟件開發(fā)過程。主要介紹軟件開發(fā)統(tǒng)一過程(RUP),包括迭代開發(fā)方法,各種開發(fā)活動、角色及制品的含義,配置管理及風險管理等。
3) 數據庫管理。結合項目和實訓環(huán)境指導學生設計和管理大型關系型數據庫。
4) 軟件測試。結合項目介紹各種測試活動的要求、內容和組織實施辦法。
5) 系統(tǒng)分析與設計。介紹面向對象的可視化建模方法、軟件架構設計、模式應用等方面的知識。
6) 程序設計技術。介紹完成項目所需要的程序設計技術。包括Web應用開發(fā)、多層體系架構的實現、測試驅動的開發(fā)、應用程序框架設計與應用等內容。
在開展項目過程中,講授也是重要的環(huán)節(jié),這也是本實訓過程與實際過程的不同之處。
5考核方式
作為一項教學活動,必須對學生學習情況進行考核并給出成績。由于該實訓長達一學期,理論課學時較多,所對應的學分也較多。如果采用一次性考核,顯然操作難度很大,也不利于在過程中發(fā)現問題,激勵學生。因此,本實訓最適合分階段考核,即對每次迭代進行考核,成績由三部分組成:一是本次迭代過程有關理論知識掌握,占40%,采用筆試方式考核;二是工作成果,占30%,以測試迭代產生的結果為依據;三是工作表現,占30%,通過統(tǒng)計考勤、學生互評及老師評價得到。每兩次迭代完成,學生交換角色前,要求每位學生提交所擔任角色工作的總結報告,作為單獨的角色考核。由于角色是任選的,此考核學分可作為選修學分記入成績表。
6結語
由于實訓與實際軟件開發(fā)不同,實訓軟件過程不能照搬實際開發(fā)過程。為了與當代流行的軟件開發(fā)過程一致,也為了能循序漸進地教學,在實訓中選擇迭代式開發(fā)模型。項目小組的成員依次承擔多種角色,并產生相應的制品。實訓的考核以迭代為單位進行。按照這樣的過程開展本文所述約30項實訓活動,必將提高學生對軟件工程知識的認識和實際的動手能力。
參考文獻:
[1] 鄭大鵬,林國璋,張克軍. 一種創(chuàng)新的獨立學院軟件專業(yè)人才培養(yǎng)模式[J]. 計算機教育,2010(8):1-3.
[2] Roger S. Pressman. 軟件工程―實踐者的研究方法[M]. 4版. 北京:機械工業(yè)出版社,1999:22-49.
[3] Craig Larman. UML和模式應用[M]. 3版. 北京:機械工業(yè)出版社,2008:13-20.
[4] Watts S. Humphrey. 小組軟件開發(fā)過程[M]. 北京:人民郵電出版社,2000:163-225.
[5] 微軟公司. MSF Team Model v.3.1[EB/OL]. [2010-11-06]. /msf:17-19.
[6] Ivar Jacobson,Grady Booch,James Rumbaugh. 統(tǒng)一軟件開發(fā)過程[M]. 北京:機械工業(yè)出版社,2002:3-11.
On Software Process of Software Engineering Comprehensive Training
ZHENG Dapeng, XIAO Youqing, ZHANG Xiaoyan, ZHANG Shenyong
(Zhuhai Campus, Beijing Institute of Technology, Zhuhai 519085, China)
軟件開發(fā)項目的順利實施需要規(guī)范的管理體系進行必要的指導與約束,而就目前的軟件質量管理管理與規(guī)范情況來看,缺乏經驗豐富的管理人員,缺乏合理到位的監(jiān)督與規(guī)范體系,對于軟件質量上的審查不到位,此外管理模式上的漏洞也成為質量監(jiān)管的限制因素。整個軟件質量監(jiān)管不到位,軟件質量得不到保證,直接影響到軟件工程的標準化。
2軟件工程標準化的可行性措施分析
2.1吸取國外先進經驗,實現與國家研發(fā)接軌針對我國軟件工程研制起步晚的現狀,我們有必要引進先進的國家設計標準。目前國際上關于軟件工程的標準性研究不斷深入,許多西方國家制定出比較成熟的軟件工程標準,我國可以在借鑒國際先進標準成果的基礎上,獲取突破口,加快標準的制定,實現與國家軟件工程設計有效接軌。
2.2加大宣傳,增強對軟件工程標準化的關注與理解我國軟件工程之所以很難形成有效的模式標準,其中最關鍵的原因是先入為主的用戶使用習慣。在使用軟件的過程中,用戶更多地受先入為主思想的影響,根據自身對軟件的使用情況來選取對應的使用標準,從而忽視了各個標準軟件工程內在的聯系性與互補性。針對該現狀首先應該加大宣傳,幫助用戶充分理解軟件工程標準化的概念,深刻把握軟件工程之間的聯系與互補性,制定比較理想化的軟件工程標準。
2.3培養(yǎng)技術性人才,有效引薦國外先進標準化技術我國軟件工程標準化研究人員與管理人員相對不足,在借鑒國外設計成果的同時更應該注重國內該方面研究人才的培育與發(fā)展,定期組織技術研討與交流會,開展專題性的研究與探討,充分聽取眾家意見,注重本國特色與實際,開發(fā)出適合國內軟件工程特色的具體軟件標準,更好地促進我國軟件工程的自主性創(chuàng)新發(fā)展。
2.4及時發(fā)現問題,及時修改,完善軟件工程標準化軟件工程的標準化并不是一成不變的,在時展背景下,在用戶多樣的使用需求下,軟件工程標準也是不斷更新與改進的過程。我們對于軟件工程標準的實施效果進行定期檢測,當發(fā)現其中的問題時第一時間分析與修改,對于其中存在的缺陷性問題進行整合,針對存在的問題改進標準化,以此類推,完善軟件工程的標準化。
3結束語
【關鍵詞】軟件工程;特點需求;開發(fā)維護
文章編號:ISSN1006―656X(2015)01-0079-02
一、軟件工程概述
軟件軟件工程是應用計算機科學、數學、邏輯學及管理科學等原理,開發(fā)軟件的工程,研究和應用如何以系統(tǒng)性的、規(guī)范化的、可定量的過程化方法去開發(fā)和維護軟件,以及如何把經過時間考驗而證明正確的,管理技術和當前能夠得到的最好的技術方法結合起來。軟件工程之所以被如此重視,主要是因為它借鑒可以傳統(tǒng)工程的方法,在此基礎上實現提高質量、降低成本和改進算法。計算機科學、數學用于構建模型與算法;工程科學用于制定規(guī)范、設計范型、評估成本及確定權衡:管理科學用于計劃、資源、質量、成本等管理。
計算機軟件工程是一門研究用工程化方法構建和維護有效的,實用的和高質量的軟件的學科。與軟件工程緊密相關的就是程序設計語言、數據庫、軟件開發(fā)工具、系統(tǒng)平臺、標準、設計模式等。軟件的應用涉及到我們工作學習和生活的方方面面,比如我們日常生活中經常使用的電子郵件、嵌入式系統(tǒng)、辦公軟件、各類操作系統(tǒng)、網絡游戲等,還有各個行業(yè)部門(工業(yè)、農業(yè)、銀行、航空、政府部門等)都少不了計算機軟件的使用。帶有各種不同功能的軟件被大面積使用,改變了生活和辦公的方式和效率,并有效促進了經濟和社會的發(fā)展。
二、軟件工程的特性
目前,許多產品在設計之初把控制設計軟件和計算機及相關設備以某種方式結合起來,在設計過程中,軟件在整個系統(tǒng)成本中所占的比例越來越高,軟件的特性也影響著產品最終的特性。通常情況下,軟件待處理的問題都是極具復雜性的,如果沒有考慮到這一點而是把它當作是單個的整體來分析的話就會加大處理的難度。人們比較習慣將問題分為不同的區(qū)塊,各區(qū)塊之間有著某種通信關系。這種模式顯然不能很好解決問題的復雜性,但可以將問題的復雜程度得到合理的控制。軟件的設計要以現實條件作為基礎和參考。
現實生活工作的環(huán)境和對象是發(fā)展變化的,因此軟件也要適應現實世界的變化并做出相應調整,這樣才能滿足日常需要。此外,軟件在開發(fā)時應該對未來可能出現的變化做出預測,同時在使用過程中還要對其進行不斷更新和完善,這就是為什么幾乎所有的知名軟件都會定期或不定期的進行版本升級的原因。
三、計算機軟件工程的需求分析需求,是一個常見的計算機相關學科和領域的專業(yè)訶匯,對于它的理解有不盡相同
在不同的領域或者不同的部門,需求可以被理解為對系統(tǒng)提供的服務,或者對系統(tǒng)進行約束的抽象描述;有時,它也被認為是對系統(tǒng)功能進行較為詳盡的形式化的描述。總之,不管怎么說,有一點是最為重要的,就是需求應該能夠明顯地反映出客戶,對軟件系統(tǒng)幫助他們解決問題的需要。計算軟件需求分析是軟件生存周期中,重要的一步也是最關鍵的一步,只有通過軟件需求分析才能,把軟件性能和功能的總體概念描述為,具體的軟件需求規(guī)格說明進而建立軟件開發(fā)的基礎。軟件需求分析也是一個不斷認識和逐步的過程,在該過程中能將軟件計劃階段所確定的,軟件范圍逐步細化到可詳細定義的程度,并分析和提出各種不同的軟件元素然后,為這些元素找到可行的解決方法制定軟件的,需求規(guī)格說明不僅是軟件開發(fā)者的任務,而且用戶也起著極其重要的作用。
以軟件工程需求分析管理方法為指導,促進教育軟件開發(fā)的實用性軟件工程學科中,為保證本開發(fā)出的軟件產品和軟件項目被市場接受,滿足客戶實用需求,在進行軟件開發(fā)前,會通過一定的用戶需求分析管理方法來明確軟件應達到的目標,對系統(tǒng)目標做出完整、準確、清晰、具體的要求,保證開發(fā)出的軟件在以需求分析活動的受控狀態(tài)下進行。同樣,在教育軟件開發(fā)的過程中,應以軟件工程需求分析管理方法為指導,促進教育軟件開發(fā)的實用性。
1、軟件的使用對象分析軟件的使用對象分析,即在軟件在設計開發(fā)之前要明確使用軟件的對象,軟件實際應用的具體環(huán)境。目前,許多學校普遍反映教育軟件不能滿足教學需求,局限性很大,比較混亂,在應用上存在不少不足之處,教學也因此受到一定影響。 因此,教育軟件的開發(fā)要深入了解和考慮教材、教師、學生、環(huán)境等要素,保證教育軟件要適應師生共同的需要
2、軟件的性能需求分析良好的軟件性能,是保證教學有效開展的關鍵。為了更有效地開發(fā)教育軟件,使其在質量、效益、性能等方面有更強的保證,并充分軟件教學的優(yōu)勢,避免教學資源的重復建設工作,保障教學功能能夠有計劃、有步驟地實施,在軟件開發(fā)前,應組織教師、學生、軟件開發(fā)工程師共同探討,結合課程體系,教學目標以及教學質量要求,列出對軟件有各種性能要求的功能,在了解用戶對軟件的性能需求是什么之后,綜合考慮,從眾多的業(yè)務中提取出用戶核心的、主要的、急需的性能,進一步縮小用戶對軟件項目或產品提出的需求目標和范圍,然后展開具體開發(fā)工作,促進開發(fā)的軟件滿足用戶的需求。
3、軟件的輔助教學目標分析盡管教育軟件,在很大程度上能夠提高教學效果和教學質量,但教育軟件總歸只是一種輔助教學的工具,并不能完全取代課堂教學。因此,在軟件開發(fā)之前,應合理定位軟件在教學中,發(fā)揮的作用和所要實現的輔助教學目標,對所有輔助教學內容重點進行歸納概括,總結相關的知識點,并實例的選材上、內容的安排、深淺層次的把握上突出特色和重點,從而實現軟件的針對性開發(fā)。
四、以軟件工程成本控制管理理念為指導,促進教育軟件開發(fā)的經濟性,軟件工程中普遍溶有工程管理中的成本控制管理理念
教育軟件開發(fā)多數是非商業(yè)化的開發(fā)模式,部分學校在軟件建設資金上存在一定的不足現象,成本控制就顯得愈加重要。因此,在教育軟件開發(fā)中可充分應用軟件工程中的成本管理理念,促進教育軟件開發(fā)的經濟性。
1、整理用戶需求,估算成本軟件開發(fā)成本估算主要指,軟件開發(fā)過程中所花費的工作量及相應的代價。用戶對軟件的需求與軟件的成本中原材料成本和能源消耗成本密切相關。因此,在軟件開發(fā)成本估算中,應根據軟件甩戶的需求,確定教學內容分布的層次、基本內容框架、交互類型、交互方式,進行軟件設計方案的技術評估,確定軟件開發(fā)所需的構件,進一步估算軟件成本和進行成本效益分析。
2、融入軟件工程軟件復用管理理念,控制成本軟件復用(Softwa re Reuse)是將已有軟件的各種有關知識用于建立新的軟件,以縮減軟件開發(fā)和維護費用的成本控制方法。在教育軟件開發(fā)的過程中,通過運用軟件工程中的軟件復用管理理念,根據教育應用領域的特征和相似性,對已有軟件成份的可復用性進行預測。當已有軟件成份的可復用價值得到確認后,再開展軟件開發(fā)工作。這樣通過對已有軟件成份和待開發(fā)軟件成份的優(yōu)化重組,可在深入分析用戶需求基礎上建立可服用的軟件服用管理體系,可以在很大程度上提高軟件開發(fā)的成功率,降低學校信息化投資的成本,縮短建設周期。
五、以軟件工程應用維護技術指導,促進教育軟件開發(fā)的效益
在軟件工程領域,開發(fā)出的軟件交付用戶使用后,都有一套完整的用戶手指導說明書,對軟件應用過程中的操作方案進行詳細說明,提供維護服務辦法和升級措施。同樣,在教育軟件開發(fā)過程中,也應遵循軟件工程學的原理,保證軟件應用階段產生的效益能夠滿足可維護性的要求。因此,教育軟件的開發(fā)應以軟件工程應用維護技術指導,促進教育軟件開發(fā)的效益性。
一是適應性維護。適應性維護是軟件在應用過程中經常會出現新的系統(tǒng),為促進軟件產品在新的環(huán)境下仍能高效使用,應常對軟件進行系統(tǒng)改造和更新。
二是完善性維護。完善性維護是軟件系統(tǒng)在運行中不可避免的會出現故障和錯誤,維護人員應對系統(tǒng)進行必要的完善。對軟件系統(tǒng)在使用過程中出現的故障進行維修,同時,對軟件使用過程中用戶提出的新的功能及性能要求進行擴充,保證其應用效益。
三是預防性維護。預防性維護是為避免軟件在使用過程中出現故障而產生維修費用,延長軟件的使用壽命而采取的一系列計劃維護措施,實現對軟件的異狀進行早期發(fā)現和早期維護,保證其正常運用。
參考文獻:
[1]王麗娟:《軟件復用技術及其在軟件開發(fā)中的應用》,《中山大學學報論壇》2004年第24卷第1期。
[2] 文俊浩,徐玲,楊丹.軟件工程人才培養(yǎng)的實踐探索[J].中國大學教育,2005.1:31~32
(一)面向對象分析的優(yōu)點
作為現代軟件生產開發(fā)的使用頻率較高的重要技術之一,面向對象分析必然擁有其不可替代和模仿的優(yōu)勢。以下便列舉幾項:一、面向對象分析注重對問題領域的理解和認識,有利于問題的解決;二、它靈活方便,能夠在當前實際運行分流和分析化的分流之間出現差異時進行調整以適應變化;三、它沒有分裂屬性與專用屬性的服務,而將它們視為統(tǒng)一的整體,更為完整明了;四、它使用對象之間依賴性最小的自包含分塊進行說明和分析,能夠使軟件更為具體深刻易懂,等等。
(二)面向對象分析的具體操作過程
一、繪制生成使用用例圖。用例是能夠在系統(tǒng)會話中完成的與用戶使用系統(tǒng)行為相關的事物序列。用例之間存在三種關系:角色與用例之間的接、用例之間的使用和擴展以及通過角色的執(zhí)行來識別不的用例;二、繪制構建系統(tǒng)的靜態(tài)模型。包括類圖、對象圖等圖形的靜態(tài)模型反映了軟件系統(tǒng)中各種對象的類型以及彼此間的靜態(tài)關系,不言而喻,靜態(tài)模型也是以對象為中心構建的,這也是類圖、對象圖等圖形之間最大的共同點;三、繪制構建系統(tǒng)的動態(tài)模型。事物發(fā)展的過程中總是包含了動態(tài)和靜態(tài)兩種過程,動靜結合,二者相互聯系相輔相成、不可分割。同樣的,面向對象分析中有靜態(tài)模型,就有動態(tài)模型,它保險系統(tǒng)執(zhí)行時的各種序列狀態(tài)以及交互關系表現的系的行為。相對于靜態(tài)模型對各種對象的特點類型的描述,動態(tài)模型是對系統(tǒng)活動及動態(tài)合作關系等的描述。
二面向對象設計
面向對象設計獨立于編程語言描述軟件設計,同樣是靈活而又便利的。它建立在對“面向對象”的深入全面理解和認識的基礎之上,解決類與互相通信的對象之間的組織關系,它與面向對象分析之間具有同樣的概念、原則和表示方法,二者相輔相成,不可分割和剝離。面向對象設計的具體過程如下:(1)對象行為和對象間交互作用的進一步細化。(2)用例的設計和實現。在面向對象分析中生成使用用例圖的操作和步驟讓我們對用例有了一定的了解,然而那只是從系統(tǒng)的外部展現系統(tǒng)的功能,并不全面。作為一種完善和補充,面向對象設計中的用例設計實現了系統(tǒng)內部的對象與外部功能相互作用和適應配合。(3)細化分析階段的交互圖、狀態(tài)圖、活動圖。(4)確定系統(tǒng)可重用的類或部件。(5)用構件圖描述代碼部件的物理構及相互之間的依賴關系。(6)用配置圖描述軟硬件的物理系結構。面向對象分析是直接地對問題領域進行觀察、分析,使系統(tǒng)能夠直接映射出問題領域,維持問題領域中對象的完整性與真實性,而面向對象設計則對面向對象設計所作出的對象模型進行抽象化和歸納化,生成直觀的歸納性的圖形,使對象模型得以概括和升華。從這個角度來看,面向對象設計是數據的細化和抽象化過程,是面向對象軟件工程方法中重要的工具和方法。
三總結
【關鍵詞】軟件;軟件開發(fā);工程;文檔;生存周期;維護
1.前言
1.1 軟件開發(fā)的規(guī)范化工程化
隨著計算機技術、信息技術、多媒體技術、網絡技術、通信技術等的發(fā)展,各行各業(yè)的眾多工作越來越依賴計算機的應用,一方面使社會對軟件產品的需求量增大。另一方面計算機軟件產品在投入使用過程中,軟件程序在運行時發(fā)現錯誤要設法改正;用戶有了新的需求時要對程序做相應的修改;硬件系統(tǒng)或系統(tǒng)軟件(主要是操作系統(tǒng))的更新修改程序發(fā)適應新的工作環(huán)境。以上種種工作都對軟件開發(fā)和軟件維護提出要規(guī)范化工程化工作,
1.2 規(guī)范化工程化的目標
特別是軟件生產及維護進入規(guī)范化工程化的軟件工程時代,任何參加這些軟件工程的人員,要在工程項目的總體要求和技術規(guī)范的約束下開展工作。組織實施軟件工程項目,從技術各管理上采取了措施使在軟件開發(fā)達到以下主要的目標:生產成本較低、軟件功能達標、軟件性能較好、軟件易于移植、維護費用低、按時完成開發(fā)工作。為了達到這樣的目標,特別要重視文字資料工作即軟件文檔。
1.3 軟件文檔的概念
軟件文檔(document)也稱文件,通常指的是一些記錄的數據和數據媒體,它具有固定不變的形式,可被人和計算機閱讀。。軟件文檔是與軟件開發(fā)、維護和使用有關的文字材料,如技術文檔、設計文檔、版本說明文檔等,它和計算機程序共同構成了能完成特定功能的計算機軟件。
2.軟件文檔的作用
2.1 提高軟件項目開發(fā)過程的透明度,為項目管理提供了依據
軟件是一種邏輯實體,而不是物理實體,軟件產品不像生產其它產品看得見,摸得著。故在軟件的開發(fā)生產過程中沒有明顯的制造過程。我們知道,硬件產品和產品資料在整個生產過程中都是有形可見的,軟件生產則有很大不同,文檔本身就是軟件產品。
軟件文檔詳細記錄了軟件項目開發(fā)過程中發(fā)生的事件,將通?!安豢梢姷摹避浖_發(fā)進程轉換成“可見的”文字資料,使軟件項目開發(fā)過程的能見度、透明度提高了,是項目的管理的依據。軟件產品在軟件開發(fā)過程中管理者需要了解開發(fā)進度、存在的問題和預期目標。每一階段計劃安排的定期報告提供了項目的可見性。定期報告還提醒各級管理者注意該部門對項目承擔的責任以及該部門效率的重要性。開發(fā)文檔規(guī)定若干個檢查點和進度表,使管理者可以評定項目的進度,如果軟件文檔有遺漏,不完善,或內容陳舊,則管理者將失去跟蹤和控制項目的重要依據。
2.2 跟蹤軟件項目開發(fā)過程,使項目質量得到保證
軟件項目開發(fā)過程的每一個階段有必須完成的文檔。那些負責軟件質量保證和評估系統(tǒng)性能的人員需要程序規(guī)格說明、測試和評估計劃、測試該系統(tǒng)用的各種質量標準以及關于期望系統(tǒng)完成什么功能和系統(tǒng)怎樣實現這些功能的清晰說明;必須制訂測試計劃和測試規(guī)程,并報告測試結果;他們還必須說明和評估完全、控制、計算、檢驗例行程序及其他控制技術。這樣完成對軟件項目的過程進行跟蹤,滿足質量保證人員和審查人員上述工作的需要。
每一個階段結束前都要對該階段據所完成的文檔或程序進行評審或測試,以便發(fā)現問題,排除故障,及時改正錯誤。有了軟件文檔的跟蹤,可及時審查軟件項目,保證軟件質量。
2.3 便于各人員之間的交流與合作,是各任務之間聯系的憑證
軟件文檔在軟件開發(fā)人員、軟件管理人員、維護人員、用戶以及計算機之間的多種橋梁作用。使系統(tǒng)管理員、操作員、用戶、管理者和其他有關人員了解系統(tǒng)如何工作,以及為了達到他們的各自的目的,如何使用系統(tǒng)。
大多數軟件開發(fā)項目通常被劃分成若干個任務,并由不同的小組(下轉第74頁)(上接第17頁)去完成。項目小組內部、項目平行開發(fā)的各小組之間進行交流與聯系是通過軟件文檔。大多數系統(tǒng)開發(fā)方法為任務的聯系規(guī)定了一些正式文檔學科方面的專家建立項目;分析員闡述系統(tǒng)需求,向設計員提供正式需求規(guī)格說明;設計員制定總體設計,向程序員提供正式設計規(guī)格說明;程序員編制詳細的程序代碼;質量保證專家和審查員評價整個系統(tǒng)性能和功能的完整性;負責維護的程序員改進各種操作或增強某些功能。各種人員需要的互相聯系、互相交流、互相合作是通過文檔資料的復制、分發(fā)和引用而實現的。
2.4 支持軟件項目使用時的維護,發(fā)揮軟件的最大效率
軟件文檔提供系統(tǒng)開發(fā)的全部必要技術資料??梢詭椭S護保熟悉系統(tǒng),順利完成軟件的安裝。在軟件運行過程中出現的各種問題可及時排除,及時處理,幫助客戶使用軟件操作順利地利用軟件進行工作。軟件運行過程找出并修正錯誤,改進系統(tǒng)以適應用戶需求的變化或適應系統(tǒng)環(huán)境的變化,開展維護工作,延長軟件的生存周期,使軟件的效率發(fā)到最大化。
2.5 記錄軟件的歷史,為今后的軟件開發(fā)提供參考
軟件文檔作為“記錄軟件歷史的語言”,軟件文檔可用作以后項目的一種資源,軟件項目的一種借鑒。通常文檔記載系統(tǒng)的開發(fā)歷史,可使有關系統(tǒng)結構的基本思想為以后的項目利用。系統(tǒng)開發(fā)人員通過審閱以前的系統(tǒng)以查明什么部分已試驗過了,什么部分運行得很好,什么部分因某種原因難以運行而被排除。系統(tǒng)文檔有助于完成軟件的移植或將軟件轉移到各種新的系統(tǒng)環(huán)境中。
軟件文檔中還包含著“項目開發(fā)總結報告”自我總結的部分,有的項目負責人對這些文件往往不大在意,其實在這些文件中除了有關的軟件項目的數據外,對項目的過程的進行了總結,優(yōu)、缺點盡在其中,學習和借鑒這些文件對今后的工程管理將會有很大的促進作用。
3.總結
在軟件工程時代,正確的使用軟件文檔對軟件產品按質按量的交付使用,對于充分發(fā)揮軟件產品的效益有著重要意義,故在軟件開發(fā)中要重視軟件文檔的編寫。
參考文獻
[1]辛明海,潘孝銘等.軟件文檔編寫[M].北京:高等教育出版社,2009.
1.1軟件系統(tǒng)廣義分層根據光伏微電網軟件系統(tǒng)的關聯結構及其運行控制的功能需求,光伏微電網軟件系統(tǒng)廣義上可劃分為三層結構形式,即物理層、數據層和應用層(圖2)。(1)物理層。物理層主要面向環(huán)境底層設備(包括直接與被測量對象相連的各種數據采集設備),負責數據采集并傳輸給上層或接受上層指令,實現底層數字化和本地控制。例如,基于物理層的SCADA系統(tǒng)能實現對微電網現場數據的采集、逆變器的控制、設備的本地保護和控制、儲能系統(tǒng)的充放電控制、饋線故障保護及環(huán)境測量等功能[12]。(2)數據層。數據層主要負責網絡通信和數據交換,一方面支持各種軟件通信協(xié)議,如Modbus、TCP和IEC61850等;另一方面采用各種先進算法對匯聚的數據做出系統(tǒng)決策,向下層發(fā)出指令[13]。光伏微電網存在并網模式和孤島模式,既需要實現在較高安全性要求前提下運行模式的無縫切換,又需要具備負荷預測、發(fā)電預測、功率平衡控制和能量管理等大數據快速處理能力,以滿足功率平衡要求和經濟指標需求。(3)應用層。應用層主要是面向用戶側進行優(yōu)化調度控制,負責數據匯總、按需分析、作出決策,實現人機交互,著力于實現多條件、多目標的光伏微電網經濟運行。從用電經濟性角度出發(fā),在用電低谷期從電網買電并在高峰期賣出,以緩解電網壓力;從發(fā)電經濟性角度出發(fā),綜合考慮設備購買成本、運行管理成本、與大電網的交互成本以及儲能系統(tǒng)充放電損耗和燃料等成本;在功率平衡等式約束條件以及DG(分布式發(fā)電)出力限值、與電網交互功率限值、發(fā)電機爬坡速率限值和儲能荷電狀態(tài)限值等不等式約束條件下,均衡各個DG的出力,實現經濟效益最大化、技術最優(yōu)化及環(huán)境友好化。1.2面向用戶的光伏微電網軟件平臺隨著軟件管理模式的普及,用戶對軟件系統(tǒng)的穩(wěn)定性、安全性、實時性、兼容性、易維護性和可擴展性等提出了更高的要求[14]。為實現人機交互的友好化,研發(fā)面向用戶的光伏微電網軟件平臺,包括操作系統(tǒng)、支撐環(huán)境和應用功能3個板塊(圖3)。操作系統(tǒng)既是計算機系統(tǒng)的關鍵組成部分,也是光伏微電網軟件平臺運行的基礎,常見的操作系統(tǒng)包括Unix、Linux和Windows。支撐環(huán)境板塊為實現各種上層的應用功能提供通用的支撐服務,如系統(tǒng)管理、權限管理、圖形界面、數據處理、數據報表、故障警告等。應用功能板塊為光伏微電網的經濟運行提供按需定制的服務,主要有數據采集、數據監(jiān)控、發(fā)電預測、負荷預測、能量管理和優(yōu)化調度等。用戶可以根據各自光伏微電網系統(tǒng)的需求,使用光伏微電網軟件平臺上的應用功能,便捷地進行系統(tǒng)數據的監(jiān)控、發(fā)電及負荷的預測和能源的管理調度。
2光伏微電網軟件工程化
光伏微電網軟件系統(tǒng)是微電網的監(jiān)測控制中心,其工程化過程必須以先進的開發(fā)技術為支撐,選擇合適的軟件開發(fā)方法和軟件開發(fā)過程模型,實現高質量、高效率、低成本的目標。2.1軟件開發(fā)技術光伏微電網軟件采用模塊化和結構化設計,以增強可復用性和可擴充性;采用標準化程序設計語言,以提高可讀性;創(chuàng)建結構化文檔,以便于閱讀、理解、分析和維護。下面以軟件構件復用技術和基于MVC的Web技術為例進行說明。2.1.1軟件構件復用技術隨著計算機技術的發(fā)展和微電網技術的廣泛應用,對光伏微電網軟件的需求也在不斷激增,且軟件規(guī)模和復雜度也在不斷增加。傳統(tǒng)的開發(fā)方法會使大量資源浪費在重復開發(fā)上,因此開發(fā)過程實現標準化和簡單化,能有效地降低軟件的開發(fā)和維護成本,提高軟件產品質量和生產效率。軟件構件復用技術[15]是實現面向對象開發(fā)方法和集成構件模型的基礎,也是軟件走向工程化和產品化的關鍵技術之一。它以軟件構架為組裝藍圖,以可復用構件為組裝預制塊,支持組裝式軟件復用,是解決軟件資源浪費問題最可行、最現實的方法。2.1.2基于MVC的Web技術傳統(tǒng)的微電網軟件多是基于特定平臺下的應用軟件,而Web技術[16]具有動態(tài)性、分布式及與平臺無關等特點,支持安全連接后臺系統(tǒng)、動態(tài)用戶交互及實時信息,將其應用于光伏微電網,能有效地提高光伏微電網系統(tǒng)的信息化水平。Web技術發(fā)展較快,一般采用B/S模式,其中服務端技術包含JSP、CGI、ASP、ISAPI、PHP、Servlet等,客戶端技術包含JavaApplet、VBScript、JavaScript等。為了實現軟件系統(tǒng)的“低耦合、高內聚”,以“分而治之”的思想、采用分層方式架構系統(tǒng),把待解決問題劃分開來。用MVC模式將系統(tǒng)分層,層次清晰、解耦良好、便于維護及擴展。對于中等規(guī)模以上的應用程序,應用MVC構架得到的好處能大大抵消因其帶來的工作量和復雜度增加而造成的不利影響。因此在光伏微電網軟件工程中應用基于MVC模型的Web技術是比較理想的。在Java技術中,Hibernate、Struts、Spring及Ibatis等框架技術能很好地實現MVC模式,為基于MVC的Web技術應用于光伏微電網軟件提供強大的技術支撐。2.2軟件開發(fā)方法軟件開發(fā)方法在開發(fā)步驟、軟件文檔格式和開發(fā)方案評價標準3個方面提出了相應的規(guī)范要求,使得光伏微電網軟件生產進入有章可循、向規(guī)范化和標準化邁進的“工程化”階段。軟件開發(fā)方法在不斷推陳出新,目前常見的開發(fā)方法有結構化方法、面向對象方法和形式化方法(表1)。面向對象開發(fā)方法[17]以結構化系統(tǒng)開發(fā)方法基本框架為基礎,以封裝、繼承及多態(tài)為基本特征,將系統(tǒng)抽象變成一個由很多對象互相作用、互相聯系而形成的整體,包括分析方法、設計方法和程序設計(編程)方法,從而使軟件開發(fā)更具靈活性和可靠性。光伏微電網軟件系統(tǒng)不僅需要數據庫的支持以實時處理信息,同時還涉及大量的事務性操作請求,因此面向對象開發(fā)方法無疑是最佳選擇,而在局部處理上結合結構化方法則更為有利,故而將面向對象方法與結構化方法有機地結合起來,以指導光伏微電網軟件的開發(fā)工作。2.3軟件開發(fā)過程模型軟件開發(fā)過程模型對提高軟件質量、增強軟件開發(fā)團隊的競爭力起著至關重要的作用[18]。典型的過程模型包括瀑布模型、快速原型模型、增量模型、螺旋模型、噴泉模型及集成構件模型等。針對光伏微電網項目應用性質、采用方法、需要的控制方式以及所要交付產品的特點,選擇合適的軟件過程模型,能對軟件開發(fā)提供有效的支持,確保工程進展順利。光伏微電網軟件需求明確,是應用于電力行業(yè)中的中等規(guī)模軟件。集成構件模型能夠有效解決光伏微電網軟件工程問題,主要包括:(1)開發(fā)適用于面向對象的軟件,提供有效實現面向對象開發(fā)的方法;(2)融合螺旋模型的特征,支持軟件開發(fā)的迭代方法和軟件復用,提高開發(fā)效率(圖4)。
3光伏微電網軟件工程實例
中國南車光伏發(fā)電示范工程暨微電網綜合試驗系統(tǒng),依托1MW光伏電站平臺,包括2個100kW光伏發(fā)電單元、1個50kW光伏發(fā)電單元、100kW電動模擬柴油發(fā)電機組、100kW×1h磷酸鐵鋰蓄電池儲能系統(tǒng)、100kW×3s超級電容儲能系統(tǒng)、100kW±100kvar智能負載以及200kVA模擬電網裝置。其光伏微電網能量管理系統(tǒng)基于改進的B/S五層結構,支持具有MVC思想的成熟SSH2框架技術,并且結合Ajax和SVG等先進的Web技術(圖5)。系統(tǒng)具體分為表現層、控制層、業(yè)務邏輯層、數據訪問層和數據持久層,每層任務明確且彼此獨立,滿足軟件構件復用技術。系統(tǒng)軟件在SCADA系統(tǒng)的基礎上運行,并融合了各種先進的算法,例如,基于初始位置、配置參數、預測天氣等進行光伏預測,并用歷史數據進行在線修正,有效地增加了光伏預測的準確性。實用結果證明,該軟件不僅使用方便,操作友好,響應速度快,滿足可用性、可靠性、可維護性和安全性的定性要求和定量要求,而且能滿足能量管理優(yōu)化的時間常數τ≤2min、預測1h內各DG發(fā)電量及其精度大于80%、優(yōu)化調度時間常數Τ≤3s等要求。
4結語
軟件工程合同書
合同編號:___________________
甲方:__________________________
乙方:__________________________
依據甲方的需求,并本著平等互利的原則,甲乙雙方經友好協(xié)商,就甲方的醫(yī)院管理信息系統(tǒng)(以下簡稱_______系統(tǒng))的應用軟件工程簽訂本合同。
第一條 適用法律
1.1本合同適用法律為:《中華人民共和國技術合同法》、《中華人民共和國著作權法》和《中華人民共和國計算機軟件保護條例》及《中華人民共和國經濟合同法》等有關國家法律法規(guī)。
1.2上述文件時間有不一致時,以日期在后的文件為準。
第二條 合同范圍
2.1乙方負責完成甲方的_______軟件系統(tǒng)。涵蓋的范圍_______系統(tǒng)軟件安裝、調試和對整個_______系統(tǒng)的技術支持、服務與培訓等工作。
2.2產品內容(價格見附頁)
第三條 責任和義務
3.1雙方共同責任
嚴格根據本協(xié)議實施本項目的內容,并協(xié)商解決合作中出現的有爭議的問題。
3.2甲方的責任和義務
3.2.1按本合同的付款條款支付所需款項。
3.2.2負責項目中的領導、組織和協(xié)調工作。
3.2.3提供場地、人員、相關設備、必要的文檔資料和數據,協(xié)助乙方做好_______系統(tǒng)的實施工作,并且甲方運行用友醫(yī)院管理信息系統(tǒng)的設備環(huán)境,應滿足軟件對運行環(huán)境的基本要求。
3.2.4試運行結束后______天內,組織人員和乙方人員一起組成驗收小組,并安排場地和設備,進行_______軟件試運行的驗收工作。
3.2.5
a.甲方定期做好系統(tǒng)數據備份,并對備份數據進行妥善保管。
b.甲方在應用過程中發(fā)現軟件出現異常,應及時與乙方取得聯系,并記錄當前故障現象,便于乙方作出診斷。
c.甲方在乙方服務人員服務完成后,配合檢查軟件系統(tǒng)運行是否正常,并在現場服務請求單上簽字確認。
3.3乙方的責任和義務
3.3.1按照本合同所規(guī)定的時間完成甲方相關人員的培訓和_______系統(tǒng)軟件安裝、調試及數據初始化,并與甲方一起組成驗收小組進行驗收。
3 .3.2對甲方_______進行一年內免費的軟件升級、服務、培訓、技術支持。
3.3.3無償向甲方提供相應的軟件使用文檔,包括《操作手冊》,并保證上述文檔的清晰、完整和正確。
3.3.4乙方對甲方在使用用友軟件過程中,因設備故障、操作失誤等造成的數據丟失、利潤或營業(yè)額損失或費用增加,以及因不按正常操作規(guī)范使用軟件或軟件被盜、損失、損毀、誤用所造成的損失不負責任。
第四條 版權
4.1乙方擁有本_______系統(tǒng)軟件的版權(即著作權)。
4.2甲方擁有本_______系統(tǒng)軟件在本醫(yī)院(______________醫(yī)院)內部的使用權。
4.3甲方應尊重從乙方購置的應用軟件的注冊版權,遵守國家《計算機軟件保護條例》有關規(guī)定,不得以任何形式再次轉讓、租賃該軟件,并不得以任何形式或手段解密該軟件。
第五條 技術指標
5.1___________信息管理軟件______________。
5.2本系統(tǒng)基于___________結構。
5.3乙方向甲方提交的文檔應齊全、正確和可讀性強。
5.4應用軟件的聯機幫助應清晰可讀,系統(tǒng)錯誤信息應清晰明了,界面應友好,并易于操作和維護。
5.5本系統(tǒng)應充分考慮到今后的擴充和升級,應具有良好的開放性和可擴充性。
5.6本系統(tǒng)應具有可靠的安全和保密機制,以確保數據完整、安全和不被非法用戶登錄。
第六條 交付計劃
6.1軟件培訓___________天
6.2系統(tǒng)安裝____________天
6.3軟件調試_____________天
6.4系統(tǒng)初始化__________天
第七條 費用及支付方式
7.1費用
7.1.1本合同所述價格均為人民幣含稅價。
7.1.2本合同所述用友醫(yī)院信息管理系統(tǒng)(_______)金額總計為人民幣_________元。
7.1.3乙方免費培訓用戶方人員,培訓地點:甲方所在地。
7.1.4自應用軟件通過驗收之日起,一年內乙方免費負責應用軟件的升級、系統(tǒng)維護和技術支持。
7.2支付方式
7.2.1甲方將以轉帳支票或信匯、電匯等銀行托收的方式向乙方支付。
7.2.2合同生效后,由乙方開始_______軟件的實施工作,當乙方軟件安裝、調試完畢后,甲方于______年______月______日前一次性向乙方支付全部軟件款,(人民幣)______元。
第八條 服務與技術支持
8.1操作人員培訓
8.1.1培訓時間為______天。
8.1.2培訓地點:甲方所在地
8.1.3培訓內容:_______系統(tǒng)軟件的使用。
8.2系統(tǒng)實施
8.2.1_______系統(tǒng)軟件安裝:指_______系統(tǒng)軟件交付甲方后,軟件的安裝、調試及系統(tǒng)環(huán)境的設置等,包括:服務器操作系統(tǒng)設置、網絡環(huán)境設置、數據庫系統(tǒng)環(huán)境設置、客戶機操作系統(tǒng)設置、網絡協(xié)議設置、應用程序的安裝、調試及參數設置。
8.2.2_______系統(tǒng)設置:包括應用項目、基礎數據的設置(指導)。
8.2.3初始數據錄入:協(xié)助并規(guī)范甲方人員進行初始數據的錄入和轉入。
8.3系統(tǒng)維護
8.3.1乙方向甲方提供的為保證本系統(tǒng)正常運行的現場系統(tǒng)維護項目包括:
--應用軟件在運行中的故障帶來的排錯工作。
--應用軟件與系統(tǒng)軟件及數據庫系統(tǒng)適配帶來的調整工作。
--甲方非正常操作帶來的系統(tǒng)及數據的修復工作。
8.4系統(tǒng)升級
8.4.1系統(tǒng)升級指由乙方開發(fā)技術更新、應用系統(tǒng)升級或原有模塊新功能的增加、補充帶來的軟件版本升級,由乙方免費向甲方提供。
8.4.2系統(tǒng)如有重大變更由雙方具體協(xié)商后另行簽署協(xié)議。
8.5技術支持及服務
8.5.1一年免費服務期滿后,乙方將向甲方收取服務費,收費標準為每年收取軟件合同價的______%,或每次上門服務收取服務費______元人民幣,又或甲方向乙方購買服務卡(金卡:______元/______次/______小時響應、銀卡:______元/______次/______小時響應、銅卡:______元/______次/______小時響應)。甲方可根據具體情況選擇適合的服務方式。
8.5.2乙方通過以下方式為甲方提供技術支持及服務:
--熱線電話:______、 傳真:______
--乙方在internet站點的?www、mail、ftp等服 務,提供軟件下載、熱線響應等先進的網絡支持。
8.5.3乙方的服務承諾:
a.乙方接到甲方通過電話、信函、傳真、電子郵件、網上提交等方式提出關于用友_______軟件的服務請求后,在24小時內給予響應并提供服務。
b.乙方提供給甲方的服務,必須按照合同規(guī)定的服務內容進行。
8.5.4如因乙方原因,單方解除上述條款,使甲方用友_______系統(tǒng)不能正常運行,應賠償由此帶來的一切損失。
8.5.5系統(tǒng)升級及費用:若醫(yī)院需要進行不同版本的系統(tǒng)升級,升級費用按軟件合同價的20%收。?
第九條 保密原則
項目中所涉及的雙方的內部資料、數據和其他商業(yè)信息,未經有關方許可,任何一方不得以任何形式用于合同之外的目的,不得以任何形式向其他方泄露。任何一方泄密,另一方有權追究泄密方的經濟和法律責任。
第十條 轉讓
乙方不得將合同轉讓。
第十一條 違約責任
1)甲乙雙方本著真誠合作、相互信賴的原則,根據國家相關的法律、法規(guī),協(xié)商解決在本合同執(zhí)行過程中可能出現的違約糾紛和違約責任。
2)甲方在規(guī)定時間內不配合乙方進行_______系統(tǒng)驗收,視同驗收通過。
3)以上應付合同款逾期一個月未付,乙方有權將軟件收回。
4)違約處理:
甲方沒有按照合同要求履行甲方應承擔的責任,甲方應該承擔由此帶來的相關結果。
5)乙方免責條款:
1.乙方對甲方在使用用友軟件過程中,因設備故障、操作失誤等造成的數據丟失、利潤或營業(yè)額損失或費用增加,以及因不按正常操作規(guī)范使用軟件或軟件被盜、損失、損毀、誤用所造成的損失不負責任。
2.乙方不承擔因甲方人員進行非法操作、感染病毒、硬件出現故障導致的數據混亂、丟失責任。
3.乙方有權拒絕甲方提出的合同規(guī)定之外的服務請求。
第十二條 爭議與仲裁
甲乙雙方如對合同條款規(guī)定的理解有歧義,或者對與合同有關的事項發(fā)生爭議,雙方應本著友好合作的精神進行協(xié)商。協(xié)商不能解決時,依照《中華人民共和國經濟合同法》,可向國家規(guī)定的仲裁機構申請調解或仲裁,任何一方可直接向人民法院起訴。
第十三條 不可抗力
13.1不可抗力的內容按我國有關規(guī)定條款執(zhí)行
13.2不 可抗力對合同雙方均適用。在合同生效后,如果發(fā)生不可抗力而不能履行合同時,則由事故發(fā)生一方,取得公證機關的不能履行或不能全部履行或延期履行本合同的證明,甲乙雙方可憑此證明解除全部或部分相關責任。
第十四條 合同變更、補充及終止
14.1本合同自雙方簽定之日起生效,如果雙方均未發(fā)出書面終止通知,則合同自動延續(xù)。
14.2本合同為雙方的最終合同,未經雙方書面同意,不得對此作任何修改。如有未盡事宜,經雙方書面同意后,可簽訂書面補充協(xié)議。補充協(xié)議同本協(xié)議具有同等法律效力。
第十五條 合同效力
本合同一式叁份,甲方執(zhí)貳份,乙方執(zhí)壹份,每份具有同等法律效力。
第十六條 合同有效期和效用性
1.本合同須雙方簽字并加蓋公章或合同章生效;本合同一式兩份,雙方各執(zhí)壹份,具有同等法律效力。
2.本合同的有效性不因雙方代表的職務變換、工作變更、工作調動等情況而受到任何影響;本合同的有效性不因雙方法人的變更而受到任何影響;本合同的有效性不因雙方單位名稱的改變而受任何影響。
甲方:_____________________
地址:_____________________
甲方負責人:_______________
甲方代辦人:_______________
甲方單位(蓋章)___________
開戶銀行:_________________
乙方:_____________________
地址:_____________________
乙方負責人:_______________
乙方代辦人:_______________
乙方單位(蓋章)___________
開戶銀行:_________________
帳號:_____________________
軟件工程是一項專業(yè)性強、難度大的學科,目前軟件工程管理還處于發(fā)展期,但其放在何處都會成為一個性質有效的管理。我國部分小型軟件企業(yè)要想在激烈的市場競爭中獲取成功就必須要進行軟件工程管理。不過對軟件工程進行管理并不是一件容易的事,在整個管理過程中需要面臨以下問題。缺乏系統(tǒng)的培訓。現在我國的一些軟件公司的實際情況都是任命專業(yè)能力過硬的人員為項目經理,而這些專業(yè)知識過硬的技術人員通常沒有過硬的軟件工程管理功底,而企業(yè)沒有系統(tǒng)的培訓,導致了項目經理在軟件開發(fā)過程中無法對整個過程中進行系統(tǒng)的管理。缺乏計劃意識。項目經理對軟件開發(fā)中計劃的作用沒有一個正確的認識,導致了開發(fā)項目沒有一個合理的可行性計劃,這樣在軟件開發(fā)過程中,因為人員因素或外界因素經常會導致計劃好的事情被拖延,從而造成進度受到拖延[3]。缺乏管理意識。因為在軟件開發(fā)中,項目經理經常投入到技術工作之中,從而忽略了對軟件工程的整體管理。這樣經常會造成項目開發(fā)過程中,每個工作人員的任務得不到適當的安排,造成計劃不周,資源浪費等。項目經理沒有將任務合理地分配到工作人員手中,造成許多任務都需要自己埋頭苦干,沒有精力對整個項目進行管理。風險管理中的問題。部分項目經理在管理中缺乏風險意識,很少對項目中存在的風險進行合理分析,制定的風險管理也比較隨意,沒有真正起到風險防范的作用。軟件工程復雜化。近年來軟件項目規(guī)模不斷增大,參與同一軟件項目的人數也在急劇增加,同時軟件工程管理的困難也變得更大,在軟件工程管理中需要解決的問題也在增加,這些都增加了軟件工程管理的難度[4]。
2軟件工程的管理方法
2.1構建軟件工程管理體系
構建合理的軟件工程管理體系主要包括以下內容:第一,構建人才體系。在軟件工程管理中,人才對管理有著重要的作用,人才是做好軟件工程管理的前提。第二,為了提高工作人員工作中的積極性,確保項目中所有目標能夠得到落實,應當加強人力資源管理。第三,在人才的管理中切記要以平等的態(tài)度進行管理,而不是控制[5]。
2.2加強風險管理和進度管理
對于軟件項目管理中的風險管理和進度管理,我們也應當分為兩個方面來進行探討。第一,構建風險管理體制,只有這樣才能及時發(fā)現軟件工程管理中存在的風險,并對存在的風險進行及時處理。第二,提高項目中風險管理人員的風險意識,確保風險管理人員能夠對風險有一清楚的認識,并且能夠對風險進行合理的分析,針對風險提出有效的風險防范制度。在風險管理中風險管理人員應當將風險報告提交給項目經理,對項目中存在的風險進行有效的防范,阻止風險出現,確保企業(yè)的順利發(fā)展[6]。
2.3加強對項目團隊的管理
首先,應當增加工作人員之間的聯系與溝通,使整個團隊中的人員都具有溝通意識和團隊合作精神。其次,對各個工作人員的工作內容進行明確分工,合理地將責任分配到每個工作人員,保證工作開展后一切都能順利地進行。最后,調動項目中工作人員的積極性和注重性,使團隊中的工作人員都能夠完全投入到工作之中,提升團隊工作能力,改善工作人員的工作態(tài)度,做好軟件工程管理工作。
2.4對軟件工程進行監(jiān)督
軟件工程監(jiān)督是軟件工程管理中的重要方式,工程監(jiān)督指的是對項目所自制定的目標進行實時監(jiān)測,軟件工程監(jiān)督要貫穿整個項目,其目的在于對軟件開發(fā)的流程進行規(guī)范。軟件工程監(jiān)督,可以使開發(fā)過程中的成本、進度、質量實現透明化。在對軟件監(jiān)督過程中軟件需要完成以下任務。由項目負責人對項目進行監(jiān)督,在監(jiān)督過程中,要對監(jiān)督數據進行總結,并對數據進行合理分析,及時發(fā)現問題并解決問題。將CMM標準應用于軟件工程管理之中,CMM標準的引用可以提升軟件開發(fā)效率,降低軟件開發(fā)中的成本以及風險,縮短開發(fā)時間,提高軟件質量,總之將CMM標準運用到軟件工程管理之中,能夠確保用戶得到理想的軟件產品。
3結語