清华软件工程课件第05章_结构化分析与设计
软件工程概述-第5章 结构化需求分析

实体 属性 联系
用矩形表示,矩形内写 明实体名
用椭圆形表示,并用无 向边将其与对应实体连 接起来
用菱形表示,并用无向 边分别与有关实体连接 起来,同时在无向边旁 标上联系的类型。
E-R 图表示图示 例 2-1 中的例子
练习
例:简单的学生选课系统:
(1)学生 属性有学号,姓名, 性别,年龄,所在系
x
1.1
1.2
1.3
1
3
2
2.1 2.3
2.2
1.1 1.3
目录
1
5.1结构化分析
2
5.2数据流图
3
5.3数据字典
4
5.4 实体关系图
5
5.5 状态转换图
数据流图
数据流图(Data Flow Diagram,DFD)是描述系统中数据 流程的图形工具,它描述了将系统的逻辑输入转换为逻辑输出 所需的加工处理过程。
(2)课程 属性有课程号,课程 名称,先修课程号,学分
实体之间的联系:
一个学生可同时选修多门 课程,而一门课程可以同时被 若干学生选修。用成绩来表示 某个学生学习某门课程的成绩 。
分解:对于一个复杂的系统,为了将复杂性降 低到可以掌握的程度,可以把大问题分解成若 干小问题,然后分别解决。
抽象:分解可以分层进行,即先考虑问题最本 质的属性,暂把细节略去,以后再逐层添加细 节,直至涉及到最详细的内容,这种用最本质 的属性表示一个系统的方法就是“抽象”
结构化分析
结构化分析方法基本思想 “分解”和“抽象”
取值范围:数据项的取值范围,例如,职工年龄 的取值范围定义为18至60岁,表示为18..60。
初始值:数据项的初始值,例如,为了操作简便, 软件定义借书日期的初始值默认为系统的当前日 期。
软件工程实用案例教程 第5章 结构化软件设计

模块调用的详细情况。
5.1 软件设计的相关概念
5.1.3 结构化设计图形工具
5.1.3.2 HIPO图
1.H图(层次图)
5.1 软件设计的相关概念
5.1.3 结构化设计图形工具
软件设计
需求分析解决软件系统“做什么”的问题,而软件设 计解决“怎么做”的问题。
软件设计可分为:
概要设计:体系结构设计、数据设计和接口设计。 详细设计:过程设计。
本章主要讨论问题:
软件设计的任务、原则、图形工具和启发规 则是什么?
常用的结构化软件设计的方法是什么? 结构化软件设计案例。
的语句在多处出现,于是为了节省空间而将这些语 句作为一个模块设计,这样就出现了偶然内聚。
5.1 软件设计的相关概念
5.1.3 结构化设计图形工具
5.1.3.1 结构图
1.结构图的图形符号 (1)模块 (2)模块间的调用关系 (3)模块间的信息传递
图5-15 结构图示例
5.1 软件设计的相关概念
5.1.3.2 HIPO图
2.IPO图
5.1 软件设计的相关概念
5.1.4 软件设计的启发规则
1.模块规模应该适中
通常规定模块中语句行数在50~100左右,保持在一 页纸之内,最多不超过500行。
这对提高程序的可理解性是有好处的。基本的准则 是要保证模块的独立性。
5.1 软件设计的相关概念
5.1.4 软件设计的启发规则
2.消除重复功能,改进软件结构
图5-20 模块的各种合并方案
5.1 软件设计的相关概念
5.1.4 软件设计的启发规则
软件工程基础-5结构化分析与设计技术

区分事务中心 和数据接收通路
区分输入和 输出分支
据 – 第二级映射成事务结构
流
的 • 第三级
映射成变换结构
设 计 过
– 第四级 事务分»析第五级
用启发式设计规则 精化软件结构
导出接口描述和
变换分析程Fra bibliotek全程数据结构
复查
详细设计
1
结构化设计方法概述
2
面向数据流的设计方法
3
面向数据的设计方法
4
结构化详细设计的工具
–{第if b(b二re>a=级k2;0)
if•(b第%3三==级1)
{ cbo+n–=t3i第n;u四e;级
}
» 第五级
b+=3
T
b-=5;
}
……
a=0,b=1
a++
a<=100 F
T
b>=20
T
F
b%3==1
F
b-=5
单出口
结构化单设计击方法此概述处编辑母版标题样式
• 单结击构此化设处计分编为辑面向母数版据流文的本设计样方式法和面向数据的设计方法。
– 第四级
确定模块的外部接口和用户界面
» 第五级
详细设计阶段
的主要任务
为每一模块设计一组测试用例
结构化单详细击设此计的处工具编辑母版标题样式
• 单击此处编辑母版文本样式 结构化设计的详细设计阶段,主要完成系统各模块功能的过程描述。 详–细第设二计提级供了图形、表格和语言等三类不同工具。 无论何• 种第图三形级工具,都提供结构化程序设计对应的控制流程,以及功能的处
的分层编号• 一第致三。级
层次图只反–映第上四下级层间的调用关系,不反映系统的组成关系,也不反映系 » 第五级
《软件工程(第二版)》 第五章

5.2.4 模块独立性
模块的独立性是软件质量的关键: (1)模块化程度较高的软件容易开发; (2)模块化程度较高的软件也比较容易测试和维护。 模块的独立性的度量标准:耦合和内聚。
1、耦合 耦合:软件结构中各个模块之间相互关联程度的度量。
常见的耦合:
(1)非直接耦合 (2)数据耦合 (3)标记耦合 (4)控制耦合 (5)公共耦合 (6)内容耦合 设计原则:尽量使用数据耦合,少用控制耦合,限制公 共耦合的范围,避免使用内容耦合。
这个不等式表明:单独解决问题 P1 和 P2 所需的工作 量之和,比把 P1 和 P2 合起来作为一个问题来解决时所需 的工作量要少。 这种“分而治之”的思想提供了模块化的根据:把复 杂的问题分解成许多容易解决的小问题,原来的问题也 就容易解决了。
模块化和软件成本的关系
软件总成本 最小成本区 M 接口成本
5.5.1 数据流图的类型 5.5.2 设计步骤 5.5.3 变换设计 5.5.4 事务设计 5.5.5 设计的后处理
需求分析阶段得出的数据流图是总体设计的根 本出发点。 通常,选取的这些方案中至少应包括低成本、 中成本和高成本的三种方案类型。 对每个合理方案要提供以下几方面资料: (1)系统流程图; (2)数据字典; (3)成本/效益分析; (4)实现这个系统的进度计划。
5.1.2 推荐最佳方案
分析员从合理方案中选择一个最佳方案向用户 推荐,并为推荐的方案制定详细的实现计划。 对于分析员推荐的最佳方案,用户和有关专家 应该认真审查。如果确认该方案确实符合用户的需 要,并且在现有条件下完全能够实现,则应该提请 使用部门负责人进一步审批。在使用部门负责人也 接受了分析员所推荐的方案之后,方可进入总体设 计过程的下一步工作,即结构设计阶段。
软件工程第五章结构化设计

服务注册中心
发现
注册
服务消费者 调用
服务提供者
并发系统的集中式控制模型
传感器进程 用户界面Fra bibliotek传动装置进程 系统控制器
计算进程 故障处理器
系统控制模型
事件驱动系统
广播模型:发生的事件广播到所有子系统,任何能处理 该事件的子系统都会响应。该模型适用于基于网络的分 布式系统。
广播模型中的子系统注册其感兴趣的特别事件 广播模型的优点是进化比较简单
软件模块化设计
模块是一个独立命名的,拥有明确定义的输入、输出 和特性的程序实体。
软件的模块化设计(Modular Design)。系统是有 一个个模块组装而成。
软件模块化设计优点
可以简化软件的设计和实现 提高软件的可理解性和可测试性 软件更容易得到维护。
软件模块化设计缺点
结构化设计阶段 数据流设计方法 面向数据的设计 结构化程序设计 案例分析
结构化设计概述
结构化设计方法(Structured Design, SD)是基于模 块化、自顶向下细化、结构化程序设计等程序设计技 术基础上发展起来的。
结构化设计方法用模块结构图来表达程序模块之间的 关系。
缺点是子系统都知道是否和什么时候处理事件,这可能会引 起冲突。
中断驱动模型:由中断处理器对来自外部的中断进行检 测,然后在其他组件中处理这些中断。该模型适用于对 定时有严格要求的实时系统。
只用在硬件实时系统中,要求对一些事件能做出及时响应
总线架构
像水管一样随意接入 像PCI总线一样即插即用
第三部分软件设计与建模
结构化软件设计
阳王东
回答问题
什么是软件设计?有哪些阶段和任务? 什么是模块化设计?有哪些原理? 什么是软件结构和体系结构?二者有什么区别? 数据流有哪些类型?如何区分? 数据流映射的步骤是什么? 什么是结构化程序设计?有哪些工具? 什么是JSD方法?具体步骤是什么?
软件工程第二部分 结构化分析、设计与测试(5-9)

实例分析:出卷系统
用户:
教师:关注如何出一份合理的试卷,并能根据样式打 印与输出。
学生:关注如何通过生成一些模拟试题,并在线学习 和检查学习结果。
题库维护人员:关注试题的添加、更新和删除等工作。
视点:
教师关注自动出卷、手工出卷、试卷编辑和试卷输出。 学生关注随时抽卷、联系试卷和评价分析。 题库维护人员关注试题管理。
护性
3.4 数据字典
可移植性、安全保密性)
3.5 数据采集
4 功能需求
4.1 功能划分
验证需求
验需求证对需求文档和制品进行质量评估,确保 需求说明准确、完整.
包括以下内容:
正确性 一致性 完整性 可行性 必要性 可检验性 需求的可跟踪性
最后签字确认
管理需求
例如:图书馆系统的功能需求基于标准用户界 面将一些文档输出到本地打印机或网络打印机 上,但因为版权限制,这些文档打印之后应立 即删除。
需求分析过程
需求分析主要是理解客户需要什么、分析要求、评价可行 性、协商合理的方案、无歧义地详细说明方案、确认规格 说明、管理需求以至将这些需求转化为可行系统.
多视点的需求分析过程
视点识别:包括发现接收系统服务的视点和发 现提供给每个视点的特别服务。
视点组织:包括组织相关的视点到层次结构中, 通用的服务放在较高的层次,并被较低层次的 视点继承。
视点文档编写:包括对被识别的视点和服务描 述的精炼。
视点系统映射:包括在面向对象设计中通过封 装在视点中的服务信息识别对象。
第5章 软件需求分析(内容提要)
什么是软件需求? 软件需求分析有哪些过程? 如何启动分析过程? 需求规格文档有哪些内容? 需求分析有哪些技术?
《软件工程与项目管理》课件_第5章

图5.6 信息内聚模块
(7) 功能内聚。若一个模块中各个部分都是为完成一项 具体功能而协同工作、紧密联系、不可分割的,则称该模块 为功能内聚模块。功能内聚模块是内聚性最强的模块。
2.耦合性 耦合性是对模块之间的相对独立性(互相连接的紧密程 度)的度量。它取决于各个模块之间接口的复杂程度、调用 模块的方式以及哪些信息通过接口。 一般模块之间可能的连接方式有七种,构成耦合性的七 种类型。不同类型耦合的强弱关系如图5.7所示。
析,确定系统具体的实施方案,然后进行结构设计,确定软件结构。 总体设计的一般步骤如下:
(1) 设计系统方案。 (2) 选取一组合理的方案。 (3) 推荐最佳实施方案。 (4) 功能分解。 (5) 设计软件结构。 (6) 设计数据库和文件结构。 (7) 制定测试计划。 (8) 编写概要设计文档。 (9) 审查与复审概要设计文档。
(5) 标记耦合。如果一组模块通过参数表传递记录信息, 则它们之间的耦合称为标记耦合。事实上,这组模块共享了 某一数据结构的子结构,而不是简单变量。这就要求这些模 块都必须清楚该记录的结构,并按结构要求对记录进行操作。
图5.9 控制耦合
(6) 数据耦合。如果一个模块访问另一个模块时,彼此 之间通过数据参数(不是控制参数、公共数据结构或外部变 量)来交换输入、输出信息,而且交换的信息仅限于数据, 则称这种耦合为数据耦合。数据耦合是松散的耦合,模块之 间的独立性比较强。
(2) 逻辑内聚。这种模块把几种相关的功能组合在一起, 每次被调用时,由传送给模块的控制型参数来确定该模块应 执行哪一种功能。逻辑内聚模块比巧合内聚模块的内聚程度 要高,因为它表明了各部分之间在功能上的相关关系。
(3) 时间内聚(经典内聚)。这种模块大多为多功能模块, 但要求模块的各个功能必须在同一时间段内执行,例如初始 化模块和终止模块。时间内聚模块比逻辑内聚模块的内聚程 度又稍高一些。在一般情况下,时间内聚模块各部分可以以 任意的顺序执行,所以它的内部逻辑更简单。
软件工程课件 第五章 结构化需求分析

➢ 概念性模型是一种面向问题的数据模型,是按照
用户的观点来对数据和信息建模。它描述了从用
户角度看到的数据,反映了用户的现实环境,但 与在软件系统中的实现方法无关。
➢ 最常用的表示概念性数据模型的方法,是实体/关 系方法(Entity Relationship Approach)。这种 方法用ER图描述oss提出,由DeMarco进行了推广。 DeMarco引入并命名了使得分析员可以创建信息流模 型的关键图形符号、提出了使用这些符号的模型。
➢ 之后的几年中,Page-Jones、Gane和Sarson等人提出 了结构化分析方法的一些变种,在这些变种中,结构
化方法关注于信息系统的应用,而没有提供足够的符 号来表示实时工程问题中的控制和行为方面。
© 2008 BUPT TSEG
北京邮电大学 通信软件工程中心
9
§5.2 分析模型的结构
➢ 属性
属性定义了数据对象的性质,它可以具有三种不 同的特性,可以用来:
(1)为数据对象的实例命名; (2)描述这个实例; (3)建立对另一个表中的另一个实例的引用。 一个或多个属性应被定义为标识符,也就是说,
© 2008 BUPT TSEG
北京邮电大学 通信软件工程中心
14
示例
学生
学号 姓名 年龄 性别 专业 班级号
上课
§5.2 分析模型的结构
课程
课程号 课程名 学分 学时数 成绩 上课时间 上课教室
授课
教师
职工号 姓名 职称 年龄 单位 性别
教学管理系统数据模型
© 2008 BUPT TSEG
北京邮电大学 通信软件工程中心
软件工程结构化分析与设计

软件工程结构化分析与设计软件工程结构化分析与设计简介软件工程结构化分析与设计(Software Engineering Structured Analysis and Design)是软件工程的重要环节之一,旨在将复杂的软件系统分解为相对简单的模块,从而便于理解、开发和维护。
结构化分析结构化分析是软件工程中的一种需求分析方法,通过对用户需求进行分析,将系统功能划分为不同的模块,以及模块之间的关系和交互。
结构化分析采用基于流程图的图形化表示方法,通常使用数据流图(Data Flow Diagram,简称DFD)来描述系统的功能流程。
结构化设计结构化设计是在结构化分析的基础上,进一步定义每个模块内部的结构和功能。
它将模块细化为更小的子模块,通过设计各个模块之间的接口和通信方式,确保系统能够协调运作。
结构化设计通常使用结构图来表示系统的模块组织结构,其中最常见的就是层次图(Hierarchy Chart)和结构图(Structure Chart)。
优势与挑战结构化分析与设计的主要优势在于可以将复杂系统分解为简单的模块,使得系统的开发和维护更加容易。
结构化分析与设计还能够提高系统的可靠性和可扩展性。
,结构化分析与设计也面临一些挑战。
结构化分析与设计需要面对不断变化的需求,需要具备较好的适应性和灵活性。
结构化分析与设计也需要考虑系统的性能、安全性等方面的需求,以保证系统能够满足用户的要求。
软件工程结构化分析与设计是软件工程中重要的一环,通过将复杂的系统分解为简单的模块,并设计模块之间的关系和接口,实现系统的有效开发和维护。
结构化分析与设计能够提高系统的可靠性、可扩展性和易开发性,但也需要面对需求变化和其他挑战。
希望通过软件工程结构化分析与设计,我们可以开发出更好的软件系统,满足用户的需求。
《软件工程》教案-05 结构化分析与设计

山东轻工业学院教师授课教案课程名称:软件工程课程代码:0310040学分: 3课程类别:选修课开课单位: 信息科学与技术学院授课班级:计科07-12授课教师:赵培英山东轻工业学院教务处制第五章结构化分析与设计一、结构化分析概述1.主要思想:抽象: 从作为整体的软件系统开始, 每一抽象层次上只关注于系统的输入输出分解: 自顶向下逐层分解, 不断分解为子系统, 模块……随着分解层次的增加,抽象的级别越来越低,也越接近问题的解( 算法和数据结构) 2.结构化分析过程•获得当前系统的具体模型(物理模型)•抽象出当前系统的逻辑模型•分析建立目标系统的逻辑模型•为目标系统的逻辑模型作补充3.结构化分析模型•DD:核心,包含所有数据的描述•DFD:用于功能建模,描述系统的输入数据流如何经过一系列的加工变换逐步变换成系统的输出数据流•ERD:用于数据建模,描述DD中数据之间的关系•状态转换图:用于行为建模,描述系统接收哪些外部事件,以及在外部事件的作用下的状态迁移情况二、数据流图1.Data Flow Diagram(简称DFD):•描述输入数据流到输出数据流的变换(即加工)过程,用于对系统的功能建模。
•基本元素包括:p88图示例:图书订购系统DFD•数据流图的扩充符号:描述一个加工的多个数据流之间的关系星号(*):表示数据流之间存在“与”关系加号(+):表示数据流之间存在“或”关系异或(⊕):表示数据流之间存在“异或”(互斥)关系2.对数据流图进行分层•George Miller在著名的论文“神奇的数字7加减2:我们处理信息的能力的某种限制”中指出:人们在一段时间内的短期记忆似乎限制在5~9件事情之内•根据自顶向下逐层分解的思想将数据流图画成层次结构•每个层次画在独立的数据流图中,加工个数可大致控制在“7加减2”的范围中3.数据流图的各个层次•顶层图只有代表整个软件系统的1个加工,描述了软件系统与外界(源或宿)之间的数据流•顶层图中的加工经分解后的图称为0层图(只有1张)•中间层图中至少有一个加工(也可以有多个)在下层图中分解成一张子图•处于最底层的图称为底层图,其中所有的加工不再分解成新的子图4.图和加工的编号•顶层图只有一个代表整个软件系统的加工,该加工不必编号。
《软件工程学》第05章 详细设计

5.1 详细设计的目的与任务
该阶段工作具体包括以下几方面:
2.为数据库进行物理设计 为数据库进行物理设计,确定数据库的物理结构。物理结
构主要指数据库的存储记录格式、存储记录安排和存储方法, 这些都依赖于具体所使用的数据库系统。
3.其它设计 (1)输入/输出格式设计:针对各个功能,根据界面设计风
5.1 详细设计的目的与任务
根本目标:
应该‘怎样具体地实现’系统?
详细设计是软件设计的重要阶段,主要确定每 个模块的具体执行过程,也称为“过程设计” Note:
任务:设计程序的“蓝图”,供编码时“翻译”使用; 详细设计≠编写程序; 详细设计结果决定着程序代码的质量; 让机器、人都看得懂。
5.1 详细设计的目的与任务
基本单元:矩形框; 算法:矩形框的组装。 N-S图适合结构化程序设计方法,对于非结构化 程序无法表示。
5.3.2 盒图
图5.13 盒图的基本符号 (a)顺序型;(b)IF选择型;(c)CASE型多分支;(d)循环型;(e)调用子程序
5.3.2 盒图
优点:
不能任意转移控制; 功能域(特定控制结构的作用域)明确; 很容易确定局部和全程数据的作用域; 很容易表现嵌套关系,也可表示模块的层次结构。
软件工程导论
天津市大学软件园
第5章 详细设计
➢ 理解详细设计的目的与任务 ➢ 理解面向数据结构的Jackson方法
➢ 熟练掌握结构化的详细设计方法及
其设计工具
第5章 详细设计
➢ 5.1 详细设计的目的与任务 ➢ 5.2 详细设计方法 ➢ 5.3 详细设计工具 ➢ 5.4 习题
第5章 详细设计
➢ 5.1 详细设计的目的与任务 ➢ 5.2 详细设计方法 ➢ 5.3 详细设计工具 ➢ 5.4 习题
软件工程第5章-结构化分析与设计

软件工程(第二版)
16
对数据流图进行分层
• George Miller在著名的论文“神奇的数 字7加减2:我们处理信息的能力的某种 限制”中指出:人们在一段时间内的短期 记忆似乎限制在5~9件事情之内 • 根据自顶向下逐层分解的思想将数据流图 画成层次结构 • 每个层次画在独立的数据流图中,加工个 数可大致控制在“7加减2”的范围中
避免如图a那样的平铺形态较好的结构图形态是如图b那样的椭圆型a平铺形态b椭圆形态复旦大学计算机科学技术学院软件工程第二版8022模块的影响范围应限制在该模块的控制范围内例如下图中图a中模块b2的影响范围模块a不在其控制范围模块b2内图b中决策控制是在顶层模块其影响范围ab2在控制范围内但是从决策控制模块到被控模块之间相差多个层次b2topb2b1topb2复旦大学计算机科学技术学院软件工程第二版8133模块接口上应尽可能传递简单数据而且传递的数据应保持与模块的功能相一致即不传递与模块功能无关的数据模块的功能应是可预测的避免对模块施加过多的限制单入口和单出口的模块能有效地避免内容耦合复旦大学计算机科学技术学院软件工程第二版82将整个软件看作一个大的功能模块通过功能分解不断将其分解成若干个较小的功能模块直至得到一组不必再分解的模块结构图中的底层模块书写设计规格说明特别要为每个模块书写模块的功能接口约束和限制等设计评审复旦大学计算机科学技术学院软件工程第二版83数据流图到软件体系结构的映射数据流图到软件体系结构的映射小结复旦大学计算机科学技术学院软件工程第二版84结构化设计是将结构化分析的结果数据流图映射成软件的体系结构结构图根据信息流的特点可将数据流图分为变换型数据流图和事务型数据流图其对应的映射分别称为变换分析和事务分析事务流transaction复旦大学计算机科学技术学院软件工程第二版85复旦大学计算机科学技术学院软件工程第二版86复旦大学计算机科学技术学院软件工程第二版87数据流沿着输入通路到达一个事务中心事务中心根据输入数据的类型在若干条动作通路actionpath中选出一条来执行具有这种特征的信息流称为事务流根据事务类型选取一条动作通路复旦大学计算机科学技术学院软件工程第二版88复旦大学计算机科学技术学院软件工程第二版89复审dfd的顶层图确保系统的输入输出数据流符合系统规格说明的要求根据软件设计准则采用启发式设计策略对初始结构图进行改进以改善软件质量复旦大学计算机科学技术学院软件工程第二版90