欢迎关注专栏:Java架构技术进阶。里面有大量batj面试题集锦,还有各种技术分享,如有好文章也欢迎投稿哦。
前言
软件项目管理是指在软件项目研发过程中,对软件项目进行高效率的计划、组织、指导和控制,将研发任务与公司有关部门和相关人员紧密关联起来,使部门和工作人员目标明确、业绩清晰。项目管理更强调项目负责人的作用和团队的协作精神,其组织形式灵活,更加关注人的因素,关注客户和服务客户,着重于提高软件项目研发的效率和质量,体现为一种工作流程管理。
一、项目启动阶段
项目启动阶段的任务是识别客户需求内容,对客户提出的需求内容进行可行性分析、评估和立项。
1. 项目识别
科技部门接到业务部门提出的业务需求后,对业务需求内容进行确认,对业务需求做可行性研究分析,通过与业务部门进行交流沟通、分析评估后,对需求的可实现内容和不能实现的内容达成一致意见,科技部门对于确认的需求内容纳人公司整体项目管理体系中管理,并配合与业务部门撰写出详细的项目需求说明书。
2. 项目立项
软件项目通过评审后就可以进行立项,编制需求开发任务书。软件公司接到项目任务后,首先由公司项目管理办公室按照公司IT项目管理流程,为新项目建立信息档案,编制项目代码,启动项目开发工作。
二、项目规划阶段
项目规划阶段的任务是为拟研发的软件项目制定一个详细的解决方案,为各种可交付成果准备工作计划。
1. 项目范围规划
项目背景描述:通过对项目实施背景的分析,了解业务需求提出的背景,便于更好地掌握需求可能涉及的利益相关者。
项目目标描述:主要包括三方面的内容:一是成果目标,即要开发一个怎样的系统(如开发一个成本软件管理系统);二是工期目标,即项目预计完成的时间(例如:2007年4月1日一2007年6月30日,为期3个月);三是成本目标,即预算项目总投资金额(如项目成本30万元)。
-
项目工作结构分解(WBS):WBS的作用是把安排与定义项目范围的各组成部分,按可交付成果进行组合。项目经理根据团队成员职责分工,把复杂的工作逐步分解成要素工作,使得项目成员的工作具体明确、易操作和易控制。通常软件项目采用基于可交付的成果为第一层次,具体的工作任务为第二层次,每下降一个层次意味着对项目可交付成果有更详尽的描述。遵循以目标体系为主导、以项目系统说明为依据,自上而下,由粗到细,如图1所示。
-
里程碑计划:里程碑是完成阶段性工作的标志,根据WBS结构图中项目划分范围,定义每一项工作任务完成的时间(见表1)。
-
工作责任分配矩阵:其作用是对项目团队成员进行分工,明确其角色与职责。通过这样的关系矩阵,直观地反映和明确项目团队中每个成员的职责,使项目的每个具体任务都能落实到参与项目的团队成员身上,确保项目研发过程中事事有人做,人人有事干(见表2)。工作责任分配矩阵可以详细列出每一项工作具体负责人完成的时间、工作参与的内容。
2. 编制项目工作计划
项目工作计划编制要依据合同对工期的约定和要求、里程碑计划、WBS,参照公司类似项目的历史信息和项目内外部条件,各种资源状况等内容,编制项目工作计划,常用的技术方法是PERT 网络技术、甘特图法。
项目进度计划:依据WBS工作项目,详细制定项目中每一个工作任务的工期,设计项目进度报告内容,制定各种项目进度报告发布渠道及发布时间。
项目人力资源计划:依据项目总体目标和每一项工作需要花费的时间,确定完成项目需要的人员,并依据不同的工作要求,配备不同的岗位工作人员,如工程师、测试人员和项目管理人员。
-
制定项目费用预算,如表3示例:
- ①给每一项工作分配全部费用,以获得度量项目执行的费用基线;
- ②将费用预算分为人力资源费用、其他费用、提取的风险基金和项目奖金;
-
③预算的主要依据是软件项目估算技术(功能点法和DelPhi法)、经验估计、工作分解结构WBS和进度、费用及资源计划。
风险控制计划:“凡事预则立,不预则废”,只有事先对项目可能发生的风险进行有效地分析和评估,并采取有效的防范与应对措施,方能保证项目目标的顺利实现。根据软件项目特点,制定和完善风险管理流程,做好风险识别、分析、计划、跟踪、应对、改进工作和监督考评等方面工作。对于软件项目开发采用外包的部分,要选择在行业中信誉好、规模大、管理水平高和服务好的软件公司作为开发商。
质量控制计划:项目团队成员按照公司软件项目研发全面质量控制要求,制定项目设计、编码、测试、投产及编制相关的项目文档质量标准,并规定项目组提交质量控制需要的各种项目信息,定义项目研发过程中评审活动。
项目采购计划:根据项目需要采购的IT设备及应用软件系统,依据公司采购管理办法和项目进度计划,编制项目采购计划,同时做好与供应商的合同管理计划。
培训计划:制定项目开发前和项目完成后投产前的技术和业务培训方式、培训内容、培训对象和培训时间。
方案评估计划:项目规划结束后,需要公司项目管理办公室组织相关领域的技术和业务专家,对项目规划阶段形成的各种计划书、实现方案内容进行评审,以确保内容的合理性、正确性。
3. 设计项目实现方案
- 项目技术实现方案:在全面分析现有业务需求处理层次和处理流程的基础上,根据现行系统架构要求,在实现方案的设计过程中,既要从业务人员的角度去考虑问题,也要从技术人员的角度去考虑问题。既要考虑业务实现的方便性,同时又要充分考虑方案实施对系统整体资源花销和影响,如系统运行效率,交易反应速度等,用最简单、实用的方法设计业务需求实现方案。所以在需求转化为实现方案设计时,要多花费些时间投入实现方案的设计工作中,尽量考虑长远一点,使实现方案设计能在系统后续项目中得到继承和完善,避免出现推倒重来的情况。
- 项目开发方案:根据软件项目实现方案、进度计划、费用计划和资源计划,制定项目开发计划,设计开发环境,统筹安排项目开发任务。
- 项目测试方案:依据项目开发计划,制定项目测试计划,合理安排测试环境、组织单元测试、集成测试和验收测试。
4.确定信息沟通与披露渠道
- ①针对不同项目干系人确认项目沟通的渠道和方式;
- ②作为项目经理,必须了解沟通要符合信息接收者的需要,根据不同项目利益相关者需要提供不同的项目信息;
- ③建立项目信息披露机制,应实时反馈有关项目延期、成本增加和出现质量问题等方面的信息,并尽早沟通,说明原因,使高层经理和客户能及时理解,并调整相关计划。
5.项目信息管理
建立项目管理信息档案,可实现对众多的软件项目进行管理。通过专用的项目管理软件为每一个项目编号建立信息档案,详细记载项目生命周期中每一个阶段产生的项目信息资料,要求项目组随时提交项目信息,逐步建成一个项目信息管理知识库。
三、项目执行阶段
项目执行阶段就是具体实施项目规划中制定的各项工作内容,是项目生命周期中工作内容最多、占有时间最长和消耗资源最多的一个过程。
1.明确团队组成形式
对于商业银行来讲,如果是自行研发软件项目,则适合选用强矩阵组织结构模式,特别是对于研发一个大型软件项目,由于项目涉及会计、信贷、储蓄、银行卡、外汇等多个业务部门和应用子系统,还涉及与外部公司系统的连接等多方面工作,需要公司业务和技术各个团队的密切配合才能完成,因此采用强矩阵式的管理模式,更能充分调动公司各部门的资源,完成该项目。如果软件研发项目是外包,则需要采用项目管理方式更合适,设置项目经理专门负责每一个软件项目研发的全过程。
2.建立项目开发团队
依据业务需求开发任务书中,对项目完成时间、费用的要求,确认项目开发团队人员数量,明确项目经理,建立以项目经理为项目负责人的开发团队。团队组建完成后,项目经理组织团队人员进行交流学习和互相熟悉,说明项目任务、目标、规模、人员组成、规章制度和行为准则,个人岗位和责任,建立团队与外界的初步联系及相互关系,确立团队的权限,建立团队的绩效管理机制,争取公司各方面支持,根据团员特点分配职责,收集有关项目信息。
3.实施项目开发测试
依据公司软件项目设计开发制度要求和软件项目管理规范,按照需求实现方案为项目具体开发做好准备。
- ①技术人员在项目实现方案框架下,设计项目详细实现的功能说明书;
- ②根据项目实际要求准备好开发环境和测试环境;
- ③程序员编写程序代码,测试人员设计测试方案和应用案例;
- ④是对需求实现功能说明书和测试计划、测试案例进行评审;
- ⑤撰写测试问题报告,改正软件Bug;
- ⑥按照要求定时提交相关的项目管理信息资料。
4.实施项目采购
项目经理及项目成员按照公司采购制度和流程控制要求,了解软件产品供应商市场,咨询市场询价,采购招投标及与中标供应商签订合同。参与系统供应商招投标会议,了解熟悉供应商情况,当确定供应商后,项目经理与团队成员一起与供应商进行详细的需求功能沟通交流,向供应商讲解自身应用系统的结构及该项目与其他应用系统的关联,项目计划实现的时间安排,技术问题的交流方式等,同时听取系统供应商对提供系统功能的详细介绍及有关技术要求。通过两者之间的交流让供应商熟悉掌握需求内容和项目进度安排,在预定的时间内提供相应的软件项目开发文档资料,同时银行本身做好采购系统设备及应用技术环境的建设。
5.项目信息入档管理
在项目的研发过程中,会产生很多的来自不同层次和客户的项目管理所需信息和文档资料,及时、正确地搜集好这些项目信息并纳人项目信息管理档案中统一管理,为跟踪项目进程、提高项目控制能力及项目后评价、项目绩效考核打好基础。
四、项目控制阶段
项目控制阶段任务是定期监测与度量项目执行情况阶段各项工作进展情况,识别是否有偏离计划之处,对于项目执行过程中出现的问题,及时发现并采取纠正措施,以确保项目目标实现。
1.项目控制流程
软件项目控制流程图示如图2所示。
2.项目进度与费用控制
- 做好项目进度和费用分析,使用的方法主要是项目挣值法分析:该方法通过对各项工作实际消耗费用及完成情况与计划对比,分析整个项目进度执行情况及费用支付情况,分析项目整体完成情况。
- 预期费用与实际费用的偏差CV=BCWP-ACWP,式中,BCWP表示已完成工作量的预算费用,ACWP表示已完成工作量的实际费用。CV>1表示实际费用小于预算费用;CV<1表示实际费用大于预算费用;CV=1表示实际费用等于预算费用。
- 预期进度与实际进度的偏差SV=BCWP-BCWS,式中,BCWP表示已完成工作量的预算费用,BCWS表示项目计算工作量的预算费用。SV>1表示实际进度超过预算进度;SV<1表示实际进度落后于预算进度;SV=1表示实际进度等于预算进度。
- 撰写项目进度报告:按照公司项目管理要求,定期编制项目进度报告,报告内容包括:项目进展情况报告、任务完成报告、项目进度控制报表(挣值分析)、项目状态执行报告、重大突发性事件报告、项目进度控制报告、项目管理报告和问题跟踪报告。
- 每周定期召开项目工作例会:以周为单位对项目进度进行连续检测,检测结果与项目执行计划比较。进度正常则按原计划执行;进度滞后则要分析原因,找出解决措施,以里程碑计划为阶段目标,为实现整个项目目标扎实工作。
- 里程碑会议:根据里程碑计划中制定的需求分析完成时间、系统设计完成时间、编码完成时间、测试完成时间和投产完成时间,在每一个阶段完成时召开会议,确认该时间段是否按计划完成工作。
- 与项目外包商沟通会议:根据项目开发计划召开与软件项目开发外包商会议交流项目开发进度状况及其他相关事宜,及时解决存在的问题。
3.项目资源的控制
项目的资源包括人力资源、开发环境资源、测试环境资源、设备资源等,在项目开发过程中,项目经理要根据项目开发进度情况,优化资源分配,合理安排项目使用的开发和测试环境,调整开发人员和测试人员数量和工作内容,通过项目资源优化,确保项目开发进度和质量。
4.采购过程及合同控制
监督和控制软件项目采购过程中,要确保供应商招投标及中标是否按流程工作,供应商的资质是否符合要求,要求提供的文档资料是否齐全。对于中标的供应商要做好合同管理,确保卖方符合要求,买方要根据项目进度情况,做好项目阶段付款、合同内容变更管理。
5.需求变更管理
在软件项目的研发过程中,对于需求内容变化请求都要求做出快速的响应,这需要制定相应的变更管理工作流程,控制来自各方面的变更,同时更新项目计划内容,并及时把更新项目信息资料存入项目信息管理档案。
6.项目风险控制
根据项目规划阶段对项目开发过程中不同风险的识别及应对策略,实行项目“实时监控、实时询问、及时披露”制度。在项目开发过程中,对于出现的风险要及时向上级领导、客户反映,同时要采取措施把风险减少到最低程度。对于外包商,项目经理需要密切监控项目的实施情况。
7.项目质量控制
按照质量保证计划,由质量控制员全程跟踪项目研发过程中质量控制点,提醒项目经理提交项目管理需要的质量信息资料,对于发现的问题要及时通知项目经理改正。
五、项目收尾阶段
项目收尾阶段是项目生命周期的最后阶段,这个阶段的主要工作包括如下几方面。
1.项目验收
- 业务需求提出部门通过验收测试,验证软件项目实现的功能是否实现了需求的要求;
- 对于外包软件项目产品的功能验收,同时还要验收外包商提供的相应技术文档资料是否齐全,内容完整正确。
2.项目交接
对于外包开发的软件项目,在完成验收后依据合同要求,接收外包开发商提供的有关项目资料。对于自行研发的项目按照公司项目管理要求,项目组要提供项目相关技术文档。
3.费用清算
根据合同规定和实际项目验收情况,与项目外包软件开发商进行资金清算。
4.项目后评价
- 提交项目总结报告。项目开发结束,需要项目开发团队撰写项目报告,总结分析整个项目研发工作,分析项目开发其间出现的问题原因及解决的方法,撰写出项目总结分析报告,为以后项目研发提供借鉴经验。
- 项目绩效考核,按照公司项目考核指标来计算衡量项目总体情况。
- 整理项目信息资料存入项目信息管理档案。