摘要:本文试图从分析软件需求的不确定性产生的愿国,分析传统开发方法的不适应性,提出加强软件项目管理、确定与顾客有关的过程、采用适用的毓件开发方法和软件需隶管理工具作为解决问题的途径。项目管理者联盟
0 引言项目管理者联盟
软件需求的准确性直接影响到软件项目或产品的质量、交货13期、客户的验收,以及由此引起的开发成本的不确定因素。因此,关于软件需求获取、表示和分析的研究历来受到软件行业的关注,希望通过这些撩索来解决需求的准确性。但是,大部分的研究是基于软件的需求是确定的,是应该能够被准确表述的,只是获取需求的方法或描述需求的形式不是足够好而已,所以提出了形式化方法、非形式化方法、基于知识表示的综合方法等 但随着软件规模的越来越大、软件应用领域越来越广,发现软件需求的不确定性越来越大,有时甚至无法控制,用户经常不断地修改需求,导致软件编制的频繁返工,以至项目失败。项目管理者联盟
1 软件需求的不确定性blog.mypm.net
软件的研制是一种人的智力创造,软件的产品是一种信息的产品,是无形的。而根据自然辩证法的认识论观点,物质是第一性、精神是第二性的,人的认识过程是不断深化的。所以,在一般情况下,当客户在看到软件最终产品之前是无法判断其是否是所希望的软件产品。一旦他看到最终产品时才发现与自己的期望相差甚远。究其原因:项目管理者联盟
(1)用户的需求可以分为三个层次,即:基本的需求、预期的需求和兴奋的需求,其中预期的需求是明示的,而基本的需求和兴奋的需求往往是非明示的。所谓兴奋的需求是指这些特征在用户的期望范围之外,并且当其存在时将是非常令人满意的。项目管理者联盟
(2)即使是用户明示的需求,往往因应用领域与用户问题的多样性和复杂性,用户在表述需求时常常带有不确定性与模糊性的因素。项目管理者联盟
(3)随着开发进程的推进,用户对所建应用系统理解的不断深人,对原来模糊的或非明示的需求有了新的认识,随时会提出需求的变更,因此需求的变更具有不可预测性。项目管理培训
(4)用户要求的实效性和多变性,以及用户所描述的需求本身具有内在的矛盾及其潜在的冲突性,由于开发人员的领域知识的局限性,导致引发需求的误解。项目管理者联盟
(5)用户需求的获取过程与描述形式往往采用非形式化的自然语言,以及自然概念中存在的本质矛盾,使需求的规范描述发生困难。项目管理者联盟
(6)不成熟的软件企业,经常的做法是把软件设计和开发的重点放在编码和测试上,对软件需求分析认识不足,更投有需求变更的控制过程,常常导致项目进度大大滞后,成本远远超过预算,用户还不满意的情况。项目管理者联盟
(7)需求分析方法论和分析工具的缺乏,及其应用范围的局限性,也影响着需求的准确性和需求变更的可控制性。PgMp.mypm.net
因此,用户需求的不确定性是客观存在的,是不可避免的。项目管理者联盟
2 传统方法的局限性pmp.mypm.net
2.1 瀑布模型瀑布模型项目管理者联盟
为软件开发和软件维护提供了一种有效的管理框架,它在消睬非结构化软件、降低软件的复杂度、促进软件的工程化方面起着显着作用,2o多年来广为流行但是,它无法解决软件需求不明确或不正确的问题,缺少解决这些问题的灵活性,用户往往在软件项目开发完成后才发现所开发的软件不是他们所需要的。项目管理者联盟
由此引发的项目返工或在维护中进行纠正所花费的代价是高额的。talent.mypm.net
2.2 快速原型项目管理者联盟
为了弥朴瀑布模型的不足,已经提出了多种其它模型。快速原型方法是8o年代出现的一种软件工程范型。针对需求获取的初始阶段往往对软件的需求认识常常不够清晰的情况,将开发活动分为建立原型和实现最终软件两个阶段。建立原型阶段作为试验开发,快速地建立一个待开发软件的原型(prototype)系统,然后请用户对原型系统进行评价并对软件需求提出修改或确认,这种修改或确认可能会反复多次;实现最终软件阶段是根据晟终确认的软件需求,设计和实现软件的最终系统。显然,原型开发方法在克服瀑布模型缺点、减少由于需求获取的初始阶段软件需求不明确而给开发工作带来风险方面,具有显着效果。项目管理者联盟
但是,快速原型技术仅解决了初始阶段的需求获取问题,投有解决实现晟终软件阶段的需求变更的问题,其原型的适应性和可信度存在一定的问题。于是,提出了螺旋模型和迭代开发模型等软件开发模型。项目管理者联盟
2.3 贯彻质量管理体系中的误区bbs.mypm.net
在一些刚刚建立了质量管理体系的软件企业中,对软件需求分析规定了文档化程序,必须在软件需求分析说明书通过评审后才能开始软件的设计工作。因为对软件需求的不确定性缺乏认识,机械地认为只要存在需求不清的情况,就不能开展软件的设计工作,从而延误了项目或产品的开发时机,甚至对软件质量管理体系产生抵触情绪。项目管理者联盟
3 解决途径项目管理者联盟
软件需求作为一个需求工程越来越受到软件界的重视,软件需求的不确定性是客观的事实。但目前还没有一种“包治百病”的良方。其实,软件的需求可分为用户需求、技术需求和项目需求三类,而软件需求的管理涉及需求确定、需求实现和需求变更三个方面,所以,需求管理的问题是贯穿在整个软件开发周期中的。项目管理者联盟
因此,针对软件需求的不确定性,我们可以从以下四个方面进行综合治理:项目经理博客
|