软件设计的任务软件设计基本概念模块化设计其他设计问题的...

合集下载

软件工程 软件设计方法

软件工程 软件设计方法
13
限制和确定各个数据设计决策的影 响范围 若需要与操作系统或调度程序接口 所必须的控制表等数据时,确定其 所必须的控制表等数据时, 详细的数据结构和使用规则 数据的保护性设计
防卫性设计: 防卫性设计:在软件设计中就插 入自动检错, 入自动检错,报错和纠错的功能
14
一致性设计: 一致性设计: 保证软件运行过程中所使用的数 据的类型和取值范围不变 在并发处理过程中使用封锁和解 除封锁机制保持数据不被破坏 冗余性设计:针对同一问题, 冗余性设计:针对同一问题,由两 个开发者采用不同的程序设计风格 不同的算法设计软件, 不同的算法设计软件,当两者运行 结果之差不在允许范围内时, 结果之差不在允许范围内时,利用 检错系统予以纠正, 检错系统予以纠正,或使用表决技 术决定一个正确结果。 术决定一个正确结果。
27
① 模块:模块用矩形框表示,并用 模块:模块用矩形框表示, 模块的名字标记它。 模块的名字标记它。
28
② 模块的调用关系和接口:模块之 模块的调用关系和接口: 间用单向箭头联结, 间用单向箭头联结,箭头从调用模 块指向被调用模块。 块指向被调用模块。
29
③ 模块间的信息传递:当一个模块 模块间的信息传递: 调用另一个模块时, 调用另一个模块时,调用模块把数 据或控制信息传送给被调用模块, 据或控制信息传送给被调用模块, 以使被调用模块能够运行。 以使被调用模块能够运行。而被调 用模块在执行过程中又把它产生的 数据或控制信息回送给调用模块
11
3. 处理方式设计
确定为实现系统的功能需求所必需 算法, 的算法,评估算法的性能 确定为满足系统的性能需求所必需 的算法和模块间的控制方式 周转时间 响应时间 吞吐量 精度 确定外部信号的接收发送形式

软件工程第4章 软件设计

软件工程第4章  软件设计

5. 设计软件结构 通常程序中的一个模块完成一个适当的子功能。应 该把模块组织成良好的层次系统,顶层模块调用它 的下层模块以实现程序的完整功能,每个下层模块 再调用更下层的模块,从而完成程序的一个子功能, 最下层的模块完成最具体的功能。
6. 设计数据库 对于需要使用数据库的那些应用系统,软件工程师 应该在需求分析阶段所确定的系统数据需求的基础 上,进一步设计数据库。
高内聚也有两类:如果一个模块内的处理元素和同 一个功能密切相关,而且这些处理必须顺序执行 (通常一个处理元素的输出数据作为下一个处理元 素的输入数据),则称为顺序内聚。根据数据流图 划分模块时,通常得到顺序内聚的模块,这种模块 彼此间的连接往往比较简单。如果模块内所有处理 元素属于一个整体,完成一个单一的功能,则称为 功能内聚。功能内聚是最高程度的内聚。
(2) 用户手册根据总体设计阶段的结果,修改更正 在需求分析阶段产生的初步的用户手册。
(3) 测试计划包括测试策略,测试方案,预期的测 试结果,测试进度计划等等。 (4) 详细的实现计划 (5) 数据库设计结果
9. 审查和复审 最后应该对总体设计的结果进行严格的技术审查, 在技术审查通过之后再由使用部门的负责人从管理 角度进行复审。
为什么模块的独立性很重要呢?主要有两条理由: 第一,有效的模块化(即具有独立的模块)的软件比 较容易开发出来。这是由于能够分割功能而且接口 可以简化,便于多人分工合作开发同一个软件。
第二,独立的模块比较容易测试和维护。这是因为 相对说来,修改设计和程序需要的工作量比较小, 错误传播范围小,需要扩充功能时能够“插入”模块。
(2)详细设计。详细设计阶段的根本目标是确定 应该怎样具体地实现所要求的系统,也就是说,经 过这个阶段的设计工作,应该得出对目标系统的精 确描述,从而在编码阶段可以把这个描述直接翻译 成用某种程序设计语言书写的程序。 详细设计阶段的任务还不是具体地编写程序,而是 要设计出程序的“蓝图”,结果基本上决定了最终 的程序代码的质量。

软件设计目标和任务

软件设计目标和任务

五. 模块独立——1.耦合性 非直接耦合举例
两个模块之间没 有直接关系,它 们之间的联系完 全是通过主模块 的控制和调用来 实现的。 这种耦合的模块 独立性最强。

5.2 设计原理
五. 模块独立——1.耦合性 数据耦合举例
一模块调用另一 模块时,被调用 单价, 模块的输入、输 数量 出都是简单的数 据(若干参数)。 计算水费 属松散耦合
5.2 设计原理
二. 抽 象
例子:讨论一个在不同抽象级别上的软件设计所具有 的形式。 抽象1.总体结构层次 CAD图形软件包可以画 的抽象 各种直线和曲线,能完成 所有几何图形的计算.图 图形软件包 软件任务 形设计的结果存于图形文 图形用户界面 件中,图形文件可包含几 创建 二维图形任务 何的、正文的和其它各种 显示 图形任务 设计信息。 管理 图形文件任务 End 图形软件包
5.2 设计原理
五. 模块独立——1.耦合性
例:试指出下述用C语言编写的函数声明 所代表的模块的 耦合的类型。 无耦合 void fun0( ); 数据耦合 void fun1(int); void fun2(int*); 标记耦合 公共耦合 内容耦合: fun6可以访 问fun5的内 部数据

逐步求精的思想: 对一个事物的认识是一个从高层次抽象向低层 次抽象逐步转化和过渡的过程。

Miller法则:
一个人在任何时候都只能把注意力集中在 (7+2)个知识块上。
5.2 设计原理
三. 逐 步 求 精
求精实际上是细化过程 求精要求设计者细化原始陈述,随着每个后续求 精(即细化)步骤的完成而提供越来越多的细节。 抽象与求精是一对互补的概念 抽象使得设计者能够说明过程和数据,同时却忽 略低层细节。事实上,可以把抽象看作是一种通 过忽略多余的细节同时强调有关的细节,而实现 逐步求精的方法。求精则帮助设计者在设计过程 中逐步揭示出低层细节。这两个概念都有助于设 计者在设计演化过程中创造出完整的设计模型。

软件工程 第四章 概要设计

软件工程 第四章 概要设计
4.控制耦合 模块之间传递的不是数据信息,而是控制信息如标志、开关量,一个模块控制了另一模块 的功能。
第4章
4.4 模块的独立性
15
4.4.1 耦合性(Coupling)
5.外部耦合 一组模块都访问同一全局简单变量,而且不通过参数表传递该全局变量的信息,则称之为 外部耦合。 6.公共耦合
若一组模块都访问同一全局数据结构,则称之为公共耦合。公共数据环境可以是全局数据
4
4.2.1 概要设计的任务
概要设计的基本任务是: (1)设计软件系统结构; (2)数据结构及数据库设计; (3)编写概要设计文档;
(4)评审概要设计文档。
第4章
4.2 概要设计的任务与步骤
5
4.2.2 概要设计的步骤
概要设计的一般步骤如下: 1.选定体系结构 2.确定设计方案 3.设计软件结构
4.数据结构及数据库设计
(2)一个模块不通过正常入口而直接转入到另一个模块的内部;
(3)两个模块有一部分代码重叠(该部分代码具有一定的独立功能); (4)一个模块有多个入口。
第4章
4.4 模块的独立性
17
4.4.2 内聚性(Cohesion)
一个模块内各个元素彼此结合的紧密程度用内聚(或称聚合)来度量。一个理想的模块只
完成一个功能,模块设计的目标之一是尽可能高内聚。
第4章
4.4 模块的独立性
21
4.4.2 内聚性(Cohesion)
5.通信内聚
指模块内所有处理功能都通过公用数据而发生关系。即模块内各个组成部分都使用相同的 输入数据或产生相同的输出结果。
第4章
4.4 模块的独立性
22
4.4.2 内聚性(Cohesion)

软件设计基础

软件设计基础

将分析模型转换为软件设计模型
通过数据、功能和行为模型展示的 软件需求被传送给设计阶段,选择其 中的设计方法,设计阶段产生出:
数据设计:将分析时创建的信息域模型变换成实现软件所需 的数据结构。 体系结构设计:定义程序的主要结构元素之间的关系。
接口(界面)设计: 描述了软件内部 、软件和协作系 统之间的以及软 件同人之间如何 通信。
松散耦合-有 少量依赖关系 无耦合-没有依赖关系
北京理工大学计算机系
紧密耦合-有 很多依赖关系
模块间耦合的类型:

非直接耦合 强
耦 (低耦合) 数据耦合


标志耦合

性 (中耦合) 控制耦合

外部耦合
(较强耦合)
立 性
公共耦合(共用)
高 (强耦合) 内容耦合

北京理工大学计算机系
(1) 非直接耦合 两个模块没有直接关系(模快1和模快2),模块独立性最强。
输出结果
职工工 资记录
产生工 资报表
计算平 均工资
职工工 资报表
产生职工工资 报表并计算平 均工资模块
平均 工资
北京理工大学计算机系
通信内聚模块二例
发票
开领 书单
登记 售书
领书单
售书 登记表
删除 修改
文件
北京理工大学计算机系
(6) 信息内聚模块完成多个功能,各功能都在同一数 据结构上操作,每一功能有唯一入口。
计算平均或最高分
北京理工大学计算机系
(5) 外部耦合
一组模块均与同一外部环境关联(例如,I/O模块与特定的设 备、格式和通信协议相关联),它们之间便存在外部耦合. 外部偶合必不可少,但这种模块数目应尽量少.

软件工程导论第6章(第4版)

软件工程导论第6章(第4版)

二. 人机界面设计
人机界面设计是接口设计的一个重要的组成部 分。对于交互式系统来说,人机界面设计和数据设 计、体系结构设计及过程设计一样重要。
1.指导规则
T.Mandel在《用户界面设计要素》中,提出了3 条指导规则: 让用户驾驭软件,不是软件驾驭用户 减少用户的记忆 保持界面的一致性
2. 应该考虑的设计问题
4. 人机界面设计指南
(3) 数据输入指南 尽量减少用户的输入动作。 保持信息显示和数据输入之间的一致性。 允许用户自定义输入。 交互应该是灵活的,可调整成用户喜欢的输入方式。 使在当前动作语境中不适用的命令不起作用。 让用户控制交互流。 对所有输入动作都提供帮助。 消除冗余的输入。
三. 过程设计
1.过程设计的目的与任务 目的 确定模块采用的算法和块内数据结构,用某种 选定的表达工具给出清晰的描述。 任务:编写软件的“过程设计说明书” 为每个模块确定采用的算法 (模块的详细过程性 描述) 确定每一模块使用的数据结构 确定模块接口的细节 (包括对系统外部的接口和 用户界面,对系统内部其他模块的接口,以及关 于模块输入数据、输出数据及局部数据的全部细 节)
三. 过程设计
2.过程设计的原则与方法
清晰第一的设计风格 结构化的控制结构 结构程序设计的经典定义为: “如果一个程序的代码块仅仅通过顺序、选择和循环这3 种基本控制结构进行连接,并且每个代码块只有一个入口和 一个出口,则称这个程序是结构化的。” 结构程序设计技术是一种实现在逻辑上正确描述每个模 块的功能,并且使设计出的处理过程尽可能简明易懂的关键 技术,是过程设计的逻辑基础。 逐步细化的实现方法 例:在一组数中找出其中的最大数
(4) 命令交互 命令行现在仍然是许多高级用户偏爱的交互方式。在 多数情况下,用户既可以从菜单中选择软件功能,也可以 通过键盘命令序列调用软件功能。 在提供命令交互方式时,必须考虑下列设计问题: 是否每个菜单选项都有对应的命令? 采用何种命令形式?有3种选择:控制序列(例如Ctrl+P), 功能键和键入命令。 学习和记忆命令的难度有多大?忘记了命令怎么办? 用户是否可以定制或缩写命令? 在理想的情况下,所有应用软件都有一致的命令使用 方法。

《软件工程》教案本科

《软件工程》教案本科一、教学目标1. 让学生理解软件工程的基本概念、目标、原则和方法。

2. 使学生掌握软件需求分析、软件设计、编码、测试和维护等基本过程。

3. 培养学生运用软件工程方法解决实际问题的能力。

二、教学内容1. 软件工程概述:软件工程的定义、目标、原则和方法。

2. 软件需求分析:需求收集、需求分析、需求规格说明书编写。

3. 软件设计:软件设计原则、软件架构设计、模块化设计、详细设计。

4. 编码:编程规范、编程语言选择、编码实践。

5. 软件测试:测试原则、测试方法、测试用例设计、测试过程管理。

三、教学方法1. 讲授法:讲解软件工程的基本概念、原理和方法。

2. 案例分析法:分析实际软件开发过程中的案例,让学生了解软件工程的运用。

3. 小组讨论法:分组讨论问题,培养学生的团队协作能力。

4. 实践操作法:上机实践,让学生动手编写代码和进行软件测试。

四、教学资源1. 教材:《软件工程》。

2. 课件:PowerPoint或其他演示软件。

3. 案例材料:软件开发过程中的实际案例。

4. 上机实验环境:计算机、编程语言开发工具、测试工具。

五、教学评价1. 平时成绩:课堂表现、小组讨论参与度、作业完成情况。

2. 考试成绩:期末考试、上机实验成绩。

3. 实践能力:软件开发项目实践、案例分析报告。

六、教学安排1. 课时:总共64课时,包括课堂讲授、案例分析、小组讨论、上机实践等。

2. 授课方式:课堂讲授与实践相结合,每周4课时。

3. 教学进度安排:第1-4周:软件工程概述、软件需求分析第5-8周:软件设计、编码第9-12周:软件测试、软件维护第13-16周:软件项目管理、案例分析与讨论七、教学实践1. 上机实验:安排8次上机实验,每次2课时,共计16课时。

2. 实验内容:涵盖需求分析、设计、编码、测试等环节。

3. 实验要求:学生独立完成实验任务,提交实验报告。

八、课程作业1. 作业内容:主要包括课后习题、案例分析报告、小组项目等。

软件工程导论第四章 概要设计


模式4:共享数据模式
共享数据系统以一个或多个数据库 / 数据仓库为中心进行 组织,其它部件可以从中读写存储的数据。共享数据系统还 提供并发访问、容错处理、访问权限控制等功能。 典型的共享数据系统包括: a. 数据库 b. 知识库 c. 源代码控制程序
模式5:信息系统模式
现代信息系统平台模式,主要考虑B/S模式。 B/S模式的三层:表示层(presentation),业务 层(business),和数据存储层(data access) 。 B/S模式的优点: a. 架构简化了客户端。它无需象C/S模式那样在 不同的客户机上安装不同的客户应用程序,而只需安 装通用的浏览器软件。 b. 简化了系统的开发和维护。 c. 使用户的操作变得更简单。 d. 特别适用于网上信息发布 。
第四章 概要设计
•4.1软件体系结构 •4.2概要设计任务与步骤 •4.3软件设计的基本概念 •4.4面向数据流的设计方法 •4.5面向数据结构的分析设计方法 •4.6概要设计文档评审
概要设计
一是要覆盖《需求规格说明书》的全部内容, 二是要作为指导详细设计的依据。
概要设计注重于宏观上和框架上的设计,它是软 件系统的总体结构设计、全局数据库(包括数据结 构)设计、外部接口设计、功能部件分配设计、部 件之间的接口设计。 概要设计又称为架构设计。 • 用于描述系统最顶的结构和组织形式,标识出软 件的各个组成部分。
2.子系统和模块的区别 (1)一个子系统独立一个构成系统,不依赖 于其他子系统提供的服务。 (2)一个模块通常是一个能提供一个或多个 服务的系统组件。 3.体系结构设计的结果 体系结构设计过程的结果是一个体系结构 的设计文档。
4.1软件体系结构 4.1.1概述
4.体系结构模型 (1)静态结构模型 将子系统或组件作为一个个独立的单元来开发 (2)动态过程模型 给出系统在运行时的过程组成。它与静态模型不 同。 (3)接口模型 定义每个子系统从他们的公共接口能得到的服务。 (4)关系模型 关系模型给出子系统间的数据流的关系。

第04章-软件设计-01-基础


设计的方法:
从DFD出发 设想把DFD中的处理分解成各种不 出发,设想把 中的处理分解成各种不 出发 设想把 同的实现方案; 同的实现方案 抛弃技术上行不通的方案. 抛弃技术上行不通的方案
2. 选择合理的方案 任务:
从设想的可供选择的方案中选择若干个合理的方案; 从设想的可供选择的方案中选择若干个合理的方案
成本 最小成本区 M 软件总成本 接口成本 模块成本 模块 数目
模块化与软件成本的关系
并非模块分得越小越好,因为模块之间接口的复杂度和工作量增加。 并非模块分得越小越好,因为模块之间接口的复杂度和工作量增加。 显然,每个软件系统都有一个最佳模块数M 注意选择分解的最佳模块数。 显然,每个软件系统都有一个最佳模块数M。注意选择分解的最佳模块数。 右上图描述了模块化与软件成本的关系。 右上图描述了模块化与软件成本的关系。
逐步求精是人类解决复杂问题时采用的基本方 法,也是许多软件工程技术的基础. 抽象与逐步求精是一对互补的概念.模块分解中 的上层是下层的抽象,下层是上层的求精过程
重构是一种重新设计的技术,可以优化构 件的设计(代码)而无须改变系统的功能 或行为。
模块设计的关键:
每个模块完成一个相对独立的子功能,并且与其 它模块间的接口简单,即功能专一,模块之间无 过多的相互作用的模块。
分解的层次
Top level
First level of decomposition Second level of decomposition
模块分解(Modular decomposition) 面向数据分解(Data-oriented decomposition)
将功能分配给模块; 高层描述系统功能,低层描述模块组织及相互联系. 基于外部数据结构; 高层描述总体数据结构,低层描述数据元素细节及其联系.

软件设计阶段的基本任务

软件设计阶段的基本任务
1.确定用户需求:了解用户的需求和期望,明确软件的目标和用途。

2.系统设计:根据用户需求设计软件的功能模块、系统架构和技术方案。

3.数据库设计:建立数据模型,包括数据表以及数据之间的关联关系。

4.用户界面设计:设计符合用户习惯和使用习惯的界面,减少用户的
操作难度。

5.编写代码:根据设计文档编写代码,完成软件的具体实现。

6.测试:对软件进行系统测试、单元测试和集成测试等多种测试手段,保证软件质量和稳定性。

7.上线发布:将已经测试完毕的软件上线发布,让用户开始使用。

8.支持和维护:及时修复软件问题和漏洞,并根据用户的反馈意见来
完善软件。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
模块(Module) 是一个拥有明确定义的输入、输出和特征的程序 实体。如函数、过程、子程序、宏等 若模块的所有输入都是实现功能必不可少的,所 有输出都有动作产生,即成为定义明确的模块。
软件构件(Software Component) 可重复使用的软件组件。 现有的可复用构件,大多是在对象的基础上创建。

时过通 间程信 性性性 内内内 聚聚聚
顺功 序能 性性 内内 聚聚

12

4 5 67
低内聚
中内聚
高内聚
16
低内聚
偶然性模块 块内各组成部分在功能上是互不相关的。 模块内部成分的组合纯属偶然。
时间性模块 模块所包含的成分,是由相同的执行时间将他们连 接到一起。 要求在同一时间内执行。
细化 从高到低的逐步分解过程。
9
4.2.3 信息隐藏
定义 把系统分解为模块时应遵守的指导思想。
基本思想 模块内部的数据和过程,不需要这些信息的模块不可 访问; 每一个模块只完成一个相对独立的特定功能; 模块之间仅仅交换那些完成系统功能必须交换的信息。
目的 提高模块的独立性,当修改或维护模块时减少把一个 模块的错误扩散到其他模块中去的机会。
4.3.3 自定向下和自底向上设计
由底向上 选择关键部分先设计 扩展到整个系统
自顶向下 顶层开始 逐步分解
28
4.4 其他设计问题的处理
协同设计 谁最合适设计系统的某一方面? 如何使组内成员相互了解别人的设计? 如何协调设计组件使整个系统统一?
用户界面设计 让用户驾驭软件,不是软件驾驭用户 减少用户的记忆 保持界面的一致性
并发系统设计 怎样确保同时执行的组件间对共享数据的一致性 并发是一种允许两个活动同时发生而不互相干扰 的方法。
29
并发处理(顺序执行)示例
1. 组件1查询X是否为空。 2. 组件1被告知X不为空。 3. 组件2查询X是否为空。 4. 组件2被告知X不为空。 5. 组件1出栈,删除最后一个元素。 6. 组件2想出栈,但X已为空,系统进入非法状态。
衡量标准 模块本身的内聚 模块内部各个成分之间的联系 又称块内联系或模块强度 模块间的耦合 一个模块与其他模块之间的联系 又称块间联系
模块独立性越高,块内联系越强,块间联系越弱。
15
1. 内聚 cohesion
从功能角度对模块内部聚合能力的度量。










次尝试) 9. 组件2出栈
31
如果两个操作可能影响同一个共享对 象的状态,他们就应该执行互斥机制。
32
4.5 设计文档及其复审
建立设计文档的目的 把设计师的思想告诉其他有关人员。 “Design for the people”
软件设计说明书 设计复审
33
4.5.1 软件设计说明书
30
修改后
1. 组件1询问栈X是否为空。 2. 组件1被告知栈X不为空。 3. 组件2询问栈X是否为空。 4. 组件2被告知栈X不为空。 5. 组件1出栈,删去最后一个元素,并锁住栈X。 6. 组件2想出栈,但被告知X已上锁。 7. 另一个组件加了一个元素到栈X中。 8. 组件2被告知X已开锁(由于外部进程或者因为组2再
所以:E(p1+p2)>E(p1)+E(p2)
13
将模块数控制在最小成本区内可 以使总的开发工作量保持最小。
总成本
软 件
最小成本区


M


接口成本


模块成本
模块数
14
4.3.2 模块独立性
概括了把软件划分为模块时要遵守的准则,也是判断 模块构造是不是合理的标准。坚持模块的独立性,是 获得良好设计的关键。
非直接 耦合
模块1
模块2
调用时通过 数据耦合 参数表交换 简单变量
模块3
模块4
特征耦合(参数表 传递数据结构)
调用时通过 参数表交换 数据结构
24
中耦合
控制耦合 在模块间传递的信息是用作控制信号的开关值或标志量。
控制模块必须知道被控制模块的内部逻辑,从而增强了 模块间的相互依赖。
控制
读入分数
36
小结
软件工程方法的一条基本原则“设计先于编码” 模块化设计
核心“模块独立性” 实现方法:加强内聚,减小耦合 自顶向下 自底向上 软件设计涉及面广泛 设计任务完成的标志 设计文档
37
束和一些特殊注解等内容。
34
4.5.2 设计复审
对设计文档的复审
复审的目的:及早发现设计中的缺陷 复审可以有效控制差错的传播 复审的指导原则
概要设计复审与过程设计复审要分开进行; 概要设计复审必须有用户代表参加; 参加复审的设计人员要端正态度; 复审中提出的问题要详细记录,不要谋求当场解决; 复审结束前,要做出结论。
8
4.2.2 抽象与细化
抽象 提取客观世界中一群事物的某些本质共性,而暂时 忽略他们的非本质的细节,是一个从特殊到一般的 过程。 分层次考虑和处理问题(数据和过程) 过程抽象:把完成一个特定功能的动作序列抽象为 一个过程名和参数表,以后通过指定过程名和实际 参数调用此过程。 数据抽象:把一个数据对象的定义抽象为一个数据 类型名,用此类型名可定义多个具有相同性质的数 据对象。
10
4.2.4 软件复用
Design with reuse, design for reuse
11
4.3 模块化设计
定义 把大型软件按照规定的原则划分成一个个较小的、 相对独立但又相互关联的模块。
指导思想 分解 模块独立性
内容 分解 模块独立性 自顶向下与由底向上
35
复审的内容
概要设计复审 系统的总体结构,模块划分,内外接口
详细设计复审 各个模块的具体设计
复审的方式
正式复审(Formal Review) 概要设计复审常用的方式
非正式复审(Informal Review) 详细复审常用的方式 “走查” Walk-Through
重点掌握 软件设计的任务、基本概念,模块化设计,设计文档。
难点 模块与构件,抽象与细化,信息隐藏等
2
4.1 软件设计的任务
软件设计的任务
把分析阶段产生的软件需求说明转换为用适当手段表 示的软件设计文档。----解决“如何做” 的问题
内容
数据设计:信息模型
软件数据结构;
信号
计算平均分
平均/最高 ?
计算最高分
输出结果
25
较强耦合
外部耦合 允许一组模块访问同一个全局变量
公共耦合 允许一组模块访问铜一个全局性数据结构





公共耦合图示

26
强耦合
内容耦合 一个模块可以直接调用另一模块中的数据,或 者允许一个模块直接转移到另一个模块中去。
27
17
逻辑性模块 由若干个逻辑功能相似的成分组成。 执行时须从模块外引入判断量,增大块间耦合。
读入分数
计算平均分
平均/最高 ?
计算最高分
输出结果
18
中内聚
过程化模块 模块中包含的一组任务必须按照某一个特定的 次序执行。
建立方程组系数矩阵
高斯消去法
回代
19
通信性模块 模块内部的各成分使用同一种数据输入,或产生 同一个数据输出。 他们靠公用数据连接在一起。
功能性模块内聚强,与其他模块联系少,最优 其他的高内聚和中内聚模块也可以使用 低内聚模块尽量避免使用
22
2. 耦合 coupling
耦合是对软件内部块间联系的度量。


特控外
公内


征制部
共容


耦耦耦
耦耦


合合合
合合

12

4 5 67
弱耦合
中耦合 较强耦合 强耦合
23
弱耦合
模块之间没 有信息传递
4
软件设计工作流程
修改
需求 说明书
总体 设计
软件 结构
N 复审
修改
Y 可接受
详细 设计
模块 描述
N 复审
Y
设计 说明书
5
软件设计目标
高可靠性 高效率
软件 设计
高可维护性 高可理解性
6
4.2 软件设计基本概念
模块与构建 抽象与细化 信息隐藏 软件复用
7
4.2.1 模块与构件
发票
开领 书单
领书单
登记 售书
售书登记表
删除 修改
文件
20
高内聚
顺序性模块 模块中各组成部分是顺序执行的。 通常上一个处理框的输出就是下一个处理框的输入。
功能性模块 模块中的所有的成分结合在一起,用于完成一个单 一的功能。 块内联系最强的一类模块。
21
“一个模块,一个功能”
主要内容 范围:描述设计工作的整体范围; 数据设计:描述数据对象和形成的数据结构、外部文件 和数据库结构、内部数据结构等; 体系结构设计:说明从需求模型导出的软件体系结构; 接口设计:描述人机界面及人机界面的设计规则; 模块的过程设计:描述每个模块的处理说明、设计语言 描述、调用其它模块和内部设计结构等; 其他 包括测试的考虑,确保设计满足所有需求,设计约
体系结构设计:定义软件主要组成部件之间的关系;
相关文档
最新文档