基于敏捷方法的软件任务管理系统设计与实现
2015-09-18王四云任洪敏
王四云,任洪敏
(上海海事大学信息工程学院,上海201306)
基于敏捷方法的软件任务管理系统设计与实现
王四云,任洪敏
(上海海事大学信息工程学院,上海201306)
阐述敏捷软件开发方法及核心思想,采用迭代开发,增量产生成果持续的交付,保证每次发布和迭代交付的产品均是可运行的代码。详细介绍任务管理系统的总体设计与功能分析,并对任务进度的时间管控方式进行分析研究。软件任务管理系统的实现,对中小型软件开发公司产品开发任务进行严格管控,保证项目按时完成并达到预期目标。
敏捷方法;迭代开发;任务管理
0 引言
随着计算机技术的快速发展与互联网时代的来临,人们已经进入了信息化的时代,或者称为数字化时代。信息化的发展和日趋激烈的商业竞争,使软件开发公司在产品开发过程中不再满足于采用传统的方式进行任务管理,因此,开发一款轻量级、敏捷、高效的任务管理系统是必然的。同时国内很多中小型软件开发公司在产品开发过程中面临开发时间紧迫、任务管理混乱、需求不断变化的困难。在项目开发过程中通常会面临如下问题:
(1)用户即使很明确自己想要的功能,却不能把项目具体需求明确描述出来,需求在项目研发过程中时常变更。
(2)在项目开发过程中,如果技术人员突然离职,新招聘的开发人员不清楚产品的开发进度及任务的需求等,这常常会影响到项目按时完工的进程。
(3)由于软件开发是一个团队协作的项目,如果一个开发团队不能即时了解项目的进展情况,信息封闭,会严重影响项目经理对产品任务的有效管理。
1 敏捷定义及核心价值观
与传统的软件开发方法不同,敏捷软件开发方法强调在开发过程中对未来可能出现的不确定性作出全面反应,它也是一种轻量级的开发方法。传统的软件开发方法针对项目制定长时间跨度的详细计划并严格依照计划进行工作,而敏捷型软件开发方法善于迎接需求变更,使软件项目开发过程随需求的变更而改变。敏捷方法的核心价值概括如下:个体和交互胜过过程和工具;可工作的软件胜过面面俱到的文档;与客户协作胜于合作谈判;适应变化胜于按部就班。敏捷方法(Agile)是一种迭代-增量交付相结合的项目开发方法,其核心是通过不断交付可运行的产品来满足客户的需求。
迭代-增量方法将传统的开发周期分割成若干个循环往复的迭代周期,保证软件以进化的方式逐渐推进。迭代开发实施的是重复与半并行化的开发活动,作为一个经验方法来说,迭代周期越短越好,迭代开发优点如下:在项目研发初期就可减少或避免高风险的发生;随着迭代次数的增加,对计划与评估也更加有信心;根据迭代的结果可以决定完成日期的趋势。采用迭代-增量开发,能立即带来不可估量的效益,图1所示是局部迭代敏捷过程管理框架。
图1 局部迭代敏捷过程管理框架
2 任务管理系统的设计与分析
本系统以中小型软件开发公司针对软件开发过程的任务管理为研究内容,构建了在B/S结构下的任务管理系统,系统针对中小型软件开发公司的业务需求与项目开发过程中任务进度管理的问题进行分析设计,通过对任务时间进行严格的管控,保证项目产品能按照预期目标交付出用户满意的产品。系统在开发过程中,采用敏捷迭代-增量的开发方法,快速地产生成果,持续地交付,保证项目能够按照预定的进度、质量和成本顺利完成。
2.1系统总体的功能设计
采用敏捷迭代-增量开发的方法,设计一款高效的任务管理系统,该系统主要为任务管理者和执行者提供工作平台,具有管理权限的成员通过任务管理系统可以及时准确地了解项目组成员的分工状况、项目开发进度和项目子任务的具体执行情况等。在软件开发过程中,传统的任务管理系统主要是管理者对整个项目进展情况进行管理,本系统采用自顶向下与自底向上相结合的管理方式对项目开发过程中的任务进度进行严格管控,即具有权限的组织机构管理者与项目开发人员之间的协作。
对中小型软件公司的组织机构进行层级式管理,按组织机构等级大小进行权限分配,即具有较高等级的组织结构可以添加比它等级低的组织,而低等级的组织结构下面不能再添加比它等级高的组织机构,例如公司下面可以添加部门,而部门下面就不可以添加公司组织。组织机构的主要需求是添加组织信息、修改组织信息、删除组织信息及维护其组织机构的权限等,不同的组织结构拥有自己独特的图标识。当对某一组织机构设置管理权限时,其组织机构权限升级,从普通的组织结构转换到管理部门,同时其所在成员权限也得到提升,对所在部门的项目任务进行管理。管理者与开发成员的用例图如图2所示。
图2 管理者和开发成员的用例图
在项目开发过程中,开发人员依照需求进行任务计划的制定。一个完整的项目,在开发过程中会被创建多条任务,并且主任务下面可以包含多条子任务。一个任务一般有“未开始”、“进行中”和“已完成”三种状态。一个新任务被创建时,该任务的状态默认为“未开始”;新任务一旦被执行,其状态被修改为“进行中”;当任务被完成时,具有任务权限的执行者将其状态改为“已完成”。具有管理权限的项目管理者在创建一条开发任务后同时可以为此任务指派执行者。任务管理系统的总体工作流程图如图3所示。
2.2项目开发时间管控分析
从总体上说,项目在开发过程中对进度的管理主要分两方面,一方面是按组织机构分层级自顶向下的方式进行时间管控,另一方面是项目开发人员自底向上的进度反馈方式。把分层级具有管理权限的成员自顶向下的方式与普通开发成员自底向上的方式巧妙结合起来,从而保证项目组能够交付出客户满意的产品。每一个软件产品都有自己的计划开始时间、计划结束时间、实际开始时间和实践结束时间,项目的完成进度可以通过进度条一目了然。而项目的整体开发进度与项目任务完成比率有重要关系,计划完成进度和实际完成进度是项目产品的2个重要属性。计划完成进度依赖于计划开始时间、计划结束时间和当前日期。
图3 任务管理系统的总体工作流程图
计划完成进度=(当前日期—计划开始时间)/(计划结束时间—计划开始时间)
项目的实际完成进度是项目开发过程中任务的完成比率,如果计划完成进度大于实际完成进度,项目信息栏中的进度条颜色为红色,这种显示提醒项目开发者项目实际完成进度已落后与计划完成进度。项目实际进度落后与计划完成进度的原因有很多种,有些原因不需要调整,如任务接受者反馈进度过于保守等;而有些原因是需要调整的,如某条任务中途放弃了,项目管理者就要及时调整任务了。需要注意的是在任务调整时,一定要在迭代周期确定的完成日期范围中调整。
2.3任务数据表的设计分析
任务管理系统采用MySQL数据库对数据信息进行存储。任务管理系统的数据库(manager)主要由以下表组成:组织信息表(organ Infor)、员工信息表(userInfor)、产品信息表(productInfor)及任务信息表(task Infor),表与表之间存在相互依赖的关系,如图4所示。组织机构是一个树形结构,organID为自动增长型,当组织结构为根节点时,其parentId设置0。由表的依赖关系图可以看出,组织结构信息表中的主键是员工信息表及产品信息表的外键,产品信息表中的产品名是任务信息表的外键。组织信息表存储的是组织机构的信息,不同的组织机构都有自己特有的标识,在数据库表中用organType来标识,organAdmin的值用来判断组织机构是否具有权利权限。
图4 数据库中表之间的依赖关系
3 基于敏捷方法的任务管理系统具体实现
本系统采用敏捷迭代开发方法,增量地产生成果、持续地交付,优先完成高优先的需求。采用敏捷开发方法可以满足用户需求的不断变更,保证每次迭代交付的产品都是可运行的。任务管理系统是基于Web的实现方式,在具体的技术实现上,考虑到企业的应用场合和将要部署的环境,系统采用流行的B/S结构,如图5所示。按照应用层、业务层和数据层的标准三层架构进行分层开发,也使系统具有良好的弱耦合性,方便未来的扩展和整合。系统开发过程中,追求高效、简洁和美观,在程序前端方面使用HTML显示数据信息,使用jQuery、jQuery Easy UI两个JavaScript框架来实现前端与后台的数据传输及HTML页面的布局,使用CSS表现数据信息在HTML页面的显示效果。在程序后台方面使用Servlet作为后台程序的基本框架,使用Java语言对数据信息进行处理。在数据库方面使用MySQL存储更新数据。
图5 系统体系结构图
用户在登录界面需要对其用户名及密码进行身份验证,通过与后台数据库中的信息进行匹配,在通过身份验证成功后也需要对其权限就行验证,判断其所在组织机构是否具有管理权限。对权限的验证及数据库访问代码如下:
Class.forName("com.mysql.jdbc.Driver");
Connection con=DriverManager.getConnection(url," root","123456");
String sql="select*from userinforwhere userName=?and password=?";
PreparedStatement ps=con.prepareStatement(sql);
ps.setString(1,userName);
ps.setString(2,password);
ResultSet rs=ps.executeQuery();
在项目中,组织机构是一个树形层次的结构,每个树形结点的id在后台是自增生成的,要想在插入新的组织结构立刻获得在数据库中生成的id用到JDBC的一种技术,具体核心代码如下:
Statement st=conn.createStatement();
String sql="insert intomanager.organinfor(text,type,admin,parentId)
value('"+getText()+"','"+getType()+"','"+getAdmin()+" ','"+getParentId()+"');";
st.executeUpdate(sql,Statement.RETURN_GENERATED_KEYS);
ResultSet rs=st.getGeneratedKeys(); !if(rs.next()){
int selectId=rs.getInt(1);
String sid=String.valueOf(selectId);
}
4 结语
在项目管理过程中,如何缩短产品开发周期以及任务信息的获取、展现与核实,对项目按计划完成具有非常关键的作用,同时把握项目进度估算也很重要。在敏捷开发任务管理中,项目组根据开发团队自身特点和项目需求进行管理,同时采用管理者分层级自顶向下与开发成员自底向上相结合的方法值仍然得继续研究下去,充分发挥项目组软件开发的潜力,以及对进度进行高效管理的策略。
[1]K.Conboy.Agility from First Principles:Reconstructing the Conceptof Agility in Information Systems Development[J].Inform.Syst.Res, 2009,20(2):329~336
[2]刘华清.敏捷开发中进度管理的策略[J].数字通信,2013,40(4):78~82
[3]张曙晟.基于局部迭代的敏捷过程管理研究[J].软件导刊,2011,10(9):20~25
[4]胡乔.基于JSF框架的权限管理系统的研究与实现[J].计算机技术与发展,2010,20(11):22~28
[5]关忠诚,程刚.基于敏捷方法的软件项目管理研究[J].重庆大学学报,2005,11(6):86~92
[6]贾郭军.软件项目实施过程中的进度管理研究[J].西安科技学院学报,2004,24(2):78~85
[7]张琦,林碧英.浅谈软件开发过程管理中的进度管理[J].管理论丛与教育研究专刊,2008,36(8):90~96
[8]刘华清.敏捷开发中进度管理的策略[J].数字通信,2013,40(4):78~80
[9]曹质朴.基于Rally平台的敏捷项目进度追踪系统的设计与实现[D].北京:北京交通大学,2012
[10]徐建军.软件缺陷跟踪系统的设计与实现[D].大连:大连理工大学,2005
Agile Methods;Iterative Development;Task Management
Design and Im p lem entation of Task Management System Based on Agile Method
WANG Si-yun,REN Hong-min
(College of Information Engineering,ShanghaiMaritime University,Shanghai201306)
Expounds the agile software developmentmethods and core idea,the method of iterative development,generating incremental delivery lasting results,to ensure the delivery of each release and iterative product all is to run the code.Introduces the overall design and function analysis of the taskmanagement system in details,analyzes and researches on the progress of the task time controlmanner.The realization of the software task management system,strict control of small and medium sized software development company product development task,to ensure the project completed on time and to reach the expected goal.
1007-1423(2015)16-0069-05
10.3969/j.issn.1007-1423.2015.16.016
王四云(1989-),女,河南开封人,硕士研究生,研究方向为软件开发方法与软件项目管理
任洪敏(1969-),男,上海浦东人,博士,副教授,研究方向为软件体系结构、软件复用、软件项目管理
2015-04-16
2015-05-20