background image

                              

软件需求分析

以一个简单的例子来看,假设要求设计关于引进人才评估的一个系统,按我们过去的做法
先会要求提供给我们一份相关的引进人才评估表,然后依葫芦画瓢地设计相应的表单与界
面。在短期来说,这样做是简便而实用的,但并不能够符合现实世界的长远目标,这套设计
方法不具有扩展性,因为任何一份评估表的结构都会有可能发生许多改变的。采用面向对象
的方法,可以从中提取出表类型、表结构、评分方法以及能考虑继承等各方面的要素,这样
就可以保证软件的通用性,可配置性与可维护性。
      在工具的选择过程中,我们选择了现在已十分流行的 Rational 系列,包括 Rational 
Rose、RUP 、SoDA 等,为什么选取这个系列工具呢?这是基于我们对软件需求分析目标的
看法,我们认为需求分析应当能正确地回答如下的几个关键性问题:
   (1)用户的需求是否已详尽地被考虑到了?
   (2)用户能理解或明白我们所描述的内容吗?
   (3)分析是否会和设计相脱节,
   (4)程序员能明白我们的分析与设计要求吗?等等。
    以下对上述几个问题逐一简要地加以说明:
   (1)详尽地获取用户的需求。
    用户的需求可分为显式的需求与隐性的需求,用户的倾向往往只顾及到当前的与明显的
需求。要达到对需求理解的全面性,不仅仅只是依靠有效的用户谈话和调查,因为我们所面
对的用户需求往往会有些片面的,采用

Rational Rose(基于 UML)提供的用例,以及多种

图的联合使用,可以使我们发现其中的遗漏。
   (2)使用户能充分地理解我们的表示方法,能够真正明白我们描述的内容。
    软件需求分析规格说明书通常会是冗长而枯燥的,一般的用户不容易深入理解,这样就
削弱了分析的正确性。通过支持面向对象及

UML 语言的 Rational Rose 可以更好地和用户交

流,让用户了解系统的运作方式甚至细节的操作。
   (3)使分析和设计两个阶段互相联系与贯通。
    这是我们选择面向对象的方法及 Rational Rose 工具的重要原因,系统分析要向用户描述
的不仅仅是用户的需求,而且包括解决方法,解决方法当然应包括设计(程序)、数据库与
系统配置,我们当然不希望用户得到的是一个与需求规格说明不相同的软件,也不可能要
求程序员完成一个不可胜任的任务。然而我们在以前的多项工作中经常发现这类情节,因为
系统分析与设计相互脱节,导致一头扎在分析中不顾设计有关的事宜。
    分析与设计的脱节,还不利于设计现格说明的评估,因为分析往往会脱离现实,导致缺
乏评估的依据。
    因为不可能成功地完成设计而使分析需要重来,就会造成巨大的浪费与损失。一个好的工
具可以使分析与设计更紧密地连结起来,甚至于

—一对应。面向对象的分析方法使对象之间

相对而言有独立性,减少了任何影响到全局的改动,能避免因需求变化而导致全盘皆动的
被动局面。
   (4)使程序员明白我们的设计。
    一个好的设计应该让程序员感到清晰明白,更少疑问。一个疑问很多的设计加上沟通不畅,
绝对会出现在应用环境下所不需要的另一个软件,所以设计规格说明书务必清楚、形象与明
确,当然,

Rational Rose 具有足够的图形与其他形式,能使程序员更加明确,甚至能细微

到每一个语句(事实上如果使用

VB,程序架构都有可能直接生成了)。

   (5)选择 UML 可能会有更多的理由。
    比如用户文档的编写、数据库设计,我们都需要做到有延续性,有自动化支持和具有质量