




已阅读5页,还剩40页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第 7 讲 设计概念与原理 内容提要 w软件设计的重要性、过程及其基本原则 w设计的相关概念 w模块化设计 w模块设计的启发规则 概述 w软件设计:应用各种技术和原理,对一个软件 系统做出足够详细的决策,使之有可能在物理 上得以实现的过程。软件设计是一个迭代的过 程。 w设计目标:将需求分析的结果(分析模型与需 求分析规约)转化为实际软件系统的一个模型 或软件表达式,即用于构造软件的“蓝图”。 w最终产品:设计规约,包括描述体系结构、数 据、过程和界面设计模型。 w评审:清晰性、正确性、完整性。 w软件设计与程序设计不同。 开发阶段的信息流 翻译需求模型到软件设计 需求分析模型设计模型 数据对象 描述 处理规格说明 控制规格说明 E-R DFD STD DD 过程设计 接口设计 体系结构设计 数据设计 翻译分析模型到软件设计 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.模块化:Modularity n模块是数据说明、可执行语句等程序对 象的集合,是单独命名的并且可以通过名字 来访问,例如过程、函数、子程序、宏、 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 DEFINED number 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.求精Refinement n自顶向下的设计策略。 door implemented as a data structure manufacturer model number type swing direction inserts lights type number weight opening mechanism open implemented with a “knowledge“ of the object that is associated with enter details of enter algorithm walk 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, then take 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 policy clientsclients a specific design decision “信息隐藏”,更准确地描述应是“细节隐藏”,因为隐藏的不是信 息,而是实现的细节。 4、模块化设计 w模块独立性 n度量标准:内聚 cohesion 和耦合 coupling n内聚是一个模块内部的交互程度;耦 合是模块之间交互的程度。 n好处:更有利于开发、设计/编码修 改的副作用减小、模块的复用可能。 n功能独立性是良好设计的关键,设计 又是软件质量的关键。 w耦合(couple)是度量系统中模块之间的交 互程度。 wGoal: 模块之间尽可能独立 w耦合从低到高依次为:非直接耦合(最好),数据耦 合,标记耦合,控制耦合,外部耦合,公共耦合和内 容耦合(最差)。 Great deal of dependenceIndependent Highly coupled Loosely coupledUncoupled 耦合 耦合 w内容耦合 content coupling n如果两个模块中的一个直接引用了另 一个模块的内容,则它们之间是内容耦合 。 nOne module modifies another. AB CD A: goto C1 C: C1: 例1:A访问C的内 部数据或不通过正常入 口而转入C的内部。 例2:部分代码重 叠(常出现在汇 编程序中) B A 例3:一个模块有多个 入口(功能) A: entry 1: entry 2: 耦合 w公共耦合 common coupling n如果两个模块都可以存取相同的全局 数据,则它们之间是公共耦合。 na common data store. Global : V1 V2 A: A1=V1+V2 B: V1=B1 Global : V1 V2 A: 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. A B Flag F2 F1 Fn Flag 特点:接口单一 ,但仍然影响被 控模块的内部逻 辑。 耦合 w标记耦合 stamp coupling n如果两个模块都要使用同一数据结构的 一部分,不是采用全局公共数据区共享,而 是通过模块结构传递数据结构的一部分,则 它们之间为标记耦合。 w数据耦合 data coupling n被调用模块的输入与输出是简单的参数 或者是数据结构(该数据结构中的所有元素 为被调用的模块使用),则它们之间为数据 耦合。 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 inputs from disk from tape from keyboard 低内聚 时间内聚(Temporal cohesion): 如果一 个模块包含的任务必须在同一段时间内执行。 n例如:系统的初始化 open old master file; new master file, transaction file and print file; initialize sales region table; read first transaction record and first old master file record; n问题:不同的功能混在一个模块中,有时 共用部分编码,使局部功能的修改牵动全局。 中内聚 过程内聚 (Procedural cohesion): Functions are grouped together in a module to ensure a certain order of performance. n例子: wRead part number from database and update repair record on maintenance file. enter data check data manipulate data 中内聚 通信内聚(Communicational cohesion):All the functions in a module operate on or produce the same data set. 例如:从数据库的操作 可能 破坏独立性。 高内聚 顺序内聚 (Sequential cohesion):一个处理 元素的输出数据作为下一个处理元素的输入数据 。 功能内聚 (Functional cohesion):模块内的 所有处理元素属于一个整体,完成一个单一的功 能。 原则:在实际工作中,确定内聚的精确级别是不 必要的,重要的是力争高内聚和识别低内聚,可 以使得设计的软件具有较高的功能独立性。 1. 争取低耦合、高内聚(增加内聚 减少耦合 ) 2.模块规模适中:过大分解不充分不易理解;太 小则开销过大、接口复杂。注意分解后不应降 低模块的独立性。 3.适当控制 深度 = 分层的层数。过大表示分工过细。 宽度 = 同一层上模块数的最大值。过大表示 系统复杂度大。 启发性规则 控制层次 M cba lkedm fg i h j nopq r Width Depth Fan-out Fan-in 扇出 = 一个模块直接 调用控制的模块数。 3 fan-out 9 A A的扇出 A A的扇入 扇入 = 直接调用该 模块的模块数 在不破坏独立
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 部编版道德与法治七年级下册8.1憧憬美好集体 说课稿
- 2025天津市二手房买卖合同
- 馅心概述说课稿-2025-2026学年中职专业课-中式面点技艺-中餐烹饪-旅游大类
- 第1课 机器人简介教学设计-2023-2024学年初中信息技术(信息科技)九年级下册川教版(旧版)
- 线缆厂报销标准管理细则
- 2025二手公寓买卖合同
- 化肥厂操作工岗位考核细则
- 2025劳动合同伤残补偿协议书
- 环保技术研发合作合同协议
- 第9课《一桥飞架连天堑》说课稿 2024-2025学年岭南美版 (2024)初中美术七年级上册
- 2025年度反洗钱阶段考试培训试考试题库(含答案)
- 收割芦苇施工方案
- 普通黄金现货购买合同8篇
- 三力测试考试题库及答案视频讲解
- 2025年河南省人民法院聘用书记员考试试题及答案
- 2025年中学教师资格考试《综合素质》核心考点与解析
- 口腔冠延长术
- 部编版七年级语文上册《闻王昌龄左迁龙标遥有此寄》课件
- 诊所经营管理课件
- 2024年江苏省连云港市辅警协警笔试笔试模拟考试(含答案)
- 铁路工务介入管理办法
评论
0/150
提交评论