项目管理论文

您当前的位置:学术堂 > 管理学论文 > 项目管理论文 >

软件开发过程中项目管理问题研究

来源:学术堂 作者:姚老师
发布于:2015-04-11 共2884字
摘要

  随着信息技术的飞速发展,软件产品的规模也越来越庞大,各软件企业都在积极将软件项目管理引入开发活动中,对开发实行有效的管理。但国内软件企业对于软件项目的认知,在一定程度上盲目多于理性、理论多于实践。鉴于上述问题,本文分析了基于项目管理的软件开发过程需要注意的几个问题。

  1需求开发要注意的问题

  需求开发作为软件项目启动的初始工作有两个目标:发现真正的需求并以适合于用户和开发人员的方式加以表述。

  发现需求即需求获取,“真正的需求”是指在实现时可以给用户带来预期价值的需求“;以适合于用户和开发人员的方式”即需求定义,主要是指对需求的最后描述必须让用户和开发人员无歧义的理解。在需求开发过程,软件开发人员要注意如下的两个问题:

  1.1 不要忽视非功能需求

  通常,需求分析人员更多的关注功能需求,而忽视非功能需求,从而导致 NV[2]( 即“下一版本”) 陷阱。陷入 NV 陷阱后,产品的质量会大打折扣,甚至“拿不出手”。另外,不完整的需求也容易导致架构的错误设计,如:1.1.1 XX 查询的响应时间必须小于 1 秒;1.1.2 并发用户的数量每小时超过 10000个用户对于此类性能方面的非功能需求,直接影响到架构中持久层设计所采用的技术,而且这种架构上的缺陷实际上很难在“下一版本”轻易的改变。为了防止陷入 NV 陷阱,非功能性需求从一开始就要被提出来,和功能性需求一样受到应有的重视。如果这些非功能性需求是确实需要的,就应该被写入需求规格书,并在产品开发过程中接受实现状况的检查。

  1.2 正确面对需求变更

  在大多数软件项目中最不稳定的部分就是需求。在项目需求分析阶段,必需全面的、应尽可能细致地讨论项目的应用背景、功能要求、性能要求、操作界面要求、与其它软件的接口要求,以及对项目进行评估的各种评价标准。但由于各方面的原因用户需求始终处在一个持续变化的状态中,这是项目开发人员必须的接收的事实。那么对于这样的现状,软件开发者该怎么办呢? 其一是把需求变化控制在最小的范畴,在需求变化发生之前尽量减少需求变化; 其二是在设计软件体系结构时,不仅应该想到如何满足现在已经提出的用户需求,同时也应适当地考虑到需求的变更,想办法应对需求变化,例如:采用面向对象的思想。世界都是由对象组成的,而对象都是持久的。面向对象的开发方法的精髓就是从企业的不稳定需求中分析出企业的稳定对象,以企业对象为基础来组织需求、构架系统。这样得出的系统就会比传统的系统要稳定得多,因为企业的模式一旦变化,只需要将稳定的企业对象重新组织就行了。这种开发的方法就被称为 OOAD(Ob-ject Orient Analysis & Design 面向对象的分析和设计)。

  2项目管理人员需要克服的障碍

  项目管理是一项控制性的工作,项目管理者的工作重点就是控制和协调。项目管理者首先要确保每个成员完全理解任务,要把任务的目标解释清楚,并强调他对最终期限及评估成果的期望。

  在软件的整个开发过程中项目管理者需要有效的监控工作进展,并提供给每个成员必要的协助,以确保整个开发团队朝着目标前进,并且在项目迭代开发过程中的设定可观测的里程碑。作为团队开发的项目管理者,要让整个开发团队有效地运转,发挥团队每位成员的最大能量,必须要克服下列障碍:

  2.1障碍一:不信任员工

  最简单的例子是,在重量级(Heavyweight)方法[3](制定了大量的规则的 RUP 方法)中,基本假设是对人的不信任,但不信任就会产生很多的问题,比如士气不高,计划赶不上变化,创新能力低下,跳槽率升高等等。轻量级( Lightweight) (像XP 这样只制定少量的规则来规范行为的方法)方法的出发点是相互信任,做到这一点是很难的,但是一旦做到了,那么这个团队就能高效运作。

  2.2 障碍二:对任务的控制走向极端

  很多项目管理者害怕失去对任务的控制。如果能够保持沟通与协调的顺畅,采用类似“关键会议制度”等手段,强化信息流通的效率与效果,任务在完成的过程中,失控的可能性其实是很小的。同时,在安排任务的时候,项目管理者应该尽可能地把问题、目标、资源等,向各成员交代清楚,也有助于避免任务失控。

  2.3 障碍三: 管理意识薄弱

  在软件企业中,项目经理大多是技术骨干。因此有些项目管理者凭着自己的技术实力宁可自己做得很辛苦,也不愿意把工作内容交给团队成员。为什么呢? 他们认为,教会部下怎么做,得花上好几个小时; 自己做的话,不到半小时就做好了,花那么多时间教他们,还不如自己做更快些。问题是: 难道项目管理者就这样一直把所有的事情都自己做吗? 由于团队成员的经验、技能等方面的差异,尽管项目管理者自己亲自动手可能做得比其他成员好,但是如果项目管理者能够教会团队成员,就会发现: 其他成员也可以做得一样好,甚至更好。也许今天项目管理者要耽误几个小时来教其他成员干活,但以后他们会为项目管理者节省几十、几百个小时,让项目管理者有时间对关键业务作更多的更深入的思考,以保证软件开发的成功。

  3 软件模块的再认识

  每一个软件模块都具有三项职责: 第一个职责是它运行起来所完成的功能,这也是该模块存在的原因; 第二个职责是它要应对变化,几乎所有的模块在它的生命周期内都要变化,开发者应保证这种改变尽可能的简单。一个难以改变的模块是拙劣的,即使能够工作,也需要对它进行修正; 第三个职责是能和阅读它的人很好的沟通,对该模块不熟悉的开发人员也能比较容易的阅读并理解它。一个无法进行沟通的模块也是拙劣的,同样也需要对它进行修正。

  当开发人员最初编写一个模块时,代码对于他们来说看起来也许是清晰的。这是由于他们专注于代码的编写,对代码非常熟悉。

  经过一段时间后,开发者回过头来在去看那个模块,就知道自己怎么会编写如此糟糕的代码。为了防止这种情况的发生,开发人员必须站在阅读者的位置,对代码进行必要的重构,这样其他的阅读者就能够理解代码,同时所有的代码也需要团队中其他成员的评审。

  4 重视经验的总结

  在软件开发的过程中,对每一问题的解决不可能一开始就有一个好的方法,在解决一系列类似的问题后,开发人员再回过头来重新审视和评价自己解决问题的方法,在大多数情况下,开发人员都可以对这些解决方法加以提炼,对具有共性的解决方法进一步抽象,寻求更通用的解决方式,并将该设计经验提交到团队资源库组织成项目事件库。项目尽管有其独特性,但借鉴从同类型的项目之间的经验教训提炼出来的知识是很十分有价值的。

  在项目的收尾阶段,不仅是给项目的利益相关者一个正式交代,还有一个任务就是项目整个过程的经验教训予以提炼形成企业的知识财富[4]。企业的知识往往是隐含、散落在员工群体中,因此需要将员工的隐性知识转化成公司的显性知识。

  结束语

  项目管理虽然没有非常高深的理论,但要真正实施起来,也绝非易事。对于软件开发企业而言,这不是一个小的改变,而是一种变革,企业需要为此付出艰苦的努力,从而在实践中锻炼提高,解决各种各样的问题,使项目管理工作越做越好。

  参考文献:
  [1]郑人杰等.实用软件工程[M].北京:清华大学出版社,1997.4.
  [2]新产品开发项目中的需求问题[EB/OL].
  [3]Roger S.Pressman;黄柏素,梅宏译.软件工程-实践者的研究方法 [M]. 北京: 机械工业出版社,1999,10.
  [4]丁荣贵等.软件企业项目管的有效性研究[J].经济与管理研究,2005,4.

相关内容推荐
相关标签:软件项目管理论文
返回:项目管理论文