韓萬江 姜立新 張笑燕



摘? 要: 針對目前軟件工程教育實踐性弱的問題,本文基于某軟件項目(簡稱SPM)案例的開發過程,介紹了軟件工程化的流程,說明了軟件生存期中各軟件過程的任務和交付成果. 闡述了需求分析、概要設計、詳細設計、編碼實施、集成與部署,系統測試、試運行,維護等軟件過程。整個案例將軟件工程的開發流程與建筑工程的實施流程進行了對比了,提出了實現軟件工程化的可行性,為軟件工程的案例化教學提供基礎。
關鍵詞: 軟件工程;工程化;項目案例;軟件開發流程
【Abstract】: Aiming at the problem of weak practice in software engineering education at present, this paper introduces the process of software engineering based on the development process of a software project (SPM) case, and explains the tasks and deliverables of each software process in the software lifetime. The software processes such as requirement analysis, outline design, detailed design, coding implementation, integration and deployment, system testing, trial operation and maintenance are described. The whole case compares the development process of software engineering with the implementation flow of construction engineering, and puts forward the feasibility of realizing software engineering, which provides the basis for the case teaching of software engineering.
【Key words】: Software engineering; Project case; Software development process
0? 引言
目前軟件工程教育存在理論與實踐脫節的現象,急需在軟件工程教學過程中加強實踐教學的可操作性,建立可行的案例庫,而基于案例驅動的教學模式可以有效提高學生的實際分析問題能力和動手能力,被更多人推崇和認可。本文介紹了我們開發的一個基于工程化的軟件項目案例,以此為典范, 可以推進以案例庫為導向的現代軟件工程案例庫教學模式.本案例是針對某軟件項目(暫稱為SPM項目:https://pan.baidu.com/s/10aOJobW4N149zSiqjy9kOQ)的工程化的軟件開發過程,展示了各個階段的任務和交付結果,本案例被評為了全國軟件工程優秀
案例。本案例主要包括項目需求的提出、任務分配、需求分析、概要設計、任務細分、詳細設計、開發實施、集成測試、試運行等環節,如圖1所示,整個案例將軟件工程的開發流程與建筑工程的實施流程進行了對比了,直觀易懂,以此體現了軟件工程化的理念。
1? 需求分析過程
項目需求是軟件開發的基礎,項目第一步是用戶需求提出,類比房屋工程項目:例如某學校希望建設一個教學樓,校方就需要提出建設教學樓的要求。SPM項目用戶提出的需求是建設一個課程網站,這個階段,用戶和開發方對需求進行一定的交流。為了更好與用戶溝通需求,并進行需求分析,可以建立需求原型,案例中展示了采用Axure RP工具進行原型開發過程,如圖2所示,可以類比建筑工程項目的沙盤模型。
通過原型方法與用戶確定了需求,進行需求分析,編寫基于UML的需求規格,完成了第一個過程的交付成果:SPM項目的需求規格,案例中介紹和展示了SPM項目的需求規格,如圖3所示。
2? 概要設計過程
需求規格完成之后,進行概要設計,概要設計主要包括架構設計、模塊設計、接口設計、數據結構設計、界面設計等等。類比教學樓工程項目:概要設計相當于教學樓的主體設計。
本項目的系統架構采用的是多層的SSH架構,類比教學樓工程項目:架構設計相當于教學樓的架
構設計,如圖4所示。一個房屋架構有很多,例如木結構、磚混結構、鋼筋混凝土、鋼結構,結構不同,施工環節不同。軟件系統也有很多架構,軟件架構設計決定了后續開發的邏輯思路。
本項目的模塊設計,采用自上而下的設計方法,通過E-R設計進行數據庫設計,也有界面流設計,如圖5所示。
由此,完成第二軟件過程的交付成果:基于多層架構的SPM項目概要設計文檔,案例中有對概要設計文檔的介紹和展示,如圖6所示。
3? 詳細設計過程
如果概要設計不夠詳細,還可以進行詳細設計,類比教學樓工程項目:這個詳細設計相當于教學樓的各個單元房間的設計。詳細設計的主要任務是設計每個模塊的實現算法、所需的局部數據結構。如圖7所示。
SPM項目的詳細設計描述了概要設計中模塊在界面層、控制層、業務邏輯層、數據持久層等的實現邏輯,如圖8所示。詳細設計描述可以采用流程圖或者偽代碼等形式。
最后完成本過程的交付成果:詳細設計文檔,如圖9所示。案例中有對詳細設計文檔的介紹和展示。
4? 編碼實施過程
類比教學樓工程項目按照圖紙施工, 軟件項目的編碼實施的圖紙就是概要設計和詳細設計,如圖
10所示。施工有施工規范,編碼有編碼規范,例如地面、墻面、管道等等需要遵守統一的規范,軟件編碼過程也一樣,大家必須遵守統一的規范。圖11是案例項目的編碼規范。
開發過程需要安裝配置開發環境, 案例中有學生操作和講述開發環境的安裝和配置過程。編碼實施過程中版本管理過程是非常重要的要素,案例中也說明了SPM項目的編碼過程:開發環境安裝好之后,進入開發過程,所有開發人員從SVN服務器上下載系統代碼及其代碼環境,每個模塊完成之后,通過配置文件可以將模塊插入系統中,實現了靈活開發模式。模塊開發完成之后,將代碼提交到SVN服務器,集成運行。如圖12所示,案例中展示了幾個模塊的編碼實施操作,如圖13(a)所示,同時也強調代碼檢查環節,如圖13(b)所示。案例中展示了本過程的交付成果:工程文件代碼,如圖14所示。
5? 安裝與部署過程
模塊全部開發完成之后,在SVN服務器上集成,形成項目最后的JAR包,然后將這個JAR包安裝部署到Web服務上,系統就可以運行了,項目案例中有學生的操作講述過程。如圖15所示。
6? 軟件測試過程
類比教學樓工程項目:測試過程相當于對教學樓的質量驗收過程。軟件測試是根據軟件開發各個階段的規格說明和程序的內部結構而精心設計的一批測試用例,并利用這些測試用例運行程序以及發現錯誤的過程。項目案例也給出項目的測試基本流程,如圖16所示。
其中:
測試需求—明確測試內容(功能、性能),
測試設計—根據需求規格,設計測試用例
測試實施—展示功能、性能測試
測試結果—提交測試結果(Bug、執行記錄)
測試報告—根據測試過程,統計測試結果,給出測試結論
項目案例中也展示了針對SPM項目的測試步驟和交付成果,如圖17-19所示。
7? 軟件試運行過程
案例中類比教學樓工程項目:上線試運行相當于教學樓全部完工,達到使用的條件。一般項目有試運行階段,試運行的目的是全面驗證和確認系統是否能使用,根據需要可以增加上線測試,上線測試是在試運行階段對系統的測試過程,是系統正式運行前的最后測試,以保證測試系統將來可以正確運行,為突出重點,上線測試重點可以放在測試系統的性能上,當然也有功能方面的測試。
8? 軟件維護過程
類比教學樓工程項目,在使用過程中,可能需要維護,軟件也一樣,軟件維護的工作從軟件產品的試運行就開始了,所謂維護是為了保證軟件系統在一個相當長的時間內正常運行而做的工作。由于本系統的設計考慮了可維護性,所以,對于系統的某些維護是很方便的。
9? 結論
總之,本文對基于工程化項目案例的實施過程進行了描述,說明了軟件項目的整個工程化流程,以及相應的交付成果,總結案例項目(SPM)交付成果如下:
(1)需求規格: BUPTSSE-SPM-SRS
(2)概要設計:BUPTSSE-SPM-HLD
(3)詳細設計:BUPTSSE-SPM-LLD
(4)代碼規范:BUPTSSE-SPM-CodeStd
(5)項目工程代碼:BUPTSSE-SPM_Project.rar
(6)測試文檔
a)測試用例:BUPTSSE-SPM-TestCase
b)Bug文件:BUPTSSE-SPM-Bug
c)測試用例執行文件:BUPTSSE-SPM-Test CaseResult
d)測試報告:BUPTSSE-SPM-TestReport
通過這個案例的實施流程可以加深對軟件工程化的理解,為真正實現工程化軟件項目提供基礎。后續還會在案例的各個階段的實施過程以及相應的,設計和開發更加獨立化的,標準化處理模塊,為將來建立軟件統一模型提供實踐基礎。
參考文獻
韓萬江, 姜立新. 軟件工程案例教程[M]. 北京: 機械工業出版社, 2017年6月.
趙輝, 李萬龍, 鄭山紅. 項目導向案例驅動”的軟件工程教學模式[J]. 計算機教育2012年10期.
王辰尹, 衣楊. 面向應用型IT人才培養的軟件工程教改關鍵問題研究[J]. 計算機教育2014年08期.
王靜, 以案例庫為導向的“現代軟件工程”教學模式探索[J]. 教育教學論壇, 2018年16期.
鄭麗萍, 王社偉, 趙玉娟. 面向軟件工程專業的Java課程群教學規劃研究[J]. 軟件導刊, 2015年12期.
韓萬江. 系統化的軟件工程教學模式[J]. 南京大學學報,第45卷, 2009年10月.
韓萬江, 張笑燕. 基于SPOC的混合式教學模式課程建設初探[J]. 工業和信息化教育, 2015. 11.
韓萬江. 軟件工程專業認證的新思路研究[J]. 軟件, 第36卷第3期, 2015年3月.
韓萬江. 《軟件項目管理》課程中理論與實踐的交融關系[J]. 軟件, 第35卷第2期, 2014年2月.
馮杰, 屈志毅, 李志輝. 基于分類稀疏表示的人臉表情識別[J]. 軟件, 2013, 34(11): 59-61.