background image

   论软件需求分析方法和工具的选用——IC 行业内部的 CAD 应用

【摘要】
    本文通过一个集成电路设计有关的软件项目,讨论了该项目的主要特点和本人所担任的
工作,着重讨论了在项目需求分析过程中采用的具体方法和工具以及选用的理由。
    由于项目的专业领域的特殊性,分两类不同的需求讨论了需求分析中遇到的问题及解决
方法;在这个过程中给出了对选用的具体工具和方法的效果的描述。接着本文讨论了对使用
方法的改进的一些想法以及具体的实现过程。最后提出了我对需求分析的某些看法,强调了
与客户沟通的重要性。
【正文】
    近年,我一直从事某企业中有关 IT 项目的开发,有一个系统是用于计算机辅助电路设计
的,包括了从上流设计到下流设计的所有流程,如用于可设计百万门数量级的逻辑门电路。
有关方面把电路中路径的提取、过滤以及表示的某软件开发任务交给我公司,我有幸担任了
该部分的需求分析以及设计。
    我所设计部分为一单独可启动的软件,主要是解析文件中的连线路径,以列表视图和用
直方图等把它们显示出来,还可以执行诸如查找与过滤等功能。
    委托方对此提供了很初步的需求说明,把一些基本功能及性能要求描述了一下。我在需求
分析时的工作主要有两点:第一,对该软件的界面等详细需求要自己重新进行分析提取。第
二,对于已提供的功能要求需要深化和细化,以形成真正完整的需求分析文档。
    在接到需求分析任务后,我分析了一下所要完成的工作。发现由于是专用领域的软件,对
专业领域要求相当高,所以准备把此项目分成两部分:
   (1)界面所受专业领域影响几乎没有,但由于全部没有任何要求,反而会感到风险和改
动可能是最大的。
   (2)功能方面由于委托方的许多功能都可以调用相应模块来得到,并且已有了相应的书
面的简单需求,相应来说只是完成深化。对界面,我采用了部分

RUP 的思想迭代与渐进。而

对功能需求采取了分层细化,每细化一层就要求委托方确认、修改和补充。
    首先把风险较大的部分完成,这是现代软件开发的基本常识。我选择先进行界面的需求分
析。第一步是根据功能描述抽取出逻辑模型,并使逻辑模型与界面元素及功能一一对应,大
体上决定了界面应有的功能,然后根据该界面功能描述,确定具体的控件,这时,我参考
了委托方已初步完成的主窗口的界面布局及控件的使用规律,然后根据需要完成的功能从
Qt(由于要支持 Windows 和 Unix 双平台,所以控件库采用 Qt)的类库中选择相应的控件。
在提取和抽象逻辑模型时,我采用了

Rose 2000 中的用例图,即以

 USE-CASE 图来描述与

外部的关系。之所以采用

Rose,我是基于以下的原因:第一,在已开发的部分中,委托方

统一要求我们使用

Rose 进行类和顺序图等的设计和代码生成。第二,Rose 提供了标准的图

来描述系统与外部的关系,在全球范围已是一种标准结构。第三,使用上的方便性。我用
Rose 的 USE-CASE 图,理清了我们的软件窗口与委托方主窗口以及外部角色(操作者)之
间的相互关系。
    在确定了界面元素后,考虑到文档的可理解性不是很强,我采用 Visio 2000 把界面的外
观绘制出来,写上了基本的控件作用,随后送给委托方评审,幸运的是除了几个小功能的
修改,委托方基本批准了我的方案。
    下面的工作是为控件的行为及状态变化制定相应的状态迁移图,我选用的工具仍是
Rose,我用了状态图和时序图,把重要的控件状态变化及相应顺序进行了描述,随后的几
天把相应的

DOC 文档建好写明,基本上界面设计就完成了。

    下面的需求是针对功能需求的。虽然委托方技术部门有初步的需求文档,但由于领域的专
门化不对,我不清楚其中复杂的路径提取关系及较深入的专业术语,一直有一种举步维艰