第3章结构化方法备课讲稿课件

上传人:仙*** 文档编号:241643533 上传时间:2024-07-12 格式:PPT 页数:145 大小:643KB
返回 下载 相关 举报
第3章结构化方法备课讲稿课件_第1页
第1页 / 共145页
第3章结构化方法备课讲稿课件_第2页
第2页 / 共145页
第3章结构化方法备课讲稿课件_第3页
第3页 / 共145页
点击查看更多>>
资源描述
11第3章结构化方法22第第3章章结构化方法结构化方法结构化方法作为一种结构化方法作为一种“思想思想”工具,可用于定义需求,建工具,可用于定义需求,建立待建系统的功能模型;可用立待建系统的功能模型;可用于定义满足需求的结构,给出于定义满足需求的结构,给出一种特定的软件解决方案。一种特定的软件解决方案。33总总的的要要求求要求学生要求学生掌握掌握结构化分析方法,并结构化分析方法,并能能运用运用该方法给出小型简单系统的功该方法给出小型简单系统的功能模型能模型;掌握掌握结构化设计方法,能基于结构化设计方法,能基于给定的小型简单系统功能模型,给出给定的小型简单系统功能模型,给出系统的总体设计,并能系统的总体设计,并能运用运用详细设计详细设计工具给出若干模块的详细设计。工具给出若干模块的详细设计。44知识点和考核要求(1)识记)识记1)表达问题域信息的基本术语及其表示。表达问题域信息的基本术语及其表示。2)表达功能模型的工具表达功能模型的工具DFD图。图。3)数据结构符号和判定表、判定树。数据结构符号和判定表、判定树。4)变换型数据流图和事务型数据流图。变换型数据流图和事务型数据流图。5)模块以及模块内聚和耦合。模块以及模块内聚和耦合。6)详细设计工具详细设计工具:框图、框图、PAD图、图、N-S图和伪码。图和伪码。55(2)领会)领会1)结构化方法源于的基本思想。结构化方法源于的基本思想。2)结构化分析方法中每一术语所基于原理以及它结构化分析方法中每一术语所基于原理以及它们在建模中的作用。们在建模中的作用。3)构建系统功能模型的步骤。构建系统功能模型的步骤。4)变换设计和事务设计。变换设计和事务设计。5)“高内聚低耦合高内聚低耦合”原则以及经验性性准则。原则以及经验性性准则。6)详细设计工具的优缺点以及相互转换。详细设计工具的优缺点以及相互转换。7)结构化方法存在的问题。结构化方法存在的问题。66(3)应用)应用1)针对不复杂的系统需求针对不复杂的系统需求(问题问题)陈陈述,创建该系统的功能模型,包括述,创建该系统的功能模型,包括系统的系统的DFD图,数据字典和加工图,数据字典和加工小说明。小说明。2)在创建系统功能模型的基础上,在创建系统功能模型的基础上,给出该系统的总体设计,并针对有给出该系统的总体设计,并针对有关模块运用关模块运用PAD图或图或N-S图或伪码,图或伪码,给出这些模块的详细设计。给出这些模块的详细设计。77结构化方法结构化方法一种特定的软件开发方法学一种特定的软件开发方法学结构化分析方法结构化分析方法何谓分析何谓分析一般地说一般地说,分析是系统化地使用信息分析是系统化地使用信息,给出一个问题的估算给出一个问题的估算.88系统建模技术系统建模技术-结构化方法结构化方法结构化分析方法结构化分析方法要回答:如何定义问题?要回答:如何定义问题?就如何定义问题而言,如何获得需求就如何定义问题而言,如何获得需求如何规约需求如何规约需求如何验证需求如何验证需求关于需求获取关于需求获取-需求面临的挑战需求面临的挑战问题空间理解问题空间理解人与人之间的通信人与人之间的通信需求的不断变化需求的不断变化991)需求目标)需求目标在任何一个设计中,精确地陈述问题总是第一步的。需求的在任何一个设计中,精确地陈述问题总是第一步的。需求的目标是要简洁而精确地说明所要解决的问题。目标是要简洁而精确地说明所要解决的问题。为此:为此:l软件人员的注意力应在做什么和为什么做,而不是如何做。软件人员的注意力应在做什么和为什么做,而不是如何做。l与用户和该领域的专家进行交流,导引出他们对软件产品的要求。与用户和该领域的专家进行交流,导引出他们对软件产品的要求。l基于对用户要求的理解,结合计算机软件的特有能力,创造出对用户有基于对用户要求的理解,结合计算机软件的特有能力,创造出对用户有价值的,能提高产品的质量与可用性的新的产品要求。价值的,能提高产品的质量与可用性的新的产品要求。l分析所定出的产品要求,判断其正确性,一致性,完整性及可行性;分析所定出的产品要求,判断其正确性,一致性,完整性及可行性;l决定解决方案,完成高层次的设计,确定出功能子系统及子系统之间的决定解决方案,完成高层次的设计,确定出功能子系统及子系统之间的接口界面。接口界面。l把产品要求以用户手册及工程设计技术要求的形式表达出来。(可能还把产品要求以用户手册及工程设计技术要求的形式表达出来。(可能还包括测试的标准)。用于在开发的全过程中,验证核实所开发的产品确包括测试的标准)。用于在开发的全过程中,验证核实所开发的产品确能满足用户的要求,支持技术文档的管理,更重要的是支持需求变化的能满足用户的要求,支持技术文档的管理,更重要的是支持需求变化的管理。管理。可见,为了实现这一目标:需求可见,为了实现这一目标:需求(工程工程)包括需求的引出、创造、包括需求的引出、创造、分析、表述、验核和管理。分析、表述、验核和管理。10102)需求工程的重要性)需求工程的重要性 Standish-Group Standish-Group对对350350家公司的家公司的80008000个软件项目作过个软件项目作过一次调查一次调查 其中,其中,31%31%的项目的结局是被取消。的项目的结局是被取消。引致这些项目失败的原因是:引致这些项目失败的原因是:13.1%13.1%不完整的产品要求;不完整的产品要求;12.4%12.4%缺乏用户的参与;缺乏用户的参与;10.6%10.6%缺少资源(人力、财力);缺少资源(人力、财力);9.9%9.9%不现实的期望;不现实的期望;9.3%9.3%高层领导支持不足;高层领导支持不足;8.7%8.7%产品要求与指标的改变;产品要求与指标的改变;8.1%8.1%没有订计划;没有订计划;7.5%7.5%不再需耍该开发中的系统。不再需耍该开发中的系统。其中,与产品需求有关的(其中,与产品需求有关的(1,2,4,1,2,4,和和6 6项)占了项)占了44.1%44.1%。这些数据突出地显示了软件产品需求在软件开发中的。这些数据突出地显示了软件产品需求在软件开发中的重要性。重要性。1111重要性之一重要性之一 软件需求工程直接关系到软件需求工程直接关系到“成本、质量和按时交付成本、质量和按时交付”等问题等问题-它们是项目成败的关键因素。它们是项目成败的关键因素。项目的五维:进度,特性,质量,成本,人员。项目的五维:进度,特性,质量,成本,人员。重要性之二重要性之二 软件需求工程软件需求工程-这种发生在软件生命周期的初始阶段这种发生在软件生命周期的初始阶段的错误是非常难于改正,并且是代价极高的。的错误是非常难于改正,并且是代价极高的。最新的研究兴趣聚焦于最新的研究兴趣聚焦于“需求引出需求引出”,因为它涉及因为它涉及到到软件开发人员与非软件专业人员合作的问题。软件开发人员与非软件专业人员合作的问题。12123)需求工程的原则)需求工程的原则(1)抽象:抽象:抓住事物的本质(要素)。其中,一个重要方抓住事物的本质(要素)。其中,一个重要方面是:捕获问题空间的面是:捕获问题空间的“一般一般/特殊特殊”关系关系 是认识是认识 、构造问题的一般途径。、构造问题的一般途径。(2)划分:划分:分离问题。其中,一个重要方面是:捕获问题分离问题。其中,一个重要方面是:捕获问题空间的空间的“整体整体/部分部分”关系关系 是降低问题复杂性的基本途径之一是降低问题复杂性的基本途径之一 (3)投影投影:捕获并建立问题空间的多维:捕获并建立问题空间的多维“视图视图”是描述问题的基本手段之一是描述问题的基本手段之一 是解决是解决“A“A是是B B,B B是是A”A”的基本方法的基本方法 1313分析问题和需求的能力取决于分析人员的分析问题和需求的能力取决于分析人员的思维思维和和经验经验。思维来源于:思维来源于:严谨、逻辑和严谨、逻辑和“活跃活跃”的思考习惯。的思考习惯。(1)严谨要求严谨要求思考的对象思考的对象应该是不放过任何一个应该是不放过任何一个“小小”问题问题(2)逻辑要求逻辑要求思思考的过程应该是一种符合规则的推考的过程应该是一种符合规则的推导过程导过程(3)活跃思维要求活跃思维要求思考的方式思考的方式应该是并行的,即不应该是并行的,即不是仅一个角度,而是多个角度来思考问题是仅一个角度,而是多个角度来思考问题经验来源于:经验来源于:(1)开发了一些软件并善于总结开发了一些软件并善于总结-创新与教训创新与教训(2)跟踪最新技术。跟踪最新技术。1414具体地说具体地说(1 1)基础)基础软件人员必须先在一定程度上熟悉并学习软件所涉及的软件人员必须先在一定程度上熟悉并学习软件所涉及的专业领域。程度的深浅,以满足工作的要求为目标。专业领域。程度的深浅,以满足工作的要求为目标。软件人员要懂得如何帮助用户去表达出他们对产品的耍软件人员要懂得如何帮助用户去表达出他们对产品的耍求。因为需求获取是一个交互的过程。求。因为需求获取是一个交互的过程。软件人员面对的用户是:他们不是计算机或软件的专业软件人员面对的用户是:他们不是计算机或软件的专业人员,他们不能完全清楚软件能带来一些什么新的功能人员,他们不能完全清楚软件能带来一些什么新的功能可以帮助提高工作效率和提供新的服务,因此可以帮助提高工作效率和提供新的服务,因此 必须在必须在需求规约中包括用户对产品工作性能,可靠性,可维护需求规约中包括用户对产品工作性能,可靠性,可维护性,可扩展性等的需求。性,可扩展性等的需求。(2 2)表达)表达使用清楚而良构的语言完成需求规约。使用清楚而良构的语言完成需求规约。必须完全用问题领域方面的词汇来表达必须完全用问题领域方面的词汇来表达,不应该出现软不应该出现软件领域内的词汇。通过浏览文档,能够完全理解所要解件领域内的词汇。通过浏览文档,能够完全理解所要解决的具体问题和该问题的一般性解决方案。决的具体问题和该问题的一般性解决方案。1515(3)做法)做法开始问题定义时,通常是建立一个词汇表。对于具有模开始问题定义时,通常是建立一个词汇表。对于具有模糊含义的术语,或者在目前的问题中用于有限范围内的糊含义的术语,或者在目前的问题中用于有限范围内的术语,要给出专门的定义。术语,要给出专门的定义。另外,在词汇表中加入精化细节也是很有帮助的另外,在词汇表中加入精化细节也是很有帮助的-那些那些通常归入功能性需求规范的通常归入功能性需求规范的“东西东西”,常体现在精化细,常体现在精化细节中。节中。集中在公司的关键任务的目标上。集中在公司的关键任务的目标上。一个新项目的一个新项目的开始,可能是执行一个已有的长期系统计划的结果,或开始,可能是执行一个已有的长期系统计划的结果,或来自于一系列高层战略信息系统计划编制的建议。因此,来自于一系列高层战略信息系统计划编制的建议。因此,由此产生的建造,应该尽量基于长期的方向和目标,而由此产生的建造,应该尽量基于长期的方向和目标,而不是针对商业危机或技术潮流而做出的反应。不是针对商业危机或技术潮流而做出的反应。应该直应该直接集中在公司的业务需要上,而不是技术员的理想软件接集中在公司的业务需要上,而不是技术员的理想软件列表上。列表上。应该通过应该通过考察现在的应考察现在的应用情况,并根据其用情况,并根据其业务性能和任何预计的未来的市场影响,对每个系统进业务性能和任何预计的未来的市场影响,对每个系统进行分类。行分类。1616需求分类需求分类根据软件产品的性能指标和实现难度,根据软件产品的性能指标和实现难度,对问题和需求进行分类:对问题和需求进行分类:核心需求核心需求基本功能需求基本功能需求高级功能需求高级功能需求组合功能需求组合功能需求1717恰当地选取问题和需求的切入点。所有问题和需求都有发恰当地选取问题和需求的切入点。所有问题和需求都有发生的根源,其表面现象往往是开发者思路的切入点。其中,生的根源,其表面现象往往是开发者思路的切入点。其中,如果切入点是狭隘的,那么围绕着问题和需求的分析往往如果切入点是狭隘的,那么围绕着问题和需求的分析往往局限于自身的思路范围,问题和需求产生的原因就很难发局限于自身的思路范围,问题和需求产生的原因就很难发现。所以当不能理解分析的问题和需求时,不妨先跳出思现。所以当不能理解分析的问题和需求时,不妨先跳出思维惯例,寻求存在这样的问题和需求的原因,然后再分析维惯例,寻求存在这样的问题和需求的原因,然后再分析理解之。理解之。交替反复分析多个问题和需求,寻找问题间的共性和特性。交替反复分析多个问题和需求,寻找问题间的共性和特性。问题复杂化,是一个抽象问题或需求的逆过程。提出问题问题复杂化,是一个抽象问题或需求的逆过程。提出问题需求的许多可能的假设,丰富问题需求的形式。问题复杂需求的许多可能的假设,丰富问题需求的形式。问题复杂化的意图是许多问题应该从更多的方面去验证不同环境下化的意图是许多问题应该从更多的方面去验证不同环境下问题是否同样存在。问题是否同样存在。问题抽象化,继而简化问题。众多的问题和需求变成程序问题抽象化,继而简化问题。众多的问题和需求变成程序式过程,就是公式化问题和需求。类模板就是一个抽象问式过程,就是公式化问题和需求。类模板就是一个抽象问题很好的例子。题很好的例子。18184 4)需求获取技术特征)需求获取技术特征由上可见,需求获取技术特征:由上可见,需求获取技术特征:方便通讯(使用易于理解的语言)方便通讯(使用易于理解的语言)提供定义系统边界的方法提供定义系统边界的方法 提供划分、抽象、投影等方法提供划分、抽象、投影等方法 允许采用多种可供选择的设计方法允许采用多种可供选择的设计方法 适应需求的变化适应需求的变化 支持使用问题空间的术语,思考问题和编支持使用问题空间的术语,思考问题和编制文档制文档 1919何谓结构化分析何谓结构化分析就软件需求分析而言就软件需求分析而言,即为即为:系统化地使用问系统化地使用问题域术语题域术语,给出该问题的模型给出该问题的模型,即即:该系统的概念该系统的概念模型或称系统模型或称系统的需求规约的需求规约问题域问题域-客观事物系统客观事物系统形成形成分析分析(映射映射)可见,需求分析作为一种活动,其目标为:可见,需求分析作为一种活动,其目标为:在一个确定的抽象层(即需求层)上为客观事物系统施在一个确定的抽象层(即需求层)上为客观事物系统施加了一个结构加了一个结构,形成待开发软件系统(产品)的概念模型,形成待开发软件系统(产品)的概念模型,即需求规约(即需求规约(规格说明书),作为开发人员和客户间技术规格说明书),作为开发人员和客户间技术契约的基础,并作为而后开发活动的一个基本输入契约的基础,并作为而后开发活动的一个基本输入2020实现软件需求分析的目标对方法学的需求实现软件需求分析的目标对方法学的需求(1)提供一组术语提供一组术语(符号符号),指导抽象中需要,指导抽象中需要关注的主要方面关注的主要方面,并用于表达分析中所使用的并用于表达分析中所使用的信息信息.(3.1.1.(3.1.1节节)这些术语形成一个特定的抽象层,即需求这些术语形成一个特定的抽象层,即需求层层.当然,这组术语应体现软件设计的某些当然,这组术语应体现软件设计的某些“原理原理/原则原则”!(2)(2)依据这些术语所形成的依据这些术语所形成的“空间空间”,”,给出表给出表达模型的工具达模型的工具.(3.1.2.(3.1.2节节)(3)(3)给出过程指导给出过程指导.(3.1.3.(3.1.3节节)2121需求层的确定需求层的确定一个抽象层是由一组确定的术语定义的一个抽象层是由一组确定的术语定义的,为此为了支持需求分析中有关要使用的那为此为了支持需求分析中有关要使用的那些信息的表达些信息的表达,给出了以下五个给出了以下五个术语符号术语符号:数据流:数据流:加工:加工:数据存储:数据存储:数据源:数据源:数据潭:数据潭:其中:其中:数据流、数据存储数据流、数据存储-支持数据抽支持数据抽象象,加工加工-支持过程支持过程/功能的抽象,功能的抽象,用于表达用于表达系统内涵系统内涵数据源、数据潭数据源、数据潭支持系统边界支持系统边界抽象,用于表达系统抽象,用于表达系统外延外延.是完备的。是完备的。2222基本术语1.数据流数据流数据流是一类术语,用于表达在分析中所要使用数据流是一类术语,用于表达在分析中所要使用的、用于表达的、用于表达“客体客体”的信息。在使用中一般要给出的信息。在使用中一般要给出标识,该标识是一个名词或名词短语,并且往往直接标识,该标识是一个名词或名词短语,并且往往直接使用实际问题空间中的概念。使用实际问题空间中的概念。2.加工加工加工也是一类术语,用于表达在分析中使用的、用加工也是一类术语,用于表达在分析中使用的、用于表达于表达“处理处理”的信息。在使用中一般也要给出标识。的信息。在使用中一般也要给出标识。该标识一般采用动宾结构,并且往往直接使用实际问该标识一般采用动宾结构,并且往往直接使用实际问题空间中的概念,以便表达该加工的一定语义。题空间中的概念,以便表达该加工的一定语义。3.数据存储数据存储数据存储也是一类术语,用于表达在分析中所使用数据存储也是一类术语,用于表达在分析中所使用的、表达的、表达“结构化客体结构化客体”的信息。在使用中一般也要的信息。在使用中一般也要给出标识。该标识是一个名词或名词短语,并且往往给出标识。该标识是一个名词或名词短语,并且往往直接使用实际问题空间中的概念。这样的标识可以表直接使用实际问题空间中的概念。这样的标识可以表达该结构化数据的达该结构化数据的“一定一定”语义。语义。23234.数据源和数据潭数据源和数据潭数据源是数据流的起点;数据潭是数据流的归数据源是数据流的起点;数据潭是数据流的归宿地。数据源和数据潭是系统之外的实体,可以使宿地。数据源和数据潭是系统之外的实体,可以使人、物或其它软件系统。他们均用一个矩形表示。人、物或其它软件系统。他们均用一个矩形表示。引入数据源和数据潭这两个术语的目的是为了引入数据源和数据潭这两个术语的目的是为了表示系统的环境,可以使用它们和相关的数据流来表示系统的环境,可以使用它们和相关的数据流来定义系统的边界。定义系统的边界。与其他术语一样,在使用这两个术语来表达系与其他术语一样,在使用这两个术语来表达系统统/产品产品“边界边界”的信息时,也要给出相应的标识。的信息时,也要给出相应的标识。该标识也是一个名词或名词短语,并且往往直该标识也是一个名词或名词短语,并且往往直接使用实际问题空间中的概念。这样的表示可以表接使用实际问题空间中的概念。这样的表示可以表达系统达系统/产品边界的产品边界的“一定一定”语义。语义。2424旅行社旅行社订票单订票单预定预定机票机票准备准备机票机票记帐记帐费用费用航班航班帐单帐单机票机票记帐文件记帐文件航班目录航班目录旅行社旅行社系统功能模型表示需求分析的首要任务是建立系统功能模型,需求分析的首要任务是建立系统功能模型,为此结构化分析方法给出了一种表达功能模型为此结构化分析方法给出了一种表达功能模型的工具,即数据流图(的工具,即数据流图(DataflowDiagram),),简称简称DFD图。图。(如下图:飞机票预订系统数(如下图:飞机票预订系统数据流图)据流图)2525如果把任何软件系统都视为一个如果把任何软件系统都视为一个数据变换装置,它接受各种形式的数据变换装置,它接受各种形式的输入,通过变换产生各种形式的输输入,通过变换产生各种形式的输出,那么数据流图就是一种表达待出,那么数据流图就是一种表达待建系统功能模型的工具。建系统功能模型的工具。2626建模过程建模过程指导指导 建立系统的功能模型建立系统的功能模型 -使用的工具为数据流图使用的工具为数据流图DFDDFD 首先:建立系统环境图,确定系统边界首先:建立系统环境图,确定系统边界 继之:自顶向下,逐层分解继之:自顶向下,逐层分解建立数据字典建立数据字典 -使用的工具为结构符使用的工具为结构符 定义数据流定义数据流 定义数据存储定义数据存储 定义数据项定义数据项 给出加工小说明给出加工小说明 -使用的工具可以为判定表使用的工具可以为判定表 判定树判定树2727自顶向下,逐步求精,建立系统的层次数据流图自顶向下,逐步求精,建立系统的层次数据流图为了便于管理,从为了便于管理,从0层开始就要对数据流图以及其中的加工进行编层开始就要对数据流图以及其中的加工进行编号,并在整个系统中应是惟一的。一般按下述规则为分层数据号,并在整个系统中应是惟一的。一般按下述规则为分层数据流图和图中的加工进行编号的。流图和图中的加工进行编号的。1)顶层数据流图以及其中惟一的加工均不必编号。)顶层数据流图以及其中惟一的加工均不必编号。2)由于)由于0层通常只有一个子图,因此,该子图的层号为层通常只有一个子图,因此,该子图的层号为0,而其中,而其中每一加工的编号分别为每一加工的编号分别为0.1,0.2,0.3。3)以后各层,其子图层号为上一层(父层)的加工号;而该层中)以后各层,其子图层号为上一层(父层)的加工号;而该层中加工编号为子图层号,后跟一个小数点,再加上该加工在子图加工编号为子图层号,后跟一个小数点,再加上该加工在子图中的顺序号,例如中的顺序号,例如1.1,1.2,1.3,即加工编号由相应的子,即加工编号由相应的子图号、小数点、加工在子图中的顺序号组成。图号、小数点、加工在子图中的顺序号组成。由由“父图父图”生成生成“子图子图”的一般步骤如下:的一般步骤如下:1)将)将“父图父图”的每一加工按其功能分解为若干个子加工。的每一加工按其功能分解为若干个子加工。2)将)将“父图父图”的输入流和输出流的输入流和输出流“分派分派”到相关的子加到相关的子加工工3)在各加工之间建立合理的关联,必要时引入数据存储,)在各加工之间建立合理的关联,必要时引入数据存储,使之形成一个有机的整体使之形成一个有机的整体2828问题:建立一个简化的商业自动化系统,其问题:建立一个简化的商业自动化系统,其中:中:营业员通过该系统记录每日销售的商品(营业员通过该系统记录每日销售的商品(商品名,商品编号,单价,数量,销售时间););收款员通过该系统记录收到的现金数额以及收款员通过该系统记录收到的现金数额以及购物余额;购物余额;商店经理每日统计销售额,并在必要时查看商店经理每日统计销售额,并在必要时查看某种商品的销售情况(商品名,商品编码,金额)某种商品的销售情况(商品名,商品编码,金额)结构化分析方法应用实例结构化分析方法应用实例2929简化的商业自动化系统简化的商业自动化系统营业员收款员经理销售的商品销售的商品现金额现金额现金余额现金余额销售情况销售情况日销售额日销售额查询要求查询要求建立系统的功能模型建立系统的功能模型首先:建立系统环境图,确定系统边界首先:建立系统环境图,确定系统边界 -顶层顶层DFDDFD其中:其中:1 1 数据流为:销售的商品,日销售额等数据流为:销售的商品,日销售额等 3 3个输入流,个输入流,3 3个输出流个输出流 数据源为:营业员,经理,收款员数据源为:营业员,经理,收款员 数据潭为:经理,收款员数据潭为:经理,收款员 2 2 加工名为:要建立的系统名字加工名为:要建立的系统名字3030录入、修改或删除商品信息录入、修改现金额,并计算余额查询商品销售情况计算日销售额123继之:自顶向下,逐层分解继之:自顶向下,逐层分解A A、按人或部门的功能要求,将加工、按人或部门的功能要求,将加工“打碎打碎”,形成:,形成:注:需给每一加工编号;注:需给每一加工编号;3131B B、”分派分派”数据流,形成:数据流,形成:录入、修改或删除商品信息2录入、修改现金额,并计算余额查询商品销售情况计算日销售额销售的商品销售的商品现金额现金额现金余额现金余额查询要求查询要求销售情况销售情况日销售额日销售额13其中:要根据特定的加工要求进行分派;其中:要根据特定的加工要求进行分派;保持与顶层数据流的一致;保持与顶层数据流的一致;可以不引入数据源和数据潭。可以不引入数据源和数据潭。3232录入、修改或删除商品信息录入、修改现金额,并计算余额查询商品销售情况计算日销售额销售的商品销售的商品现金额现金额现金余额现金余额查询要求查询要求销售情况销售情况日销售额日销售额销售文件销售文件123C C、引入文件,使之形成一个有机整体、引入文件,使之形成一个有机整体系统:系统:注:到一个文件,既有输入流,又有输出流,则可简化为注:到一个文件,既有输入流,又有输出流,则可简化为 ,并可不给出标识。,并可不给出标识。至此,体现精化,形成至此,体现精化,形成0 0层数据流图。层数据流图。3333查询商品销售情况计算日销售额查询要求查询要求销售情况销售情况日销售额日销售额销售文件销售文件3继续继续A A、B B、C C:自顶向下,逐层分解。:自顶向下,逐层分解。例如:加工例如:加工3 3可分解为:可分解为:判定要求查询要求查询要求3。1统计销售情况3。2计算日销售额销售文件销售文件查询要求查询要求2查询要求查询要求1销售情况销售情况日销售额日销售额加工3:*其中为什么要引入其中为什么要引入加工加工“判定要求判定要求”?3434建立数据字典建立数据字典 定义数据流定义数据流 定义数据存储定义数据存储 定义数据项定义数据项 引入:结构符引入:结构符|用于定义数据结构用于定义数据结构 AAABCB0C0B*3535定义数据字典定义数据字典该步的目标为依据系统的数据流图,定义其中该步的目标为依据系统的数据流图,定义其中包含的所有数据流和数据存储的数据结构,直到给包含的所有数据流和数据存储的数据结构,直到给出构成以上数据的各数据项的基本数据类型。出构成以上数据的各数据项的基本数据类型。数据是客体的一种表示,而且已经证明,所有客数据是客体的一种表示,而且已经证明,所有客体均可用以下体均可用以下3种基本结构表示,这种基本结构表示,这3中结构分别为中结构分别为顺序结构、选择结构和重复结构。顺序结构、选择结构和重复结构。符号符号描述描述符号符号描述描述=定义为定义为重复重复+顺序顺序m.n子界子界|选择选择3636在数据字典中,为了使定义的结构数据在数据字典中,为了使定义的结构数据便于理解和阅读,一般按便于理解和阅读,一般按3种条目来组织,种条目来组织,即数据流条目、数据存储条目和数据项条即数据流条目、数据存储条目和数据项条目。目。其中数据流条目给出其中数据流条目给出DFD图中所有数图中所有数据流的结构定义;数据存储条目给出据流的结构定义;数据存储条目给出DFD图中所有数据存储的结构定义;数据项条图中所有数据存储的结构定义;数据项条目给出所有数据项的类型定义。目给出所有数据项的类型定义。3737数据字典:、数据流:销售的商品=商品名+商品编号+单价+数量+销售时间现金额=余额=日销售额=非负实数查询要求=商品编号|日期查询要求1=商品编号查询要求2=日期销售情况=商品名+商品编号+金额、数据存贮:销售文件=销售的商品、数据项3838 给出加工小说明给出加工小说明 -使用的工具可以为判定表使用的工具可以为判定表 判定树判定树 判断表判断表 条件类别条件类别 条件组合条件组合 操作操作 操作执行操作执行 例如:例如:考试总分考试总分 =620 =620 =620 =620 ec,d-ee-fe-ff-g,hf-g,hh-yh-yput yput yg-xg-xput xput xx-zx-zput zput zget aget aget bget bb-db-da-ca-ceeg,hhgzzxxgyyhdbcacdeefg,hfxab6969事务设计事务设计事务中心事务中心输入模块输入模块路径路径1路径路径2输出模块输出模块aycgbfc-ecee-gegb-dbdd-fdf7070事务型数据流图所描述系统的数据事务型数据流图所描述系统的数据处理模式为处理模式为“集中集中-发散发散”式。式。在实际应用中,任何软件系统从本在实际应用中,任何软件系统从本质上来说都是信息的变换装置,因质上来说都是信息的变换装置,因此,原则上所有的数据流图都可以此,原则上所有的数据流图都可以归为变换型。但是,如果其中某些归为变换型。但是,如果其中某些部分具有事务型数据流图的特征,部分具有事务型数据流图的特征,那么就可以把这些部分按照事务型那么就可以把这些部分按照事务型数据流图予以处理。数据流图予以处理。7171(1)变换设计。变换设计是在需求规约)变换设计。变换设计是在需求规约的基础上,经过一系列设计步骤,将的基础上,经过一系列设计步骤,将变换型数据流图转换为系统的模块结变换型数据流图转换为系统的模块结构图。构图。(2)事务设计。尽管在任何情况下都可)事务设计。尽管在任何情况下都可以使用变换设计将一个系统的以使用变换设计将一个系统的DFD图图转换为模块结构图,但是,当数据流转换为模块结构图,但是,当数据流图具有明显的事务型特征时,也就是图具有明显的事务型特征时,也就是有一个明显的事务处理中心时,则比有一个明显的事务处理中心时,则比较适宜采用事务设计。较适宜采用事务设计。7272总体设计分为总体设计分为3个阶段。个阶段。第一阶段为初第一阶段为初始设计始设计,在对给定的数据流图进行复审和,在对给定的数据流图进行复审和精化的基础上,将其转换为初始的模块结精化的基础上,将其转换为初始的模块结构图。构图。第二阶段为精化设计第二阶段为精化设计,依据模块,依据模块“高内聚低耦合高内聚低耦合”的原则,精化初始的模块的原则,精化初始的模块结构图,并设计其中的全局数据结构和每结构图,并设计其中的全局数据结构和每一模块的接口。一模块的接口。第三阶段为复审阶段第三阶段为复审阶段,对,对前两个阶段所得到的高层软件结构进行复前两个阶段所得到的高层软件结构进行复审,必要时还可能需要对该软件结构做一审,必要时还可能需要对该软件结构做一些精化工作,这对软件的一些性质,特别些精化工作,这对软件的一些性质,特别是对软件质量的提高将产生非常大的影响。是对软件质量的提高将产生非常大的影响。7373 第二步:如何将初始的第二步:如何将初始的MSDMSD转化为最终可供详转化为最终可供详 细设计使用的细设计使用的MSD MSD 基于模块化原理基于模块化原理-高内聚高内聚 低耦合低耦合,给出一些设计规则经验规则给出一些设计规则经验规则,用于精化初始的用于精化初始的MSDMSD 体现设计人员的创造体现设计人员的创造 7474模块化及启发式规则模块化及启发式规则该步的目标是:基于模块该步的目标是:基于模块“高内聚低耦合高内聚低耦合”的原的原则,提高模块的独立性。则,提高模块的独立性。模块模块是执行一个特殊任务的一个过程以及相是执行一个特殊任务的一个过程以及相关的数据结构。关的数据结构。模块通常由两部分组成模块通常由两部分组成。一部分一部分是是接接口口,给出可由其他模块或例程访问的常量、变量、函,给出可由其他模块或例程访问的常量、变量、函数等。接口不但可用于刻画各个模块之间的连接,以数等。接口不但可用于刻画各个模块之间的连接,以体现其功能,而且还对其他模块的设计和使用者提供体现其功能,而且还对其他模块的设计和使用者提供了一定的可见性,模块的了一定的可见性,模块的另一部分另一部分是是模块体模块体,是接口,是接口的实现。因此,模块化自然涉及两个问题:一是如何的实现。因此,模块化自然涉及两个问题:一是如何将系统分解成软件模块,二是如何设计模块。将系统分解成软件模块,二是如何设计模块。结构化软件设计是一种典型的模块化方结构化软件设计是一种典型的模块化方法,即把一个待开发的软件分解成若干简单的、具有法,即把一个待开发的软件分解成若干简单的、具有高内聚低耦合的模块,这一过程称为模块化。模块化高内聚低耦合的模块,这一过程称为模块化。模块化是系统设计基本原理是系统设计基本原理/原则之一。原则之一。7575 模块的独立程度可以由两个定性标准度量,这模块的独立程度可以由两个定性标准度量,这两个标准分别称为内聚和耦合。耦合衡量不同模块两个标准分别称为内聚和耦合。耦合衡量不同模块彼此间互相依赖彼此间互相依赖(连接连接)的紧密程度;内聚衡量一个的紧密程度;内聚衡量一个模块内部各个元素彼此结合的紧密程度。以下分别模块内部各个元素彼此结合的紧密程度。以下分别详细阐述。详细阐述。7676耦合性:耦合性:耦合性:耦合性:耦合是对一个软件结构内不同模块耦合是对一个软件结构内不同模块之间互连程度的度量。耦合强弱取决于之间互连程度的度量。耦合强弱取决于模块间接口的复杂程度,进入或访问一模块间接口的复杂程度,进入或访问一个模块的点,以及通过接口的数据个模块的点,以及通过接口的数据。7777耦合:不同模块之间相互依赖程度的度量。耦合:不同模块之间相互依赖程度的度量。耦合类型:耦合类型:内容耦合:内容耦合:公共耦合:两个以上的模块共同引用一个全局数据项。公共耦合:两个以上的模块共同引用一个全局数据项。控制耦合:一个模块向另一模块传递一个控制信号,控制耦合:一个模块向另一模块传递一个控制信号,接受信号的模块将依据该信号值进行必要的活动。接受信号的模块将依据该信号值进行必要的活动。标记耦合:两个模块至少有一个通过界面传递的公共标记耦合:两个模块至少有一个通过界面传递的公共 有结构的参数。有结构的参数。数据耦合:模块间通过参数传递基本类型的数据。数据耦合:模块间通过参数传递基本类型的数据。7878在软件设计中应该追求尽可能松散耦合的系在软件设计中应该追求尽可能松散耦合的系统。在这样的系统中可以研究、测试或维护任统。在这样的系统中可以研究、测试或维护任何一个模块,而不需要对系统的其他模块有很何一个模块,而不需要对系统的其他模块有很多了解。此外,由于模块间联系简单,发生在多了解。此外,由于模块间联系简单,发生在一处的错误传播到整个系统的可能性就很小。一处的错误传播到整个系统的可能性就很小。因此,模块间的耦合程度强烈影响系统的可理因此,模块间的耦合程度强烈影响系统的可理解性、可测试性、可靠性和可维护性。解性、可测试性、可靠性和可维护性。如果两个模块中的每一个都能独立地工作而如果两个模块中的每一个都能独立地工作而不需要另一个模块的存在,那么它们彼此完全不需要另一个模块的存在,那么它们彼此完全独立,这意味着模块间无任何连接,耦合程度独立,这意味着模块间无任何连接,耦合程度最低。但是,在一个软件系统中不可能所有模最低。但是,在一个软件系统中不可能所有模块之间都没有任何连接。块之间都没有任何连接。7979无直接耦合无直接耦合无直接耦合无直接耦合-即两个模块之间没有直接的即两个模块之间没有直接的即两个模块之间没有直接的即两个模块之间没有直接的关系,它们分别从属于不同模块的控制和调关系,它们分别从属于不同模块的控制和调关系,它们分别从属于不同模块的控制和调关系,它们分别从属于不同模块的控制和调用,它们之间不传递任何消息。用,它们之间不传递任何消息。用,它们之间不传递任何消息。用,它们之间不传递任何消息。它们之间的联系完全是通过主模块的控制和它们之间的联系完全是通过主模块的控制和它们之间的联系完全是通过主模块的控制和它们之间的联系完全是通过主模块的控制和调用来实现的调用来实现的调用来实现的调用来实现的 模块的耦合性最弱,独立性最高。模块的耦合性最弱,独立性最高。模块的耦合性最弱,独立性最高。模块的耦合性最弱,独立性最高。8080数据耦合数据耦合-如果两个模块彼此间通过参数交换如果两个模块彼此间通过参数交换信息,而且交换的信息仅仅是数据的耦合。信息,而且交换的信息仅仅是数据的耦合。数据耦合是低耦合。系统中至少必须存在这数据耦合是低耦合。系统中至少必须存在这种耦合,因为只有当某些模块的输出数据作为种耦合,因为只有当某些模块的输出数据作为另一些模块的输入数据时,系统才能完成有价另一些模块的输入数据时,系统才能完成有价值的功能。一般说来,一个系统内可以只包含值的功能。一般说来,一个系统内可以只包含数据耦合。数据耦合。标记耦合标记耦合-指两个模块间传递数据结构。如高指两个模块间传递数据结构。如高级语言中的数组名、记录名、文件名等这些名级语言中的数组名、记录名、文件名等这些名字即标记,其实传递的是这个数据结构的地址。字即标记,其实传递的是这个数据结构的地址。8181控制耦合控制耦合-指一个模块调用另一个模块时,指一个模块调用另一个模块时,传递的是控制变量(如开关、标志等),被调传递的是控制变量(如开关、标志等),被调模块通过该控制变量的值有选择地执行块内某模块通过该控制变量的值有选择地执行块内某一功能。一功能。即传递的信息中有控制信息即传递的信息中有控制信息(尽管有时这种控尽管有时这种控制信息以数据的形式出现制信息以数据的形式出现)的耦合。的耦合。两个模块间存在调用关系,传递控制标志。两个模块间存在调用关系,传递控制标志。控制耦合是中等程度的耦合,它增加了系统控制耦合是中等程度的耦合,它增加了系统的复杂程度。控制耦合往往是多余的,在把模的复杂程度。控制耦合往往是多余的,在把模块适当分解之后通常可以用数据耦合代替它。块适当分解之后通常可以用数据耦合代替它。8282当两个或多个模块通过一个公共数据环境当两个或多个模块通过一个公共数据环境相互作用时,它们之间的耦合称为相互作用时,它们之间的耦合称为公共耦合公共耦合。公共环境可以是全程变量、共享的通信区、公共环境可以是全程变量、共享的通信区、内存的公共覆盖区、任何存储介质上的文件、内存的公共覆盖区、任何存储介质上的文件、物理设备等等。物理设备等等。公共耦合指两个模块间存在共享公共数据。公共耦合指两个模块间存在共享公共数据。公共耦合的复杂程序随耦合模块的个数增加公共耦合的复杂程序随耦合模块的个数增加而增加。而增加。8383公共耦合公共耦合的复杂程度随耦合的模块个数而变的复杂程度随耦合的模块个数而变化,当耦合的模块个数增加时复杂程度显著增化,当耦合的模块个数增加时复杂程度显著增加。如果只有两个模块有公共环境,那么这种加。如果只有两个模块有公共环境,那么这种耦合有下面两种可能:耦合有下面两种可能:(1)一个模块往公共环境送数据,另一个模块一个模块往公共环境送数据,另一个模块从公共环境取数据。这是数据耦合的一种形式,从公共环境取数据。这是数据耦合的一种形式,是比较松散的耦合。是比较松散的耦合。(2)两个模块都既往公共环境送数据又从里面两个模块都既往公共环境送数据又从里面取数据,这种耦合比较紧密,介于数据耦合和取数据,这种耦合比较紧密,介于数据耦合和控制耦合之间。控制耦合之间。如果两个模块共享的数据很多,都通过参数如果两个模块共享的数据很多,都通过参数传递可能很不方便,这时可以利用公共耦合。传递可能很不方便,这时可以利用公共耦合。8484最高程度的耦合是最高程度的耦合是内容耦合内容耦合。如果出现下列。如果出现下列情况之一,两个模块间就发生了内容耦合:情况之一,两个模块间就发生了内容耦合:一个模块访问另一个模块的内部数据;一个模块访问另一个模块的内部数据;一个模块不通过正常入口而转到另一个模块的一个模块不通过正常入口而转到另一个模块的内部;内部;两个模块有一部分程序代码重叠两个模块有一部分程序代码重叠(只可能出现在只可能出现在汇编程序中汇编程序中);一个模块有多个入口一个模块有多个入口(这意味着一个模块有几种这意味着一个模块有几种功能功能)。应该坚决避免使用内容耦合。事实上许多高级应该坚决避免使用内容耦合。事实上许多高级程序设计语言已经设计成不允许在程序中出现程序设计语言已经设计成不允许在程序中出现任何形式的内容耦合。任何形式的内容耦合。8585内容耦合内容耦合是最高程度的耦合,也是最是最高程度的耦合,也是最差的耦合。当一个模块直接使用另一差的耦合。当一个模块直接使用另一个模块的内部数据,或通过非正常入个模块的内部数据,或通过非正常入口而转入另一个模块内部。口而转入另一个模块内部。8686耦合是指不同模块之间相互依赖程度耦合是指不同模块之间相互依赖程度的度量。高耦合(紧密耦合)是指两的度量。高耦合(紧密耦合)是指两个模块之间存在着很强的依赖;低耦个模块之间存在着很强的依赖;低耦合(松散耦合)是指两个模块之间存合(松散耦合)是指两个模块之间存在一定依赖;无耦合是指模块之间根在一定依赖;无耦合是指模块之间根本没有任何关系。本没有任何关系。如果模块之间必须存在耦合,就尽量如果模块之间必须存在耦合,就尽量使用数据耦合,少用控制耦合,限制使用数据耦合,少用控制耦合,限制公共耦合的范围,尽量避免使用使用公共耦合的范围,尽量避免使用使用内容耦合。内容耦合。8787 降低模块之间耦合度的措施;降低模块之间耦合度的措施;降低模块之间耦合度的措施;降低模块之间耦合度的措施;1 在耦合方式降低模块之间接口的复杂在耦合方式降低模块之间接口的复杂程度程度 2 在传递信息类型上尽量使用数据耦在传递信息类型上尽量使用数据耦合,避免控制耦合,慎用或有控制使用合,避免控制耦合,慎用或有控制使用公共耦合公共耦合8888内聚性:内聚性:内聚性:内聚性:内聚标志一个模块内各个元素彼此结合的紧内聚标志一个模块内各个元素彼此结合的紧密程度,它是信息隐藏和局部化概念的自然密程度,它是信息隐藏和局部化概念的自然扩展。简单地说,理想内聚的模块只做一件扩展。简单地说,理想内聚的模块只做一件事情。事情。设计时应该力求做到高内聚,通常中等程度设计时应该力求做到高内聚,通常中等程度的内聚也是可以采用的,而且效果和高内聚的内聚也是可以采用的,而且效果和高内聚相差不多;但是,低内聚很坏,不要使用。相差不多;但是,低内聚很坏,不要使用。8989内聚:一个模块之内各成分之间相互依赖程度的度量。内聚:一个模块之内各成分之间相互依赖程度的度量。内聚类型:内聚类型:偶然内聚:一个模块之内各成分之间没有任何关系。偶然内聚:一个模块之内各成分之间没有任何关系。逻辑内聚:几个逻辑上相关的功能放在同一模块中。逻辑内聚:几个逻辑上相关的功能放在同一模块中。时间内聚:一个模块完成的功能必须在同一时间内完成,而时间内聚:一个模块完成的功能必须在同一时间内完成,而 这些功能只是因为时间因素关联在一起。这些功能只是因为时间因素关联在一起。过程内聚:处理成分必须以特定的次序执行。过程内聚:处理成分必须以特定的次序执行。通信内聚:各成分都操作在同一数据集或生成同一数据集。通信内聚:各成分都操作在同一数据集或生成同一数据集。顺序内聚:各成分与一个功能相关,且一个成分的输出作为顺序内聚:各成分与一个功能相关,且一个成分的输出作为 另一成分的输入。另一成分的输入。功能内聚:模块的所有成分对完成单一功能是最基本的,且功能内聚:模块的所有成分对完成单一功能是最基本的,且 该模块对完成这一功能而言是充分必要的。该模块对完成这一功能而言是充分必要的。90909191 低内聚:低内聚:偶然内聚偶然内聚-指各个处理单元之间没有直接关系。指各个处理单元之间没有直接关系。如果一个模块完成一组任务,这些任务彼此如果一个模块完成一组任务,这些任务彼此间即使有关系,关系也是很松散的。间即使有关系,关系也是很松散的。有时在写完一个程序之后,发现一组语句在有时在写完一个程序之后,发现一组语句在两处或多处出现,于是把这些语句作为一个模块两处或多处出现,于是把这些语句作为一个模块以节省内存,这样就出现了偶然内聚的模块。以节省内存,这样就出现了偶然内聚的模块。它使该模块能执行不同的功能。它使该模块能执行不同的功能。当几个模块内凑巧有一些程序段代码相同,又当几个模块内凑巧有一些程序段代码相同,又没有明确表现出独立的功能,把这些代码独立出没有明确表现出独立的功能,把这些代码独立出来建立的模块即为偶然内聚模块。它是内聚程度来建立的模块即为偶然内聚模块。它是内聚程度最低的模块。缺点是模块的内容不易理解,不易最低的模块。缺点是模块的内容不易理解,不易修改和维护。修改和维护。9292 逻辑内聚逻辑内聚-如果一个模块完成的任务在逻辑上属如果一个模块完成的任务在逻辑上属于相同或相似的一类。于相同或相似的一类。这种模块把几种相关的功能组合在一起,每次被这种模块把几种相关的功能组合在一起,每次被调用时,由传送给模块的控制型参数来确定该模块调用时,由传送给模块的控制型参数来确定该模块应执行哪一种功能。逻辑内聚模块比偶然内聚模块应执行哪一种功能。逻辑内聚模块比偶然内聚模块的内聚程度要高。因为它表明了各部分之间在功能的内聚程度要高。因为它表明了各部分之间在功能上的相关关系。如消息循环中的各个上的相关关系。如消息循环中的各个Case,根据不,根据不同的逻辑标志,调用想应该的块。同的逻辑标志,调用想应该的块。9393 时间内聚时间内聚-如果一个模块包含的任务必须在同如果一个模块包含的任务必须在同一段时间内执行。一段时间内执行。这种模块大多为多功能模块,但要求模块的这种模块大多为多功能模块,但要求模块的各个功能必须在同一时间段内执行。例如初始化各个功能必须在同一时间段内执行。例如初始化模块和终止模块。时间内聚模块比逻辑内聚模块模块和终止模块。时间内聚模块比逻辑内聚模块的内聚程度又稍高一些。在一般情形下,各部分的内聚程度又稍高一些。在一般情形下,各部分可以以任意的顺序执行,所以它的内部逻辑更简可以以任意的顺序执行,所以它的内部逻辑更简单。单。9494 中内聚:中内聚:中内聚:中内聚:通信内聚通信内聚-模块中所有元素都使用同一个输模块中所有元素都使用同一个输入数据和入数据和(或或)产生同一个输出数据。产生同一个输出数据。指模块内所有处理元素都在同一个数据指模块内所有处理元素都在同一个数据结构上操作(有时称之为信息内聚),或者结构上操作(有时称之为信息内聚),或者指各处理使用相同的输入数据或者产生相同指各处理使用相同的输入数据或者产生相同的输出数据。的输出数据。9595 高内聚:高内聚:高内聚:高内聚:顺序内聚顺序内聚-如果一个模块内的处理元素和同如果一个模块内的处理元素和同一个功能密切相关,而且这些处理必须顺序一个功能密切相关,而且这些处理必须顺序执行执行(通常一个处理元素的输出数据作为下通常一个处理元素的输出数据作为下一个处理元素的输入数据一个处理元素的输入数据)。根据数据流图划分模块时,通常得到顺根据数据流图划分模块时,通常得到顺序内聚的模块,这种模块彼此间的连接往往序内聚的模块,这种模块彼此间的连接往往比较简单。比较简单。9696功能内聚功能内聚-这是最高程度的内聚,指模块内这是最高程度的内聚,指模块内所有元素共同完成一个功能,缺一不可。所有元素共同完成一个功能,缺一不可。模块内所有处理元素属于一个整体,完成模块内所有处理元素属于一个整体,完成一个单一的功能。一个单一的功能。与其他模块的耦合是最弱的。与其他模块的耦合是最弱的。9797功能内聚功能内聚10分分时间内聚时间内聚3分分顺序内聚顺序内聚9分分逻辑内聚逻辑内聚1分分通信内聚通信内聚7分分偶然内聚偶然内聚0分分 事实上,没有必要精确确定内聚的级别。事实上,没有必要精确确定内聚的级别。重要的是设计时力争做到高内聚,并且能够重要的是设计时力争做到高内聚,并且能够辨认出低内聚的模块,有能力通过修改设计辨认出低内聚的模块,有能力通过修改设计提高模块的内聚程度降低模块间的耦合程度,提高模块的内聚程度降低模块间的耦合程度,从而获得较高的模块独立性。从而获得较高的模块独立性。9898内聚是指一个模块内部各成分之间内聚是指一个模块内部各成分之间相互关联程度的度量。高内聚是指相互关联程度的度量。高内聚是指一个模块中各部分之间存在着很强一个模块中各部分之间存在着很强的依赖;低内聚是指一个模块中各的依赖;低内聚是指一个模块中各部分之间存在较少的依赖。部分之间存在较少的依赖。9999 内聚和耦合是密切相关的,模块内内聚和耦合是密切相关的,模块内的高内聚往往意味着模块间的松耦合。的高内聚往往意味着模块间的松耦合。内聚和耦合都是进行模块化设计的有内聚和耦合都是进行模块化设计的有力工具,但是实践表明内聚更重要,力工具,但是实践表明内聚更重要,应该把更多注意力集中到提高模块的应该把更多注意力集中到提高模
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!