实 验 技 术 与 管 理 第37卷 第2期 2020年2月
Experimental Technology and Management Vol.37 No.2 Feb. 2020
ISSN 1002-4956 CN11-2034/T
DOI: 10.16791/jki.sjg.2020.02.038
基于敏捷开发的SSM Web 应用开发实践
龚兰兰1,凌兴宏1,2
(1. 苏州大学 文正学院,江苏 苏州 215006;2. 苏州大学 计算机科学与技术学院,江苏 苏州 215006)
摘 要:Web 应用开发实践是计算机专业学生进行完整系统开发、体验软件开发整体流程的实践课程。为指导学生规范地进行项目开发,体验企业的真实开发流程,将敏捷开发模式应用到实践教学中,探讨了敏捷开发的Scrum 方法在基于SSM 框架的Web 应用开发过程中的具体实施过程和策略。 关键词:敏捷开发;Scrum ;SSM 框架;Web 开发
中图分类号:TP311 文献标识码:A 文章编号:1002-4956(2020)02-0160-04
Practice on development of SSM web application
based on agile development
GONG Lanlan 1, LING Xinghong 1,2
(1. Wenzheng College, Soochow University, Suzhou 215006, China;
2. College of Computer Science and Technology, Soochow University, Suzhou 215006, China)
Abstract: Web application development practice is a practical course for computer majors to develop a complete system and experience the whole process of software development. In order to guide students to develop projects in a standardized way and experience the real development process of enterprises, this paper applies the agile development mode to practical teaching, and probes into the specific implementation process and strategy of Scrum method of agile development in web application development process based on SSM framework. Key words: agile development; Scrum; SSM framework; Web development
Web 应用开发实践需综合前端、数据库、程序设
计语言和框架等多门课程知识,是计算机专业学生进行完整系统开发的实践课程。目前项目实践的内容都是以较为传统的JSP+Javabean+Servlet 形式进行,缺乏对行业流行框架技术的理解和应用。另外,在系统开发过程中,采用传统的瀑布开发模型,效率较低,流程不规范,缺乏有效的管理和质量控制手段。本文将SSM 轻量级框架引入Web 应用实践,进行系统开发,同时采用敏捷开发模式进行开发流程的管理,指导学生通过规定环节循序渐进地完成项目的开发。
1 SSM 框架
SSM 是Spring 、Spring MVC 和MyBatis 集成的框架,是目前比较主流的Java EE 企业级框架,适用
收稿日期: 2019-05-29
作者简介: 龚兰兰(1985—),女,江苏宿迁,硕士,讲师,研究方向为信息系统和机器学习。
E-mail: lanlan-small@163
于搭建各种企业级应用系统[1]。Spring 是一个轻量级的控制反转(IoC )和面向切面(AOP )的容器框架[2]。它可以装载bean ,利用这个机制,就不需要在每次使用某个类的时候进行初始化,很少用到关键字new [3]。Spring MVC 分离了控制器、模型、分发器以及处理程序对象的角,这种分离让它们更容易进行定制。MyBatis 是一个基于Java 的持久层框架, 是对jdbc 的封装,它让数据库底层操作变得
透明[4]。MyBatis 使用XML 或注解用于配置和原始映射,通过配置文件关联到各实体类的Mapper 文件,Mapper 文件中配置了每个类对数据库所需进行的sql 语句映射[5]。可以说,MyBatis 是一个用来帮助管理数据增删改查的框架。
SSM 是标准的MVC 模式,将整个系统划分为View 层、Controller 层、Service 层和DAO 层4层[3],用Spring MVC 负责请求的转发和视图管理,用Spring 实现业务对象管理,用MyBatis 作为数据对象的持久化引擎[5]。由于DAO 、Service 两层之间的低耦合特性,
龚兰兰,等:基于敏捷开发的SSM Web应用开发实践161
在开发时要独立进行;由于Controller、View两层之间的高耦合特性,在开发时需要关联进行。
SSM框架是迄今颇为主流的企业级架构方案,其简便易懂的特点是被许多公司广泛使用的重要原因。
2敏捷开发
传统的软件开发一般采用瀑布模型,需求文档是架构设计的主要依据,前期定下需求和设计后,进行编码实现,开发过程中按照前期的设计进行。这种开发模式将开发过程和用户的需求分割开来,面对后期用户需求的改变,变更成本和复杂度较大。
敏捷开发(agile development)是一种以用户需求为核心,采用迭代、循序渐进的思路进行软件开发的方法[6],它的核心思想在于快速、增量式地交付可工作的软件。
常用的敏捷开发有XP和Scrum两种方法,本文采用Scrum方法进行敏捷开发。Scrum是一个包括一系列实践和预定义角的过程骨架,是一种流程、计划、模式,用于有效率地开发软件[7-8]。
图1是敏捷开发方法Scrum的流程。项目的功能需求被分解成若干个用户故事(user story),整个项目分几个迭代周期来完成,每个迭代周期(sprint)在制定计划时选择实现其中一个或两个user story。每个user story又被拆分成若干个迭代任务(task),开发人员每天完成其中的几个task。经过2~6周的迭代过程,具备可视、可集成、可工作的特征,形成可交付的软件增量,团队成员每天讨论前一天完成的工作和当天的任务。
图1 Scrum开发流程
在敏捷开发中,需求按迭代式进行收集,把原先软件过程前期的架构设计,分散到整个敏捷开发软件过程中。
采用Scrum循序渐进的迭代式开发,降低了开发难度,对于没有开发经验的学生来说,更有利于引导他们规范、有序地进行项目开发,有利于他们掌握系统的开发流程。3 Web应用敏捷开发实施
在Web应用开发实践中,使用SSM框架进行校友管理系统项目开发,采用Scrum敏捷开发模式对整个开发流程进行管理,期望达成以下目标:(1)理解和掌握SSM框架,使用框架对Web系统进行设计和实现;(2)参与完整的系统开发流程,从需求分析、用户界面设计到业务逻辑和数据存储;(3)养成良好的专业素养,遵循软件开发规范,能够利用各种开发工具辅助编程、纠错和测试等;(4)掌握迭代开发的方法,学会将复杂系统分解成可执行的子任务,迭代实现分期目标;(5)提升团队组织和协作能力。
3.1系统架构设计
校友管理系统主要包括:前台的校友信息采集、电子校友卡的注册和生成、活动报名等功能;后台的校友信息查询、审核、活动发布和统计等功能。
项目采用SSM的4层架构进行开发,将系统划分为View层、Controller层、Service层和DAO层。
其中View层采用较流行的BootStrap框架进行界面设计,Dao层由Mapper文件实现,Controller层、Service层、Dao层之间的数据以Pojo对象进行封装传递(见图2)。
图2SSM框架流程
在实现的过程中,具体编写流程如图3所示。其中View层(JSP页面)和Controller层之间相互关联,在编译开发时,两者必须同时进行。
3.2用户故事系统需求划分
在Scrum开发流程中,整个软件产品的需求被拆分为若干个用户故事(user story,简写为US),每个user story主要描述:作为某一角我需要做什么,以达到什么目的(as a ……I need to……so that……),即从用户的角度描述不同角对于产品功能的具体需求。按照这样的拆分原则,我们将校友信息管理系统拆分为若干个用户故事,如表1所示。
162 实 验 技 术 与 管 理
图3 SSM 各层开发流程
表1 产品用户故事
user story as a i need to
so that
US1 普通校友 填写校友信息采集,报名参加活动 学校有我的信息,
我可以参加活动 US2 注册校友
注册电子校友卡,生成返校凭证 返校,进入校园相关场所
US3 校友会工作人员 收集、查询、统计校友信息,发布活动 关注校友信息,方便组织开展校友活动US4 校友会管理员 校友信息审核
合法的注册校友可以生成电子校友卡
3.3 迭代计划
使用Scrum 方法,整个项目开发分成几个迭代周
期(sprint )来完成。在开发过程中,需求分析也是迭代进行的,每个迭代周期针对当前的目标需求进行设计,随着每次迭代的进行,逐步调整架构设计。
每个迭代可以选择一到两个user story 来完成。在校友系统中,每个sprint 选择一个user story 为目标来进行开发,整个系统共分为4个sprint 来完成。下面以其中的第一个sprint 为例,制定迭代计划,进行任
务分解。一般由Scrum master 来负责迭代计划的制定,这里可以由教师或小组长来负责。
为了使学生更好地理解和进行Scrum 开发,克服
畏难心理,增强成就感,在进行任务分解时,应尽可能使每个任务task 较小,可执行性较强,一般每个task 预估完成时间最好在1~3 h 。
制定第一个迭代计划时,根据SSM 框架的开发流程,将普通校友功能的开发工作分解为11个task (编号为100-110),并且预估了每个任务的完成时间,如图4所示。然后由开发团队的成员进行任务认领,或由Scrum master 进行任务分配。每个task 都可能处于待做(to do )、进行中(in progress )、审查(review )、测试(user test )、完成(done )和 待定(pending )等状态之一。
图4 迭代计划
开发人员开始做某个task 的时候,要把状态更新到in progress ,做完后由开发组长(助教或教师)负责代码审查(code review ),然后进行功能测试,测试完成后可以更改为done 状态。其中,在审查或测试阶段发现任何问题,可以暂停状态更新,并创建issue 提醒相应的开发人员解决问题,暂时解决不了或者无法确定的更新为pending 状态。
在迭代开发过程中,团队成员每天开例会,讨论前一天完成的任务和当天要做的任务,以及开发过程中遇到的问题。在校友系统开发过程中,其他几个
sprint 对应的迭代计划制定过程类似,不再一一叙述。 3.4 过程控制
在团队开发的过程中,尤其是在Scrum 开发流程下,为了更好地进行项目管理和过程控制,以下几个问题必须解决:(1)任务进度的管理;(2)开发人员代码的提交、合并;(3)版本的控制。为解决这些问题并有效提高开发流程的管理效率,必须借助一些工具。
TFS 或者Jira 是目前采用较多的两种项目管理与事务跟踪工具,被广泛应用于缺陷跟踪、客户服务、需求收集、流程审批、任务跟踪、项目跟踪和敏捷管
龚兰兰,等:基于敏捷开发的SSM Web应用开发实践163
理等工作领域[9]。借助这些管理工具,能方便我们制定迭代计划、进行任务分解和任务状态跟踪等,将大大提高管理和开发的效率。校友管理系统使用Jira作为Scrum开发流程管理工具。
代码的版本控制问题是所有开发团队都不得不面临和必须解决的,即使不采用敏捷开发流程,即使没有其他项目管理工具,版本控制都是必不可少的。目前版本控制工具很多,本系统开发主要使用较为主流的Git 作为版本控制工具,使用Gitlab搭建代码库。
3.5质量控制
在以往的项目开发过程中,由于学生缺乏开发经验、没有形成良好的代码编写习惯,又缺乏统一的标准和过程管理,往往导致项目的代码质量较差,难于维护[10]。
Scrum开发流程比较重视质量控制。要求开发人员每天开始新的开发工作前,先从代码库拿取最新代码与自己本地代码合并,然后进行开发工作。完成一个task后提交自己的代码到代码库之前,一定要确保提交的代码是可以运行的,没有任何bug,否则会影响其他开发人员的开发工作和整个系统的运行。
在迭代过程中,可以采用以下步骤来保证和提高整个项目的代码质量:统一编码规范、代码样式;静态代码分析(static code review);单元测试;持续集成;代码评审和重构(review & refactor)[11]。
在系统开发过程中,为了保证代码质量,要求学生遵守良好的编码规范、代码样式,使用静态代码分析工具FindBugs检测Java代码质量。FindBugs不需要运行代码,可直接对Java文件和Class文件进行分析,通过一些检查条件的设置,即可快速到代码中的错误和潜在缺陷[12]。
另外,在迭代计划中设有专门的评审环节,主要是对提交后的代码做评审(code review),检查提交是否规范,是否存在其他问题。在code review过程中发现问题后,可以建立相应的issue或task,分派给对应的开发人员进行代码重构,待问题解决后可以更新task的状态到用户测试。
在测试过程中,一方面是通过写单元测试案例对代码功能进行测试,借助测试工具检查代码覆盖率;另
一方面是用户测试,主要是从界面操作对系统的功能进行测试。其间发现任何问题、需求变动或产生新的需求,都可以在迭代计划中建立对应的task,进行迭代需求分析和设计。
3.6项目评审
传统的项目考核一般是在项目结束后验收软件作品,学生进行展示和答辩,作为对学生最终考核的依据。采用敏捷开发流程后,考核涉及整个开发流程的多方面内容:(1)完成的任务数量和难度。在项目管理工具Jira里制定的迭代计划,每个任务的执行人和预估时间都是公开的;(2)提交(commit)的信息。在版本库Gitlab里面可以看到每次commit的时间、人员等信息。(3)代码质量。可根据代码评审时发现的问题数量及利用代码静态分析工具时的评分等作为考核参考。(4)项目进度。实际花费时间和预估时间的差,在Jira系统中可通过燃尽(burn out)图体现。(5)软件功能实现情况。
通过以上5个方面的考核,对每个开发小组进行评分,在考虑小组整体完成情况条件下,针对每个学生具体完成任务的数量、代码质量和开发时间等分别评分。
4结语
将SSM轻量级框架引入Web应用开发,以校友系统为例进行任务驱动的案例式教学,旨在使学生学习和掌握目前流行的企业级架构框架,对多门专业课程进行综合理解、应用,提升专业知识水平和系统开发技术。
系统开发采用敏捷开发的Scrum流程,通过用户故事分解、迭代计划制定、任务分解等过程,将一个复杂的项目分成几个子项目来迭代完成。每一个迭代周期只针对当前的目标进行需求分析、设计和实现,引导学生循序渐进地完成一个系统的开发,降低了完整系统开发的难度,提高了学生的开发兴趣和开发能力。
让学生体验了企业真实的开发流程,学习和掌握了除编程以外的过程控制、质量控制等技术手段和工具使用,提高了开发效率和软件质量,掌握了企业主流的技术工具,实现了与行业及市场的接轨,提高了理论知识应用能力。
总体来说,引入企业级应用框架技术及敏捷开发流程进行实践教学,使学生更加贴近企业真实开发环境,激发了学生的学习兴趣和积极性,从整体上提升了他们对工程问题的分析能力和解决能力。
参考文献(References)
[1] 蔺建霞. 运用项目教学模式进行《Java Web应用开发》课程
设计[J].甘肃科技,2013, 29(24): 77–79.
ssm框架简单吗[2] 徐建军,董威,谭庆平,等. 基于Scrum敏捷开发模型的软
件工程实践课程探索[J]. 大学教育,2015(4): 115–116, 134. [3] 王成飞. Scrum方法在万维公司软件开发过程管控中的应用
研究[D]. 兰州:兰州理工大学,2018.
[4] 白晓颖,李山山, 李明杰,等. 基于敏捷开发的软件工程实
践教学探讨[J]. 实验技术与管理,2018, 35(4): 6–11.
[5] 杨军. 基于Scrum的敏捷开发方法在SunGard公司软件开发
中的应用研究[D]. 上海:华东理工大学,2015.
(下转第167页)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论