购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.2.5 软件需求分析的原则

近年来软件开发人员已提出了许多软件分析与说明的方法。虽然各种分析方法都有其独特的描述方法,但总的看来,所有分析方法还是有它们共同适用的基本原则。

1.需要能够表达和理解问题的信息域和功能域

所有软件定义与开发工作最终是为了解决好数据处理问题,就是将一种形式的数据转换成另一种形式的数据。其转换过程必定经历输入、加工数据和产生结果数据等步骤。

对于计算机程序处理的数据,其信息域应包括信息流、信息内容和信息结构。

信息流即数据和控制通过一个系统时的变化方式,如图2.3所示。输入对象首先转换成中间数据/控制,然后转换成输出对象。在此期间可以从已有的存储(如磁盘文件或内存缓冲区)中引入追加数据/控制。对数据进行转换是程序中应有的功能或子功能,两个功能之间中间数据/控制的传递可确定功能间的接口。

信息内容即单个数据或控制对象,它们构成了某个更大的由软件变换生成信息的集合。例如,学生名册包含班级、人数、学号、姓名、性别、各科成绩等,学生名册的内容由它所包含的项定义。为了理解对学生名册的处理,必须理解它的数据内容。类似地,控制对系统状态的内容可以由一个位串定义,每位表示一个单独的信息项,它会指明某个特殊设备是在线还是离线。

图2.3 信息流

信息结构即各种数据和控制项的内部组织。在结构中数据项与其他哪些数据项相关?所有数据是在一个信息结构中,还是在几个信息结构中?一个结构中的数据与其他结构中的数据如何联系?这些问题都由信息结构的分析来解决。

2.以层次化的方式对问题进行分解和不断细化

通常将软件要处理的问题作为一个整体来看,显得太大、太复杂,很难理解,因此需要把问题以某种方式分解为几个较易理解的部分,并确定各部分间的接口,从而实现整体功能。在需求分析阶段,软件的功能域和信息域都能进行进一步分解。这种分解可以是同一层次的,称为横向分解;也可以是多层次的,称为纵向分解,如图2.4所示。

如果把一个功能分解成几个子功能,并确定这些子功能与父功能的接口,就属于横向分解。但如果继续分解,又把某些子功能分解为小的子功能,某个小的子功能又分解为更小的子功能,这就属于纵向分解了。

图2.4 问题的分解

3.要给出系统的逻辑视图和物理视图

给出系统的逻辑视图(逻辑表示)和物理视图(物理表示),这对系统满足处理需求所提出的逻辑限制条件和系统中其他成分提出的物理限制条件来说是必不可少的。

软件需求的逻辑视图给出的是软件要达到的功能和要处理的数据之间的关系,而不是实现的细节。例如,一个商场的销售处理系统要从顾客那里获取订单,系统读取订单的功能并不关心订单数据本身的物理形式和读入设备,也就是说无须关心输入的机制,只是读取顾客的订单而已。类似地,系统中检查库存的功能只关心库存文件的信息结构,而不关心它在计算机中的具体存储方式。

软件需求的逻辑描述是软件设计的基础。软件需求的物理视图给出的是处理功能和数据结构的实际表现形式,这往往是由设备本身决定的。例如,一些软件靠终端键盘输入数据,另一些数据处理软件靠 A/D 转换设备提供数据。软件分析人员必须弄清系统对软件的限制,并考虑功能和数据结构的物理表示。分析人员在需求分析过程中,并不需要考虑“如何实现”,仅需要考虑“做什么”。 YN9CJEycv+o2hZnGieq+rn5i0vqM1M+uVxPXmR8D/oTAoxVCDg7nKoqMt/qozPoc

点击中间区域
呼出菜单
上一章
目录
下一章
×