韩万江 姜立新 张笑燕
摘 要: 针对目前软件工程教育实践性弱的问题,本文基于某软件项目(简称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.