在一个软件和系统开放中,需求分析是最要的一部分,只有需求分析做好了,才能为以后打好基础.
1.功能分解方法
功能分解方法是最早的分析方法,这种方法是将一个系统看成是由若干功能构成的一个集合,每个功能又可划分若
干个子功能,一个子功能又进一步分解成若干个子功能.这样功能分解方法有功能,子功能和功能接口三个组成要素.这种
方法的关键是利用以往的经验,对一个新的系统预先设定加工和步骤,出发点凡在这个新系统需要进行什么样的加工上.
也就是把软件需求当作一颗倒置的功能树,树叶是子子功能,整棵树就是一个信息系统的全部功能树.功能分解法体现
了"自顶向下,逐步求精"的思想,本质上是用过程抽象的观点来看待需求,符合传统程序设计人员的思维特征,最后分解的
结果一般已经是系统程序结构的一个雏形,实际她已经很难与软件设计明确分离.但是这种方法难以适应用户的需求变
化.
2.结构化分析方法
结构化分析方法是一种从问题空间到某种表示的映射方法,软件功能由数据流图表示,是结构化方法中重要的被普
遍采用的方法,它由数据流图和数据字典构成系统的逻辑模型.而且结构化分析(Structured Analysis)方法是一种简单,实
用的软件需求分析方法,特别适合于信息控制和数据处理系统.像所有的软件分析方法一样,SA方法也是一种建模活动,
该方法使用简单易读的符号,根据软件内部数据传递.变化关系,自顶向下逐层分解.描绘满足功能需求分析的软件模型.
下图就是自顶向下逐层分解的示意图:

顶层的系统P很复杂,可以把它分解为0层的1,2,3三个子系统.在这三个子系统中,子系统1和3仍很复杂,可以把他们分解
为子系统1.1,1.2,1.3和3.1,3.2,3.3,3.4,3.5…..直到分解所得到的子系统都能被清楚地理解和实现为止.当然,如果子系统
已经能够清楚理解和容易实现,就不需要再分解它.比如,子系统就不要再分解了."分解"和"抽象"在自顶向下逐层分解中
是两个相互联系的概念.上层是下层的抽象,而下层是上层的分解,中间层是从抽象到具体的逐步过渡,这种层次分解使分
析人员分析问题时不至于一下子考虑过多的细节,而是逐步去了解更多细节.
对于任何比较复杂的大系统,分析工作都可以按照这种策略有计划,有步骤,有条不絮的进行.
有分析策略,就要付出行动,话说"心动,不如行动"付出行动,肯定少不了工具.看看结构化分析的三大工具:数据流图.数据字典,描述加工逻辑描述.
1)数据流图
数据流图(Data Flow Diagram,DFD)是SA方法中用于表示系统逻辑模型的一种工具.它以直观的图形清晰地描述了
系统数据的流动和处理过程,途中没有任何具体的物理元素.主要强调的是数据流和处理过程,图中没有任何具体的物理
元素,主要喝死强调的是数据流和处理过程.即使不是计算机专业技术人员也可以很容易的理解,数据流图是软件开发人
员和用户之间很好的通信工具.设计数据流图时只需考虑软件系统必须完成的基本逻辑功能不需要考虑如何具体实现这
些功能 ,它是软件开发的出发点.订机票的数据流图如下:
2)数据字典
数据字典(Data Dictionary,DD)是对数据流图中所包含元素的定义的集合,数据流图只描述了系统的"分解",系统由
哪几部分组成,各部分之间的联系,并没有对所有的图形元素都进行命名,这些名字都是一些属性和内容抽象的概括,没有
直接参加定义的人对每个名字可能有不同的理解,对一个软件来说,对数据流图中命名的不同理解,将会给以后的开发和
维护工作造成灾难.数据字典的作用也正是在软件分析和设计的过程中给人提供数据描述.即读数据存储和加工等名字
进行定义.这个定义是严密而精确的,不应该有半点的含糊,因为它主要的作用是供人查阅,并应以一种准确的,无二义性
的说明方式为系统分析,设计及维护提供有关元素的一致的定义和详细的描述,数据流图和数据字典共同构成系统的逻
辑模型.
上图订机票系统的数据流图中,数据流条目有:
订机票=姓名+住址+电话+航班号+日期+起点+终点
航班=日期+航班号+姓名
机票=姓名+日期+航班号+座位等级+起点+终点+费用
数据存储条目有:
航班目录文件={航班号+起点+终点+时间}
记账文件={旅客+航班+机票价+机场建设费}
3)加工逻辑的描述
加工逻辑也称为"小说明",是对数据流图中每个加工所作的说明,小说明集中描述一个加工"做什么",即加入逻辑,而
不是"怎么做".加工逻辑是指用户对这个加工的逻辑要求,即这个加工的输出数据流和输入数据流的逻辑关系.小说明并
不是描述具体加工过程.描述加工逻辑一般用结构化语言,判断表和判断树.
- 结构化语言
例如:如果年龄在25岁以下者,初中文化程度脱产学习,高中文化程度当电工,年龄在25岁至40岁之间者,中学文化程度男
性当钳工,女性当车工,大学文化程度的当技术员,年龄在40岁到50岁之间者的,中学文程度当交通协管员,大学文化程度
当技术员.用结构化语言编写该加工逻辑说明为:
If 年龄 <= 25 Then
If 文化程度 = 初中 Then 脱产学习
End If
If 文化程度 = 高中 Then 电工
End If
If 年龄 > 25 Or 年龄 <= 40 Then
If 文化程度 = 中学 Then
If 性别 = 男 Then 钳工
Else
车工
End If
End If
If 文化程度 = 大学 Then 技术员
End If
End If
If 年龄 > 40 Or 年龄 <= 50 Then
If 文化程度 = 中学 Then
交通协管员
End If
If 文化程度 = 大学 Then
技术员
End If
End If
- 判断表
有些问题不是简单的条件判断,而是组合条件的判定,直接引用if-then-else就比较困难,即使能直接引用,但对问题的
描述也不能做到清晰.则可以采用另一种描述工具----判断表.判定表采用表格化的形式,适用于含有复杂判断的加工逻
辑.
例如:加工逻辑为:如果某学生期末考试总分大于500分,且单科成绩有满分,发升级通知书,单科成绩有不及格的则发升级
通知书,同时发重修单科通知书;如果考试总分小于560分且单科成绩有满分,发留级通知书,免修单科通知书,单科成绩有
不及格的,则发留级通知书.用判断表表示为:
- 判定树
3.信息建模方法
信息建模方法是从数据的角度来对现实世界建立模型的,模型是现实系统的一个抽象.由于要描述现实系统,因此,必
须反映实际,又由于抽象的特征,它又必须高于实际,即不仅能反映实际,而且还能知道其他共性问题的解决.
信息建模方法的基本工具是实体-联系图(E-R图),由实体,属性和联系构成.该方法是从实际中找出实体,然后再用属性来
描述这些实体.在信息模型中,实体是一个对象或一组对象.实体把信息收集在其中,关系是实体之间的联系或交互作用.
有时在实体与关系之外,再加上属性,实体和关系形成一个网络,描述系统的信息状况,给出系统的信息模型.
4.面向对象的分析
面向对象的分析是把实体--联系图中的概念与面向对象程序设计语言中的概念结合在一起形成的一种分析方法.面
向对象分析的关键是识别,定义问题域内的类与对象(实体).并分析它们之间的关系,根据问题域中的操作规则和内存性
质建立模型.在该方法中采用了实体,关系和属性等信息模型分析中的概念,同时采用了封闭,类结构和继承性等面向对象
程序设计语言的概念.