软件工程基础(胡思康)第3章课件
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
的静态特征,也对数据的操作、系统控制和通信等活动提供
了具有动态特征的描述过程。 系统的静态特征体现了系统的组织结构,系统的动态特征
体现系统操作流程的拓扑结构,共同构成设计决策的基本指
导方针。
体系结构设计是软件设计的早期活动,它的作用
集中在两点:
提供软件设计师能够预期的体系结构描述。
数据结构、文件组织、文件结构体现了软件设
修改涉及的是模块内部,避免与外部的交互,这样
使得修改的影响局限于一个较小的范围之内。
例:C语言与C++语言编写的关于栈的定义
P73—P74
模块独立性是指软件系统中划分的模块完成一个
相对独立的功能,而与其它模块的关联尽量只发生
在接口上。模块独立性是由模块化、分解与抽象、
信息隐藏等要素共同构成。
详细设计是在概要设计的基础上,具体实现各部分的细节,
直至系统的所有内容都有足够详细的过程描述。
过程设计包括确定软件各模块的具体实现过程及局部数据 结构。在结构化设计中,模块独立性约束了数据结构与算法 相分离的情况,使得两者在设计时务必有局部性,减少外部 对两者的影响。在面向对象设计中,类的封装较好地体现了
允许客户端与服
务器端的软硬件
配置不同,体现
数据访问
了分布式模型的
灵活性。
目前应用比较多的C/S模式的分布式结构: “三层网络设计模式”,用两层分布式设计映射三层逻辑。
用户界面 逻辑应用
用户界面
客户端逻辑应用 网络
用户界面
数据访问
服务器端逻辑应用 数据访问
逻辑应用 数据访问
针对多层逻辑应用提出了多层分布式设计模型 第一层
息是否有效,是否得到正确相应,都困扰着分布式模型的发展
和应用。
层次模型——又称为分层模型,通常用于建立子
系统的接口模型。
层次模型将系统划分为若干层次,每层提供一组
服务,每层定义一个抽象机,每个层次提供单向服
务,如底层向顶层提供服务。
主机系统 应用层 表示层 会晤层 传输层 网络层 数据链路层 物理层
重用是指同一事物不做修改或稍作修改就能多次使用的机制。 在软件设计阶段,重用的内容是软件设计模式。通过重用设计 模式,不仅使得软件设计质量得到保证,而且把资源集中于设 计的新流程、新方法中,并在设计时更进一步考虑新流程、新 方法在将来的重用。
确定软件各部分间的关系,各模块间的相互调用或控制关系, 以便在需要修改模块时能掌握与修改模块有关的其他部分,并 正确追溯问题根源。
表述,抽象则忽略问题的细节,抓住问题的本质。
分为:“实体对象抽象”、“接口抽象”和
“设计模式抽象”三类。
实体对象抽象也称为数据抽象,它是对需求陈述中实体的
归纳。
归纳包括两种形式,一种是对陈述中实体的抽象。如“简 历自动获取和查询系统”中,有pdf、doc、txt等不同格式的 文件,这时抽。象出“简历文件”来统一简历文本的描述; 另一种形式是分析总结出陈述中的新实体。如当从简历文件
规则能给软件工程师有益的启示,帮助他们找到改
进软件设计、提高软件质量途径。
通过对软件整体结构模块进行划分后,进行分解
5
模块是程序语句的集合,它拥有独立的命名, 明确的输入、输出和范围。程序设计中的函数、 过程、类、库等都可作为模块。
对于整个软件系统来说,设计人员不是把它作为
一个问题来整体解决,而是把它的全部功能按照
一定的原则规划分成若干个模块,如果某个模块
仍难以理解或实现,则把它再进行划分,得到更
小、功能更简单的模块,如此往复,直至所有模
设计模式的抽象即是设计模型,它是对有相同数 据组织、行为、结构的系统的指导性框架。 设计模式为不同模型、不同业务逻辑提供统一的 软件组织结构提供了可能。
信息隐藏是把数据结构与实现过程放在一起,使
得相关内容彼此靠近,对外提供相对完整、独立的
功能,对隐藏信息的访问只能通过接口进行操作。
信息隐藏提高了软件的可修改性和重用性,因为
算法和数据结构的内部性。类的继承性提供了多个类(类家
族)共同实现过程设计的机制。
修改 需求规 格说明 概要 设计 体系结构 数据设计、界面设计 详细 设计 过程
设计
复 审
设计规格说明
模块化是在软件设计上实现分而治之思想的技术手段。 在结构化设计中,模块可以是函数、过程、甚至是代码 片段。在面向对象设计中,类是模块的主要形式。
应用层协议
表示层协议 会晤层协议 传输层协议 中继系统 中继系统 网络层 网络层 数据链路层 数据链路层
主机系统 应用层 表示层 会晤层 传输层 网络层 数据链路层 物理层
物理层 物
物理层 理 介 质
优点:支持增量式开发。 缺点:系统构成,性能保证较困难。
S
1
2 3 4
软件设计概述
软件体系结构设计 模块化设计 界面设计 软件设计评审
体系结构设计:确定各子系统模块间的数据传递、 调用关系。在结构化设计中,体现为模块划分,并 通过数据流图和数据字典进行转换。在面向对象设 计中,体现为主题划分,主要确定类及类间关系。
界面设计:包括与系统交互的人机界面设计,以
及模块间、系统与外部系统的接口关系。在结构化
设计中,根据数据流条目,定义模块接口、全局的
如果模块分解过程无限进行下去,不仅问题的复
杂度不会减少,反而还会增加(因为会增加接口定Leabharlann Baidu
义和它们之间调用关系的设计和实现的工作量)。
M区间是一个合适的模块分解范围,它同时兼顾
了对问题的分解和模块间设计与实现的工作量。
抽象是指对软件设计不同层次的理解,它与分
解是解决问题的两个方面。分解是对问题细节的
设计具有易修改性。发生修改的原因:用户需求发生变 更;设计存在缺陷;设计需要进行优化;设计利用重用 。软件设计灵活性主要通过系统描述问题的抽象来体现 。
界面视图的一致性保证了用户 体验了对系统的忠诚度
S
1
2 3 4
软件设计概述
软件体系结构设计 模块化设计 界面设计 软件设计评审
5
软件体系结构为系统设计提供了一套关于数据、行为、结 构的指导性框架,该框架提供了描述系统数据、数据间关系
块都可解,这个过程就是软件模块化设计。
分解
模块设计
P1
P2
P3
P4
将问题(P1+P2)分解为P1,P2
设函数C(x)定义问题x的复杂程度,函数E(x)
确定解决问题x需要的工作量。对问题P1和P2,
如: C(P1) > C(P2)
显然:
E(P1) > E(P2) "各个击破"
有规律:C(P1+P2) >= C(P1)+C(P2) E(P1+P2) >= E(P1)+E(P2)
中获取信息后,可以设计出“数据操作”对象来完成对简历
信息的有效检查,并迅如数据库文件中。
接口抽象的目的是通过统一的接口,设计不同的实现过程。 这样不仅易于理解和使用,也利于系统功能的扩展。
典型的接口抽象是开放式数据库连接(ODBC),它通过一
组定义的统一接口,实现了不同数据库文件对增加、删除、 修改、查询等的统一操作,简化了业务逻辑与数据库的接口, 目的是让软件设计人员能将更多的精力投入到实现系统的业 务逻辑上。
系统需求
系统设计
开发阶段信息流描述了软件设计从软件需求到软件编码, 起到承上启下的作用。
设计阶段 设计任务:将需求阶段获得的需求说明(模型)
转换为计算机中可实现的系统。
体系结构设计 设 计 内 容 界面设计 数据设计 过程设计 概要设计
详细设计
概要设计也称总体设计,主要任务是基于数据流 图和数据字典,确定系统整体软件结构,划分软件 体系结构的各子系统或模块,确定它们之间的关系。
S
软件设计基础
S
1
2 3 4
软件设计概述
软件体系结构设计 模块化设计 界面设计 软件设计评审
5
需求工程阶段,回答“软件必须做什么”这个问
题。
软件设计阶段,回答“软件怎么实现”的问题
软件设计的目标就是要构造一个高内聚、高可靠
性、高维护性和高效的软件模型,为提高软件质
量提供坚实的基础。
软件设计的依据是需求规格说明和数据规格说明。
独立性是良好设计的关键,是衡量软件质量的重
要指标之一。
模块独立性由内聚性和耦合性两个指标来评价。 它们分别描述模块内部和模块间的紧密程度。木块 内关联度越高,模块间的相关性越低,模块独立性 就越强
低 偶 然 内 聚 逻 辑 内 聚
内聚性 时 间 内 聚 过 程 内 聚 通 信 内 聚
高
顺 序 内 聚
数据结构。在面向对象设计中,定义关联类、接口
类、边界类等,既满足人机交互界面数据的统一,
也完成类间数据的传递。
数据设计:包括数据库、数据文件和全局数据结
构的定义。在结构化设计中,通过需求阶段的实体
关系图、数据字典建立数据模型。在面向对象设计
中,通过类的抽象与实例化,以及类的永久存储设
计,完成数据设计过程。
计的早期抉择。
数据仓库模型是一种集中式模型。数据仓库模型
是能独立提供数据服务的封闭式数据环境。它不单
独集成到某一应用系统中,而是为具体的应用系统
提供服务。这些服务既有通用的公共服务,也有专
门设计的领域服务。
优点: 数据统一存储和管理,确保了数据的实时性。
数据仓库对数据复杂性的统一封装,有利于数据共享。
的数据匹配。
缺点: 随着网络技术的发展,数据共享带来的访问控制的复杂性、
安全性、效率、备份、存储、恢复策略等一系列问题,影响
了仓库模型的有效利用。
集中式数据仓库模型在带来数据一致性访问优势 的同时,也造成网络环境下难以分布应用的缺陷。 分布式结构模型是充分利用、整合网络中计算机 各自的计算能力,从而提高整个网络系统运行的能 力和效率。
功 能 内 聚 高
低
模块独立性
低
内聚性 数 据 耦 合 特 征 耦 合 控 制 耦 合 公 共 耦 合
高 内 容 耦 合
非 直 接 耦 合 低
模块独立性
高
模块化设计的指导思想是分解、抽象、求精、信
息隐藏和模块独立性。
设计人员根据长期的实践经验,提出了一些软件
模块化设计的启发式规则。在多数场合下,启发式
C/S结构是一种分布式模型,采用发请求、得结果的
模式:
客户机:向服务器发出请求(数据请求、网页请求、
文件传输请求等等),
服务器 :响应请求,进行相应的操作,将结果回传
给客户机,客户机再将格式化后的结果呈现给用户。
C/S结构的应用都由三个相对独立的逻辑部分组成:
用户界面视图 (客户端) 系统逻辑功能 (服务器端)
网页请求
网页请求
网页请求
客户端 网络
数据操 纵请求 第三层
逻辑服 务请求 第二层
服务器端
第三层
共享:实现了数据共享,云计算的提出还能进一 步实现计算共享。 异构型:客户端/服务器允许软硬件配置不同。 开放性:只要符合互联网协议,任何计算机、局 域网、智能设备和物品等都可连入互联网。
易修改性:由于用户界面、系统逻辑和数据访问
它根据描述的信息域需求,包括功能需求、性能需
求、领域需求、数据需求等的定义,进行数据设计、
体系结构设计、界面设计和过程设计,并通过这四
个层面的设计,将现实世界的具体问题(需求)转
换为信息设计的逻辑问题(设计方案)。
过程设计 数据 实体关 流图 系模型 数据字典
界面设计
体系结构设计
状态转换图 控制规格说明 数据设计
缺点: 为了对数据仓库数据进行操作,不同应用系统的数据视图必 须统一,否则难易达到数据共享的目的,但这不可避免的会
降低各应用系统的效率。
如果应用系统的数据结构发生改变,就需要单独设计数据适 配器,以实现新的结构与数据仓库在数据上的匹配。这不仅
增加应用系统设计的复杂度,而且有时甚至是难以完成这样
分布的不同,各部分具有较强独立性,易于系统的
修改和维护。
透明性:分布式结构中仅需要知道服务器的服务
位置,而对后端的逻辑实现、数据存储、数据访问
等不必清楚其架构和访问方式。
复杂性:面对网络通信、服务器端分层等问题的管理,控制
结构复杂。
安全性:身份验证困难。客户端的访问是问答模式,对客户 端的响应由服务器提供服务,因而难以验证客户端真是身份。 给病毒、流氓软件等不良软件带来了可乘之机。 运行状态难以确定:特别是网络通信出现故障时,提交的信
采用黑板模型,与某类数据有关的应用系统能及时获取数据。 采用数据订阅推送模型,应用系统在有数据更新时,能动获
得数据,而不用采取询问方式,这就提高了数据管理效率。
各应用系统间仅通过数据仓库完成数据交换,在功能上没有 关联,增加、删除应用系统及其部分功能,将不会影响其它 应用系统的正确运行。