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