随着现代软件技术的发展,一个项目成功与否的关键不再是软件代码的编写,而是软件开发的管理。项目管理是软件工程中最重要的一环。软件项目管理的主要目标是为了使软件项目能够按照预定的成本、进度、质量顺利完成,保证质量、时间和成本三者的平衡。
在软件项目管理过程中,我们的资源有时会因为多个部门或小组同时调用同一个或多个资源而发生冲突。解决冲突的最普遍的方法是资源分层次法,即处于冲突中的作业后延,延迟时间以可以得到所需资源的时间为准。各个后延作业的延迟程度和延迟顺序依据这些作业的优先权而确定,在高优先权作业启动之前先把资源分配给低优先权作业,一旦高优先权作业启动,立即把资源转移过去,直到高优先权作业完成后,再把资源转移回来。高优先权作业一般为关键作业,它的延迟会影响整个项目的顺利进行。
在计划阶段:用户需要用图形用户接口(GUI)技术,他们都具备以图形形式生成软件项目管理计划的能力,这在很大范围内支持项目经理的项目计划制定活动。
在开发阶段:交互式导游工具从基本特性开始,引导用户以较少的时间覆盖大量专题,逐渐掌握复杂工具的复杂特性;而在线帮助工具也具备支持用户学习和使用的能力;专用化工具,可使每个项目所要求的报告格式、内容和频度更加标准,还可以有选择地执行特定的功能。软件开发的中间结果主要是文档,70%~80%的软件开发工作量是文档,而不是代码。
在测试阶段:要统一测试手段、方法,进行测试跟踪。
软件质量管理的内容包括:软件质量分析、测试和软件质量改进。其基本模型见图1。
图1 软件质量管理的循环操作步骤
1.软件质量分析。首先是定量分析,可以采用下列指标来进行定量分析。如未解决的软件项目管理缺陷的数目,软件在完成某一任务时所花的时间,软件通过的测试案例数,软件未通过的测试案例数。其次是定性分析,可以采用直观性、一致性、效率、耐久性、体贴程度等指标来分析。
2.软件测试。软件测试是质量保证的重要环节,是提升质量的重要手段。所谓测试就是用已知的输入在已知环境中动态地执行系统(或系统的部件),包括:测试要求,测试类型,测试配置,输入,期望的结果,测试案例,测试脚本等。
3.软件质量的改进。软件质量改进可以从几个方面进行:改进以预防为主、质量改进管理人员的组织、制定软件质量改进报告、执行质量提升计划。
风险因素是指增加、减少损失或损害发生频率和大小的主、客观条件,包括转化条件和触发条件。对不确定要素造成的损失进行预测,并根据预测的结果选择合适的管理方法和技术方法降低不确定带来的损失,被称为风险管理。
风险的防范措施:(1)树立“安全第一”的指导思想;(2)建立全面风险管理体系;(3)风险管理的制度化、流程化和标准化;(4)建立信息披露和交流沟通制度;(5)关注技术风险的事前控制;(6)做好技术风险的识别、衡量和跟踪管理;(7)加强软件项目管理和软件测试;(8)组织有针对性的培训和印制简单实用的教材。
软件项目管理集中反映在项目的成本、质量和进度三个方面,而进度控制是软件项目管理能否保质保量顺利完成的关键。
一是影响软件项目进度的因素。(1)过程控制:在软件项目管理执行过程中要注意对变更的控制,特别是要确保在细化过程中尽量不要改变工作范围。此环节需要注意四个重要控制点:授权、审核、评估和确认;在实施过程中要进行跟踪和验证,确保变更被正确执行。(2)客户风险:客户风险存在于客户化项目中,客户行业的特点不尽相同。因此,技术、理解水平也相差甚远。(3)技术与工具:开发平台必须适合本项目所涉及的软件开发、满足最终的需求,平台的错误选择将导致庞大的开发工作量,即便满足了用户需求也可能造成系统效率低下、扩展性差的致命问题,软件可能会很快被淘汰。(4)人员:人员素质和人员激励。
二是进度控制。进度控制就是比较实际状态和计划之间的差异,并做出必要的调整使软件项目管理向有利的方向发展。进度控制可以分成四个步骤:计划,执行,检查和行动。
计划阶段的进度管理包括:(1)项目进度计划;(2)里程碑设置;(3)需求的变更控制。因为软件开发项目的不确定性,项目监控显得非常重要,项目应该在检查点进行检查,比较实际和计划的差异并进行调整;通过设定里程碑渐近目标、增强控制、降低风险;而基线是重要的里程碑,交付物应通过评审并开始受控。定期监控进展,分析项目偏差,采取必要措施以实现目标。当进度出现偏差时,需要分析这种偏差对后续工序产生的影响,偏差的大小以及偏差所处的位置。