您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > 软件工程导论(第五版)课件-第56章
1第五章总体设计&第六章详细设计一、复习要求1.了解软件概要设计(总体设计)和详细设计的内容。2、了解软件设计的基本原理2.掌握软件结构的设计工具(HIPO)。3.掌握结构化设计工具。(SC、流程图、盒图、PAD图PDL)4.了解Jackson系统开发方法二、内容提要1.软件设计的过程(1)软件设计在开发阶段中的重要性在软件需求分析阶段已经完全弄清楚了软件的各种需求,较好地解决了要让所开发的软件“做什么”的问题,并已在软件需求规格说明和数据要求规格说明中详尽和充分地阐明了这些需求。下一步就要着手实现软件的需求,即要着手解决“怎么做”的问题。分析模型中的每一个成份都提供了建立设计模型所需的信息。软件设计的信息流如图所示。根据用数据、功能和行为模型表示的软件需求,采用某种设计方法进行数据设计、体系结构设计、接口设计和过程设计。图将分析模型转换为软件设计数据设计将实体―关系图中描述的对象和关系,以及数据词典中描述的详细数据内容转化为数据结构的定义。体系结构设计定义软件系统各主要成份之间的关系。接口设计根据数据流图定义软件内部各成份之间、软件与其它协同系统之间及软件与用户之间的交互机制。过程设计则是把结构成份转换成软件的过程性描述。在编码步骤,根据这种过程性描述,生成源程序代码,然后通过测试最终得到完整有效的软件。软件设计是开发阶段中最重要的步骤,它是软件开发过程中质量得以保证的关键步骤。数据词典数据流图实体关系图状态转换图加工控制规规格格说说明明数据对象描述过程设计接口设计体系结构设计数据设计2(2)软件设计的过程从工程管理的角度来看,软件设计分两步完成。首先做概要设计,将软件需求转化为数据结构和软件的系统结构,并建立接口。然后是详细设计,即过程设计。通过对结构表示进行细化,得到软件的详细的数据结构和算法。McGlanghlin给出在将需求转换为设计时判断设计好坏的三条特征:设计必须实现分析模型中描述的所有显式需求,必须满足用户希望的所有隐式需求。设计必须是可读、可理解的,使得将来易于编程、易于测试、易于维护。设计应从实现角度出发,给出与数据、功能、行为相关的软件全貌。以上三点就是软件设计过程的目标。为达到这些目标,必须建立衡量设计的技术标准。①设计出来的结构应是分层结构,从而建立软件成份之间的控制。②设计应当模块化,从逻辑上将软件划分为完成特定功能或子功能的构件。③设计应当既包含数据抽象,也包含过程抽象。④设计应当建立具有具有独立功能特征的模块。⑤设计应当建立能够降低模块与外部环境之间复杂连接的接口。⑥设计应能根据软件需求分析获取的信息,建立可驱动可重复的方法。软件设计过程根据基本的设计原则,使用系统化的方法和完全的的设计评审来建立良好的设计。三、例题分析3一、选择题1.SD方法的设计总则是(C、D)。2个A)程序简洁、操作方便B)模块调用少C)模块内聚性强D)模块之间耦合度低2.软件设计的主要任务是(A、B、D)。3个A)将分析阶段获得的需求说明转换为计算机中可实现的系统B)完成系统的数据结构和程序结构设计C)完成模块的编码和测试D)对模块内部的过程进行设计3.从工程管理的角度来看,软件设计分两步完成(D)。A)①系统分析②模块设计B)①详细设计②功能设计C)①模块设计②详细设计D)①总体设计②详细设计4.模块独立性准则由以下定性指标来衡量(B、D)。A)分解度B)耦合度C)屏蔽性D)内聚性5.软件结构使用的图形工具,一般采用(C)图。A)DFDB)PADC)SCD)E-R6.PDL是下列的什么语言(C)。A)高级程序设计语言B)中级程序设计语言C)伪码D)低级程序设计语言7.结构化程序设计的一种基本方法是(D)。A)筛选法B)递归法C)迭代法D)逐步求精法二、判断题1.划分模块可以降低软件的复杂度和工作量,所以应该将模块分得越小越好。(×)2.在网状结构中任何两个模块都是平等的,没有从属关系,所以在软件开发过程中常常被使用。(×)3.信息隐蔽原则有利于提高模块的内聚性。(√)4.中心变换型的DFD图可看成是对输入数据进行转换而得到输出数据的处理,因此可以使用事务分析技术得到初始的模块结构图。(×)5.SD法是一种面向数据结构的设计方法,强调程序结构与问题结构相对应。(×)6.JACKSON方法是以数据流、数据封闭性准则逐层分解的。(×)三、简答题1.模块内联系和模块间联系有哪些种类?答:块间联系的各种类型的划分,从以下3方面考虑:●按块间联系的方式(可分为直接引用与过程调用);●按块间共用信息的作用(可分为数据型、控制型与混合型);●按块间共用的信息数量多少(信息多联系紧密)。(1)块间联系的类型,按照耦合度由大到小分为:4内容型:直接引用另一模块的内部信息;公共型:两个模块引用共同的全程数据区;控制型:模块间传送的信息用于控制模块的内部逻辑;复合型:模块间传送复合的数据结构;数据型:模块间传送单个数据项。(2)块内联系的类型,按照内聚性从小到大分为:偶然型:模块内部没有必然联系;逻辑型:逻辑上相似的功能放进一个模块;瞬时型:将同时执行的语句放在一个模块;通信型:模块中的各部分引用共同的数据;顺序型:模块中一部分的输出是另一部分的收入;功能型:模块中刚好包含了完成一个基本任务所必需的成分。2.分析以下DFD图,说明属于哪种类型的DFD图,请确定其主加工。并按照相应的变换将其转换为初始的模块结构图。参考答案:(略)3.按照“降低块间联系,提高块内联系”的设计总则对模块进行修改,具体从哪些方面进行改进?解:(1)尽可能建立功能模块;(2)消除重复功能;(3)模块的作用范围与控制范围,即当作用范围为控制范围的子集时,才能获得较低的块间联系;(4)模块的大小适当;(5)模块的扇入扇出数不宜太多。4.请将下述有关模块独立性的各种模块之间的耦合,按其耦合度从低到高排列起来。①内容耦合②控制耦合③非直接耦合④标记耦合⑤数据耦合⑥外部耦合⑦公共耦合答案:③、⑤、④、②、⑥、⑦、①5.请将下述有关模块独立性的各种模块内聚,按其内聚度(强度)从高到低排列起来。①巧合内聚②时间内聚③功能内聚④通信内聚⑤逻辑内聚⑥信息内聚⑦过程内聚答案:③、⑥、④、⑦、②、⑤、①56.如何理解模块独立性?答:如果两个模块互相独立,那么对其中一个模块进行编码、测试或修改时可以完全不考虑另一个模块对它的影响。因此,用模块独立性作为衡量模块结构是否容易编码、容易测试、容易修改的标准是合适的。但是,在一个系统的模块结构中没有哪两个模块可以完全独立,所以,要力争模块之间尽量独立,以得到一个质量良好的模块结构。7.模块独立性与信息隐蔽(反映模块化有效程度的属性)有何关系?答:所谓“模块独立性”是指软件系统中每个模块只涉及软件要求的具体的子功能,而和软件系统中其它的模块的接口是简单的。所谓的“信息隐蔽”是指每个模块的实现细节对于其它模块来说是隐蔽的。也就是说,模块中所包含的信息(包括数据和过程)不允许其它不需要这些信息的模块使用。如果软件系统做到了信息隐蔽,即定义和实施了对模块的过程细节和局部数据结构的存取限制,那么这些模块相互间的接口就是简单的。这组模块的独立性就比较强。事实上,衡量模块独立性的一个准则就是模块内聚,达到信息隐蔽的模块是信息内聚模块,它是高内聚情形,模块独立性当然很强了。8.概要设计的基本任务是什么?软件设计是一个把软件需求转换为软件表示的过程。最初这种表示只是描述了软件的总体结构,称为概要设计。概要设计的基本任务包括:软件结构的设计、总体数据结构的设计、接口设计、界面设计、编写概要设计文档、概要设计评审。9.详细设计的基本任务?10.下面是两个程序流程图,试分别用PAD表示之,并计算它们的McCabe复杂性度量。STARTABQENDTFSTARTABPQFTENDFFTTP6答案:对应的N-S图如下。对应PAD图如下。McCabe复杂性度量都为3。whilePABuntilQ设置Q的值为“真(T)”until(notP)BTFQASTARTSTARTwhilePAuntilQBENDEND设置Q的值为“T”until(notP)QAB
本文标题:软件工程导论(第五版)课件-第56章
链接地址:https://www.777doc.com/doc-2011345 .html