【摘要】
本文通过一个集成电路设计有关的软件项目,讨论了该项目的主要特点和本人所担任的工作,着重讨论了在项目需求分析过程中采用的具体方法和工具以及选用的理由。
由于项目的专业领域的特殊性,分两类不同的需求讨论了需求分析中遇到的问题及解决方法;在这个过程中给出了对选用的具体工具和方法的效果的描述。接着本文讨论了对使用方法的改进的一些想法以及具体的实现过程。最后提出了我对需求分析的某些看法,强调了与客户沟通的重要性。
【正文】
近年,我一直从事某企业中有关IT项目的开发,有一个系统是用于计算机辅助电路设计的,包括了从上流设计到下流设计的所有流程,如用于可设计百万门数量级的逻辑门电路。有关方面把电路中路径的提取、过滤以及表示的某软件开发任务交给我公司,我有幸担任了该部分的需求分析以及设计。
我所设计部分为一单独可启动的软件,主要是解析文件中的连线路径,以列表视图和用直方图等把它们显示出来,还可以执行诸如查找与过滤等功能。
委托方对此提供了很初步的需求说明,把一些基本功能及性能要求描述了一下。我在需求分析时的工作主要有两点:第一,对该软件的界面等详细需求要自己重新进行分析提取。第二,对于已提供的功能要求需要深化和细化,以形成真正完整的需求分析文档。
在接到需求分析任务后,我分析了一下所要完成的工作。发现由于是专用领域的软件,对专业领域要求相当高,所以准备把此项目分成两部分:
(1)界面所受专业领域影响几乎没有,但由于全部没有任何要求,反而会感到风险和改动可能是最大的。
(2)功能方面由于委托方的许多功能都可以调用相应模块来得到,并且已有了相应的书面的简单需求,相应来说只是完成深化。对界面,我采用了部分RUP的思想迭代与渐进。而对功能需求采取了分层细化,每细化一层就要求委托方确认、修改和补充。
首先把风险较大的部分完成,这是现代软件开发的基本常识。我选择先进行界面的需求分析。第一步是根据功能描述抽取出逻辑模型,并使逻辑模型与界面元素及功能一一对应,大体上决定了界面应有的功能,然后根据该界面功能描述,确定具体的控件,这时,我参考了委托方已初步完成的主窗口的界面布局及控件的使用规律,然后根据需要完成的功能从Qt(由于要支持Windows和Unix双平台,所以控件库采用Qt)的类库中选择相应的控件。在提取和抽象逻辑模型时,我采用了Rose 2000中的用例图,即以 USE-CASE图来描述与外部的关系。之所以采用Rose,我是基于以下的原因:第一,在已开发的部分中,委托方统一要求我们使用Rose进行类和顺序图等的设计和代码生成。第二,Rose提供了标准的图来描述系统与外部的关系,在全球范围已是一种标准结构。第三,使用上的方便性。我用Rose的USE-CASE图,理清了我们的软件窗口与委托方主窗口以及外部角色(操作者)之间的相互关系。
在确定了界面元素后,考虑到文档的可理解性不是很强,我采用Visio 2000把界面的外观绘制出来,写上了基本的控件作用,随后送给委托方评审,幸运的是除了几个小功能的修改,委托方基本批准了我的方案。