1.02k likes | 1.12k Views
2.4 需求分析 - 任务. 一、需求分析的任务 基本任务:准确地回答“系统必须做什么?” 1. 确定对系统的综合需求 (1) 系统功能要求 (2) 系统性能要求 (3) 运行要求 (4) 将来可能提出的要求 2. 分析系统的数据要求 采用建立“概念模型”的方法,并辅助图形工具,如:层次方框图、 Warnier 图等。. 2.4 需求分析 - 过程. 3. 导出系统的逻辑模型 数据流程图、数据字典、主要算法 4. 修正系统开发计划 5. 开发原型系统 二、分析过程 1. 沿数据流程图回溯 从“输出端”到“输入端”回溯,分析数据元素。 2. 用户复查
E N D
2.4 需求分析-任务 一、需求分析的任务 基本任务:准确地回答“系统必须做什么?” 1.确定对系统的综合需求 (1)系统功能要求 (2)系统性能要求 (3)运行要求 (4)将来可能提出的要求 2.分析系统的数据要求 采用建立“概念模型”的方法,并辅助图形工具,如:层次方框图、Warnier图等。
2.4 需求分析-过程 3.导出系统的逻辑模型 数据流程图、数据字典、主要算法 4.修正系统开发计划 5.开发原型系统 二、分析过程 1.沿数据流程图回溯 • 从“输出端”到“输入端”回溯,分析数据元素。 2.用户复查 • 借助已有的数据流程图,帮助复查,再次完善数据流程图。
2.4 需求分析-过程 3.细化数据流程图 4.修正开发计划 5.书写文档 • 系统规格说明:系统的概貌、功能要求、运行要求、将来可能的要求。 • 数据要求:数据字典、图形工具(数据结构的层次图、Warnier图) • 用户系统描述:初步的用户手册 • 修正的开发计划
2.4 需求分析-过程 需要分解 有补充修正 无补充修正 分析追踪数据流程图 用户复查 细化数据流程图 不需分解 需求分析的基本过程
2.4 需求分析-概念模型和规范化 三、概念模型和规范化 1.概念模型 • 最常用的表示概念性数据模型的方法:实体—联系方法(Entity-Relationship Approach),简称E-R模型。 • E-R模型包含三个基本成分:“实体”、“联系”、“属性” (1)实体:是客观世界中存在的、且可相互区分的事物。它可以是人或物,也可以是具体事物或抽象事物。 • 例如:教师、学生、课程是实体。
2.4 需求分析-概念模型和规范化 • 实体用矩形框表示,如: 教师 (2)联系:客观世界中的事物彼此之间有联系,描述实体与实体之间的关系。联系有三种: • 1:1(一对一联系) 例如:实体“校长”与“大学”之间的联系为“1:1” • 1:N(一对多联系) 例如:实体“学校”与“院系”之间的联系为“1:N” • M:N(多对多联系) 例如:实体“学生”与“课程”之间的联系为“M:N” • 联系用菱形框表示,如:
2.4 需求分析-概念模型和规范化 (3)属性:属性是实体或联系所具有的性质。通常一个实体或联系由若干属性来刻画。 教师 学生 1 N 教 学 成绩 N M 课程
2.4 需求分析-概念模型和规范化 2.范式 • 第一范式 • 每个属性值都必须是原子值,即仅仅是一个简单值而不含内部结构。 • 第二范式 • 满足第一范式条件,而且每个非关键字属性都由整个关键字决定(而不是由关键字的一部分来决定)。 • 第三范式 • 符合第二范式的条件,每个非关键字属性都仅由关键字决定,而且一个非关键字属性不能仅仅是对另一个非关键字属性的进一步描述(即一个非关键字属性值不依赖于另一个非关键字属性值) • 一般使用第三范式,避免第三范式
2.4 需求分析-图形工具 四、图形工具 1.层次方框图 • 层次方框图用树形结构的一系列多层次的矩形框描绘数据的层次结构。 • 树形结构的顶层是一个单独的矩形框,它表达完整的数据结构,下面的各层矩形框代表这个数据的子集,最底层的各个框代表组成这个数据的实际数据元素(不能再分解的元素) • 例如:P46页 图3-3
2.4 需求分析-图形工具 2.Warnier图 • Warnier图也用树形结构描绘信息,且更丰富,能表达逻辑关系。 • 例如:P46页 图3.4
2.4 需求分析-图形工具 3.IPO图 • IPO图是输入/处理/输出图的简称,能够方便地描述输入数据、对数据的处理和输出数据之间的关系。 • 基本形式是在左边的框中列出有关的输入数据,在中间的框内列出主要的处理,在右边的框内列出产生的输出数据。 • 例如:P47页 图3.5、图3.6
2.4 需求分析 五、验证软件需求 1.验证软件需求的四个方面 • 一致性 • 完整性 • 现实性 • 有效性 2.验证软件需求的方法 3.验证软件需求的软件工具
2.4 需求分析 六、软件需求说明书(P15) • 引言 • 任务概述 • 需求规定 • 运行环境规定
2.5 总体设计-过程 一、总体设计的过程 1.设想供选择的方案 • 在数据流程图的基础上,一个边界一个边界设想并列出供选择的方案。 • 不评价这些供选择的方案
2.5 总体设计-过程 2.选取合理的方案 • 从上一步得到的一系列供选择的方案中选取若干个合理的方案,通常至少选取低成本、中等成本和高成本的三种方案。 • 根据系统分析确定的目标,来判断哪些方案是合理的。
2.5 总体设计-过程 3.推荐最佳方案 • 综合分析对比各种合理方案的利弊,推荐一个最佳的方案,并为最佳方案制定详细的实现计划。
2.5 总体设计-过程 4.功能分解 • 对流程图进一步细化,进行功能分解
2.5 总体设计-过程 5.设计软件结构 • 软件结构反映系统中模块的相互调用关系:顶层模块调用它的下层模块以实现程序的完整功能,每个下层模块再调用更下层的模块,最下层的模块完成最具体的功能。 • 软件结构通过层次图或结构图来描绘,可以直接从数据流程图映射出软件结构。
2.5 总体设计-过程 6.数据库设计
2.5 总体设计-过程 7.制定测试计划
2.5 总体设计-过程 8.书写文档 文档包括: • 系统说明 • 用户手册 • 测试计划 • 详细的实现计划 • 数据库设计结果
2.5 总体设计-过程 9.审查和复审 • 先技术审查 • 后管理审查
2.5 总体设计-模块 二、模块的概念 1.定义 • 具有四种属性的一组程序语句称为一个模块,四种属性:输入/输出、逻辑功能、运行程序、内部数据。前两个属性又称为外部属性,后两个属性又称为内部属性。 (1)一个模块的输入/输出都是指同一个调用者。 (2)模块的逻辑功能是指模块能够做什么事,表达了模块把输入转换成输出的功能,可以是单纯的输入/输出功能。 (3)模块的运行程序指模块如何用程序实现其逻辑功能。
2.5 总体设计-模块 (4)模块的数据指属于模块自己的数据。 2.属性 外部属性:输入/输出、逻辑功能 内部属性:运行程序、内部数据 • 在结构化系统设计中。人们主要关心的是模块的外部属性,至于内部属性,将在系统实施工作中完成 3.大小 • 模块有大有小,它可以是一个程序,也可以是程序中的一个程序段或者一个子程序。
2.5 总体设计-模块 4.理想模块(黑箱模块) • 理想模块的特点: (1)每个理想模块只解决一个问题。 (2)每个理想模块的功能都应该明确,使人容易理解。 (3)理想模块之间的联结关系简单,具有独立性。 (4)由理想模块构成的系统,容易使人理解,易于编程,易于测试,易于修改和维护。 • 对用户来说,其感兴趣是模块的功能,而不必去理解模块内部的结构和原理。
2.5 总体设计-模块 5.模块的理论根据 设函数C(x)定义问题x的复杂程度,函数E(x)确定解决问题x需要的工作量。对于两个问题P1和P2,如果:C(P1)>C(P2),则显然有: E(P1)>E(P2) 根据人类解决一般问题的经验,有: C(P1+P2)>C(P1)+C(P2) 进而获得:E(P1+P2)>E(P1)+E(P2)
2.5 总体设计-模块 6.模块的图形及符号 (1)模块的图形:用矩形表示。 • 模块的名称写在方框内,由一个动词和一个作为宾语的名词组成。例如: 修改库存 (2)模块间通讯的图形 模块间通讯有两种:数据通讯、控制通讯。 • 数据通讯是一个数据流,它表示了一个经过处理的数据从一个模块传向另一个模块。
2.5 总体设计-模块 • 控制通讯,只传送一个标志,该标志只表达了处理工作的某种状态,而不是由被发送模块真正进行过处理的数据。 获得配件库存量 A 库存量 配件编号 无此配件 读库存记录 B 模块间的通讯 模块间的联结
2.5 总体设计-模块 (3)模块间判断调用的图形 • 一个模块是否调用某一个从属模块,依赖于调用模块中判断的条件。如果条件成立,则产生调用命令。 A B C D
2.5 总体设计-模块 (4)模块间循环调用的图形 • 指一个模块需要循环调用某一个或若干个从属模块。 A C
2.5 总体设计-模块 7.模块设计的基本原则 • 模块设计的基本原则:降低系统中模块之间的联结程度,提高每个模块的独立性、聚合度。 (1)模块间的联结 • 两个模块之间的联结有五种形式,按照联结程度由低到高排列为:数据联结、特征联结、控制联结、公共联结、内容联结。
2.5 总体设计-模块 A.数据联结 • 如果两个模块间的通讯信息是若干参数,其中每一个参数都是一个数据元素,称这种联结为数据联结。这是模块之间影响最小的联结关系。 开发货单 单价 金额 数量 计算金额
2.5 总体设计-模块 B.特征联结 • 如果两个模块都与同一个数据结构有关,则称为特征联结。 计算水费和电费 住户详情 住户详情 电费 水费 计算水费 计算电费 模块之间的特征联结
2.5 总体设计-模块 • 住户详情数据结构中包括“本月用水量”、“本月用电量”。上面的“特征联结”图可改进为下面“数据联结”图。 计算水量和电费 本月用水量 本月用电量 电费 水费 计算水费 计算电费 模块之间的数据联结
2.5 总体设计-模块 C.控制联结 • 如果模块A向模块B所传递的信息控制了模块B的内部逻辑,那么A和B之间的联结称为控制联结。 • 控制信息可以看作是一个开关量,它传递了一个控制信息或状态的标志。控制信息不同于数据信息,数据信息一般通过处理过程处理被处理的数据,而控制信息则是控制处理过程中的某些参数。
2.5 总体设计-模块 获得库存记录 • 当要查找的库存编号找不到时,经上级模块反馈一个控制信息,要求上级模块打印“无此库存记录”错误信息。 库存量 库存编号 打印“无此库存记录”错误信息 检索库存记录
2.5 总体设计-模块 D.公共联结 • 如果两个模块都和同一个公共数据域有关,则称为公共联结。 • 公用联结是一种不良的联结关系,它给模块的维护和修改带来困难。如公共数据要作修改,很难判定有多少模块应用了该公共数据,故在模块设计时,一般不允许有公共联结关系的模块存在。 A 公用数据 C B
2.5 总体设计-模块 E.内容联结(病态联结) • 如果一个模块和另一个模块的内部属性(即运行程序和内部数据)有关,则称为内部联结。 • 例如:模块A中 TRC: 模块B中 GO TO TRC • 模块A与模块B存在内容联结,这是一种最坏的联结。
2.5 总体设计-模块 设计模块时,应以数据联结为主,辅以特征联结与控制联结,消除公共联结和内容联结。
2.5 总体设计-模块 (2)模块的聚合 • 模块的聚合是指一个模块内部的各个组成部分的紧凑性,其处理动作的组合强度。 • 聚合的七种形式: A.功能聚合 • 如果一个模块内部的各组成部分的处理动作全都为执行同一个功能而存在,并且只执行一个功能,则称为功能聚合。 • 判断一个模块是不是功能聚合,只要看这个模块是“做什么”,是完成一个具体的任务,还是完成多任务。
2.5 总体设计-模块 B.顺序聚合 • 如果一个模块内部的各个组成部分执行的几个处理动作有这样的特征:前一个处理动作所产生的输出数据是后一个处理动作的输入数据,称为顺序聚合。 • 顺序聚合维护起来不如功能聚合方便,要修改模块中的一个功能,会影响到同一个模块中的其他功能。 A B C 功能1 功能2
2.5 总体设计-模块 C.通讯聚合 • 如果一个模块内各组成部分的处理动作都使用相同的输入数据或相同的输出数据,称为通讯聚合。 两个工作: 1.按配件编号查询“数据存储”,获得单价。 2.按配件编号查询“数据存储”,获得库存量。 库存量 配件编号 单价 获得配件单价和库存量 这两个处理动作都使用相同的输入数据,称为通讯聚合。
2.5 总体设计-模块 D.过程聚合 • 如果一个模块内部的各个组成部分的处理动作各不相同,彼此也没有联系,但他们都受同一个控制流支配,决定他们的执行次序,称为过程聚合。 循环体 通过循环体,计算两种累积数。 事务记录 累积销售额 累积订货量 计算累积
2.5 总体设计-模块 E.暂时聚合 • 如果一个模块内的各组成部分的处理动作和时间有关,则称为暂时聚合。暂时聚合模块的处理动作必须在特定的时间内完成。 • 例如:程序设计中的初始化模块。
2.5 总体设计-模块 F.逻辑聚合 • 如果一个模块内部的各组成部分的处理动作在逻辑上相似,但功能都彼此不同或无关,则称为逻辑聚合。 • 一个逻辑聚合模块往往包括若干个逻辑相似的动作,使用时可以选用一个或几个功能。 • 例如:把编辑各种输入数据的功能放在一个模块中。
2.5 总体设计-模块 G.机械聚合 • 如果一个模块的内部各组成部分的处理动作彼此没有任何联系,则称为机械聚合。
2.5 总体设计-模块 • 模块聚合性的判断 功能聚合 是 顺序聚合 是 该模块只能执行一个功能吗? 次序重要吗? 通讯聚合 否 数据流 模块内各组成部分的关系如何? 过程聚合 是 次序重要吗? 控制流 暂时聚合 否 否 是 逻辑聚合 逻辑相似吗? 两者都不是 机械聚合 否
2.5 总体设计-模块 • 七种聚合模块的性能比较
2.5 总体设计-模块 8.模块设计的其他原则 (1)模块的分解 • 分解是指把一个模块分解成若干个从属于它的下层模块。 • 一般按功能分解,分解到成为一个小的功能单一的模块为止。 • 一般一个模块内包含的语句在30~50条左右较好(指高级语言)。
2.5 总体设计-模块 (2)模块的扇出和扇入 • 模块的扇出指一个模块拥有的直属下级模块的个数,一般扇出数控制在7以内。 • 模块的扇入是指一个模块的直接上级模块的个数。 • 在设计中,扇入系数大,说明模块分解得好,通用性强,冗余度低。