今年,至少三分之二的软件项目达不到用户所期盼的要求,这些项目有的被推迟,有的超过预算,有的不包含关键的因素,有的则被削减。出现这种情况时,大部分都是因为返工造成的,以及项目进展缓慢、重写代码使得交货日期超过了期限。
进一步说,有一半以上的重写工作是因为没有理解或误解了软件项目的需求。这个数目是非常惊人的,在软件项目开发中因为误解需求而导致的浪费以百万美元计,而因需求误解所造成的损失在美国每年达到300亿美元。为什么理解软件项目的需求如此困难?
角色转换中的误解
我们在开发软件解决商业问题时,根据所处的位置不同,比如从股东位置、商人位置或程序员位置,对问题的看法就有所不同。表A中列出了一些典型情况。
表A
|
问题陈述 |
财政官 |
“我们每月只能关门4天而不是6天” |
金融分析师 |
“我们需要采用流水线处理,需要不同软件系统上的可靠性” |
软件设计师 |
“我们的数据库已经过时,导致一些不必要的延误。” |
程序测试员 |
“在线银行系统需要完全重写。” |
最终,所有人都努力解决相同的问题,但是每个人的看法都不同,每个人都采用自己的话语陈述各自感兴趣的问题。在这些话语之间进行沟通是我们所面临的问题:如果能正确转换这些话语,就是我们的成功;如果所有的需求都不清楚、含糊或者不完整时,我们则失败了。
参与者
至少有4种不同层次的人参与到软件开发过程之中:
表B列出以上这些情况。
表B
|
领域专家 |
商业分析师 |
软件设计师 |
程序测试员 |
工作语言 |
英语 |
英语 |
英语/其他 |
很多其他的语言 |
专门技术 |
商业问题 |
系统问题 |
软件设计 |
写代码测试代码 |
日常语言 |
商务英语 |
系统英语 |
建模语言 |
C++, C#, Java |
沟通上的困难
在一个理想状况下,每一个人都能够胜任工作并且在每一过程中都能进行沟通。但是在这个理想世界里,我们也发现要沟通其实也很困难,比如从领域专家到软件设计师。每一个参与者都有自己独特的语言,并且可能水平高低不同,二者的沟通则存在困难。但如果在团队中缺少了商业分析师或软件设计师,则整个团队的沟通链就中断了。
另外,每一个人使用的工具对沟通也起了重要的作用。20世纪90年代被称为“设计师的10年”,在这个时间段内,软件设计师得到公认并成为很重要的一部分。最终软件的体系结构被理解,成为一个系统的基本骨架,并且软件设计师获得尊重并获得应有的权力,并且得到了他们需要的好工作。这种情况出现后,工具的出现更能让他们更好的完成工作。特别是像Rational Rose这样的建模工具出现后,更让他们能设计更大的软件系统和产品。