分享

二、传统的需求分析方法

 tracylong 2009-12-23

结构化的分析方法是在20世纪70年代末提出的,30多年来被广泛应用,是最经典的需求分析方法。结构化的分析方法适用于数据处理类型软件的需求分析。它提供的工具包括:数据流图、数据字典、结构化英语、判定表和判定树。
系统的分析模型必须达到三个主要目标:
(1)描述客户的需要;
(2)建立创建软件设计的基础;
(3)定义在软件完成后可以被确认的一组需求。
分析模型包含了图3.2中提到的各种图、规约、描述和字典。以下各节将对分析模型中的这些元素进行更加详细的讨论。

1
图3.2 分析模型的结构

3.2.1数据流图

任何软件系统(或计算机系统)从根本上来说,都是对数据进行加工或变换的工具。图3.3是一个高度抽象了的软件系统的逻辑模型。
椭圆: 加工或  变换 



11输入                           输出

 

图3.3  软件模型

1. 组成符号 
数据流图只使用4种基本图形符号:①圆框代表加工;②箭头代表数据的流向,数据名称总是标在箭头的边上;③方框表示数据的源点和终点,给数据源和数据汇;④双杠(或单杠)表示数据文件或数据库(如图3.4所示)。文件与加工之间用箭头线连接,单向表示只读或只写,双向表示有读有写。注意,每一图形符号都必须标上名字,加工框还应该加上编号,以帮助识别。
1
图3.4 数据流图的符号

4.下面以教材购销系统中的教材销售为例,说明如何画数据流图。
从用户调查中了解到某高校向学生销售教材的手续是:先由系办公室的张秘书开购书证明,学生凭证明找教材科的王会计开购书发票,向李出纳员交付书款,然后到书库找赵保管员领书。现欲将上述手工操作改为计算机处理,试画出教材销售过程的数据流图。
该例子的基本数据流图如图3.5所示。

1无效书单
1椭圆: 开  领书单 



1购书单               发票                领书单            
1

学生

 

学生

 11

图3.5  计算机售书系统模型

我们还要补充数据存储,如图3.6所示。
111无效书单
椭圆: 开  领书单2椭圆: 审查  开发票  1                
购书单              发票              领书单             
1

学生

 

学生

 11 
11

 

 

11各班学生用书表    教材存量表
11 



图3.6  计算机售书系统的数据流图

2. 命名
数据流图中每个成分的命名是否恰当,直接影响数据流图的可理解性。给这些成分起名字时应该仔细推敲。

3. 分层数据流图
1
图3.7 数据流图的层次结构

为了表达数据处理过程的数据加工情况,需要采用层次结构的数据流图。

4.数据流图实例
建立数据流模型的基本步骤概括地说,就是自外向内、自顶向下、逐层细化、完善求精。我们用下面的例子来说明如何创建一个系统的数据流图。

5. 问题陈述:建立一个简化的商业自动化系统。其中:售货员负责录入销售的商品(商品名,编号,单价,数量),有时要根据特定情况对销售的商品进行修改或删除。收款员负责收取现金,并将多交的付款退还用户。销售经理需要随时查询整个部门的销售情况(时间,商品编号,销售金额),并在每日结束时,统计各类商品的销售金额。
首先:建立系统环境,确定系统边界,画出顶层DFD。
1

图3.8  简化的商业自动化系统顶层DFD

然后自顶向下,逐层分解。从输入端开始,根据商业自动化系统的工作流程,画出数据流所流经的各加工框,逐步画到输出端,得到更下层的数据流图。
1

图3.9  简化的商业自动化系统0层DFD
可根据需要继续逐层分解,例如加工3可分解为图3.10。
1
图3.10  简化的商业自动化系统1层DFD

5. 注意事项
(1)画数据流图不是画流程图。
(2)父图和子图的平衡。
(3)局部文件。
(4)分解的深度与层次
(5)要遵守加工编号规则

3.2.2 数据字典

数据字典要对数据流图中出现的所有名字(数据流、加工、数据存储)进行定义。在数据字典中,描述数据元素之间的关系时,可以使用自然语言,但为了更加清晰简洁,可采用以下符号:
= 表示等价于(或定义为)
+ 表示与
[ | ] 表示或(从方括号内由“|”号隔开的分量中选择一个)
{} 表示重复
()表示选择
以下结合图3.6的计算机售书系统,举例说明怎样编写各类数据的字典条目。

1. 数据流条目
下面看一个例子。
6. 以图3.6中的“发票”为例,编写一个字典条目。“发票”是一个数据流,其条目内容与书写格式如表3.2所示。
表3.2  数据流“发票”的字典条目


数据流名:发票

别    名:购书发票

组    成:学名+姓名+{书号+单价+数量+总价}+书费合计

备注

 

2. 数据文件条目
下面再看一个例子。
7. 为计算机售书系统中的文件“各班学生用书表”编写一个字典条目。
表3.3  数据文件“各班学生用书表”的字典条目


文件名:各班学生用书表

别  名:

组  成:{系编号+专业和班编号+年级+{书号}}

组  织:按系、专业和班编号从小到大排列

备  注:

3. 数据项条目
表3.4至表3.6分别列出了3个数据项字典条目;其中“年级”属于数据文件“各班学生用书表”;“数量”及“书费合计”均属于数据流“发票”。
表3.4  数据流“年级”的条目


数据项名:年级

别    名:

取值及含义:
F—freshman,一年级
M—sophomore,二年级
J—junior,三年级
S—senior,四年级

备    注:F、M、J、S可分别用
1,2,3,4代替

表3.5  数据项“数量”的字典条目                表3.6  数据项“书费合计”的条目


数据项名:数量

 

数据项名:书费合计

别    名:购书量

 

别    名:

取    值:正整数

 

取    值:00.00~99.99

备    注:

 

备    注:

8. 将表3.2中的“发票”和表3.3中的“各班学生用书表”,以公式的形式来定义。
(1)数据流“发票”的公式定义为:
发票=(学号)+姓名+{书号+单价+数量+总价}+书费合计
对于较长和较复杂的数据流,还可用分层次描述使眉目更加清楚。上述数据流“发票”也可以表示为:
发票=(学号)+姓名+{发票行}+书费合计
发票行=书号+单价+数量+总价
(2)各班学生用书表的公式定义为:
各班学生用书表={系编号+专业和班编号+年级+{书号}},其中
系编号=2{数字}2             二位数字,例如01,12
专业和班编号=3{数字}3     三位数字,例如305
年级=[F/M/J/S]                      在4个字母中任选一个。
书号={字母}+{数字}      例如MATH 11,ENG 1,ENG 2,OS 4,SE 3等

3.2.3实体-关系图(E-R图)

实体-关系图中包含3种相互关联的信息:数据对象、数据对象的属性及数据对象彼此间相互连接的关系。

1. 数据对象、属性与关系
数据对象是软件必须理解的复合信息的抽象。所谓复合信息,是指具有一系列不同性质或属性的事物,仅有单个值的事物(例如,宽度)不是数据对象。
数据对象可以是外部实体(如显示器)、事物(如报表或显示)、角色(如教师或学生)、行为(如一个电话呼叫)或事件(如单击鼠标左键)、组织单位(如研究生院)、地点(如注册室)或结构(如文件)。
数据对象彼此间是有关联的,例如,教师“教”课程,学生“学”课程,教或学的关系表示教师和课程或学生和课程之间的一种特定连接。数据对象只封装了数据,没有包含作用于这些数据上的操作。这与面向对象范型中的类和对象不同。
属性定义了数据对象的特征。它可用来:① 为数据对象的实例命名;② 描述这个实例;③ 建立对另一个数据对象的另一个实例的引用。如学生数据对象的属性可以有学号、姓名、性别、出生年月、籍贯等。为了唯一地标识数据对象的某一个实例,定义数据对象中的一个属性或几个属性为关键码(key),例如在“学生”数据对象中用“学号”做关键码,它可唯一地标识一个“学生”数据对象中的实例。
数据对象彼此之间相互连接的方式称为联系,也称为关系。联系可分为以下3种类型:
(1)一对一联系(1∶1)
9. 一个部门有一个经理,而每个经理只在一个部门任职,则部门与经理的联系是一对一的。
(2)一对多联系(1∶N)
10. 每位教师可以教多门课程,但是每门课程只能由一位教师来教,则某校教师与课程之间存在一对多的联系。
(3)多对多联系(M∶N)
11. 一个学生可以学多门课程,而每门课程可以有多个学生来学,则学生与课程间的联系是多对多的。

2. 实体-关系图实例
在E-R图中,每个方框表示数据对象,椭圆表示属性,方框之间的菱形表示数据对象之间的关联。E-R图中用到的符号如下图所示:
流程图: 决策: 选修椭圆: 姓名1

学生

 

实体

 

关系

 

属性

 

连接

  

 

 


图 3.10  E-R图的符号表示

12. 在教学管理中,一个教师可以教授零门、一门或多门课程,每位学生也需要学习几门课程。因此,教学管理中涉及的对象(实体)有学生、教师和课程。教师与课程之间是讲授的关系,学生与课程之间是选修的关系,都是多对多的关联。然后,再根据需要确定各实体的属性,如教师的属性有编号、姓名、性别、职称和院系,课程的属性有编号,名称、学时和学分。用E-R图描述,得到图3.12。
关联也可以有属性。在教学管理系统中,学生学某门课程所取得的成绩,既不是学生的属性也不是课程的属性。由于成绩既依赖于某名特定的学生又依赖于某门特定的课程,所以它是学生与课程之间联系的属性(如图3.12所示)。
1
图3.12 教学管理系统E-R图

3.2.4状态转换图

状态转换图(简称为状态图)通过描绘系统的状态及引起系统状态转换的事件,来表示系统的行为。此外,状态图还指明了作为特定事件的结果,系统将做哪些动作(例如,处理数据)。

1. 组成部分及其符号表示
状态是任何可以被观察到的系统行为模式,一个状态代表系统的一种行为模式。状态规定了系统对事件的响应方式。系统对事件的响应,既可以是做一个(或一系列)动作,也可以是仅仅改变系统本身的状态,还可以是既改变状态又做动作。
在状态图中定义的状态主要有:初态(即初始状态)、终态(即最终状态)和中间状态。在一张状态图中只能有一个初态,而终态则可以有0至多个。初态用实心圆表示,终态用一对同心圆(内圆为实心圆)表示(见图3.13)。
状态图既可以表示系统循环运行过程,也可以表示系统单程生命期。当描绘循环运行过程时,通常并不关心循环是怎样启动的。当描绘单程生命期时,需要标明初始状态(系统启动时进入初始状态)和最终状态(系统运行结束时到达最终状态)。
事件是在某个特定时刻发生的事情,它是对引起系统做动作或系统状态转变的外界事件的抽象。状态图中两个状态之间带箭头的连线称为状态转换,箭头指明了转换方向。状态变迁通常是由事件触发的,在这种情况下,应在表示状态转换的箭头线上,标出触发转换的事件表达式,如果事件有一定发生的条件,该条件也要在方括号中标出(见图3.13)。如果在箭头线上未标明事件,则表示在源状态的内部活动执行完之后,自动触发转换。
1
图3.13 状态图的符号
中间状态用圆角矩形或圆形表示,可以用两条水平横线把它分成上、中、下3个部分。上面部分为状态的名称,这部分是必须有的;中间部分为状态变量的名字和值,这部分是可选的;下面部分是活动表,这部分也是可选的。
活动表的语法格式如下:
事件名(参数表)/动作表达式,其中,“事件名”可以是任何事件的名称。需要时可以为事件指定参数表。活动表中的动作表达式描述应做的具体动作。
事件表达式的语法如下:
事件说明[守卫条件]/动作表达式
其中,事件说明的语法为:事件名(参数表)。
守卫条件是一个布尔表达式。如果同时使用事件说明和守卫条件,则当且仅当事件发生且布尔表达式为真时,状态转换才发生。如果只有守卫条件而没有事件说明,则只要守卫条件为真状态转换就发生。

动作表达式是一个过程表达式,当状态转换开始时执行该表达式。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多