清华大学殷仁昆教授讲授《软件工程》讲义-03

上传人:ting****789 文档编号:311839504 上传时间:2022-06-16 格式:PPTX 页数:95 大小:589.11KB
返回 下载 相关 举报
清华大学殷仁昆教授讲授《软件工程》讲义-03_第1页
第1页 / 共95页
清华大学殷仁昆教授讲授《软件工程》讲义-03_第2页
第2页 / 共95页
清华大学殷仁昆教授讲授《软件工程》讲义-03_第3页
第3页 / 共95页
清华大学殷仁昆教授讲授《软件工程》讲义-03_第4页
第4页 / 共95页
清华大学殷仁昆教授讲授《软件工程》讲义-03_第5页
第5页 / 共95页
亲,该文档总共95页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《清华大学殷仁昆教授讲授《软件工程》讲义-03》由会员分享,可在线阅读,更多相关《清华大学殷仁昆教授讲授《软件工程》讲义-03(95页珍藏版)》请在金锄头文库上搜索。

1、软件工程软件工程第三章第三章 软件设计软件设计3.1 3.1 软件设计的概念软件设计的概念3.2 3.2 功能独立性功能独立性3.3 3.3 结构化设计方法结构化设计方法3.4 3.4 过程设计过程设计清华大学计算机系清华大学计算机系 殷人昆殷人昆6/15/20221 1软件工程软件工程3.1 3.1 软件设计的概念软件设计的概念n软软件件设设计计的的根根本本目目标标是是用用比比较较抽抽象象概概括括的的方方式式确确定定目目标标系系统统如如何何完完成成预预定定的的任任务务,即即软软件件设设计是确定系统的物理模型。计是确定系统的物理模型。n从从技技术术观观点点来来看看,软软件件设设计计包包括括数数

2、据据设设计计、体体系结构设计、接口设计、过程设计。系结构设计、接口设计、过程设计。n数数据据设设计计将将实实体体关关系系图图中中描描述述的的对对象象和和关关系系,以以及及数数据据字字典典中中描描述述的的详详细细数数据据内内容容转转化化为为数数据结构的定义。据结构的定义。6/15/20222 2软件工程软件工程体系结构设计定义软件系统各主要成份之间的体系结构设计定义软件系统各主要成份之间的关系。关系。接口设计根据数据流图定义软件内部各成份之接口设计根据数据流图定义软件内部各成份之间、软件与其它协同系统之间及软件与用户之间、软件与其它协同系统之间及软件与用户之间的交互机制。间的交互机制。过程设计那

3、么是把结构成份转换成软件的过程过程设计那么是把结构成份转换成软件的过程性描述。性描述。6/15/20223 3软件工程软件工程将分析模型转换为设计将分析模型转换为设计数据字典数据字典数数据据流流图图实实体体关关系系图图状态转换图状态转换图加加工工规规格格说说明明控控制制规规 格格说说明明数数据据对对象象描描述述过程设计过程设计接口设计接口设计体系结构设计体系结构设计数据设计数据设计6/15/20224 4软件工程软件工程n从工程管理角度来看,软件设计分两步完成:从工程管理角度来看,软件设计分两步完成:概要设计和详细设计。概要设计和详细设计。n概要设计概要设计将软件需求将软件需求转化为软件体系结

4、构转化为软件体系结构确定系统级接口确定系统级接口全局数据结构或数据库模式。全局数据结构或数据库模式。n详细设计详细设计确立每个模块的实现算法和局部数据结构确立每个模块的实现算法和局部数据结构用适当方法表示算法和数据结构的细节用适当方法表示算法和数据结构的细节6/15/20225 5软件工程软件工程n软件设计是后续开发步骤及软件维护工作的根软件设计是后续开发步骤及软件维护工作的根底。如果没有设计,只能建立一个不稳定的系底。如果没有设计,只能建立一个不稳定的系统结构。统结构。设计设计编码编码测试测试维护维护测试测试编码编码维护维护有软件设计有软件设计 没有软件设计没有软件设计6/15/20226

5、6软件工程软件工程n软件设计既是过程又是模型。软件设计既是过程又是模型。n设计过程是一系列的迭代步骤,使设计人员能够设计过程是一系列的迭代步骤,使设计人员能够描述目标系统的各个侧面。描述目标系统的各个侧面。n设计模型首先描述目标系统的整体架构,然后逐设计模型首先描述目标系统的整体架构,然后逐步细化架构得到构造每个细节的指导原那么,从步细化架构得到构造每个细节的指导原那么,从而得到系统的一系列不同的视图。而得到系统的一系列不同的视图。n良好的设计原那么可为设计过程导航。良好的设计原那么可为设计过程导航。n衡量设计过程的技术原那么:衡量设计过程的技术原那么:n设计必须实现分析模型中描述的所有显式需

6、求,设计必须实现分析模型中描述的所有显式需求,必须满足用户希望的所有隐式需求。必须满足用户希望的所有隐式需求。衡量软件设计的原那么衡量软件设计的原那么6/15/20227 7软件工程软件工程对于开发者和未来的维护者而言,设计必须对于开发者和未来的维护者而言,设计必须是可读的、可理解的,使得将来易于编程、是可读的、可理解的,使得将来易于编程、易于测试、易于维护。易于测试、易于维护。设计应该给出软件的全貌,包括从实现角度设计应该给出软件的全貌,包括从实现角度可看到的数据、功能、行为。可看到的数据、功能、行为。衡量设计模型的技术原那么衡量设计模型的技术原那么设计模型应该是一个分层结构。该结构:设计模

7、型应该是一个分层结构。该结构:使用可识别的设计模式搭建系统结构。使用可识别的设计模式搭建系统结构。用显示良好设计特征的构件构成。用显示良好设计特征的构件构成。可以用演化的方式实现。可以用演化的方式实现。设计应当模块化。设计应当模块化。6/15/20228 8软件工程软件工程设计应当包含数据、体系结构、接口和构件设计应当包含数据、体系结构、接口和构件模块的清晰的视图。模块的清晰的视图。设计应当根据将要实现的对象和数据模式导出设计应当根据将要实现的对象和数据模式导出适宜的数据结构。适宜的数据结构。设计应当建立具有独立功能特征的构件。设计应当建立具有独立功能特征的构件。设计应当建立能够降低模块与外部

8、环境之间复设计应当建立能够降低模块与外部环境之间复杂连接的接口。杂连接的接口。设计模型应当通过使用软件需求信息所驱动的设计模型应当通过使用软件需求信息所驱动的可重复的方法导出。可重复的方法导出。Davis的软件设计原那么的软件设计原那么设计应具有可跟踪性,能回溯到软件需求设计应具有可跟踪性,能回溯到软件需求;6/15/20229 9软件工程软件工程设计不必每次都从头做起,可以复用已有的设计不必每次都从头做起,可以复用已有的设计模式和数据模式。设计模式和数据模式。设计应当缩小软件与现实世界中问题的设计应当缩小软件与现实世界中问题的“智智力距离力距离,尽量逼近问题领域的结构,尽量逼近问题领域的结构

9、;设计应具有一致性和集成性。整个系统应具设计应具有一致性和集成性。整个系统应具有统一的风格和格式,具有良好的接口。有统一的风格和格式,具有良好的接口。设计结果应能适应未来可能的变更设计结果应能适应未来可能的变更;设计不是编码,编码也不是设计。设计模型设计不是编码,编码也不是设计。设计模型的抽象级别比源代码高。在编码级别上唯一的抽象级别比源代码高。在编码级别上唯一的设计决策是补充一些实现细节。的设计决策是补充一些实现细节。6/15/20221010软件工程软件工程设计应具有容错性和异常处理能力。对于异设计应具有容错性和异常处理能力。对于异常数据、事件、操作条件等能够平滑处理。常数据、事件、操作条

10、件等能够平滑处理。在建立设计方案时就应能评估设计质量,而在建立设计方案时就应能评估设计质量,而不是在系统编码之后。不是在系统编码之后。应坚持设计评审,减少概念性语义性的应坚持设计评审,减少概念性语义性的错误。错误。1)设计应遵循抽象化的原那么,包含数据设计应遵循抽象化的原那么,包含数据抽象和过程抽象。抽象和过程抽象。软件设计的主要手段软件设计的主要手段6/15/202211 11软件工程软件工程过程抽象过程抽象 是指在软件设计中将处理过程的是指在软件设计中将处理过程的实现细节隐藏在数据抽象中,可以直接通过实现细节隐藏在数据抽象中,可以直接通过模块接口使用这些处理操作。模块接口使用这些处理操作。

11、数据抽象数据抽象 是指采用抽象数据类型表示数据,是指采用抽象数据类型表示数据,实现数据封装,使得使用者可通过接口使用实现数据封装,使得使用者可通过接口使用数据而不必关心数据结构的实现。数据而不必关心数据结构的实现。设计应遵循自顶向下、逐步细化的原那么,设计应遵循自顶向下、逐步细化的原那么,建立一个层次的结构。建立一个层次的结构。将软件体系结构自顶向下,对过程细节和数将软件体系结构自顶向下,对过程细节和数据细节从抽象到具体,逐层细化,直到用编据细节从抽象到具体,逐层细化,直到用编程语言的语句能够实现为止。程语言的语句能够实现为止。6/15/20221212软件工程软件工程4)设计应当遵循模块化的

12、原那么。设计应当遵循模块化的原那么。5)每个模块可独立地开发、测试,最后组装成完每个模块可独立地开发、测试,最后组装成完整的程序。整的程序。6)其出发点是本着将一种复杂问题其出发点是本着将一种复杂问题“分而治之分而治之的原那么。其目的是使程序的结构清晰,容易的原那么。其目的是使程序的结构清晰,容易阅读、理解、测试、修改。阅读、理解、测试、修改。7)Meyer的良好模块设计方法的标准的良好模块设计方法的标准8)模块可分解性模块可分解性 可将系统按问题子问题分解可将系统按问题子问题分解的原那么分解成系统的模块层次结构的原那么分解成系统的模块层次结构;9)模块可组装性模块可组装性 可利用已有的设计构

13、件组装成可利用已有的设计构件组装成新系统,不必一切从头开始。新系统,不必一切从头开始。6/15/20221313软件工程软件工程c)模模块块可可理理解解性性 一一个个模模块块可可不不参参考考其其他他模模块而被理解;块而被理解;d)模模块块连连续续性性 对对软软件件需需求求的的一一些些微微小小变变更更只只导导致致对对某某个个模模块块的的修修改改而而整整个个系系统统不不用用大动大动;e)模模块块保保护护 将将模模块块内内出出现现异异常常情情况况的的影影响响范围限制在模块内部;范围限制在模块内部;f)设计应遵循信息隐蔽的原那么。设计应遵循信息隐蔽的原那么。g)Patnas主主张张在在开开发发时时,将

14、将每每个个程程序序的的成成分分隐隐藏藏在在模模块块内内,定定义义每每一一个个模模块块时时尽尽可可能能少地显露其内部的处理。少地显露其内部的处理。6/15/20221414软件工程软件工程每每个个模模块块的的实实现现细细节节对对于于其其它它模模块块是是隐隐蔽蔽的的,将将来来修修改改软软件件时时偶偶然然引引入入错错误误所所造造成成的的影影响响就就可可以以局局限限在在一一个个或或几几个个模模块块内内部部,不不致致涉涉及到软件的其它局部。及到软件的其它局部。在在可可预预见见将将来来可可能能修修改改的的场场合合,信信息息隐隐蔽蔽可可以以提提高高软软件件的的可可修修改改性性、可可测测试试性性和和可可移移植

15、植性。性。6/15/20221515软件工程软件工程3.2 3.2 功能独立性功能独立性n功能独立性是抽象、模块化和信息隐蔽的直接功能独立性是抽象、模块化和信息隐蔽的直接产物。如果一个模块能够独立于其他模块被编产物。如果一个模块能够独立于其他模块被编程、测试和修改,那么该模块具有功能独立性。程、测试和修改,那么该模块具有功能独立性。n1978年年Myers提出用两个准那么来度量功能独提出用两个准那么来度量功能独立性,即模块间的耦合和模块的内聚。立性,即模块间的耦合和模块的内聚。n内聚性:内聚是一个模块内部各个元素彼此结内聚性:内聚是一个模块内部各个元素彼此结合的紧密程度的度量。合的紧密程度的度

16、量。n耦合性耦合性: 耦合是模块间互相连接的紧密程度的耦合是模块间互相连接的紧密程度的度量,它取决于各个模块之间接口的复杂度、度量,它取决于各个模块之间接口的复杂度、调用方式以及哪些信息通过接口。调用方式以及哪些信息通过接口。6/15/20221616软件工程软件工程非直接非直接 数据数据 标记标记 控制控制 外部外部 公共公共 内容内容 耦合耦合 耦合耦合 耦合耦合 耦合耦合 耦合耦合 耦合耦合 耦合耦合耦合性耦合性功能独立性功能独立性模块间的耦合模块间的耦合n模块之间耦合性越强,功能独立性越差,这样形模块之间耦合性越强,功能独立性越差,这样形成的模块结构界面不好。成的模块结构界面不好。6/15/20221717软件工程软件工程非直接耦合非直接耦合(Nondirect Coupling)(Nondirect Coupling)n两个模块之间没有直接关系,它们之间的联系完两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的。全是通过主模块的控制和调用来实现的。n非直接耦合的模块独立性最强。非直接耦合的模块独立性最强。主模块主模块ABCEFGXYZ6/15/202

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号