《《软件工程原理》讲义-03495.pptx》由会员分享,可在线阅读,更多相关《《软件工程原理》讲义-03495.pptx(95页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
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如果一个模块内各功能部分都使用了相同的输如果一个模块内各功能部分都使用了相同的输入数据,或产生了相同的输出数据,则称之为入数据,或产生了相同的输出数据,则称之为通信内聚模块。通常,通信内聚模块是通过数通信内聚模块。通常,通信内聚模块是通过数据流图来
26、定义的。据流图来定义的。n模块内各个功能是紧密相连的。模块内各个功能是紧密相连的。通信内聚通信内聚 (Communication Cohesion)(Communication Cohesion)3/27/20233030软件工程软件工程打印打印检验结检验结果果读文件读文件文件文件计算计算A计算计算B合并合并修改修改文件文件新文件新文件A结果结果B结果结果加工记录加工记录加工记录加工记录3/27/20233131软件工程软件工程n使用流程图做为工具设计程序时,如果流程图使用流程图做为工具设计程序时,如果流程图太大,可以把流程图中的某一部分划出组成模太大,可以把流程图中的某一部分划出组成模块,就
27、得到过程内聚模块。块,就得到过程内聚模块。n例如,把流程图中的循环部分、判定部分、计例如,把流程图中的循环部分、判定部分、计算部分分成三个模块,这三个模块都是过程内算部分分成三个模块,这三个模块都是过程内聚模块。聚模块。过程内聚(过程内聚(Procedural CohesionProcedural Cohesion)3/27/20233232软件工程软件工程n时间内聚又称为经典内聚。这种模块大多为多时间内聚又称为经典内聚。这种模块大多为多功能模块,但模块的各个功能的执行与时间有功能模块,但模块的各个功能的执行与时间有关,通常要求所有功能必须在同一时间段内执关,通常要求所有功能必须在同一时间段内
28、执行。行。n例如,初始化模块和终止模块就是时间内聚模例如,初始化模块和终止模块就是时间内聚模块。块。时间内聚(时间内聚(Classical CohesionClassical Cohesion)3/27/20233333软件工程软件工程n这种模块把几种相关的功能组合在一起,每次这种模块把几种相关的功能组合在一起,每次被调用时,由传送给模块的判定参数来确定该被调用时,由传送给模块的判定参数来确定该模块应执行哪一种功能。模块应执行哪一种功能。写一个记录写一个记录读一个记录读一个记录判定判定调用模块调用模块被调用被调用模块模块逻辑内聚(逻辑内聚(Logical CohesionLogical Coh
29、esion)3/27/20233434软件工程软件工程n当几个模块内正好有一段代码是相同的,将它们当几个模块内正好有一段代码是相同的,将它们抽取出来形成单独的模块,即巧合内聚模块。这抽取出来形成单独的模块,即巧合内聚模块。这种模块没有独立功能,各部分之间没有联系,或种模块没有独立功能,各部分之间没有联系,或联系很松散。联系很松散。巧合内聚(巧合内聚(Coincidental CohesionCoincidental Cohesion)ABCM STORE REC()TO N READ MASTER FILE ADD 1 TO x 3/27/20233535软件工程软件工程n结构化设计(结构化设
30、计(structured design,SD)是一种)是一种面向数据流的设计方法,它可以与面向数据流的设计方法,它可以与SA方法衔方法衔接。接。n结构化设计是基于模块化、自顶向下细化、结构化设计是基于模块化、自顶向下细化、结构化程序设计等程序设计技术基础上发展结构化程序设计等程序设计技术基础上发展起来的。基本思想是将系统设计成由相对独起来的。基本思想是将系统设计成由相对独立、功能单一的模块组成的结构。立、功能单一的模块组成的结构。n该方法实施的要点是:该方法实施的要点是:1)首先首先研究研究、分析和审查数据流图分析和审查数据流图。从软件从软件3.3 3.3 结构化设计方法结构化设计方法3/27
31、/20233636软件工程软件工程的需求规格说明中弄清数据流加工的过程,的需求规格说明中弄清数据流加工的过程,对于发现的问题及时解决。对于发现的问题及时解决。2)然后然后根据数据流图确定数据处理的类型根据数据流图确定数据处理的类型。典型的类型有两种:变换型和事务型。针典型的类型有两种:变换型和事务型。针对两种对两种不同类型分别进行分析处理。不同类型分别进行分析处理。3)由数据流图推导由数据流图推导出系统的初始结构图出系统的初始结构图。4)利用一些启发式原则利用一些启发式原则改进系统初始结构图改进系统初始结构图,直到得到符合要求的结构图为止。直到得到符合要求的结构图为止。5)修改和补充数据字典。
32、修改和补充数据字典。6)制定制定测试计划。测试计划。3/27/20233737软件工程软件工程在系统结构图中的模块在系统结构图中的模块n传入模块传入模块 从下属模块取得数据,经过某些从下属模块取得数据,经过某些处理处理,再将其传送给上级模块。它传送的数据再将其传送给上级模块。它传送的数据流叫做逻辑输入数据流。流叫做逻辑输入数据流。n传出模块传出模块 从上级模块获得数据,进行某些从上级模块获得数据,进行某些处理,再将其传送给下属模块。它传送的数处理,再将其传送给下属模块。它传送的数据流叫做逻辑输出数据流。据流叫做逻辑输出数据流。n变换模块变换模块 它从上级模块取得数据,进行特它从上级模块取得数据
33、,进行特定的处理,转换成其它形式定的处理,转换成其它形式,再传送回上级模再传送回上级模块。块。3/27/20233838软件工程软件工程n协调模块协调模块 对所有下属模块进行协调和管理对所有下属模块进行协调和管理的模块。的模块。传入模块传入模块AA传出模块传出模块DD变换模块变换模块AB协调模块协调模块AABB3/27/20233939软件工程软件工程系统结构图的基本符号系统结构图的基本符号模块模块调用调用数据数据控制信息控制信息转接符号转接符号系统结构图的基本符号系统结构图的基本符号选择(判断)选择(判断)重复重复3/27/20234040软件工程软件工程模块调用示例模块调用示例(a)调用调
34、用(b)判断调用判断调用(c)循环调用循环调用3/27/20234141软件工程软件工程n数数据据:模模块块之之间间传传送送的的数数据据用用带带空空心心圆圆的的箭箭头头表示,并在旁边标上数据名。表示,并在旁边标上数据名。n控控制制信信息息:控控制制信信息息与与数数据据的的主主要要区区别别是是前前者者只反映数据的某种状态。只反映数据的某种状态。模块间的数据传递模块间的数据传递AB(a)xyz查职工简历查职工简历读人事文件读人事文件(b)职工号职工号简历数据简历数据无此职工无此职工3/27/20234242软件工程软件工程数据处理的类型数据处理的类型 n在在需需求求分分析析阶阶段段,面面向向数数据
35、据流流的的SA方方法法产产生生数数据流图据流图DFD。n在在软软件件设设计计阶阶段段,面面向向数数据据流流的的SD方方法法将将DFD转换成程序结构图。转换成程序结构图。n数数据据处处理理即即为为在在DFD中中从从系系统统的的输输入入数数据据流流到到系统的输出数据流所经历的一连串连续变换。系统的输出数据流所经历的一连串连续变换。n数据处理的类型分为变换流型与事务流型。数据处理的类型分为变换流型与事务流型。3/27/20234343软件工程软件工程变换流变换流 n数数据据沿沿着着输输入入通通路路进进入入系系统统,经经过过一一系系列列数数据据变变换换,将将数数据据的的外外部部形形式式转转换换成成对对
36、应应的的内内部部表表示示,然然后后通通过过变变换换中中心心(也也称称主主加加工工)处处理理,再再沿沿着着输输出出通通路路转转换换成成外外部部形形式式离离开开系统。具有这种特性的数据流称为变换流。系统。具有这种特性的数据流称为变换流。n变换流型变换流型DFD可以分成:可以分成:输入变换中心(主加工)输出输入变换中心(主加工)输出 输入数据输入数据C变换数据变换数据CD输出数据输出数据D3/27/20234444软件工程软件工程n相应于取得数据、变换数据、给出数据,变相应于取得数据、变换数据、给出数据,变换流型系统结构图由输入、变换中心和输出换流型系统结构图由输入、变换中心和输出等三部分组成。等三
37、部分组成。主模块主模块B变换成变换成C输入输入B输出输出CA变换成变换成B输入输入AC变换成变换成D输出输出DAABBBCCCDD3/27/20234545软件工程软件工程事务流事务流 n数数据据沿沿着着输输入入通通路路到到达达一一个个事事务务中中心心,事事务务中中心心根根据据输输入入数数据据(即即事事务务)的的类类型型在在若若干干个个动动作作(称称为为活活动动流流)中中选选择择一一个个来来执执行行,这种数据流也称为事务流。这种数据流也称为事务流。n事事务务流流有有明明显显的的事事务务中中心心,各各活活动动流流以以事事务务中心为起点呈辐射状流出。中心为起点呈辐射状流出。n在事务流型系统结构图中
38、,事务中心模块按在事务流型系统结构图中,事务中心模块按所接受的事务的类型,选择某一事务(活动所接受的事务的类型,选择某一事务(活动流)处理模块执行。各事务处理模块并列。流)处理模块执行。各事务处理模块并列。3/27/20234646软件工程软件工程事务中心事务中心分派模块分派模块输出结果输出结果事务事务1输入作业信息输入作业信息事务事务2事务事务3事务事务4作业信息作业信息作业作业信息信息结果结果结果结果操作操作1操作操作2操作操作3操作操作4操作操作5操作操作6细节细节1细节细节2细节细节3细节细节4细节细节5细节细节63/27/20234747软件工程软件工程变换分析变换分析 n变换分析从
39、变换流型的数据流图导出系统结变换分析从变换流型的数据流图导出系统结构图构图.n步骤步骤1.重画数据流图;重画数据流图;2.区分有效(逻辑)输入、有效(逻辑)输区分有效(逻辑)输入、有效(逻辑)输出和变换中心部分;出和变换中心部分;3.进行一级分解,设计模块结构的顶层和第进行一级分解,设计模块结构的顶层和第一层模块;一层模块;4.进行二级分解,设计输入、输出和中心变进行二级分解,设计输入、输出和中心变换换部分的中、下层模块。部分的中、下层模块。3/27/20234848软件工程软件工程1.1.重画数据流图(平铺)重画数据流图(平铺)n为了建立系统结构,将数据流图平铺开来,为了建立系统结构,将数据
40、流图平铺开来,物理输入画在左侧,物理输出画在右侧。物理输入画在左侧,物理输出画在右侧。n如果一个外部实体既是物理输入又是物理输如果一个外部实体既是物理输入又是物理输出,则两侧都要画出它。出,则两侧都要画出它。ABBCEGGHDFCDEABCDEFGH物理输入物理输入物理输出物理输出3/27/20234949软件工程软件工程2.2.确定逻辑输入、逻辑输出确定逻辑输入、逻辑输出和变换中心部分和变换中心部分n变换中心是程序的核心功能,它的输入是逻变换中心是程序的核心功能,它的输入是逻辑输入,它的输出为逻辑输出。辑输入,它的输出为逻辑输出。变换中心变换中心ABBCEGGHDFCDEABCDEFGH物理
41、输入物理输入物理输出物理输出逻辑输入逻辑输入逻辑输出逻辑输出3/27/20235050软件工程软件工程3.3.第一级分解:第一级分解:设计模块结构的顶层和第一层设计模块结构的顶层和第一层n顶层模块:其功能就是整个系统的功能;顶层模块:其功能就是整个系统的功能;n输入控制模块:接收所有的输入数据;输入控制模块:接收所有的输入数据;n变换控制模块:实现输入到输出的变换;变换控制模块:实现输入到输出的变换;n输出控制模块:产生所有的输出数据。输出控制模块:产生所有的输出数据。顶层模块顶层模块变换控制变换控制输出控制输出控制输入控制输入控制3/27/20235151软件工程软件工程变换中心变换中心AB
42、BCEGGHDFCDEABCDEFGH物理输入物理输入物理输出物理输出逻辑输入逻辑输入逻辑输出逻辑输出主模块主模块C D,E输入输入C输出输出D输出输出ECCD,EDE逻辑输入逻辑输入变换中心变换中心逻辑输出逻辑输出3/27/20235252软件工程软件工程4.4.第二级分解:设计中、下层模块第二级分解:设计中、下层模块n输输入入控控制制模模块块的的分分解解:从从变变换换中中心心的的边边界界开开始始,沿沿着着各各输输入入通通路路,把把输输入入通通路路上上的的每每个个加加工工映射成输入控制模块的一个低层模块。映射成输入控制模块的一个低层模块。n输输出出控控制制模模块块的的分分解解:从从变变换换中
43、中心心的的边边界界开开始始,沿沿着着各各输输出出通通路路,把把输输出出通通路路上上的的每每个个加加工工映射成输出控制模块的一个低层模块。映射成输出控制模块的一个低层模块。n变变换换控控制制模模块块的的分分解解:变变换换控控制制模模块块通通常常没没有有通通用用的的分分解解方方法法,应应根根据据数数据据流流图图中中变变换换部部分的实际情况进行设计。分的实际情况进行设计。3/27/20235353软件工程软件工程输出输出HG HABBCEGGHDFCD,EABCDEFGH物理输入物理输入物理输出物理输出主模块主模块CD,E输入输入C输出输出D输出输出ECCD,EDE输入输入BBBCBC输入输入AAB
44、ABA输出输出GE G输出输出FDFDFFEGGGHH3/27/20235454软件工程软件工程输出输出HG HABBCEGGHDFCD,EABCDEFGH物理输入物理输入物理输出物理输出主模块主模块CD,E输入输入C输出输出D输出输出ECCD,EDE输入输入BBBCBC输入输入AABABA输出输出GE G输出输出FDFDFFEGGGHH3/27/20235555软件工程软件工程事务分析事务分析n事事务务分分析析是是从从事事务务流流型型数数据据流流图图导导出出系系统统结结构图。构图。n步骤:步骤:1.确定事务中心和每条活动流的流特性确定事务中心和每条活动流的流特性 2.将将事事务务流流型型数数
45、据据流流图图映映射射成成高高层层的的系系统统结结构构3.进一步分解进一步分解 3/27/20235656软件工程软件工程1.1.确定事务中心和各活动流的流特性确定事务中心和各活动流的流特性 n右图为事务流型右图为事务流型DFD的一般形式。的一般形式。n事务中心事务中心(图中的(图中的T):):位于活动流的起点,位于活动流的起点,活动流从该点成辐射状流出。活动流从该点成辐射状流出。n活动流:活动流:可为变换流可为变换流可为事务流可为事务流n事务流型的事务流型的DFD的组成:的组成:输入流事务中心若干条活动流输入流事务中心若干条活动流 T T输入流输入流事务流事务流活动流活动流3/27/20235
46、757软件工程软件工程n右图为事务流型右图为事务流型DFD的高层结构形式。的高层结构形式。n顶层模块:其功能就是整个系统的功能。顶层模块:其功能就是整个系统的功能。n接收模块:接收输入数据。接收模块:接收输入数据。n分派模块:调度模块,分派模块:调度模块,控制下层的所有活动模块。控制下层的所有活动模块。n事务模块:对应活动流,事务模块:对应活动流,是该活动流映射成的。是该活动流映射成的。2.2.将事务流型将事务流型DFDDFD映射成映射成高层系统结构高层系统结构顶层模块顶层模块分派分派接收接收事务事务1 1事务事务2事务事务n3/27/20235858软件工程软件工程3.3.进一步分解进一步分
47、解n接接收收模模块块:类类同同于于变变换换分分析析中中输输入入控控制制模模块块的的分解。分解。n活活动动流流模模块块:根根据据其其流流特特性性(变变换换流流或或事事务务流流)进一步采用变换分析或事务分析进行分解。进一步采用变换分析或事务分析进行分解。3/27/20235959软件工程软件工程模块设计的原则模块设计的原则n在选择模块设计的次序时,必须对一个模块的在选择模块设计的次序时,必须对一个模块的全部直接下属模块都设计完成之后,才能转向全部直接下属模块都设计完成之后,才能转向另一个模块的下层模块的设计。另一个模块的下层模块的设计。n使用使用“黑盒黑盒”技术技术:在设计当前模块时,在设计当前模
48、块时,先把先把该模块的所有下层模块定义成该模块的所有下层模块定义成“黑盒黑盒”,在设,在设计中利用它们时暂不考虑其内部结构和实现。计中利用它们时暂不考虑其内部结构和实现。在这一步定义好的在这一步定义好的“黑盒黑盒”,在下一步就可以,在下一步就可以对它们进行设计和加工。最后,全部对它们进行设计和加工。最后,全部“黑盒黑盒”的内容和结构应完全被确定。的内容和结构应完全被确定。3/27/20236060软件工程软件工程n在设计下层模块时,应考虑模块的在设计下层模块时,应考虑模块的耦合耦合和和内内聚聚问题,以提高初始结构图质量。问题,以提高初始结构图质量。n模块划分时,一个模块的直接下属模块一般模块划
49、分时,一个模块的直接下属模块一般在在 5 个左右。如果直接下属模块超过个左右。如果直接下属模块超过 10 个,个,可设立中间层次。可设立中间层次。n如果出现以下情况,就停止模块分解:如果出现以下情况,就停止模块分解:模块不能再细分为明显的子任务;模块不能再细分为明显的子任务;分解成用户提供的模块或库函数;分解成用户提供的模块或库函数;模块接口是输入输出设备传送的信息;模块接口是输入输出设备传送的信息;模块不宜再分解得过小。模块不宜再分解得过小。3/27/20236161软件工程软件工程n变换分析是软件系统结构设计的主要方法。变换分析是软件系统结构设计的主要方法。n一般,一个大型的软件系统是变换
50、型结构和一般,一个大型的软件系统是变换型结构和事务型结构的混合结构。所以,我们通常利事务型结构的混合结构。所以,我们通常利用以变换分析为主,事务分析为辅的方式进用以变换分析为主,事务分析为辅的方式进行软件结构设计。行软件结构设计。3/27/20236262软件工程软件工程abdpqrsbac1d分派模块分派模块事务控制事务控制qrs接受通路接受通路p3/27/20236363软件工程软件工程1.模块功能完善化模块功能完善化 一个完整的模块应当有以下几部分:一个完整的模块应当有以下几部分:执行规定的功能的部分;执行规定的功能的部分;出错处理的部分。当模块不能完成规定的出错处理的部分。当模块不能完