王 敏, 贾百强, 李 翔, 李小军
(中远海运科技股份有限公司, 上海 200135)
基于JIRA的全生命周期软件开发管理平台
王 敏, 贾百强, 李 翔, 李小军
(中远海运科技股份有限公司, 上海 200135)
针对目前企业级软件开发管理过程中企业管理者、项目管理者及项目成员等面临的问题,依照当前软件开发管理的前沿理念,基于JIRA商业软件套件及其他开源的工具软件集群,提出高效、可靠及一体化的全生命周期软件开发管理平台方案。在此基础上,阐述平台的设计目标、总体架构设计及功能设计与实现等。该平台已在软件开发管理中得到部分使用和验证,可为软件开发生命周期内的各部门、各角色提供从需求、开发、测试到发布的基于任务驱动全流程、全方位的跟踪和综合管理。
软件开发管理; 全生命周期; JIRA软件; 任务驱动; 持续集成
当前IT企业面临着软件项目复杂度高、时间进度慢、质量要求和开发成本高及外部市场竞争激烈等诸多挑战。因此,通过不断提升软件开发管理水平,提高软件的开发效率和质量,降低软件的开发成本,使公司保持长久的活力和市场竞争力,是当前最紧迫的任务之一。通过从人、方法及工具等3个核心维度对软件开发管理过程进行分析,发现企业管理者、项目管理者及项目成员等面临着逐多问题。
1) 企业管理者面临的问题主要有:不能及时、全面地掌握公司所有正在执行项目的整体进度、质量及资源使用情况;不能有效沉淀项目过程中形成的宝贵经验和知识,形成组织资产财富;不能很好地满足外部审计对项目管控的要求。
2) 项目管理者面临的问题主要有:不能准确把控其所管理项目的整体进展情况;不能实时、动态地根据项目成员的空闲状况进行最优化的任务分配;不能准确获取项目成员的绩效考核数据;不能尽早发现项目存在的质量问题;不能有效保证项目按时按量发布。
3) 项目成员面临的问题主要有:开发管理工具多,无统一的管理平台和使用标准,使用不够便捷;项目文档和资料多点分散,与其所执行的任务之间缺乏有效的关联及相应的版本控制;项目成员间的沟通通过邮件、电话和各种IM(即时通信)工具实现,沟通效率低,沟通过程和结果无法进行记录和追溯。
基于以上问题,依照当前软件开发管理的前沿理念和实践方法论,采用成熟的软件和工具,为软件开发生命周期内的各部门、各角色提供从需求、开发、测试到发布的高效、可靠及一体化的平台。该平台可为不同类型、规模和复杂度的项目提供统一的工作环境和沟通平台,使项目的规划、执行和监控能力及团队的沟通效率得到提高,从而提高做出各种决策的效率。
1) 统一用户管理、认证和单点登录集成,并提供一站式访问门户。
2) 对基于任务驱动的全生命周期进行管理,覆盖从需求分析、项目规划、项目实施、配置管理、测试管理最终被交付发布的软件开发全过程。
3) 平台中各种工具软件之间实现基于文档、任务、代码、消息和流程的有机集成。
4) 形成一套可用于项目进度、项目质量、项目成员工作量和绩效管理的报表模板库。
JIRA是Atlassian公司推出的项目与事务跟踪工具,被广泛应用于缺陷跟踪、客户服务、需求收集、流程审批、任务跟踪、项目跟踪和敏捷管理等工作领域中。其主要功能有缺陷与事务跟踪、项目跟踪、源代码集成、工作流定制、报表与分析和敏捷项目管理支持等,平台基于JIRA软件套件及其他众多开源的工具软件集群来构建,可实现JIRA与Confluence(团队协同与知识分享工具),SVN(集中式版本控制工具)或GIT(分布式版本控制工具),FishEye(源代码查看工具),Crucible(代码评审工具)及HipChat(团队沟通工具)等工具的无缝集成,可支持任务与文档和源代码的实时关联,便捷地执行代码评审及基于任务的实时交流。平台的核心是基于JIRA的任务驱动工作流引擎,贯穿于整个软件开发的生命周期内从需求、开发、测试到发布的全部环节。任务流程中任何节点的执行结果都可通过邮件等方式实时地通知相关干系人。
平台还分别针对需求管理、开发管理、测试管理及发布管理等各环节提供相应的工具软件,并通过与JIRA任务关联实现流程集成。
知识管理模块可为整个软件开发过程中的各环节提供各种类型的文档知识库管理;沟通交流模块可为整个软件开发过程中的各成员提供多种便捷沟通方式。
此外,平台基于Java Web技术单独开发一套Portal(门户)提供统一的访问入口,并通过OpenLDAP(开源目录协议工具)与Crowd(单点登录和用户认证工具)的组合,实现用户资料的统一管理、认证和单点登录(见图1)。
3.1统一认证和单点登录
通常平台中使用的每个工具软件都有其独立的用户资料管理、认证授权及访问地址,使用者须牢记这些信息,尤其是当用户需进行修改密码和更改邮箱地址等用户信息维护操作时,需分别到各系统中进行,给使用者造成极大的不便,不利于平台的推广使用。
对此,平台基于Java Web技术单独开发一套Portal来提供统一的访问入口,使平台用户有一站式使用的良好体验,无需记住众多的访问地址,且无需安装任何客户端软件。此外,采用OpenLDAP与Crowd组合来建立统一的用户认证中心,实现基于安全策略的统一用户管理、集中认证及平台内多个系统间的单点登录集成,用户只需在登录时进行一次注册,即可进入平台的多个系统,不必重复输入用户名和密码。
OpenLDAP是基于轻型目录访问协议(Lightweight Directory Access Protocol,LDAP)实现的。LDAP目录服务规定统一的身份信息数据库、身份认证机制和接口,实现资源和信息的统一管理,保证数据的一致性和完整性,可有效地解决众多系统应用的用户集中管理问题。
Crowd是JIRA套件中用于统一用户管理和单点登录的产品,将其与OpenLDAP进行无缝集成,利用其提供的管理维护界面,可高效便捷地进行用户信息的维护和管理。同时,还可利用其提供的用户组维护功能建立用户和平台中各系统间角色的对应关系,进一步简化平台管理员的日常权限维护工作。此外,通过Crowd的简单配置或利用第三方插件,可实现平台内绝大多数主流工具系统的单独登录。
3.2任务管理
软件开发生命周期涵盖从需求、开发、测试到发布的各阶段,每个阶段的工作本质上都是由多种项目角色参与的众多任务构成的,整个软件开发管理的核心是对任务进行管理。平台基于JIRA的任务驱动工作流引擎来实现高效的任务管理,可根据不同的项目需求配置定制化流程。任务操作主要包括分解、创建、分配、处理、解决、关闭及监控审计等,任务类型主要包括需求任务、开发任务、测试任务、发布任务、缺陷处理任务及软件增强任务等,同样支持根据不同项目的需要进行定制化配置(见图2)。
基于平台运行所产生的数据主要包括任务数据及相关的工作日志记录,可方便地生成多维度的可视化管理报表,实现项目进度的跟踪、员工工作量及绩效的评定等。该管理报表主要包括单次分组报告、解决时间报告、平均周期报告、问题持续时间报告、已创建与已解决问题对比报告、最新创建的问题报告、项目工作量报告和人员工作量报告等。同时,其还支持二次开发符合各自管理需求的定制化报表。此外,JIRA还提供丰富的可扩展插件(如甘特图、团队日志和屏幕录像截屏等),可极大地提高软件开发的效率。
3.3需求管理
整个需求管理可分为需求过程管理和需求文档管理两大部分,其中:需求过程管理主要包括需求的确认、跟踪及变更控制;需求文档管理则主要包括需求调研、需求分析及最终形成需求文档。
Confluence是一个专业的企业知识管理与协同软件,也可用于构建企业维基。通过该软件可实现团队成员之间的协作和知识共享。Confluence使用简单,具有强大的编辑和站点管理特征,能帮助团队成员间实现共享信息、文档协作和集体讨论。发布文档变得极为简便,提供快速搜索、权限控制、版本管理和导入导出等功能,并支持对Office文档的搜索、在线查看及在线编辑功能,无需安装Office软件。
平台利用JIRA实现需求过程中的任务管理,Confluence实现需求文档管理,实现任务和文档的无缝链接。同时,Confluence提供丰富的文档模板,方便快捷地进行各种类型需求文档的编写,并可根据项目的需求进行自定义模板的开发、存档和共享。
3.4开发管理
3.4.1 统一集成开发环境
平台用户采用统一的IntelliJ IDEA(集成开发环境工具),是目前业界公认最好的开发工具之一,尤其是在智能代码助手、代码自动提示、重构、J2EE(企业版Java)支持、各类版本工具支持、JUnit(单元测试工具)整合、代码分析及创新的GUI(图形用户界面)设计等方面优势明显。
3.4.2 集中资源管理
平台采用Nexus(资源仓库管理工具),该工具无需数据库,使用文件系统加Lucene(全文检索引擎)来组织数据,可极大地简化内部仓库的维护和外部仓库的访问,可提供Maven(项目对象模型)、NPM(nodejs的包管理和分发)及Docker(应用容器引擎)等多种类型仓库的支持,能节省中央仓库的带宽,部署第三方组件并加速项目构建。
此外,平台还利用虚拟桌面基础架构(Virtual Desktop Infrastructure, VDI)实现开发机资源的集中管理,有效提高开发管理的安全性和可靠性。
3.4.3 软件配置管理
软件配置管理(Software Configuration Management, SCM)已成为软件开发和维护工作中的重要组成部分,主要是指对软件开发生命周期内产生的数据和文档进行标识、存储和控制,以维护其完整性、可追溯性及正确性。
平台从历史数据兼容、不同项目类型及团队组织形式等多方面考虑,提供集中式的SVN和分布式的GIT 2套版本配置工具的支持。此外,考虑到配置管理的便捷高效,采用SVNAdmin和GitLab 2套基于Web的管理工具分别提供对SVN和GIT配置库的在线查看及维护操作。
3.4.4 代码评审管理
代码评审又称代码复查,是指通过阅读代码来检查源代码与编码标准的符合性及代码质量,是软件开发过程中早期发现缺陷、提高代码质量的重要的环节,通常有代码走查和会审2种形式。
平台采用FishEye和Crucible的组合工具实现代码评审过程的规范、高效、流程化和可视化。FishEye提供代码评审过程中的源代码浏览和搜索功能,并可通过可视化的方式了解源代码的变更情况。而Crucible则提供创建,执行和管理基于工作流评审的功能。此外,其还可与JIRA进行有机集成,实现基于JIRA任务的源代码浏览及从JIRA任务中创建代码评审和查看代码评审结果。
3.4.5 源代码静态质量检查
源代码静态质量检查在项目质量保障方面有一定的重要性和必要性,平台采用SonarQube在内的通过插件形式支持包括 Java,C#,C/C++,PL/SQL,Cobol,JavaScript和Groovy等在内的编程语言,并可与持续集成工具Jenkins集成实现定期和基于构建流程的检查,主要支持代码语法规范性、注释不足或过多、代码重复程度、糟糕的复杂度、单元测试覆盖率、潜在的代码架构风险等维度的源代码检测工作,并可生成相应的质量报告。
3.5测试管理
软件测试是保证软件质量的关键步骤,越早发现软件中存在的问题,则修改软件缺陷及软件发布后的维护成本就越低。因此,建立有效、规范的软件测试管理体系并提供自动化工具支持十分重要。测试管理体系主要包括测试计划、测试任务、测试用例及测试过程中生成的测试报告和测试记录等结果文档。
平台利用JIRA实现测试过程中的任务管理,Confluence实现测试需求、计划及测试结果等文档管理,并实现任务和文档的无缝链接;而采用基于Web的测试管理系统TestLink实现测试用例及用例执行管理。
3.6发布管理
软件项目的发布管理通常环节众多,存在大量的重复劳动,导致费时费力、发布周期长、效率低下,发布质量不能得到有效保障。依据当前主流的持续集成和持续交付思想,采用基于Java Web的自动化构建工具Jenkins,可将这些重复的发布工作变为自动化的工作流(见图3),无需太多人工干预。
3.6.1 持续集成
持续集成是指开发人员提交新代码之后,立刻进行构建、单元测试。根据测试结果,可确定新代码和原有代码能否正确地集成。其目的是使产品可快速迭代,同时保持高质量。其核心措施是在代码集成到主干之前,必须通过自动化测试,只要有1个测试用例失败,就不能集成。
3.6.2 持续交付
持续交付可看作是持续集成的下一步,将集成后的代码部署到更贴近真实的类产品环境中进行测试,如果代码没有问题,可继续手动或自动部署到生产环境中。
3.7知识共享
Confluence可为团队提供1个协作环境(见图4),团队成员协同地编写文档和管理项目,打破不同团队、不同部门及个人之间信息孤岛的僵局,真正实现组织资源共享。
1) 简化文档编写和团队协作。可在Confluence中记录和共享项目计划、需求文档、设计文档、会议记录、工作周报及相关项目过程文档,告别无休止的邮件和杂乱无章的网络文件共享,并能自动跟踪需要关注的事务。此外,Confluence能实现远程头脑风暴、持续的异步交流,从而减少费时费力的会议,以便快速做出决策。
2) 形成组织的知识财富。宝贵的经验总结和辛勤的劳动成果通常散落在邮件中,随着时间的推移,旧邮件不断被新邮件淹没。利用Confluence可将知识聚集起来,形成有组织的知识库。
3.8沟通交流
高效的沟通和畅通的信息交流能使加强项目成员对问题的理解,对问题的解决、项目的发展及人际关系的改善等俱有良好的促进作用。HipChat是该平台中用于用户协同的工具,支持多人群组文本、语音及视频聊天和屏幕共享等高效协同功能,尤其可为需要远程协同开发的团队提供良好的支持和保障。
HipChat 支持几乎所有主流操作系统平台,并有独立的Mac和iOS应用客户端。此外,其还可与JIRA和Confluence等应用实现无缝集成,实现自动通知、团队文件分享及保存等功能。
目前,该平台已开始在多个软件项目开发管理中进行使用和验证。实践结果表明,平台可为软件开发生命周期内的各部门、各角色提供从需求、开发、测试到发布的基于任务驱动全流程、全方位的跟踪和综合管理。但是,平台在使用过程中也存在一些不足,目前其内置的管理报表不够完善,无法满足更精细化的管理需求,尚需进一步的增强和完善。
[1] 阮俊杰.软件开发方法与管理教程[M].北京:北京希望电子出版社,2003.
[2] ROTHMAN J.项目管理修炼之道[M].郑柯,译.北京:人民邮电出版社,2009.
[3] DOAR M B.Practical JIRA Administration[M].Sebastopol:O’Reilly Media.2011.
[4] 熊瑛.问题管理工具JIRA在中小企业项目中的应用[EB/OL].(2008-08-25)[2017-03-08].http://www.paper.edu.cn/releasepaper/content/200808-333.
[5] 兰洋,温迎福.持续集成实践[M].北京:电子工业出版社,2015.
[6] SMART J F.Jenkins权威指南[M].郝树伟,译. 北京:电子工业出版社,2016.
DesignandImplementationofJIRA-BasedPlatformforLifeCycleManagementofSoftwareDevelopment
WANGMin,JIABaiqiang,LIXiang,LIXiaojun
(COSCD SHIPPING Technology Co., Ltd ., Shanghai 200135, China)
A platform is proposed to support the management of enterprise level software development with special attention to fulfill the requirements of involved personnel, such as company managers, project managers and project team members. The integrated platform is designed for efficient and reliable life cycle management of software development based on JIRA business software set and other open source software clusters. The design objectives, the architecture and the function design are elaborated. The platform has been used practically for software development management in the company the author worked for. It is proved that the platform allows all aspects tracking throughout the process and comprehensive management based on task driven principle, from requirement identification, planning, programming and testing to delivery and after services.
software development management; full life cycle; JIRA; task driven; continuous integration
2017-03-30
王敏(1975—),男,安徽南陵人,工程师,硕士,主要从事航运信息化研究。
1674-5949(2017)02-0078-05
TP311.52
:A