许跃颖
(北京师范大学珠海分校 广东省珠海市 519000)
Web应用程序开发实践需要全面了解多个课程,例如前端,数据库,编程语言和框架。对于计算机专业的学生而言,整个系统的开发过程为他们提供了实践机会。现阶段,项目实践内容执行形式依然沿用传统的SP+Javabean+servlet,而对现如今在程序开发方面应用率不断增加的框架技术了解不足,应用率较低。
除此之外,系统开发时,传统的瀑布式开发模型效率并不高,流程杂乱,在质量管控方面存在严重不足。本文在系统开发时,尝试在Web应用程序中采用SSM轻量级框架,并在开发过程管理工作中采用敏捷开发模型,将规定链接应用于项目开发流程中,引导学生有序进行开发。
在企业级开发的早期,SSH框架很普遍,但是由于struts安全问题,该框架逐渐被企业放弃,并由轻量级的SSM框架将其取代,该轻量级的SSM框架的组成结构包括Spring,Springmv,Mybatis。
其组成框架包括三项。Web开发过程中,它们各自发挥自身作用。Spring是业务逻辑的依托,Mybati则协同数据库完成交互。Spring MVC中存在MVC模式,且非常完整,该模式可以将用户请求转换成数据模型。结果将返回到weh页面。
SSM是标准的MVC模型,它将整个系统分为4层:视图层,控制器层,服务层和DA0层。 Spring MVC的作用包括视图管理以及请求转发,spring的作用为管理业务对象,MyBatis的作用则是数据对象。受到DA0与Service层耦合特性不高的影响,在开发时不得共同运行。二Controller与View层耦合特性正好相反,所以在开发时二者可以相关联。
现阶段,SSM框架具有较高的应用可行性,由于其理解难度低,在各大公司普遍使用。
瀑布模型是传统的软件开发较常使用的模型之一,在体系结构设计时,离不开需求文档。需求和设计确定后,开始编码,并根据先前的设计开始开发。该模型的应用,使开发过程独立存在与用户需求。在用户需求发生改变时,需承担较高的变化成本,并且相对复杂。敏捷开则以用户需求为出发点,通过迭代的方式来完成软件开发。其更加追求开发速度,渐进式的完成工作软件交付。
Scrum和XP作为敏捷开发的方法,其应用率较高,本文即是用的Scrum敏捷开发法。Scrum搭建了流程框架,内含大量预定义及实践角色。它是用于有效开发软件的过程,包括计划和模式。敏捷开发方法中的Scrum流程如图1所示。
图1:Scrum开发流程
图2:SSM框架流程
项目功能需求经分解后,形成不同的用户故事,分几个不同的迭代周期完成项目开发,任何迭代周期(sprinf)选择实施一个或两个用户故事。每个用户故事都分为几个迭代任务,开发人员需要按时将这些任务完成。整个迭代过程有2-6周实践,其特征表现为可操作性、可见性等。团队成员对每天的工作任务进行讨论总结,并回顾上一次的结果。
敏捷开发需收集方式为迭代收集,敏捷软件开发全程均存在原始软件开发的体系结构设计。Scrum的迭代开发使得开发难度降低。而大部分学生缺乏开发经验,在项目开发时反而更容易遵循规范引导,有利于学生开发和学习,熟悉系统开发流程[1]。
在开发Web应用程序时,对校友管理系统的开发需采用SSM框架,Scrum敏捷开发模型用于管理整个开发过程。有望实现下列目标内容:
(1)熟悉SSM框架并予以掌握,采用SSM框架完成Web系统的设计与开发;
(2)参与从需求分析,用户界面设计到业务逻辑和数据存储的完整系统开发过程;
(3)发达专业,严格遵守相关规范操作,合理应用开发工具完成编程辅助性工作,纠正错误并测试;
(4)掌握正确的迭代开发方法,学习掌握将相对复杂的系统分解后,获得执行度高的子任务,以迭代形式将目标暂存;
(5)团队成员可以互相积极合作。
校友管理系统中包含多种功能,涉及前台校友信息收集、电子校友卡注册、事件注册等;还包括校友信息查询、事件发布、审阅、后台统计。其系统框架分为四层。其中包括View层,Conlroller层,Service层和DAO层。View层的接口设计采用了Bootstrap框架,是目前较流行的框架结构,Dao层则对器层进行控制。服务层和Dao层数据经封装后进行传输,到达Pojo对象,如图2所示。
整个实现过程View层和Controller层联系紧密,无论是编译还是开发时,二者共同参与。
Scrum开发时,软件需求分为一个用户故事(用户故事,缩写为US),所有用户有属于自己的故事描述:说明为达到目的所要做的事情,也就是说,从用户的角度描述产品功能的不同角色的特定需求。根据这种拆分原则,可以将校友信息管理系统拆分为多个用户故事。
团队共同开发时,尤其是Scrum开发时,为提高项目管理与控制的有效性,需要采取下列措施:
(1)任务进度管理;
(2)开发商提交和合并代码;
(3)版本控制。
为了解决这些问题并有效提高开发过程的管理效率,需要有效使用相关工具。
在项目管理工具中,TFS和Jira的应用率较高,在工作领域中通常会使用事务跟踪工具,包括客户服务、任务跟踪、缺陷跟踪、项目跟踪、需求收集、敏捷管理等。通过上述管理工具的使用,可提高迭代计划制定、任务跟踪、任务分解的便利性,从而获得更高的开发与管理效率。校友管理系统在开发时,使用的管理工具为Jira[2]。
所有开发团队都无法逃脱代码版本控制问题。这与是否选用敏捷开发或者相关项目管理工具没有直接关系,版本控制并不会受这些因素的影响。该系统在开发时,选用的版本控制工具为Git。
为了更好的对项目进行管理和控制,有几个问题必须解决,尤其是在团队Scrum开发下,比如:
(1)团队任务的进度条;
(2)团队开发人员在任务中提交的代码;
(3)内容的版本。
现在TFS和Jira这两种工具普遍采用率高,这样的工具可以提高开发流程的效率,例如跟踪任务,跟踪缺陷,服务客户和管理审批等项目,实时跟踪并快速制定方案提高了开发的速度。项目开发中代码很重要,代码的版面控制更重要,虽然版面控制的工具不止一个,但是现在运用最多的版面控制工具还是Git,并且还使用Gitlab来搭建代码库。
以往项目开发时,收到学生开发经验不足的影响,其代码编写习惯不良,编写标准以及管理流程混乱,所以项目代码质量通常很差且很困难。
3.5.1 维持
Scrum开发过程更加注重质量控制。开发人员被要求使用新代码,融合于自己的本地代码,便可展开新的开发,让开发工作可以持续下去。任务完成后,先对自己的代码进行测试,确定其可以正常运行方可向代码库提交,避免对团队其他成员的开发工作造成影响,从而影响整个系统的正常运行。迭代时,坚持下列步骤完成迭代,为项目代码质量提供保障,其中包括编码统一规范性,代码样式;静态代码审查;单元测试;持续集成;代码审查和重构(审查和重构)。
3.5.2 主要内容
(1)任务的完成量以及完成难度。通过项目管理工具Jira完成迭代计划的开发时,所有任务的执行人员以及估计时间都处于非保密状态。
(2)信息上传。您可以在GiIlab存储库中查看每次上传的时间和人员。
(3)代码质量。在检查代码时,通过问题数量统计结果结合代码静态分析方式来测试代码质量。
(4)项目进度。记录实际用时时长与预估时长进行对比,二者之间的差异可通过Jira系统中的老化图表得到反馈。
(5)软件功能的实现。评估以上四项内容之后,评价开发团队的综合表现。由于整个开发过程时团队共同完成的,需要将其按照学生各自的任务完成情况进行评分,评价内容包括任务完成量、开发时长、代码质量。
采用敏捷开发流程后,考核涉及整个开发流程的多方面内容:
(1)完成的任务数量和难度。在项目管理工具Jira里制定的迭代计划,每个任务的执行人和预估时间都是公开的。
(2)提交(commit)的信息。在版本库GiIlab里面可以看到每次commit的时间、人员等信息。
(3)代码质量。可根据代码评审时发现的问题数量及利用代码静态分析T具时的评分等作为考核参考。
(4)项目进度。实际花费时间和预估时间的差,在Jira系统中可通过燃尽(bum out)图体现。
(5)软件功能实现情况。
综上所述,在Web应用软件开发过程中,采用SSM轻量级框架,实施案例教学时选用校友系统的案例,帮助学生更好的了解企业级架构框架,并全面理解并申请多个专业课程。提高专业知识水平和系统开发技术。系统开发采用敏捷开发Scmm模型。按照用户故事分解、任务分解、迭代计划的流程,分解复杂程度较高的项目,形成不同的子项目后更好的迭代。