摘 要:作者结合自身工作实践,深入探讨了在软件外包项目管理过程中,如何有效地进行“需求工程”的相关工作,从而保证承包商获取完整并符合用户真实意愿的项目需求,以及减少因需求变更失控带来的可能危害。
关键字:软件外包项目、需求工程、需求开发、需求管理、ALESH系统
一、 需求的重要性
何为“需求”?广泛的讲,软件项目中的需求源于用户的一些“需要”,这些“需要”被分析、确认后形成完整的文档,该文档详细地说明了软件产品“必须或应当”做什么。
从重要性来看,软件项目中“需求、设计、编码、测试”四者哪个更重要?这个问题不好回答。四者都是软件开发过程中必不可少的环节,光做好其中一个环节并不能产生好的系统,但是做坏了其中任何一个环节,必定对系统产生坏影响。若从风险管理的角度讲,我认为需求开发和管理是最重要的环节。因为需求是产品的根源,需求工作的优劣对产品影响最大,而且会带来最大的返工成本。举例来说,软件项目开发过程就像一条河流,如果河流的源头(需求)被污染了,那么整条河流也就被污染了。
开发软件系统最困难的部分就是准确说明开发什么。最困难的工作是编写出详细的需求,以及包括所有面向用户、面向机器和其他软件系统的接口。此工作一旦做错,将会给系统带来极大的损害,并且以后的弥补也极为困难。
二、 需求工作的问题分析
电力行业这几年正迎来信息化建设新浪潮,每个电力企业每年都有大量的软件项目需要开发,一些项目是由本企业自主开发,另外很大一部分是外包给其他软件公司进行开发,我们在这里可以将其称为“软件外包项目”。从我个人的了解和切身体会来看,国内许多电力企业的软件项目开发状况并不理想,很多项目进度反复延期、大量的返工、产品质量总是不能满足项目预期和用户的要求。而作为信息化建设的主流模式,软件外包项目更会因为跨地域、沟通不到位、承包商不成熟、组织利益不同等原因而产生更多的问题。
分析导致软件项目失败的众多原因,其中最主要的一条就是项目的开发方和用户方对“需求工作”不重视或缺少一套有效的方法论。一方面开发方的很多人员并不知道如何把需求工作做好,而另一方面用户方往往也忽略需求,不能积极提供完整详细的需求说明,而且很多需求确认或评审工作也是草草了事。
为了改进软件项目以上所述现状,绍兴电力局从2004年起和上海沙迪克软件有限公司一起就软件外包项目开发管理过程进行规范和整改,并取得了非常理想的成效。
我们首先来了解一下软件外包项目中需求工作存在的种种问题。
2.1 用户说不清楚需求
用户说不清楚需求是普遍现象,这是让开发商非常头痛的问题。这种情况下,如果软件承包商以此为借口草率地对待需求工作,会连累整个项目的开发。无论什么原因导致用户说不清楚需求,承包商都必须设法搞清楚用户的真实需求,这是他们的职责。
2.2 态度问题
相当多软件承包商的开发人员习惯于被动地对待需求工作。每当遇到麻烦、挫折时,总是发牢骚,并找出用户的很多问题。这是普遍现象,并不是承包商懒惰所造成的,而是不正确的观念误导了他们。
很多承包商错误地认为:需求是用户的事情,不是我们的事情。我们为用户开发软件,难道用户不该告诉我们应当开发什么吗?如果用户说不清楚需求或者经常变更需求,因此引起的问题是用户造成的,应当由他们自己负责。
软件承包商应该让自己的开发人员了解到:需求分析员的天职就是在有限的时间内获取准确而细致的用户需求,如果做不到就是失职,不要找借口。
关键字:软件外包项目、需求工程、需求开发、需求管理、ALESH系统
一、 需求的重要性
何为“需求”?广泛的讲,软件项目中的需求源于用户的一些“需要”,这些“需要”被分析、确认后形成完整的文档,该文档详细地说明了软件产品“必须或应当”做什么。
从重要性来看,软件项目中“需求、设计、编码、测试”四者哪个更重要?这个问题不好回答。四者都是软件开发过程中必不可少的环节,光做好其中一个环节并不能产生好的系统,但是做坏了其中任何一个环节,必定对系统产生坏影响。若从风险管理的角度讲,我认为需求开发和管理是最重要的环节。因为需求是产品的根源,需求工作的优劣对产品影响最大,而且会带来最大的返工成本。举例来说,软件项目开发过程就像一条河流,如果河流的源头(需求)被污染了,那么整条河流也就被污染了。
开发软件系统最困难的部分就是准确说明开发什么。最困难的工作是编写出详细的需求,以及包括所有面向用户、面向机器和其他软件系统的接口。此工作一旦做错,将会给系统带来极大的损害,并且以后的弥补也极为困难。
二、 需求工作的问题分析
电力行业这几年正迎来信息化建设新浪潮,每个电力企业每年都有大量的软件项目需要开发,一些项目是由本企业自主开发,另外很大一部分是外包给其他软件公司进行开发,我们在这里可以将其称为“软件外包项目”。从我个人的了解和切身体会来看,国内许多电力企业的软件项目开发状况并不理想,很多项目进度反复延期、大量的返工、产品质量总是不能满足项目预期和用户的要求。而作为信息化建设的主流模式,软件外包项目更会因为跨地域、沟通不到位、承包商不成熟、组织利益不同等原因而产生更多的问题。
分析导致软件项目失败的众多原因,其中最主要的一条就是项目的开发方和用户方对“需求工作”不重视或缺少一套有效的方法论。一方面开发方的很多人员并不知道如何把需求工作做好,而另一方面用户方往往也忽略需求,不能积极提供完整详细的需求说明,而且很多需求确认或评审工作也是草草了事。
为了改进软件项目以上所述现状,绍兴电力局从2004年起和上海沙迪克软件有限公司一起就软件外包项目开发管理过程进行规范和整改,并取得了非常理想的成效。
我们首先来了解一下软件外包项目中需求工作存在的种种问题。
2.1 用户说不清楚需求
用户说不清楚需求是普遍现象,这是让开发商非常头痛的问题。这种情况下,如果软件承包商以此为借口草率地对待需求工作,会连累整个项目的开发。无论什么原因导致用户说不清楚需求,承包商都必须设法搞清楚用户的真实需求,这是他们的职责。
2.2 态度问题
相当多软件承包商的开发人员习惯于被动地对待需求工作。每当遇到麻烦、挫折时,总是发牢骚,并找出用户的很多问题。这是普遍现象,并不是承包商懒惰所造成的,而是不正确的观念误导了他们。
很多承包商错误地认为:需求是用户的事情,不是我们的事情。我们为用户开发软件,难道用户不该告诉我们应当开发什么吗?如果用户说不清楚需求或者经常变更需求,因此引起的问题是用户造成的,应当由他们自己负责。
软件承包商应该让自己的开发人员了解到:需求分析员的天职就是在有限的时间内获取准确而细致的用户需求,如果做不到就是失职,不要找借口。