《软件工程原理》讲义-03495.pptx
《《软件工程原理》讲义-03495.pptx》由会员分享,可在线阅读,更多相关《《软件工程原理》讲义-03495.pptx(95页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、软件工程原理软件工程原理第三章第三章 软件设计软件设计3.1 3.1 软件设计的概念软件设计的概念3.2 3.2 功能独立性功能独立性3.3 3.3 结构化设计方法结构化设计方法3.4 3.4 过程设计过程设计3/27/20231 1软件工程软件工程3.1 3.1 软件设计的概念软件设计的概念n软软件件设设计计的的基基本本目目标标是是用用比比较较抽抽象象概概括括的的方方式式确确定定目目标标系系统统如如何何完完成成预预定定的的任任务务,即即软软件件设设计是确定系统的物理模型。计是确定系统的物理模型。n从从技技术术观观点点来来看看,软软件件设设计计包包括括数数据据设设计计、体体系结构设计系结构设计
2、、接口设计接口设计、过程设计过程设计。n数据设计数据设计将实体关系图中描述的对象和关系,将实体关系图中描述的对象和关系,以及数据字典中描述的详细数据内容转化为数以及数据字典中描述的详细数据内容转化为数据结构的定义。据结构的定义。3/27/20232 2软件工程软件工程n体系结构设计体系结构设计定义软件系统各主要成份之间的定义软件系统各主要成份之间的关系。关系。n接口设计接口设计根据数据流图定义软件内部各成份之根据数据流图定义软件内部各成份之间、软件与其它协同系统之间及软件与用户之间、软件与其它协同系统之间及软件与用户之间的交互机制。间的交互机制。n过程设计过程设计则是把结构成份转换成软件的过程
3、性则是把结构成份转换成软件的过程性描述。描述。3/27/20233 3软件工程软件工程将分析模型转换为设计将分析模型转换为设计数据字典数据字典数数据据流流图图实实体体关关系系图图状态转换图状态转换图加加工工规规格格说说明明控控制制规规 格格说说明明数数据据对对象象描描述述过程设计过程设计接口设计接口设计体系结构设计体系结构设计数据设计数据设计3/27/20234 4软件工程软件工程n从工程管理角度来看,软件设计分两步完成:从工程管理角度来看,软件设计分两步完成:概要设计和详细设计。概要设计和详细设计。n概要设计概要设计将软件需求将软件需求转化为软件体系结构转化为软件体系结构确定系统级接口确定系
4、统级接口全局数据结构或数据库模式。全局数据结构或数据库模式。n详细设计详细设计确立每个模块的实现算法和局部数据结构确立每个模块的实现算法和局部数据结构用适当方法表示算法和数据结构的细节用适当方法表示算法和数据结构的细节3/27/20235 5软件工程软件工程n软件设计是后续开发步骤及软件维护工作的基软件设计是后续开发步骤及软件维护工作的基础。如果没有设计,只能建立一个不稳定的系础。如果没有设计,只能建立一个不稳定的系统结构。统结构。设计设计编码编码测试测试维护维护测试测试编码编码维护维护有软件设计有软件设计 没有软件设计没有软件设计3/27/20236 6软件工程软件工程n软件设计既是过程又是
5、模型。软件设计既是过程又是模型。n设计过程设计过程是一系列的迭代步骤,使设计人员能够是一系列的迭代步骤,使设计人员能够描述目标系统的各个侧面。描述目标系统的各个侧面。n设计模型设计模型首先描述目标系统的整体架构,然后逐首先描述目标系统的整体架构,然后逐步细化架构得到构造每个细节的指导原则,从而步细化架构得到构造每个细节的指导原则,从而得到系统的一系列不同的视图。得到系统的一系列不同的视图。n良好的设计原则可为设计过程导航。良好的设计原则可为设计过程导航。n衡量衡量设计过程设计过程的技术原则:的技术原则:设计必须实现分析模型中描述的所有显式需设计必须实现分析模型中描述的所有显式需求,必须满足用户
6、希望的所有隐式需求。求,必须满足用户希望的所有隐式需求。衡量软件设计的原则衡量软件设计的原则3/27/20237 7软件工程软件工程对于开发者和未来的维护者而言,设计必须对于开发者和未来的维护者而言,设计必须是可读的、可理解的,使得将来易于编程、是可读的、可理解的,使得将来易于编程、易于测试、易于维护。易于测试、易于维护。设计应该给出软件的全貌,包括从实现角度设计应该给出软件的全貌,包括从实现角度可看到的数据、功能、行为。可看到的数据、功能、行为。n衡量衡量设计模型设计模型的技术原则的技术原则设计模型应该是一个分层结构。该结构:设计模型应该是一个分层结构。该结构:n使用可识别的使用可识别的设计
7、模式设计模式搭建系统结构。搭建系统结构。n用显示良好设计特征的用显示良好设计特征的构件构件构成。构成。n可以用可以用演化的方式演化的方式实现。实现。设计应当模块化。设计应当模块化。3/27/20238 8软件工程软件工程设计应当包含数据、体系结构、接口和构件设计应当包含数据、体系结构、接口和构件(模块)的清晰的视图。(模块)的清晰的视图。设计应当根据将要实现的对象和数据模式导出设计应当根据将要实现的对象和数据模式导出合适的数据结构。合适的数据结构。设计应当建立具有独立功能特征的构件。设计应当建立具有独立功能特征的构件。设计应当建立能够降低模块与外部环境之间复设计应当建立能够降低模块与外部环境之
8、间复杂连接的接口。杂连接的接口。设计模型应当通过使用软件需求信息所驱动的设计模型应当通过使用软件需求信息所驱动的可重复的方法导出。可重复的方法导出。nDavis的软件设计原则的软件设计原则设计应具有设计应具有可跟踪性可跟踪性,能回溯到软件需求,能回溯到软件需求;3/27/20239 9软件工程软件工程设计不必每次都从头做起,可以复用已有的设计不必每次都从头做起,可以复用已有的设计模式和数据模式。设计模式和数据模式。设计应当缩小软件与现实世界中问题的设计应当缩小软件与现实世界中问题的“智智力距离力距离”,尽量逼近问题领域的结构,尽量逼近问题领域的结构;设计应具有一致性和集成性。整个系统应具设计应
9、具有一致性和集成性。整个系统应具有统一的风格和格式,具有良好的接口。有统一的风格和格式,具有良好的接口。设计结果应能适应未来可能的变更设计结果应能适应未来可能的变更;设计不是编码,编码也不是设计。设计模型设计不是编码,编码也不是设计。设计模型的抽象级别比源代码高。在编码级别上唯一的抽象级别比源代码高。在编码级别上唯一的设计决策是补充一些实现细节。的设计决策是补充一些实现细节。3/27/20231010软件工程软件工程设计应具有容错性和异常处理能力。对于异设计应具有容错性和异常处理能力。对于异常数据、事件、操作条件等能够平滑处理。常数据、事件、操作条件等能够平滑处理。在建立设计方案时就应能评估设
10、计质量,而在建立设计方案时就应能评估设计质量,而不是在系统编码之后。不是在系统编码之后。应坚持设计评审,减少概念性(语义性)的应坚持设计评审,减少概念性(语义性)的错误。错误。1)设计应遵循设计应遵循抽象化抽象化的原则,的原则,包含包含包含包含数据抽象数据抽象和和和和过过过过程抽象程抽象程抽象程抽象。软件设计的主要手段软件设计的主要手段3/27/202311 11软件工程软件工程过程抽象过程抽象 是指在软件设计中将处理过程的实是指在软件设计中将处理过程的实现细节隐藏在数据抽象中,可以直接通过模现细节隐藏在数据抽象中,可以直接通过模块接口使用这些处理操作块接口使用这些处理操作。数据抽象数据抽象
11、是指采用抽象数据类型表示数据,是指采用抽象数据类型表示数据,实现数据封装,使得使用者可通过接口使用实现数据封装,使得使用者可通过接口使用数据而不必关心数据结构的实现。数据而不必关心数据结构的实现。2.设计应遵循设计应遵循自顶向下自顶向下、逐步细化逐步细化的原则,建立的原则,建立一个层次的结构。一个层次的结构。将软件体系结构自顶向下,对过程细节和数将软件体系结构自顶向下,对过程细节和数据细节从抽象到具体,逐层细化,直到用编据细节从抽象到具体,逐层细化,直到用编程语言的语句能够实现为止。程语言的语句能够实现为止。3/27/20231212软件工程软件工程4)设计应当遵循设计应当遵循模块化模块化的原
12、则的原则。每每个个模模块块可可独独立立地地开开发发、测测试试,最最后后组组装装成成完整的程序。完整的程序。其其出出发发点点是是本本着着将将一一种种复复杂杂问问题题“分分而而治治之之”的的原原则则。其其目目的的是是使使程程序序的的结结构构清清晰晰,容容易阅读、理解、测试、修改。易阅读、理解、测试、修改。Meyer的的良好模块设计方法的标准良好模块设计方法的标准a)模模块块可可分分解解性性 可可将将系系统统按按问问题题子子问问题题分解的原则分解成系统的模块层次结构分解的原则分解成系统的模块层次结构;b)模模块块可可组组装装性性 可可利利用用已已有有的的设设计计构构件件组组装成新系统,不必一切从头开
13、始。装成新系统,不必一切从头开始。3/27/20231313软件工程软件工程c)模模块块可可理理解解性性 一一个个模模块块可可不不参参考考其其他他模模块而被理解;块而被理解;d)模模块块连连续续性性 对对软软件件需需求求的的一一些些微微小小变变更更只只导导致致对对某某个个模模块块的的修修改改而而整整个个系系统统不不用用大动大动;e)模模块块保保护护 将将模模块块内内出出现现异异常常情情况况的的影影响响范围限制在模块内部;范围限制在模块内部;5)设计应遵循设计应遵循信息隐蔽信息隐蔽的原则的原则。Patnas主主张张在在开开发发时时,将将每每个个程程序序的的成成分分隐隐藏藏在在模模块块内内,定定义
14、义每每一一个个模模块块时时尽尽可可能能少少地地显露其内部的处理。显露其内部的处理。3/27/20231414软件工程软件工程每每个个模模块块的的实实现现细细节节对对于于其其它它模模块块是是隐隐蔽蔽的的,将将来来修修改改软软件件时时偶偶然然引引入入错错误误所所造造成成的的影影响响就就可可以以局局限限在在一一个个或或几几个个模模块块内内部部,不不致致波波及到软件的其它部分。及到软件的其它部分。在在可可预预见见将将来来可可能能修修改改的的场场合合,信信息息隐隐蔽蔽可可以以提提高高软软件件的的可可修修改改性性、可可测测试试性性和和可可移移植植性。性。3/27/20231515软件工程软件工程3.2 3
15、.2 功能独立性功能独立性n功能独立性是抽象、模块化和信息隐蔽的直接功能独立性是抽象、模块化和信息隐蔽的直接产物。如果一个模块能够独立于其他模块被编产物。如果一个模块能够独立于其他模块被编程、测试和修改,则该模块具有功能独立性。程、测试和修改,则该模块具有功能独立性。n1978年年Myers提出用两个准则来度量功能独立提出用两个准则来度量功能独立性,即模块间的耦合和模块的内聚。性,即模块间的耦合和模块的内聚。n内聚性内聚性:内聚是一个模块内部各个元素彼此结:内聚是一个模块内部各个元素彼此结合的紧密程度的度量。合的紧密程度的度量。n耦合性耦合性:耦合是模块间互相连接的紧密程度的耦合是模块间互相连
16、接的紧密程度的度量,它取决于各个模块之间接口的复杂度、度量,它取决于各个模块之间接口的复杂度、调用方式以及哪些信息通过接口。调用方式以及哪些信息通过接口。3/27/20231616软件工程软件工程非直接非直接 数据数据 标记标记 控制控制 外部外部 公共公共 内容内容 耦合耦合 耦合耦合 耦合耦合 耦合耦合 耦合耦合 耦合耦合 耦合耦合耦合性耦合性功能独立性功能独立性模块间的耦合模块间的耦合n模块之间耦合性越强,功能独立性越差,这样形模块之间耦合性越强,功能独立性越差,这样形成的模块结构界面不好。成的模块结构界面不好。3/27/20231717软件工程软件工程非直接耦合非直接耦合(Nondir
17、ect Coupling)(Nondirect Coupling)n两个模块之间没有直接关系,它们之间的联系完两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的。全是通过主模块的控制和调用来实现的。n非直接耦合的模块独立性最强。非直接耦合的模块独立性最强。主模块主模块ABCEFGXYZ3/27/20231818软件工程软件工程数据耦合数据耦合(Data Coupling)(Data Coupling)n一个模块访问另一个模块时,彼此之间是通过简一个模块访问另一个模块时,彼此之间是通过简单数据参数单数据参数(不是控制参数、公共数据结构或外不是控制参数、公共数据结构或外部
18、变量部变量)来交换输入、输出信息的。来交换输入、输出信息的。p0(x0,y0)p1(x1,y1)数据耦合数据耦合 LINE(x0,y0,x1,y1)3/27/20231919软件工程软件工程标记耦合标记耦合(Stamp Coupling)(Stamp Coupling)n一组模块通过参数表传递记录信息,就是标记耦一组模块通过参数表传递记录信息,就是标记耦合。这个记录是某一数据结构的子结构,而不是合。这个记录是某一数据结构的子结构,而不是简单变量。简单变量。p0(x0,y0)p1(x1,y1)标记标记耦合耦合 LINE(p0,p1)3/27/20232020软件工程软件工程控制耦合控制耦合(Co
19、ntrol Coupling)(Control Coupling)n如果一个模块通过如果一个模块通过传送开关、标志、传送开关、标志、名字等控制参数,名字等控制参数,明显地控制选择另明显地控制选择另一模块的功能,就一模块的功能,就是控制耦合。是控制耦合。FlagFlagf1f2fn3/27/20232121软件工程软件工程外部耦合(外部耦合(External CouplingExternal Coupling)n一组模块都访问同一全局简单变量而不是同一一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全全局数据结构,而且不是通过参数表传递该全局变量的信息,则称之为外部
20、耦合。局变量的信息,则称之为外部耦合。公共耦合(公共耦合(Common CouplingCommon Coupling)n若一组模块都访问同一个公共数据环境,则它若一组模块都访问同一个公共数据环境,则它们之间的耦合就称为公共耦合。公共的数据环们之间的耦合就称为公共耦合。公共的数据环境可以是全局数据结构、共享的通信区、内存境可以是全局数据结构、共享的通信区、内存的公共覆盖区等。的公共覆盖区等。3/27/20232222软件工程软件工程n公共耦合的复杂程度随耦合模块的个数增加而公共耦合的复杂程度随耦合模块的个数增加而显著增加。若只是两模块间有公共数据环境,显著增加。若只是两模块间有公共数据环境,则
21、公共耦合有两种情况。松散公共耦合和紧密则公共耦合有两种情况。松散公共耦合和紧密公共耦合。公共耦合。common公共数据区公共数据区ABcommon公共数据区公共数据区AB松散的公共耦合松散的公共耦合紧密的公共耦合紧密的公共耦合3/27/20232323软件工程软件工程n如果发生下列情形,模块之间就是内容耦合如果发生下列情形,模块之间就是内容耦合:一个模块直接访问另一个模块的内部数据一个模块直接访问另一个模块的内部数据;一个模块不通过正常入口转到另一模块内部一个模块不通过正常入口转到另一模块内部;两个模块有一部分程序代码重迭两个模块有一部分程序代码重迭(只可能出只可能出现在汇编语言中现在汇编语言
22、中);一个模块有多个入口。一个模块有多个入口。内容耦合内容耦合(Content Coupling)(Content Coupling)3/27/20232424软件工程软件工程 c AB进入另一模块内部进入另一模块内部模块代码重叠模块代码重叠ABentry1 entry2 模块多个入口模块多个入口3/27/20232525软件工程软件工程模块内聚模块内聚巧合巧合 逻辑逻辑 时间时间 过程过程 通信通信 信息信息 功能功能内聚内聚 内聚内聚 内聚内聚 内聚内聚 内聚内聚 内聚内聚 内聚内聚内聚性内聚性功能独立性功能独立性n模块内聚性越强,功能独立性越好,对于形成的模块内聚性越强,功能独立性越好,
23、对于形成的模块结构有比较好的作用。模块结构有比较好的作用。n要求模块结构达到高内聚,低耦合。要求模块结构达到高内聚,低耦合。3/27/20232626软件工程软件工程n一个模块中各个部分都是完成某一具体功能必一个模块中各个部分都是完成某一具体功能必不可少的组成部分,或者说该模块中所有部分不可少的组成部分,或者说该模块中所有部分都是为了完成一项具体功能而协同工作,紧密都是为了完成一项具体功能而协同工作,紧密联系,不可分割的。则称该模块为功能内聚模联系,不可分割的。则称该模块为功能内聚模块。块。n功能内聚模块的功能独立性最强。功能内聚模块的功能独立性最强。功能内聚功能内聚(Functional C
24、ohesion)(Functional Cohesion)3/27/20232727软件工程软件工程n这种模块完成多个功能,各个功能相互独立但这种模块完成多个功能,各个功能相互独立但都在同一数据结构上操作,每一项功能有一个都在同一数据结构上操作,每一项功能有一个唯一的入口点。这个模块将根据不同的要求,唯一的入口点。这个模块将根据不同的要求,确定该执行哪一个功能。确定该执行哪一个功能。n由于这个模块的所有功能都是基于同一个数据由于这个模块的所有功能都是基于同一个数据结构(符号表),因此,它是一个信息内聚的结构(符号表),因此,它是一个信息内聚的模块。模块。n信息内聚模块可以看成是多个功能内聚模块
25、的信息内聚模块可以看成是多个功能内聚模块的组合,并且达到信息的隐蔽。组合,并且达到信息的隐蔽。信息内聚信息内聚(Informational Cohesion)(Informational Cohesion)3/27/20232828软件工程软件工程初始化初始化插入插入删除删除查找查找修改修改符符 号号 表表3/27/20232929软件工程软件工程n如果一个模块内各功能部分都使用了相同的输如果一个模块内各功能部分都使用了相同的输入数据,或产生了相同的输出数据,则称之为入数据,或产生了相同的输出数据,则称之为通信内聚模块。通常,通信内聚模块是通过数通信内聚模块。通常,通信内聚模块是通过数据流图来
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程原理 软件工程 原理 讲义 03495
限制150内