摘要:軟件工程是一門實踐特征明顯的學科,在借鑒前人研究的基礎上,結合教學和系統開發的實踐,本文提出并分析軟件工程課程6大特點,根據軟件工程的工程性、實踐性的需求,提出軟件工程實踐教學環節的知識體系,并依據該知識體系的內容設計參考實踐案例。
關鍵詞:實踐教學 知識體系 軟件工程
文章編號:1672-5913(2011)18-107-05 中圖分類號:G642 文獻標識碼:B
軟件工程是指導軟件開發過程的工程性學科,是涉及計算機科學、管理科學、系統工程科學的綜合性學科。軟件工程是為了解決上世紀60年代的軟件危機而誕生,即在軟件開發中應用工程化的方法來解決或避免軟件危機中的問題。因此,軟件工程的重要性和必要性是毋庸置疑的[1]。
軟件工程課程是計算機科學與技術專業以及相關專業的核心課程。該課程的目的是使學生掌握軟件開發的過程、方法和工具,并在此基礎上,通過軟件項目的實際開發,能夠熟練掌握軟件工程的相關方法,能夠靈活應用軟件工程的相關技術,為今后開展軟件工程的研究、開發和應用工作打下基礎。
1 軟件工程課程的特點
軟件工程作為一門工程性的系統科學,其內容靈活、覆蓋面廣泛,通過多年的教學。我們總結了軟件工程課程的主要特點:理論性與實踐性并重、系統性與局部性并重、科學性與工程性并重、規范性與靈活性并重、管理與技術并重、方法與工具并重。以下將詳細闡述這6個特點。
1) 理論性與實踐性并重。
軟件工程注重軟件開發實踐,注重軟件開發方法論指導下的工程實踐。只有在理論指導下的軟件開發實踐,才能克服和避免軟件危機的問題,最大化地滿足客戶的需要。任何一個軟件系統的開發,都需要在軟件工程方法論的指導下進行,從需求階段,到分析、設計階段,以及實現階段,都有一套方法論。但是要掌握和應用好這些理論知識,必須與實踐相結合。理論源于實踐,而高于實踐。軟件工程的理論是在多年的軟件開發實踐過程中總結提煉出來的。軟件開發本身決定了這就是一項實踐性工作,但這種實踐需要軟件工程方法論的指導,是理論與實踐的密切結合。
2) 系統性與局部性并重。
軟件工程是一門系統科學,系統性是其重要特征之一。在軟件開發的整個生命周期,一套系統的開發方法、系統的過程管理都貫穿始終。系統性保證了用戶的需求貫穿始終,也就是從最初的獲取用戶的需求,到最終產生滿足用戶需求的軟件產品。系統性也保證了軟件開發過程的各個局部環節的良好協作和銜接,保證了系統的完整性,使得軟件開發過程在正確的系統中心思想和正確的發展軌跡下順利進展。但是在注重系統性的同時,也要重視每個局部環節。多個局部環節構成了這個系統,一旦某個局部環節出了問題,可能造成整個系統無法進展下去。例如,如果在需求獲取階段,獲取的用戶需求錯誤,可能導致整個開發過程朝錯誤的方向發展,使得最終系統與用戶期望產生大的偏差。所以在軟件開發的整個過程中,在注重系統性的同時,也要注重局部性。
3) 科學性與工程性并重。
軟件開發過程需要在科學的思維、科學的方法指導下來解決軟件開發中的工程性問題。在軟件開發
中,只有在清晰的、科學的開發思路、開發理念,規范科學的開發方法的指導下,才可能保證工程進展朝正確的方向發展,而且可以減少或避免軟件開發過程中錯誤的發生。但是軟件開發過程中注重科學性的同時,一定要密切結合工程實踐,用科學的方法和技巧解決實踐工程問題。只有科學性和工程性相結合的情況下,才能保證科學的方法能匹配解決工程問題的實際需求。實際上在軟件開發過程中,每一個開發工程都有其獨特性,而科學的方法往往更具有普適性而缺乏獨特性,只有把科學的視角和工程的視角相結合,才能在軟件開發過程中更好的實現科學的方法科學地指導工程實踐,促進軟件開發的正確性,減少軟件開發中的錯誤,保證軟件開發的進度。
4) 規范性與靈活性并重。
軟件開發需要團隊協作共同完成,保證協作互通的前提就是要遵循一定的規范。在軟件開發的各個階段都需要有文檔規格說明書,相關的工作都參照按照文檔規格說明中的內容來進行和評審。對于這些文檔國家和部分企業都提出了相關的標準,如GB/T 8567-2006《計算機軟件文檔編制規范》中規范了軟件開發過程中需要的各種文檔規格。
此外,規范性還體現在規范使用軟件開發方法,例如使用規范正確的數據流圖方法來實現結構化分析階段的功能建模,使得系統開發人員正確的功能模型的內涵。
但是,遵循規范,不是固步自封,不要忽視軟件開發的靈活性。軟件開發也是一種藝術,有開發人員的藝術創作在里面。每個軟件開發項目都有其各自不同的目標和特點,相應軟件規格文檔強調的重點也不一樣。這里所強調的靈活性,不是不遵循規范,而是靈活地完善規范內容。例如,在需求分析中構建用例模型,在對用例的規格說明中,既可以僅使用文字來描述條件和事件,也可以輔助加上流程圖來說明,最終的目的是通過規格說明能描述清楚目標對象,方便開發人員理解。也就是說,規范的內容具有靈活性,哪種方式能更說清楚問題,哪種就是最有效的。千萬不要為了規范而規范。
5) 管理與技術并重。
軟件工程的目標是運用先進的軟件開發技術和管理方法來提高軟件的質量和生產率。管理和技術在軟件開發中缺一不可,二者密不可分,相互滲透。技術是軟件開發的基礎,管理是軟件開發的保證。從軟件項目的開發到實現的各個階段都有一雙技術的手在推動,但是缺乏管理的項目,最終難以成功。過去,開發人員都只重技術,輕視管理,現在這種狀況已經有所改觀。但是學生在學習過程中還是有重技術輕管理的現象,在實踐過程中不重視項目管理,這種狀況需要教師在教學中及時糾正。
6) 方法與工具并重。
軟件工程中包含了多種方法,如數據建模方法、用例建模方法、功能建模、數據流圖等等,為了深入了解和掌握這些方法,需要應用各種方法所涉及的CASE工具來完成相關的軟件開發工作。也就是說,方法與工具要密切配合,這樣可以幫助學生加深對軟件工程課程所涉及方法的理解,并掌握一些主流的軟件工程工具的使用方法,通過工具將方法應用到實踐中。
2 軟件工程課程實踐環節知識架構
在上述總結的軟件工程課程的特點中,軟件工程的工程性和實踐性在每個特點中都有體現。為了展開軟件工程的實踐教學,我們需要分析軟件工程課程知識體系,并從其中抽取實踐內容的知識點,從而能更好地設計實踐案例。
我們根據軟件工程知識體系指南SWEBOK和教育部高等學校計算機科學與技術教學指導委員會發布的計算機科學與技術中關于軟件工程的課程內容[2-3],以及使用的軟件工程教材[4-5],并結合教學中的具體情況,將軟件工程實踐教學內容分為四大模塊:面向結構的軟件開發、面向對象的軟件開發、軟件測試和軟件項目管理。
3 基于.NET電子商務應用系統開發的實踐案例設計
本案例就是為了適應軟件工程課程實踐教學的內容要求,滿足課程實踐性強的特點,并且在充分考慮了學生知識體系的基礎上,通過開發一個具有較強實際應用價值的電子商務應用系統,培養學生應用軟件工程知識解決實際問題的能力。
本案例基于.NET架構,采用了面向對象方法學和結構化方法學這兩種重要的軟件工程方法學分別
分析設計組成B2C電子商務應用系統的兩個子系統:在線購物子系統和后臺管理MIS系統,并且在軟件開發過程中始終采用項目管理的手段控制并管理項目的進程。學生通過此軟件項目的研發可以全面掌握軟件工程的開發過程,可以靈活應用主流的軟件開發工具,提升學生分析問題、解決問題的能力,促進學生實踐創新能力的培養。
基于.NET的電子商務(這里僅針對BtoC模式)應用系統的開發,從技術上應用了現在主流的.NET技術,從內容上既包含了B/S(Browser/Server)模式下的
在線購物系統,也包含了C/S(Client/Server)模式下的內部管理信息系統(MIS)。因此,學生能夠把軟件工程的各種方法和技術應用到不同的模式下,同時能結合.NET主流技術,有助于拓寬學生的知識視野,培養學生的實踐創新能力。
本實踐案例采用.NET技術開發的電子商務應用系統主要包含兩部分:基于B/S模式的在線購物系統和基于C/S模式的后臺管理MIS系統,這兩個子系統分別是電子商務應用系統(這里僅針對BtoC模式)的面向客戶的前臺和面向商家和管理員的后臺。前臺系統和后臺系統通過共享的底層數據庫密切地關聯。這也意味著,前后臺系統的開發需要開發小組的密切合作,只有通過有效的小組協作才能保證系統開發的完整性和準確性,才能符合用戶的系統需求。
在線購物系統主要包括,用戶的登錄、商品的查詢、瀏覽、商品購買等。后臺的MIS系統主要包括商品的管理和用戶的管理,主要功能包括添加、刪除、修改等功能。
本案例研究內容及方案實施過程的簡單示圖。為了讓學生充分應用軟件工程方法,我們要求學生使用面向對象的方法學設計在線購物系統,使用面向結構的方法設計后臺管理的MIS系統。并且軟件開發的各個階段都通過項目管理手段對項目進行監控和管理,并且在各階段對學生應用的工具、應該掌握的知識、應解決的問題提出了具體的要求,由于篇幅所限,此處只做簡單描述。
按階段簡要描述方案內容如下:
1) 需求分析階段。
對系統進行調查,規劃系統的內容,對用戶需求進行分析調查,分析用用對系統功能和性能的要求,提出系統需求分析報告和需求分析計劃。此階段由于在前臺系統采用了Web方式,可以通過構建原型網站系統來進一步確定功能需求和用戶界面需求。在此階段要使用項目管理工具Project對項目的進度計劃、項目的人員組織進行規劃安排。此階段還要準備需求分析測試文檔。
2) 分析階段/概要設計階段。
使用面向對象方法和輔助CASE分析在線購物子系統,建立用戶用例模型,建立靜態類圖和對象圖,分析系統時序圖,分析系統事件交互過程,對系統的整體架構進行劃分,提出系統分析方案。并且可以在需求分析Web界面模型的基礎上,完善用戶界面的分析和功能分析。
使用結構化分析方法分析后臺管理MIS系統,分析系統流圖、數據流圖,分析E-R模式圖,提出系統概要設計方案。
從項目管理的階段考察該階段的完成情況,對相關文檔進行歸檔,對項目進程進行考核。在此階段也要做好各項分析階段測試文檔的內容。
3) 設計階段。
針對在線購物子系統,使用面向對象設計方法設計類、對象和消息,定義系統各層次的接口,建立對象交互圖和順序圖,設計用戶界面,提出系統設計報告。可以在前一階段的需求原型和分析模型的基礎上進一步完善功能和界面,形成初級的前臺系統。
針對后臺管理子系統,使用結構化設計方法,設計程序流圖,設計數據庫的內容,提出詳細設計說明書。
通過項目設計計劃安排考核該階段項目進展狀況。此階段還要做好設計階段測試文檔的內容。
4) 實現階段。
基于系統設計報告或系統詳細設計說明書,采用.NET技術和相關語言進行編程,實現該電子商務應用系統,數據庫系統采用主流SQL SERVER2005。此階段的工作可以在前述建立的原型系統的基礎上進一步編程實現,完成實際需要的信息系統。
此外還要對軟件系統進行單元測試和集成測試,并把該系統發布到網站上進行實際運行測試。同時開展相應的系統維護工作。
通過項目的實施計劃和測試計劃考察該階段項目的進展情況。
4 實踐內容考核方式
以小組協作的方式完成實踐案例的開發,實踐課程的考核,通過開發項目的完成速度和質量(權重15%)、軟件文檔的規范和完整程度(權重20%)、個人在小組中的協作溝通能力(權重15%)、小組的創新能力(權重15%)、個人的專業知識水平(權重10%)和課程答辯的表現(權重15%)等方面,以10分制的方式來給
學生打分。而且對學生個人的打分,還要結合其他同小組成員對該學生的工作和協作能力的打分(占總權重的10%),最終得到學生的綜合成績,在此評分考核過程中盡量做到客觀地給學生應得的分數。
5 結語
軟件工程是多學科交叉的系統科學,是工程實踐特點顯著的課程。我們在研究中借鑒前人的成果上,并根據實際的教學和項目開發經驗總結了軟件工程課程的特點,提出了軟件工程課程實踐內容的知識體系,并在此基礎上給出了一個案例方案的架構。我們希望該研究和實踐對相關的教師和學生能有一定的啟示和借鑒作用。
(注:本文的研究得到中央財經大學教改課題的資助,在此表示感謝。)
參考文獻:
[1]