《软件工程第五章结构化设计.ppt》由会员分享,可在线阅读,更多相关《软件工程第五章结构化设计.ppt(103页珍藏版)》请在三一文库上搜索。
1、第三部分软件设计与建模,结构化软件设计 阳王东,回答问题,什么是软件设计?有哪些阶段和任务? 什么是模块化设计?有哪些原理? 什么是软件结构和体系结构?二者有什么区别? 数据流有哪些类型?如何区分? 数据流映射的步骤是什么? 什么是结构化程序设计?有哪些工具? 什么是JSD方法?具体步骤是什么?,第8章 软件设计,软件设计 模块化设计 软件架构设计 软件结构,软件设计概述,软件设计阶段的基本目标是构造系统“怎么做”的模型描述。 “设计先于编码”,这是软件工程“推迟实现”基本原则 软件系统设计是把软件需求“变换”为用于构造软件的蓝图。 “输入”是需求分析各种模型元素 “输出”是软件设计模型和表示
2、 软件设计的目标是对将要实现的软件系统的体系结构、系统的数据、系统模块间的接口,以及所采用的算法给出详尽的描述。,软件设计三类活动,总体设计,也称为概要设计,软件结构设计,或高层设计。 分析需求规格说明 模块划分,形成具有预定功能的模块组成结构 表示出模块间的控制关系 给出模块之间的接口 软件详细设计,也称为(模块)过程设计,或低层设计。 设计模块细节 确定模块所需的算法和数据结构等 测试和复审,软件设计质量原则,设计过程要有全局观念 设计对于分析模型应该是可跟踪的 设计不应该从头做起 设计应该是可实现的 设计应该表现出一致性和集成性 设计应该能够适应修改 设计不是编码 应该复审每一步设计,以
3、减少语义性错误,软件模块化设计,模块是一个独立命名的,拥有明确定义的输入、输出和特性的程序实体。 软件的模块化设计(Modular Design)。系统是有一个个模块组装而成。 软件模块化设计优点 可以简化软件的设计和实现 提高软件的可理解性和可测试性 软件更容易得到维护。 软件模块化设计缺点 模块划分的数量越多,模块间的联系也越多 模块的接口工作量却随着模块数增加而增大,模块数与开发工作量,软件模块化设计的指导思想,分解 抽象 逐步求精 信息隐蔽 模块独立性,分解与抽象,分解必然需要抽象的支持。抽象是抓住主要问题,隐藏细节,这样才能容易分解。 抽象具有不同的级别。 人类解决复杂问题的基本方法
4、之一。只有抓住事物的本质,才能准确分析和处理问题,找到合理的解决方案。,逐步求精,逐步求精,或称逐步细化,是一种自顶向下的设计策略。 逐步求精是人类采用抽象到具体的过程把一个复杂问题趋于简单化控制和管理的有效策略。 抽象和精化是互补的概念。,信息隐藏,信息隐蔽原则建议模块应该具有的特征是:每个模块对其他所有模块都隐蔽自己的设计决策。 信息隐蔽意味着通过一系列独立的模块可以得到有效的模块化。 独立的构件或模块之间的“接口”简单而清晰。,模块的独立性,模块独立性是指开发具有独立功能而和其他模块没有过多关联的模块。 模块独立性两大优点: 独立的模块由于分解了功能,简化了接口,使得软件比较容易开发;
5、独立的模块比较容易测试和维护。 模块独立性由两个定性标准度量: 模块自身的内聚(Cohesion),也称为块内联系或模块强度, 模块之间的耦合(Coupling),也称为块间联系。 模块独立性愈高,则块内联系越强,块间联系越弱。,模块内聚性,内聚性是从功能的角度对模块内部聚合能力的量度。 高内聚是模块独立性追求的目标。 分类: 偶然性内聚 逻辑性内聚 时间性内聚 过程性内聚 通信性内聚 顺序性内聚 功能性内聚,内聚性分类,模块耦合性,耦合性是对一个软件结构内不同模块之间互连程度的度量。 耦合性的强弱取决于模块间接口的复杂程度,以及通过接口的数据类型和数目。 分类: 非直接耦合 数据耦合 控制耦
6、合 外部耦合 公共耦合 内容耦合,耦合性分类,模块化设计的优化,改进软件结构提高模块独立性 在满足模块化要求的前提下尽量减少模块数量,在满足信息需求的前提下尽可能减少复杂的数据结构 模块规模应适中 软件结构的深度、宽度、 扇入数和扇出数都要适当 模块的作用域应该在控制域之内 力求降低模块接口的复杂程度,设计单入口、单出口的模块,概要设计,概要设计主要包括三个方面的设计。首先是系统构架设计,然后是软件结构设计与数据结构设计。,软件架构设计(体系结构),软件体系结构是一种总体表达。 大型软件系统总是被分解成一系列子系统,由子系统提供一些相关的服务。 软件架构设计过程就是识别出这些子系统,并建立子系
7、统控制和通信的框架,最后给出软件体系结构的一个描述。 系统构架设计可以按照以下步骤进行 定义子系统 定义子外部接口 定义系统构成模型 定义系统控制模型,系统架构设计主要内容,子系统划分方法 前台业务办理和后台数据管理 数据采集、数据处理和数据管理 界面、控制和实体 外部接口 通信协议 SDK 消息 分布式访问,系统构成模型,以数据为中心的结构模型 客户机/服务器结构模型 抽象机结构模型,以数据为中心的结构模型,由一组子系统构成,子系统交换信息,协调工作有两种基本方法: 全部共享数据放在一个中央数据库中,所有子系统都能从中存取数据。 每个子系统用各自的数据库与其他子系统进行数据交互,通过消息传递
8、来实现。 共享数据模型的优点是能够高效地共享大量的数据; 缺点是子系统一定要与以数据为中心的体系结构模型一致,系统变更或进化比较困难。,数据流体系结构模型,当输入数据经过一系列的计算和操作构件或模块的变换形成输出数据时,可以应用数据流体系结构。 管道和过滤器结构通过一组由管道连接的过滤器来变换数据,并向下传递。,管道和过滤器结构,多媒体服务系统结构,两层C/S架构,允许用户界面和应用程序代码直接访问数据库和网络存储的API。应用程序使用数据库中存储的数据模型,但是不需要在该模型之上建立逻辑模型。当开发中的系统是一个原型系统或者已经知道其生命周期较短,期间API不会发生变化的时候,两层应用程序是
9、理想的。典型情形下,这种方式用于小型的应用程序,它们的开发成本和时间都很少。,三层C/S架构,相当频繁的重复使用是一个主要的设计考虑因素,在这种情形下需要建立应用程序模型以允许它的一部分被多个用户界面查看组件重复使用。它有一个指导方针是,在应用程序需要相同数据的多个视图的任何时候,开发者应该考虑使用三层方式代替两层方式。 从两层模型迁移到三层模型需要考虑的主要问题包括适当的网络资源的可用性和管理并发数据访问的加锁方案。,抽象机模型,抽象机模型也称为分层模型,是建立子系统的接口模型。它把子系统组织成一系列的层次,每一层提供一组服务,每一层定义为一个抽象机。 例如:网络协议OSI参考模型,系统控制
10、模型,集中式控制模型 调用返回模型:这是一个自上而下的子过程模型。控制始于系统(程序)的顶层,在子系统(程序)调用过程中,控制逐步传递到更低的层次中。该模型适用于顺序执行的系统。 管理者模型:这是一种适用于并发系统的模型。一个系统组件被指定为系统管理者,控制其他系统过程的启动、终止和协调。一个过程就是一个能和其他过程并发执行的子系统或模块。,SOA架构,服务提供者: 一个可通过网络寻址的实体,它接受和执行来自使用者的请求。 它将自己的服务和接口契约发布到服务注册中心,以便服务使用者可以发现和访问该服务。 服务使用者: 一个应用程序、一个软件模块或需要一个服务的另一个服务。 它发起对注册中心中的
11、服务的查询,通过传输绑定服务,并且执行服务功能。 服务使用者根据接口契约来执行服务。 服务注册中心: 服务发现的支持者; 它包含一个可用服务的存储库,并允许感兴趣的服务使用者查找服务提供者接口。,服务注册中心,服务消费者,服务提供者,注册,发现,调用,并发系统的集中式控制模型,系统控制模型,事件驱动系统 广播模型:发生的事件广播到所有子系统,任何能处理该事件的子系统都会响应。该模型适用于基于网络的分布式系统。 广播模型中的子系统注册其感兴趣的特别事件 广播模型的优点是进化比较简单 缺点是子系统都知道是否和什么时候处理事件,这可能会引起冲突。 中断驱动模型:由中断处理器对来自外部的中断进行检测,
12、然后在其他组件中处理这些中断。该模型适用于对定时有严格要求的实时系统。 只用在硬件实时系统中,要求对一些事件能做出及时响应,总线架构,像水管一样随意接入 像PCI总线一样即插即用,Business Intelligence Services,Service Registry,B2B Interactions,Collaboration Tools,Portal Service,Applications & Data,软件的体系结构模式,并发性 系统必须以一种模拟并行的方式来操作多个任务 操作系统进程管理模式 任务调度器模式包括一组含有tick()操作的活动对象 持久性 如果数据从创建它的进程执
13、行以来一直存在,则该数据是持久性存在的数据。 数据库管理系统模式将DBMS的存储和存取能力用于应用系统的体系结构中。 应用级的持久模式在应用体系结构中建立了持久性特征。 分布性 强调系统或系统中构件或模块在一个分布的环境中相互通信的方式。分布性问题有两个元素: 一是实体间连接方式 二是实体间通信的特性 代理模式是一种普遍的体系结构模式 CORBA就是代理模式的一个范例,小结,设计的基本原理和概念包括模块化、抽象、体系结构、信息隐蔽、模块独立、逐步求精和重构等。 软件体系结构提供了待建系统的整体视图,它描述软件构件或模块的结构和组织、构件或模块的性质以及他们之间的连接。,第9章 结构化设计方法,
14、结构化设计阶段 数据流设计方法 面向数据的设计 结构化程序设计 案例分析,结构化设计概述,结构化设计方法(Structured Design, SD)是基于模块化、自顶向下细化、结构化程序设计等程序设计技术基础上发展起来的。 结构化设计方法用模块结构图来表达程序模块之间的关系。 软件设计分为两个阶段: 概要设计:面向数据流设计方法 详细设计:结构化程序设计方法,软件结构设计,软件结构设计也称总体设计,确定软件的结构以及各组成成分(子系统或模块)之间的相互关系。 软件结构设计的主要任务是: 将系统划分成模块; 决定每个模块的功能; 决定模块的调用关系; 决定模块的界面,即模块间传递的数据。 软件
15、结构设计阶段的主要任务是通过数据流图来确定系统的结构图。 在软件结构设计阶段,结构化设计主要采用面向数据流的设计方法。,软件结构设计过程,设计供选择的方案 选取合理的方案 推荐最佳方案 功能分解和设计软件结构 数据库设计 制定软件设计测试计划 编制设计文档 审查和复审,软件结构图,软件结构图(Structure Chart, 简称SC)是软件系统的模块层次结构,反映了整个系统的功能实现。 软件结构以层次表示程序的系统结构,即一种控制的层次体系,并不表示软件的具体过程。 软件结构图的主要元素有: 模块 控制关系 信息传递 循环调用和选择调用,软件结构图,软件结构图的形态特征: 深度:指结构图控制
16、的层次,也是模块的层数。 宽度:指一层中最大的模块个数。 扇出:指一个模块直接下属模块的个数。 扇入:指一个模块直接上属模块的个数。 画结构图应注意的事项: 模块不能重名。 调用关系只能从上到下。,软件结构图,重构,重构是一种重新组织的技术,可以简化构件或模块的设计或编码而无需改变其功能或行为。 重构是一种改进程序内部结构但不改变代码或设计的外部行为。 “先使它转起来,再使它快起来”。,面向数据流设计,根据基本系统模型,数据信息必须以“外部”信息形式进入软件系统,经过内部处理以后再以“外部”的形式离开系统。 有三种数据流类型: 变换型数据流 事务型数据流 混合型数据流,变换流,信息沿输入通路进
17、入系统,同时由外部的形式变换为内部形式,进行系统通过变换程序进行加工处理后在沿着输出通路变换外部形式输出。,事务流,数据沿着输入通路到达一个调度模块,调度模块根据输入数据的类型的不同而选择相应的程序流程来执行处理过程。,混合型数据流,在一个大型系统的DFD中,变换流和事务流往往会同时出现。 例如,在一个事务型的DFD中,分支动作路径上的信息流也可能会体现出变换流的特征。 这种具有将事务流和变换流组合出现,就是混合型数据流,简称混合流。,混合型数据流,混合型数据流,面向数据流设计过程,确定数据流类型 确定数据流的方向 进行变换或事务分析 映射软件结构 导出接口描述和数据结构 复查 进入下一步详细
18、设计,面向数据流设计步骤,设计步骤 复查并精化数据流图。 初步分析:确定数据流图具有变换特性还是事务特性。 确定输入流和输出流的边界,从而孤立出变换中心和事务中心。 变换中心包括:输入通道,输出通路,处理过程 事物中心包括:输入通路,事物调度,可执行程序流程 完成“第一级分解”。 完成“第二级分解”。 使用设计度量和启发规则对第一次分割得到的软件结构进一步精化。,在线考试系统(1),基本系统模型 功能级模型,初步分析,变换处理 生成试卷 组卷 事务处理 考试,在线考试系统(4),变换中心,试题生成 输入通道:界面输入、文件导入 输出通路:导入数据库 处理过程:试题检查和转换 定制考试 输入通道
19、:界面输入 输出通路:导入数据库 处理过程:考试信息转换(配置参数,时间等) 组卷 输入通道:数据库检索 输出通路:试卷界面 处理过程:试题选择,事务中心,登录 输入通路:登录界面 调度:登录验证 可执行的程序流程 登录考试系统 拒绝登录 答题 输入通路:界面提交、时间提交 调度:答题控制 可执行的程序流程 提交答案到服务器 拒绝提交 存储答案于本地 提交 输入通路:界面提交、时间提交 调度:提交控制 可执行的程序流程 提交考试信息到服务器 拒绝提交 重新提交 存储本地,变换中心第一级分解,分解方法 对于输入通路设置输入控制模块(Ca) 变换处理设置控制模块(Ct) 对于输出通路输出信息产生和
20、显示模块(Ce),试题生成,试题生成,获取试题信息,试题转换,试题存储,输入控制,变换控制,输出控制,定制考试,定制考试,获取考试信息,考试信息转换,考试信息存储,组卷,组卷,从试题库查询试题,试题选择和组织,试卷输出显示,变换中心第二级分解,输入模块细化 数据获取 数据检查 数据传递 数据封装 控制模块细化 数据预处理 数据格式转换 数据内部属性生成 输出模块细化 输出格式转换 显示格式设置 数据传递 输出数据生成,试题生成,试题生成,获取试题信息,试题转换,试题存储,从界 面读 取信 息,文 件 选 择,检查输 入信息 的完整 性和有 效性,文件 格式 检查,文件内 容的完 整性和 有效性
21、 检查,试题 格式 转换,试题 编号 生成,数据库 链接,数据库 SQL 生成,数据库 SQL 执行,界面录 入试题,导入外部 试题,定制考试,定制考试,获取考试信息,考试信息转换,考试信息存储,从界面 读取信 息,检查输入 信息的完 整性和 有效性,考试配 置参数 生成,考试 编号 生成,数据库 链接,数据库 SQL 生成,数据库 SQL 执行,事务中心第一级分解,输入控制模块 事务处理模块 事务调度模块 事务传递模块,登录,登录,获取登 录信息,登录信 息验证,登录 考试 系统,拒绝 登录,登录 调度,提交考试,提交考试,界面 提交,时间 提交,提交 控制,提交到 服务器,拒绝 提交,重新
22、 提交,存储 本地,提交 调度,考试 终止,继续 考试,事务中心第二级分解,输入控制模块 数据获取 数据检查 数据传递 数据封装 事务处理模块 事务处理步骤分解 事务调度模块 调度监控 调度分配 事务传递模块 事务通信 事务现场处理 事务后续处理,登录,登录,获取登 录信息,登录信 息验证,登录 考试 系统,拒绝 登录,登录 调度,输入 用户 名和 口令,输入 有效 性检 查,用户 名检 查,口令 验证 检查,写登 录日 志,进入 考试 界面,记录 考生 登录 信息,错误 提示 界面,重新 登录,提交考试,提交考试,界面 提交,时间 提交,提交 控制,提交到 服务器,拒绝 提交,重新 提交,存
23、储 本地,提交 调度,考试 终止,继续 考试,取系 统时 钟,定时 器,传输 到服 务器,存储 考试 信息,拒绝 状态 判定,拒绝 提交 提示,记录 提交 状态,重新 提交 提示,创建 本地 文件,写考 试信 息到 文件,面向数据流设计小结,变换流和事务流分析 变换模块和事务模块的划分 模块的分解,数据库设计,逻辑设计 物理设计,逻辑设计,逻辑设计的任务,就是采取一定的策略,按照若干准则将概念模型转换为关系数据库管理系统所能接受的一组关系模式,并利用规范化的理论和方法对这组关系模式进行处理。 关系模式设计 关系模式规范化 模式的评价与改进,关系模式设计,E-R图是由实体、属性和联系组成的,而关
24、系数据库逻辑设计的结果是一组关系模式的集合。所以将E-R图转换为关系模型实际上就是将实体、属性和联系转换成关系模式。在转换中要遵循以下原则: 一个实体转换为一个关系模式,实体的属性就是关系的属性,实体的键就是关系的键。 一个联系转换为一个关系模式,与该联系相连的各实体的键以及联系的属性均转换为该关系的属性。该关系的键有三种情况: 如果联系为1:1,则每个实体的键都是关系的候选键 如果联系为1: n ,则n端实体的键是关系的键 如果联系为n : m,则各实体键的组合是关系的键,教务管理系统,学生 课程 教师 课表 成绩,关系模式规范化,应用规范化理论对上述产生的关系的逻辑模式进行初步优化,以减少
25、乃至消除关系模式中存在的各种异常,改善完整性、一致性和存储效率。 确定范式级别 实施规范化处理,物理设计,数据库最终要存储在物理设备上。对于给定的逻辑数据模型,选取一个最适合应用环境的物理结构的过程,称为数据库物理设计。物理设计的任务是为了有效地实现逻辑模式,确定所采取的存储策略。此阶段是以逻辑设计的结果作为输入,结合具体DBMS的特点与存储设备特性进行设计,选定数据库在物理设备上的存储结构和存取方法。 确定物理结构,在关系数据库中主要指存取方法和存储结构 评价物理结构,评价的重点是时间和空间效率,确定物理结构,存储记录结构的设计 聚簇 索引 访问方法的设计 缓存 索引 数据存放位置的设计 分
26、区 阵列 备份 系统配置的设计,数据库安全和维护设计,安全策略 用户机制 授权机制 加密机制 备份策略 增量备份 完全备份 介质备份,什么是详细设计,针对一个个模块的设计,是过程设计、算法设计。 详细设计采用结构化程序设计方法. 详细设计仅仅是设计出程序的“蓝图”,是编码的先导,但不是编写程序。 设计高效率的程序是基于良好的数据结构与算法,而不是基于编程小技巧,结构化程序设计方法,结构化程序设计的理念是在20世纪60年代,由Dijkstra等人提出并加以完善的。 结构化的程序一般只需要用三种基本的逻辑结构就能实现。这三种基本逻辑结构是顺序结构、选择结构和循环结构。 结构化程序设计是一种设计程序
27、的技术,它采用自顶向下逐步求精的设计方法和单入口单出口的控制结构。,详细设计的任务,每个模块内的数据结构 每个模块的控制算法 内部接口描述 为每一模块设计出一组测试用例(test cases),因为详细设计人员对模块的功能、逻辑、接口等最了解。 评审,详细设计原则,每一种数据结构与算法都有其时间、空间的开销和收益。 与开销和收益有关的是时间空间的权衡。 程序员应该充分地了解一些常用的数据结构与算法,避免不必要的重复设计工作。 数据结构与算法为应用服务。,结构程序设计的类型,经典的结构程序设计 Seq; if-then-else; do-While 扩展的结构程序设计 增加case; do-un
28、til 修正的结构程序设计 允许continue; break,过程设计,过程设计在概要设计完成之后进行,它是详细设计阶段应该完成的主要任务 过程设计方法 流程图 N-S图 PAD图 判定表 HIPO图,流程图结构,(a)顺序结构 (b)IF-THEN-ELSE型选择 (c)DO-WHILE型循环结构 (d)DO-UNTIL型循环结构 (e)多分支结构,程序结构(续),(d),(e),程序流程图的标准符号,试错限制,流程图的实例-系统登录,口 令 验 证,用 户 名 验 证,开始,输入 用户名,查询用户名,是否存在 该用户名,输入 口令,根据用户 名比对口令,口令是 否相符,清空输 入口令,登
29、录系统,试错次 数加1,关闭登 录界面,试错次 数等于3,结束,N,Y,Y,N,Y,N,试错次 数置0,流程图分析,程序结构 用户名验证 口令验证 试错限制 需要补充完善之处 用户名不存在,增加到注册连接 验证码验证 口令验证算法描述,N-S图,(a) 顺序 (b) IF-THEN-ELSE型分支 (c) CASE型多分支 (d) 循环 (e) 调用子程序A,N-S图实例,计算100以内偶数之和,并输出,i=1,T=0,i%2=0,T,F,T=T+i,i+,输出T,PAD图,(a) 顺序(先执行P1后执行P2); (b) 选择(IF C THEN P1 ELSE P2); (c) CASE型多
30、分支; (d) WHILE型循环(WHILE C DO P); (e) UNTIL型循环(REPEAT P UNTIL C);(f) 语句标号;(g) 定义,PAD图实例,计算100以内偶数之和,并输出,i=0,T=0,While i100,P,输出T,P,T=T+i,i+,i%2=0,def,求11000内所有素数,用PAD图描述求素数的程序结构 算法 蛮力遍历 折半遍历 筛选法,HIPO图,HIPO(Hiberarchy Plus Input-Process-Output,层次加输入-处理-输出)图是根据IBM公司研制的软件设计与文件编制技术发展而来的。 HIPO图采用功能框图和PDL来描
31、述程序逻辑,它由两部分组成: 可视目录表给出程序的层次关系 体系框图:又称层次图(H图),是可视目录表的主体,用它表明各个功能的隶属关系 图例:图形符号说明 描述说明:每一框的补充说明 IPO图则为程序各部分提供具体的工作细节,盘存销售系统工作流程图,层次图,说明,IPO图,详细的IPO图,小结,概要设计就是确定系统的模块以及模块之间的结构和关系,将软件的功能需求分配给所划分的最小单元模块。 详细设计要确定数据结构、文件结构、数据库模式以及确定测试方法与策略。 在概要设计阶段主要树立一个模块化的思想。按照数据流到软件结构图的映射步骤将数据流图转化为系统的软件结构图。再对结构图进行分析、细化得到合理的软件模块结构。 在软件模块确定后,就需要考虑为软件结构图中的每一个模块确定相应的算法和块内的数据结构,用结构化程序设计工具来描述。 结构化程序设计工具通常以图形语言来描述,然后用PDL语言来加工。使得操作的步骤尽可能详细和清晰。在详细设计工具中主要有程序流程图、盒图、PAD图和HIPO图等。,作业,使用结构化设计方法对ATM系统进行设计。,
链接地址:https://www.31doc.com/p-2615383.html