公务员期刊网 论文中心 正文

软件项目管理里及风险评估探究

软件项目管理里及风险评估探究

摘要:本文基于笔者数年以来的软件工程实践经验,详细分析讨论了软件项目管理中的各个组成部分。分析了软件开发过程中的各个阶段,从需求分析到系统的设计与实现,再到软件的测试与后期维护,建立了完整的开发流程管理;分析了团队管理中对于时间的安排和对项目成员的管理,有助于项目团队更好地开发软件;分析了软件开发中的各种风险,并给出了预防措施,有效提高了软件开发的成功率。在网络发展关键时刻的今天,本文将更有助于软件的高效开发。

关键词:软件项目管理;团队管理;风险管理;软件开发

“互联网+”时代已经到来[1],网络发展与安全成为重中之重,而软件项目的开发管理是网络发展必不可缺的一部分。现今,软件产业已经成为国内外经济发展格局的数字基础,甚至已经成为推动经济发展的主要动力之一[2]。但是自从20世纪以来,软件行业在高速发展的同时也出现了各种各样的问题,软件危机迟迟没有得到有效缓解,各种抄袭之风泛滥成灾等等。故而在新的形势下对软件项目开发的合理管理及对风险的应对等问题摆在了人们的眼前。因此不仅逐步提升软件的开发效率和软件安全等级,还要加强对软件开发团队的有效管理和软件风险的合理规避与补救[3]。软件项目管理是对软件开发流程中的管理,也包括对软件生命周期里其他活动的管理。在一个软件项目中,对组织结构和开发人员的管理也是十分重要的,因为只有好的团队才能开发出好的软件[4]。尽管有了好的开发流程的管理和团队协作的管理,但是由于软件项目开发过程中的可变性、偶然性、多变性等特点,软件开发还是具有很大的风险,由此引入软件风险管理势在必行。拥有良好的风险管理可以降低风险发生的概率,有效提高软件开发的成功率[5]。

1软件开发流程管理

1.1需求分析

(1)需求概述

软件需求是对项目系统在功能、性能、行为、约束等的期望,一般包括功能需求、性能需求、界面需求、环境需求、用户或人的因素、数据需求、文档需求、资源使用的需求、可靠性需求、安全保密的需求、软件成本的消耗和开发进度的需求等。需求获取与分析是整个软件产品产生的源头,它对软件产品的开发成败至关重要。需要通过各种方法获取到需求并对需求进行深入挖掘使之找到真正有用的需求,之后将其转化为软件的功能。

(2)获取需求方法

需求获取的方法多种多样,下面简单介绍几种。①小组讨论。可以由开发人员、用户、需求分析人员等组成讨论小组,由一位主持人主持工作。小组成员畅所欲言,就已经明确的主题发散自我的思维,尽可能找到所需要的需求及解决方案。②访谈调查。一开始,开发人员和用户肯定对于软件的要求是模糊的。所以可以通过了解市场上已经存在的相关的产品并准备与此有关的问题,通过提问被访者来获取更多的需求。③问卷调查。通过书面的方式提问大量的问题,可以一次性向大量用户获取到很多信息,之后对信息进行统计分析就可以得到很典型的需求。④其他产品调查。可以对竞争产品进行调查,取其精华并去其糟粕,这样开发出来的产品更具有竞争力。⑤用户操作及反馈。在使用过开发不完善的产品后,用户会对产品有一个更清晰深刻的认知,此时再提出的需求更加具有代表性[6]。

(3)需求分析及管理

需求获取到之后便要进行分析,分析过程中要遵循一定原则,结果要能表示问题并定义软件功能、能表示软件的行为并层次地表达细节。需求分析的方法有很多,包括原型方法、结构化数据开发方法等,而原型方法一改自上而下的形式,是一种十分典型的模式[7]。需求结果得出后要进行需求建模,可以采用面向对象的方法等。最后要得出需求规格说明书方便日后需求的管理,如之后需求的变更等等。

1.2系统设计及实现

软件设计就是要把需求转化为系统,这是软件开发最重要的环节,决定了软件最终的质量。软件设计可分为概要设计和详细设计,概要设计主要是体系结构设计,详细设计包括用户界面设计、数据库设计、模块设计、数据结构与算法设计等。体系结构是框架,是重中之重,目前流行的结构模式有C/S(客户/服务器模式)、B/S(BROWSE/SERVER模式)、层次结构(上下级层次结构、顺序相邻的层次结构、含中间件的层次结构)。用户界面设计是为了提高用户界面的易用性和美观程度。数据库设计解决数据存储问题。模块设计是设计某一个具体的模块,模块设计要遵循“功能独立”原则,表现为信息隐藏和高内聚低耦合。良好的数据结构与算法可以使程序更加的高效。系统设计完成后就可以使用各种开发工具和开发语言进行代码编写,软件程序完成后就可以进行下一步的工作了。

1.3软件测试

在经过了需求的分析和系统的设计及实现之后,就得到了所需要的系统的源程序,此时就需要对源程序进行测试了。测试之前的工作由于各种原因会遗留很多问题,这些问题如果不能及时发现并处理会影响开发系统的正常使用,甚至产生经济损失。为了保证软件是可靠的,测试是不可缺少的。测试的工作量是非常庞大的,甚至占据了总量的一半左右,所以合理的测试策略异常重要。软件开发流程的“V模型”将测试策略分成为单元测试、集成测试、确认测试和系统测试。单元测试测试的是系统的模块或者构件,主要可以发现代码的缺陷,使代码更加完善;集成测试测试的是单元测试后的模块集成为的系统,虽然已经通过了单元测试,模块内部已经没有问题,但模块组合之后可能会产生新的问题,故而集成测试需要被使用;确认测试是根据需求说明对系统功能进行确认,它要求需求都应该被满足且功能是完善的,经过确认测试的软件才可以投入市场;最后,软件应当进行系统测试,这是为了满足不同计算机系统中其他元素的约束。软件在经过了各种阶段的测试并满足相应的测试要求之后就可以投入使用了,在使用的过程中还要对软件进行维护以保证用户可以正常操作。

2项目团队管理

2.1开发时间安排管理

时间项目管理就是对时间资源进行充分的利用,项目开展过程中每个环节都受到时间的约束[8]。所以在开发过程中,需要对时间进行合理的分配,并预留出足够的时间对突发状况作出应对。产生时间不足的原因可能有如下几点:

(1)开发的各个环节所用时间与计划所需时间出现偏差,实际开发时间更长;由于在开发的过程中,会面临许多不确定性和风险,并且不同工作的预测不可避免地出现估算错误等,导致无法在预定时间内完成开发任务。

(2)资源配置不合理,在不同开发任务中分配的人员和物料不能满足当前任务的要求,从而导致开发时间过长,同时由于分配的不合理容易造成项目组成员的工作压力过大,进而加大项目成员的流动性,开发进度受到严重影响。

(3)忽视项目的质量和风险状况;为了追赶开发进度,忽视了存在的风险,采用了风险程度更高的技术并且降低了质量,在进行交付时没能达到用户需求,只能返工重做,造成了开发时间超过了预期。针对上述可能会发生的开发时间不足情况,有如下应对策略:

(1)做好规划,预留充足的时间进行问题解决,避免计划错误所带来的风险无法解决。

(2)加强资源的动态调整和对人员的激励,项目管理员要时刻关注各个部分的开发进度,对项目组成员进行激励,同时合理规划资源,及时调度资源,投入到重难点方向去,维持整个项目的高效开发。

(3)加强项目的质量审查;项目的质量关系到整个项目的最终交付,制定相关的标准,并在具体的任务里实现,保证项目的质量问题,进而减少后续的维护成本,保持软件的健壮性和稳定性。

2.2团队成员管理

一个项目要想获得成功,不但要选择合适的人,更要留住并管理合适的人,让合适的人在合适的岗位上发挥出最大的效能[9]。一个优秀的项目团队具有如下特征:互相的信任、明确的目标、良好的沟通、一致的承诺、合适的领导者、来自各方面的支持[10]。为了构造一个良好的项目团队,可以从以下方面入手:首先创建共同的愿景,制定全体项目组成员共同认可的目标和价值观,调整成员的状态,为项目的完成共同奋斗。然后需要去了解每一个成员,挖掘项目组成员的潜能,激发相关人员的创造力,对每个成员有合适的安排。之后制定项目计划,把每一个成员安排在适合的位置,避免出现开发任务过重的现象,依据任务的轻重缓急调配资源与人员;平衡各个成员的工作量,尽量避免少数人承担过多任务的情况,多进行部门间的交流,及时调整工作的分配计划;保持成员的持续学习能力,在面对各种突发状况以及开发中的问题时,具有足量的知识储备才能快速高效地解决问题,使得开发计划不会受到太大的影响;最后是帮助和激励,在团队工作中,在其他成员出现状况时,各成员可以提供自己的帮助,通过互补与协作解决问题,既可以提高团队的凝聚力,又可以激励相关成员,共同完成项目。

3风险评估及避免措施

3.1风险类型

软件在开发过程之中必然存在一定的特殊性和不稳定性,这也是风险存在的因素之一。风险主要包括:需求风险(不断变动的客户需求,对系统期望不切实际等)、经营风险(各个职务人员由于分工不明造成交流受阻等)、人员风险(人员流动性大等)、生产环境风险(生产工作人员在新的生产工作环境下需要一定时间去适应)、技术风险(错误地进行不熟悉的业务等)、开发过程风险(缺少富有经验的开发人员等)[11]。由于开发过程的不确定性,还有一些未知未发生的风险,只有发生时才能分类。

3.2避免风险措施

在应对风险时,我们可以首先加强各个部分开发团队的沟通,并及时与客户沟通,了解并依据客户需求调整开发效果;然后选用有丰富经验的项目经理进行管理,根据管理人员的经验,能够避免过往的一些风险,但风险并不是一成不变的,这也需要管理人员加强学习,提高自身的应对能力;其次组建目标统一,具有良好开发技术的高效团队,共同应对各种风险;再次及时展开风险防控,定期召开会议,对风险进行审查,列出在认知范围内可能发生的风险,对风险进行范围确认,尽可能地防控风险,减轻风险带来的损失;最后是强化开发人员的培训,合理地选择业务,在关键时刻可以引入能解决中心问题的专业技术人员,同时,也要防止团队中人员的流失,在业务上要提前注意系统先进性和技术能否跟上系统更新等问题。如此,可以让风险得到一定的控制。

4结束语

综上,本文对软件项目管理中的软件项目开发流程管理、软件项目团队管理和软件风险管理方面展开了详细的探索和讨论,论证了开发流程各个阶段的任务及关系,探讨了软件团队开发的时间管理和对团队成员的管理,最后还阐述了软件风险类型和避免风险措施。本文对软件开发人员具有很好的借鉴意义,笔者在后续也会进行更深入的研究与探讨。

作者:周逸宁 池志杰 单位:中国地质大学(北京)信息工程学院