浅谈基于PRINCE2及PMP的IT项目管理与DevSecOps管理相结合

2020-05-09 10:46张瀚文
今日财富 2020年12期
关键词:项目经理项目管理测试

张瀚文

在这个“互联网+”的时代,在中小型企业中,传统的瀑布型(Waterfall)的项目管理模式已经无法满足快速发展的企业需求。许多企业的IT部门甚至业务部门都走向了敏捷转型及DevOps的转型。其中,有些企业更是把信息安全与开发运维相互结合,形成了DevSecOps的管理模式。那么,如何把既有的PMP或者PRINCE2的项目管理的金科玉律与新型的开发安全运维相互有机地结合起来,是非常值得探讨的问题。只有把传统的项目管理与IT的管理融合起来,才能让项目经理和IT经理更好的控制项目的各阶段交付成果。

一、引言

在项目管理的领域中,PRINCE2及PMP被众多项目经理奉为指导理论的宝典。在IT领域,现在越来越多的IT部门开展了DevSecOps的转型。那么,对于IT项目经理而言,使用什么工具可以很好地管理IT开发项目呢?对于一个传统的IT开发项目而言,IT项目经理会经常遇见沟通、进度、资源、范围、质量、干系人、项目资产、风险等问题。而对于IT内部而言,许多项目经理会发现,项目内部IT团队对于职责角色(Roles and Responsibility)的不明确会导致整个项目出现各种风险。同时,很多项目经理会由于不清楚IT开发项目各阶段的注意事项而导致无法有效把控各个关键点(Gate Check Point)。那么,对于IT软件开发项目生命周期各阶段及各个角色应该做什么、交付什么需要有明确的定义,这样可以极大地帮助项目经理把控整个IT软件开发项目。

二、总览

项目管理的各个阶段,发起、启动、计划、需求、设计、开发、测试、上线、运营交付、试运行、结束等若干个阶段,每个阶段IT团队都需要做些什么,由谁去做,谁去审核等等都需要明确定义。只有把这些都定义清晰,职责明确,这样才能构建一个完整的项目IT团队。

三、项目发起阶段

(一)无论是业务部门还是IT内部发起一个新的项目需求的时候,发起项目的申请人都必需提交项目发起的申请,包括背景、利益、目标、期望交付物、时间等。项目管理部门(有些企业是PMO,有些企业可能是IT部门)则根据已有的评估模型对其进行评估。该评估主要是测算该需求是否已经构成一个立项的必备条件。

(二)另外,如果项目管理部门确认该项目可以立项,那么应该在企业的项目管理系统上对该项目进行注册。一般常用的DevOps工具会是Atlassian 的JIRA作为项目的管理工具及Confluence作为项目资产管理工具。

(三)在明确开展项目之前,需要与项目管理部门确认该项目是否已经成功立项。包括项目组织架构,项目的资源,项目的费用,项目的关键里程碑是否已经获得项目委员会的确认。

四、项目计划阶段

(一)在初期计划的时候,IT项目经理需要安排一次高阶的系统影响分析,该分析是用于一些项目前期的高阶方案评估。该分析需要与相关的IT专家或者在开发项目委员会及技术委员会达成一致。

(二)同时,IT项目经理需要在计划阶段把相关的IT团队人员定义清晰。一般来说,一个软件开发项目的IT角色会包括但是不限于,IT项目经理(Project Manager)、业务分析师(Business Analyst), 测试人员、质量保证人员、开发人员、架构师(软件/硬件)、系统工程师、数据分析师、流程工程师、信息安全人员、IT财务人员、运维工程师等。

(三)如果是借助供应商能力来完成项目,则需要对供应商进行技术及价格的评估,一般来说,技术评估包含公司规模,人力资源需求,业务功能需求,技术层面需求,信息安全能力、项目管理水平,售后服务等大的方面。具体选择供应商的流程,则按各企业自己的商务采购流程管理则可,这里不展开叙述。

(四)这里需要注意的是,IT项目经理必须按照企业的文化或者规定,把商务采购流程所需要的准备时间放到项目计划中。

(五)当项目经理准备好项目计划后,该计划必须要与关键的干系人沟通并且确定。项目计划的形成不是项目经理凭空想象出来的,而是项目经理与各关键干系人沟通后而制定出来的。

(六)当相关材料准备妥当后,该项目需要正式地在项目管理委员会(Project Board/Project Steering Committee)上进行启动(Kick-off)。

(七)注意事项:在一些欧美企业,信息安全的审查在供应商能力评估的时候就已经引入。这也是DevSecOps的其中一环。

五、项目需求阶段

(一)关于需求说明书,需要注意的是,我们必须要包含业务需求及IT需求,即是平常说的功能性需求和非功能性需求。

(二)需求的收集和分析,可以按照PRINCE2的作为基础,结合DevSecOps的思想,得出F-O-C-U-S T-B-D 的业务分析框架。所谓FOCUS TBD框架,即使Functionality, Operativeness, Compliance, Usability, Security, Time Requirement, Budget Requirement , Documentation, Maintenance and Support.  F-O-C-U-S T-B-D 是一个框架,每项展开都会包含若干小巷,我在这里就不一一详述。

(三)需要注意的是,在需求阶段,必须要记得包含非功能性的需求,因为这些很多业务部门不会提出来的。例如,可用性、兼容性、扩展性、容量、移动性、吞吐量、性能、灾备、数据治理、信息安全等。从项目管理角度来看,这些非功能性的需求对项目的影响非常大。从IT治理的角度来看,这些非功能性的需求对整体IT治理影响非常大。我个人的建議是,IT项目经理更需要从IT管理者的角度去看待项目整体的影响,而不是仅仅从项目交付的角度去看。

(四)需求分析必须要连系到各个关键的干系人并与关键干系人达成一致,并最终在项目委员会上获得审批。

(五)这里多说一点,在敏捷类的项目(Agile Project)中,我们会需要到需求管理委员会对项目的需求进行优先级处理,从而排进Sprint backlog 中。

六、项目设计阶段

(一)项目的设计阶段,项目经理需要关注的是,设计阶段的交付物是否齐备,以及质量是否过关。设计是需求的延申,是开发的基础。劣质的设计文档会导致开发团队“想当然”地进行开发,最终导致需求变形或者需求质量不及格。

(二)在需求说明书的基础上,需要有功能说明书进一步细化需求说明,把业务语言转换为IT语言便于开发者来看法。

(三)同时,需要关心该项目是否有影响整体的IT系统架构。项目的架构设计(包括应用架构、硬件架构、数据架构等)需要在技术委员会中进行讨论及审核。

(四)信息安全的设计需要进行审核。最常见的例如,权限矩阵、权限设置、身份验证、职责角色等。

(五)如果是多系统对接的项目,那么接口设计是否已经确定。

(六)系统应用及服务的监控是否已经设计确定。

(七)数据变更或合并、数据字典的更新是否已经确定。

(八)在设计阶段,需要准备好后续的开发环境、测试环境、生产环境的相关软件及硬件。

(九)最终,设计文档需要在技术委员会中通过方可进入下一阶段。

我们可以参考以下图片,了解到软件开发项目中常用的DevOps的管理工具。了解这些功能有助于IT项目经理明白到IT内部风险可能出自于哪一环节。

七、项目开发阶段

(一)需要确保供应商的开发是否在企业IT要求的开发框架下进行。这点很重要,否则在未来随着业务的发展及IT系统越来越多的时候,这个影响就会非常大。

(二)对于供应商开发的质量把控是项目经理需要注意的。对于多项目、生产故障修复、其他项目变更等高耦合的情况以及项目周期过长导致版本过多的情况,需要明确开发版本的控制。在该版本中是否包含了相关项目、生产故障修复、相关联生产变更的内容。

(三)需要要求供应商提供单元测试报告并要求质量部门进行检验。

(四)对于多系统的开发,需要确保系统间的联调通过。

(五)在合同允许的情况下,项目经理最好要求供应商提供源代码。同时,需要组织相关开发人员对供应商的代码进行code review以保证项目质量。

(六)IT项目经理需要组织IT内部相关人员对开发进行回顾及审批。

八、系统兼容性测试

(一)在开始系统兼容性测试 (SIT – System Integration Testing) 之前,确保相关准备工作已经完成,避免影响项目的进度,例如系统配置、数据导出导入、中间库准备、系统连通性检验。

(二)SIT的测试案例是否已经完成。一般来说,SIT测试案例需要明确测试范围、测试工具(最好是DevOps自动化测试工具,如Jenkins, Jemeter), 测试平台、监控工具、被测试的系统环境、测试环境与生产环境的差异、性能参数分析、测试策略、测试场景、测试结果及分析等。

(三)根据项目具体情况安排压力测试及回归测试。

(四)最后,测试结果的报告需要在IT内部进行回顾并获得审批方可进入下一阶段。

九、用户测试

(一)在用户测试(UAT – User Acceptance Testing)开始之前,IT项目经理需要确保UAT环境的准备情况以确保UAT的开展可顺利进行。例如: 配置、数据导出导入、中间库准备、系统连通性检验。

(二)UAT 测试案例及测试场景及配置定义是否已经包含?一般来说,我会建议UAT的测试案例需要包括 测试案例序号、测试部门(如果是多部门项目)、测试系统、案例名称、测试内容、测试步骤、预期结果、实际结果以及对应的BUG/ISSUE 单号。对于BUG/Issue管理, 可以用已经定义好的项目管理工具,例如JIRA/Confluence。

(三)UAT的测试案例最好由业务部门自己首先定义,IT部门提供协助和指导。测试案例是基于需求说明书而来的,并且是需求说明的实际操作化。

(四)需要注意的是,在UAT的测试中,除了业务部门的功能性测试,IT项目经理必须注意安排非功能性的测试。

(五)UAT的测试案例必须是业务部门与IT部门达成一致的结果。

(六)UAT测试完毕后,需要在项目管理委员会上审核UAT测试报告。该报告需要包含UAT的测试结果、相关BUG/ISSUE的处理结果等。

十、项目上线阶段

(一)在项目上线之前,必须提前准备好包括部署手册,操作手册,支持安排、变更申请。并且确认生产环境是否已经准备妥当。

(二)相關上线的支持的培训、支持流程是否已经准备妥当。

(三)上线的沟通计划是否已经准备妥当。对于那些大范围影响的项目,需要提前有明确的沟通计划、培训计划甚至是差旅计划等。

(四)上线后的试运营阶段,IT项目经理需要完成项目的监控以及项目的运维交付(Operation Transition),具体交接时间按照项目的规模而定。

(五)需要有一个正式的结项会议,可以包含经验教训、项目上线后的运营情况分析、故障分析、优化分析、需要帮助等内容。

(六、)最后,需要履行结束合同并完成相应财务流程。

十一、最后,我以一张图来总结基于PRINCE2及PMP的项目管理理论与DevSecOps管理理论相结合

十二、结语

这篇文章是对传统的IT项目管理与开发运维的结合的尝试的一个简单的概括,不同企业会有不同的实际情况,也有不同的技术策略、IT策略和管理策略。希望这篇文章可以给读者一些启发,在IT项目的管理上提供帮助。(作者单位:中国人民大学)

猜你喜欢
项目经理项目管理测试
项目经理从优秀到卓越的四大进阶能力
基于项目管理视角的中小企业营销模式应用研究
项目经理该不该发火
项目管理中没有“我”
项目管理指南
心理测试
项目管理成熟度模型构建研究
心理小测试
测试
小测试:你对电子邮件上瘾了吗?