二、传统的需求分析方法 软件需求分析方法
系统的分析模型必须达到三个主要目标:
(1)描述客户的需要;
(2)建立创建软件设计的基础;
(3)定义在软件完成后可以被确认的一组需求。
分析模型包含了图3.2中提到的各种图、规约、描述和字典。以下各节将对分析模型中的这些元素进行更加详细的讨论。
图3.2 分析模型的结构
3.2.1数据流图
任何软件系统(或计算机系统)从根本上来说,都是对数据进行加工或变换的工具。图3.3是一个高度抽象了的软件系统的逻辑模型。
输入 输出
图3.3 软件模型
1. 组成符号
数据流图只使用4种基本图形符号:①圆框代表加工;②箭头代表数据的流向,数据名称总是标在箭头的边上;③方框表示数据的源点和终点,给数据源和数据汇;④双杠(或单杠)表示数据文件或数据库(如图3.4所示)。文件与加工之间用箭头线连接,单向表示只读或只写,双向表示有读有写。注意,每一图形符号都必须标上名字,加工框还应该加上编号,以帮助识别。
图3.4 数据流图的符号
例4.下面以教材购销系统中的教材销售为例,说明如何画数据流图。
从用户调查中了解到某高校向学生销售教材的手续是:先由系办公室的张秘书开购书证明,学生凭证明找教材科的王会计开购书发票,向李出纳员交付书款,然后到书库找赵保管员领书。现欲将上述手工操作改为计算机处理,试画出教材销售过程的数据流图。
该例子的基本数据流图如图3.5所示。
无效书单
购书单 发票 领书单
学生
学生
图3.5 计算机售书系统模型
我们还要补充数据存储,如图3.6所示。
无效书单
购书单 发票 领书单
学生
学生
各班学生用书表 教材存量表
图3.6 计算机售书系统的数据流图
2. 命名
数据流图中每个成分的命名是否恰当,直接影响数据流图的可理解性。给这些成分起名字时应该仔细推敲。
3. 分层数据流图
图3.7 数据流图的层次结构
为了表达数据处理过程的数据加工情况,需要采用层次结构的数据流图。
4.数据流图实例
建立数据流模型的基本步骤概括地说,就是自外向内、自顶向下、逐层细化、完善求精。我们用下面的例子来说明如何创建一个系统的数据流图。
例5. 问题陈述:建立一个简化的商业自动化系统。其中:售货员负责录入销售的商品(商品名,编号,单价,数量),有时要根据特定情况对销售的商品进行修改或删除。收款员负责收取现金,并将多交的付款退还用户。销售经理需要随时查询整个部门的销售情况(时间,商品编号,销售金额),并在每日结束时,统计各类商品的销售金额。
首先:建立系统环境,确定系统边界,画出顶层DFD。
图3.8 简化的商业自动化系统顶层DFD
然后自顶向下,逐层分解。从输入端开始,根据商业自动化系统的工作流程,画出数据流所流经的各加工框,逐步画到输出端,得到更下层的数据流图。
图3.9 简化的商业自动化系统0层DFD
可根据需要继续逐层分解,例如加工3可分解为图3.10。
图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图中用到的符号如下图所示:
学生
实体
关系
属性
连接
图 3.10 E-R图的符号表示
例12. 在教学管理中,一个教师可以教授零门、一门或多门课程,每位学生也需要学习几门课程。因此,教学管理中涉及的对象(实体)有学生、教师和课程。教师与课程之间是讲授的关系,学生与课程之间是选修的关系,都是多对多的关联。然后,再根据需要确定各实体的属性,如教师的属性有编号、姓名、性别、职称和院系,课程的属性有编号,名称、学时和学分。用E-R图描述,得到图3.12。
关联也可以有属性。在教学管理系统中,学生学某门课程所取得的成绩,既不是学生的属性也不是课程的属性。由于成绩既依赖于某名特定的学生又依赖于某门特定的课程,所以它是学生与课程之间联系的属性(如图3.12所示)。
图3.12 教学管理系统E-R图
3.2.4状态转换图
状态转换图(简称为状态图)通过描绘系统的状态及引起系统状态转换的事件,来表示系统的行为。此外,状态图还指明了作为特定事件的结果,系统将做哪些动作(例如,处理数据)。
1. 组成部分及其符号表示
状态是任何可以被观察到的系统行为模式,一个状态代表系统的一种行为模式。状态规定了系统对事件的响应方式。系统对事件的响应,既可以是做一个(或一系列)动作,也可以是仅仅改变系统本身的状态,还可以是既改变状态又做动作。
在状态图中定义的状态主要有:初态(即初始状态)、终态(即最终状态)和中间状态。在一张状态图中只能有一个初态,而终态则可以有0至多个。初态用实心圆表示,终态用一对同心圆(内圆为实心圆)表示(见图3.13)。
状态图既可以表示系统循环运行过程,也可以表示系统单程生命期。当描绘循环运行过程时,通常并不关心循环是怎样启动的。当描绘单程生命期时,需要标明初始状态(系统启动时进入初始状态)和最终状态(系统运行结束时到达最终状态)。
事件是在某个特定时刻发生的事情,它是对引起系统做动作或系统状态转变的外界事件的抽象。状态图中两个状态之间带箭头的连线称为状态转换,箭头指明了转换方向。状态变迁通常是由事件触发的,在这种情况下,应在表示状态转换的箭头线上,标出触发转换的事件表达式,如果事件有一定发生的条件,该条件也要在方括号中标出(见图3.13)。如果在箭头线上未标明事件,则表示在源状态的内部活动执行完之后,自动触发转换。
图3.13 状态图的符号
中间状态用圆角矩形或圆形表示,可以用两条水平横线把它分成上、中、下3个部分。上面部分为状态的名称,这部分是必须有的;中间部分为状态变量的名字和值,这部分是可选的;下面部分是活动表,这部分也是可选的。
活动表的语法格式如下:
事件名(参数表)/动作表达式,其中,“事件名”可以是任何事件的名称。需要时可以为事件指定参数表。活动表中的动作表达式描述应做的具体动作。
事件表达式的语法如下:
事件说明[守卫条件]/动作表达式
其中,事件说明的语法为:事件名(参数表)。
守卫条件是一个布尔表达式。如果同时使用事件说明和守卫条件,则当且仅当事件发生且布尔表达式为真时,状态转换才发生。如果只有守卫条件而没有事件说明,则只要守卫条件为真状态转换就发生。
动作表达式是一个过程表达式,当状态转换开始时执行该表达式。
更多阅读
制造企业传统的成本核算方法 制造业成本核算
一、制造成本法制造成本法是制造企业传统的成本核算方法,该核算方法将企业一定期间的费用划分为为产品生产而发生的生产费用(产品成本)和与产品生产过程无关的期间费用两部分。只有生产费用才能最终计入产品的成本,而期间费用计入当
2、罗布斯塔咖啡CoffeeRobusta 二、咖啡豆的种类(文老师转载) key coffee咖啡豆
二、咖啡豆的种类2、罗布斯塔咖啡(Coffee Robusta)[文老师 培训学校、一目天](1)风味特色 罗布斯塔咖啡俗称
鼻塞、鼻炎的最佳治疗方法 慢性鼻炎鼻塞怎么办
我鼻炎鼻塞整晚上睡觉至少被赛醒两次,有时真感到“度夜如度年”,用药去了几百,我试过了锻炼、冷水冲、闻醋蒜等方法都不见好!一天我拿来按摩手相书,找出下面穴位,每天用手按压约100次,首相冷天鼻腔内不能保暖的症状得到了缓解,后鼻塞也慢慢
简单、直观的甲醛检测方法 室内空气甲醛检测方法
一、治理、检测已经成为人人可以操作的简单工作1、成熟的甲醛治理产品的使用方法其实很简单甲醛治理的核心是治理产品,即甲醛清除剂;甲醛治理的关键是检测,特别是污染源检测。造成室内甲醛长期污染的是人造板,控制人造板的甲醛释放,就是
加盟男装要多少钱 加盟男装、女装、童装的优劣分析
加盟男装、女装、童装的区别! 男装女装童装品牌之间的优劣分析 在决定加盟服装品牌时,我们首先要想到的是: 一、哪类服装有市场? 二、所在区域的消费水平,消费者有什么偏好? 三、哪类服装风险小,利润空