资源预览内容
第1页 / 共45页
第2页 / 共45页
第3页 / 共45页
第4页 / 共45页
第5页 / 共45页
第6页 / 共45页
第7页 / 共45页
第8页 / 共45页
第9页 / 共45页
第10页 / 共45页
亲,该文档总共45页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第 7 讲 设计概念与原理内容提要w软件设计的重要性、过程及其基本原则 w设计的相关概念 w模块化设计 w模块设计的启发规则概述w软件设计:应用各种技术和原理,对一个软件 系统做出足够详细的决策,使之有可能在物理 上得以实现的过程。软件设计是一个迭代的过 程。 w设计目标:将需求分析的结果(分析模型与需 求分析规约)转化为实际软件系统的一个模型 或软件表达式,即用于构造软件的“蓝图”。 w最终产品:设计规约,包括描述体系结构、数 据、过程和界面设计模型。 w评审:清晰性、正确性、完整性。 w软件设计与程序设计不同。开发阶段的信息流翻译需求模型到软件设计需求分析模型设计模型数据对象 描述处理规格说明控制规格说明E-RDFDSTDDD过程设计接口设计体系结构设计数据设计翻译分析模型到软件设计w数据设计将分析时创建的信息域模型变换为 软件所需的数据结构,侧重于数据结构的定 义。 w体系结构设计定义软件系统各主要结构构件 之间的关系。 w过程设计则是把结构构件转换成软件的过程 性描述。在编码步骤,根据这种过程性描述 ,生成源程序代码,然后通过测试最终得到 完整有效的软件。 w接口设计是建立软件内部的关系以及软件人 机之间的交互机制。 w软件设计的重要性可以用“质量”表达。1.软件设计的重要性w软件设计是后续开发步骤及软件维护工 作的基础。如果没有设计,只能建立一 个不稳定的系统结构。设计和软件质量w指导性原则n设计应该展示一种层次性结构。n设计应该模块化。n设计应该包括数据、体系结构、接口 和模块(构件)的清楚的表示。n设计应有性质不同的可区分的数据结 构和过程。n设计应该具有独立功能特征的模块。n设计应该降低模块和外部环境之间接 口的复杂性。n设计应该利用需求分析中获得的信息 和可重复的方法。2.设计过程w从项目管理的角度来看,软件设计分两 步完成。n概要设计,将软件需求转化为数据 结构和软件体系结构。n详细设计,即过程设计。通过对体 系结构表示进行细化,得到软件的详细 的数据结构和算法。总体设计w从回答“做什么”到回答“怎样做” w划分出组成系统的物理元素程序、 文件、数据库、过程和文档等等 w每个元素还是黑盒子 w-“全局高度,抽象层次”3.设计基本原理w1.模块化:Modularityn模块是数据说明、可执行语句等程序对 象的集合,是单独命名的并且可以通过名字 来访问,例如过程、函数、子程序、宏、 modula等。n软件被划分成独立命名和可独立访问的 被称作模块的构件,每个构件完成一个子功 能,它们集成到一起满足问题需求。 easier to build, easier to change, easier to fix .模块化模块化论据: wC(x)定义为问题x的复杂性 wE(x)定义为解决问题x所需要的工作量 w对p1和p2两个问题,若 C(p1) C(p2),则 E(p1) E(p2) wC(p1 + p2) C(p1) + C(p2) wE(p1 + p2) E(p1) + E(p2) w不要过度模块化!每个模块的简单性将被集 成的复杂性所掩盖。模块化w模块化和软件成本n如何确定地预测最小成本区?成本成本 / 模块最小成本区 接口成本软件总成本模块数目模块化w如何确定模块的大小:n模块可分解性n模块可组装性n模块可理解性n模块的连续性n模块的可保护性设计基本原理w2.抽象 Abstraction:n忽略细节,分层理解问题,自顶向下层层 细化,包括对过程、数据和控制的抽象。n过程抽象:一个命名的指令序列,具有特 定和有限的功能。n数据抽象是命名的数据集合,描述一个数 据对象。n控制抽象隐含了不必说明的内部细节的程 序控制机制。n是实现模块化的手段之一。过程抽象w在这个抽象层次上,给出了初步的过程 表示,所用的术语都已面向软件,而且 模块化的工作已经开始显露。 w逐步细化和模块化的概念与抽象紧密相 连。数据抽象w定义“绘图 drawing”数据对象作为一种抽象数据类型。nTYPE drawing IS STRUCTURE DEFINEDnumber IS STRING LENGTH (12)geometry DEFINED notes IS STRING LENGTH (256)ENF drawing TYPE;nBlueprint IS INSTANCE OF drawing;nSchematic IS INSTANCE OF drawing;设计基本原理 w3.求精Refinementn自顶向下的设计策略。doorimplemented as a data structuremanufacturer model number type swing direction inserts lightstypenumber weight opening mechanismopenimplemented with a “knowledge“ of the object that is associated with enterdetails of enter algorithmwalk to door; reach for knob; Switch the knob; open door; walk through; close door.repeat until door opens turn knob clockwise; if knob doesnt turn, thentake key out;find correct key;insert in lock; endif pull/push door move out of way; end repeat求精w设计的求精过程与需求分析的划分类似 ,只是考虑的细节层次不同。 w求精实际是一个详细描述的过程。 w抽象与求精是互补的概念。设计基本原理w4.信息隐藏 information hiding n信息隐藏:在设计和确定模块时,使 得一个模块内包含的信息(过程和数据) 对于不需要这些信息的模块来说,是不可 访问的。n每个客户只能通过接口来了解该模块 ,而所有的实现都隐藏起来。n隐藏就是有效的模块化可以通过定义 一组独立模块来实现。信息隐藏modulemodule controlledcontrolled interfaceinterface“ “secret“secret“ algorithmalgorithm data structuredata structure details of external interfacedetails of external interface resource allocation policyresource allocation policyclientsclientsa specific design decision “信息隐藏”,更准确地描述应是“细节隐藏”,因为隐藏的不是信 息,而是实现的细节。4、模块化设计w模块独立性n度量标准:内聚 cohesion 和耦合 couplingn内聚是一个模块内部的交互程度;耦 合是模块之间交互的程度。n好处:更有利于开发、设计/编码修 改的副作用减小、模块的复用可能。n功能独立性是良好设计的关键,设计 又是软件质量的关键。w耦合(couple)是度量系统中模块之间的交 互程度。 wGoal: 模块之间尽可能独立w耦合从低到高依次为:非直接耦合(最好),数据耦 合,标记耦合,控制耦合,外部耦合,公共耦合和内 容耦合(最差)。Great deal of dependenceIndependent Highly coupledLoosely coupledUncoupled 耦合耦合w内容耦合 content couplingn如果两个模块中的一个直接引用了另 一个模块的内容,则它们之间是内容耦合 。nOne module modifies another.ABCDA: goto C1 C: C1:例1:A访问C的内 部数据或不通过正常入 口而转入C的内部。例2:部分代码重 叠(常出现在汇 编程序中)BA例3:一个模块有多个 入口(功能)A: entry 1: entry 2: 耦合w公共耦合 common coupling n如果两个模块都可以存取相同的全局 数据,则它们之间是公共耦合。na common data store.Global : V1V2A: A1=V1+V2 B: V1=B1 Global : V1V2A: V1+ B: V2=B1+V1 耦合w公共耦合存在的问题:n 公共部分的改动将影响所有调用它的 模块;n 公共部分的数据存取无法控制;n 复杂程度随耦合模块的个数增加而增 加。 w解决方法:n通过使用信息隐藏来避免公共耦合。耦合w控制耦合 control coupling n如果两个模块中的一个模块给另一个 模块传递控制信息,则它们具有控制耦合 。nOne module passes parameters to control the activity of another module.ABFlagF2F1Fn Flag特点:接口单一 ,但仍然影响被 控模块的内部逻 辑。耦合w标记耦合 stamp couplingn如果两个模块都要使用同一数据结构的 一部分,不是采用全局公共数据区共享,而 是通过模块结构传递数据结构的一部分,则 它们之间为标记耦合。 w数据耦合 data couplingn被调用模块的输入与输出是简单的参数 或者是数据结构(该数据结构中的所有元素 为被调用的模块使用),则它们之间为数据 耦合。 w非直接耦合 no direct coupling n两个模块之间没有联系,则它们之间为 非直接耦合。 The most desirable.耦合w实现低耦合,采取下列措施:n耦合方式 w采用非直接耦合,不采用内容耦合。n传递信息类型 w尽量使用数据耦合,少采用控制耦合 ,外部耦合和公共耦合限制使用。n耦合数量 w模块间相互调用时,传递参数最好只 有一个。 w原则:尽量使用数据耦合,少用控制耦合, 限制公共耦合的范围,完全不用内容耦合。耦合内聚w内聚:cohesion. wGoal: 尽可能高内聚. w内聚级别: 偶然内聚逻辑内聚时间内聚过程内聚通信内聚顺序内聚功能内聚最差最好低内聚偶然内聚(Coincidental cohesion): 指一个模块 内的各处理元素之间没有任何联系。 例:read disk file;calculate current values;produce user output; 严重的缺点:产品的可维护性退化;模块是不可复用的 ,增加软件成本。 解决途径:将模块分成更小的模块,每个小模块执行一 个操作。低内聚逻辑内聚(Logical cohesion):逻辑 上相关的功能或数据放在一个模块中。n问题:接口难于理解;完成多个操作 的代码互相纠缠在一起,导致严重的维护 问题。A: Read inputsfrom diskfrom tapefrom keyboard低内聚时间内聚(Temporal cohesion): 如果一 个模块包含的任务必须在同一段时间内执行。n例如:系统的初始化open old master file;new master file, transaction file and print file;initialize sales region table;read
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号