结构化设计方法.ppt
《结构化设计方法.ppt》由会员分享,可在线阅读,更多相关《结构化设计方法.ppt(121页珍藏版)》请在三一办公上搜索。
1、第四章 结构化设计方法,第4章 结构化设计方法,软件设计的概念及原则结构化设计体系结构设计接口设计数据设计过程设计软件设计规格说明,4.1 软件设计的概念及原则,软件设计的概念 设计是一项核心的工程活动。在20世纪90年代早期,Lotus 1-2-3的发明人Mitch Kapor在Dr.Dobbs杂志上发表了“软件设计宣言”,其中指出:“什么是设计?设计是你站在两个世界技术世界和人类的目标世界而你尝试将这两个世界结合在一起”。,4.1 软件设计的概念及原则,软件设计的概念 罗马建筑批评家 Vitruvius 提出了这样一个观念:“设计良好的建筑应该展示出坚固、适用和令人赏心悦目”。,4.1 软
2、件设计的概念及原则,软件设计的原则(1)分而治之分而治之是人们解决大型复杂问题时通常采用的策略。将大型复杂的问题分解为许多容易解决的小问题,原来的问题也就容易解决了。软件的体系结构设计、模块化设计都是分而治之策略的具体表现。,分而治之,尽管模块分解可以简化要解决的问题,但模块分解并不是越小越好。模块规模的减小,虽然可使开发单个模块的成本减少,但随着模块数目增加,模块之间关系的复杂程度也会增加,设计模块间接口所需要的工作量也将增加,如图所示:,4.1 软件设计的概念及原则,(2)模块独立性模块的独立性是指软件系统中每个模块只涉及软件要求的具体的子功能,而和软件系统中其他的模块的接口是简单的。例如
3、,一个模块只具有单一的功能且与其他模块没有太多的联系,那么,我们则称此模块具有模块独立性。一般采用两个准则度量模块独立性。即模块间的耦合和模块的内聚。,耦合与内聚,耦合:是模块间相对独立性(互相连接的紧密程度)的度量。模块之间连接越紧密、联系越多,耦合性就越高,则独立性就越弱。内聚:是模块功能强度(模块内部元素彼此结合的紧密程度)的度量。一般,模块内部各元素间内聚性越高,相对与其它模块的耦合性就会降低,而独立性就越强。问题:模块和包是什么关系?,4.1 软件设计的概念及原则,(3)提高抽象层次抽象是指忽视一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。当我们进行软件设
4、计时,设计开始时应尽量提高软件的抽象层次,按抽象级别从高到低进行软件设计。,4.1 软件设计的概念及原则,(4)复用性设计复用是指同一事物不做修改或稍加修改就可以多次重复使用。将复用的思想用于软件开发,称为软件复用。我们将软件的可重用部分称为软件构件。构造新的软件系统时不必从零做起,可以直接使用已有的软构件即可组装(或加以合理修改)成新的系统。,4.1 软件设计的概念及原则,(5)灵活性设计保证软件灵活性设计的关键是抽象。面向对象系统中的类结构类似一座金字塔,越接近金字塔的顶端,抽象程度就越高。“抽象”的反义词是“具体”。理想情况下,一个系统的任何代码、逻缉、概念在这个系统中都应该是唯一的,也
5、就是说不存在重复的代码。,4.1 软件设计的概念及原则,在设计中引入灵活性的方法有:降低耦合并提高内聚(易于提高替换能力);建立抽象(创建有多态操作的接口和父类);不要将代码写死(消除代码中的常数);抛出异常(由操作的调用者处理异常);使用并创建可复用的代码。,4.2 结构化设计,结构化设计的任务结构化设计与结构化分析的关系模块结构及表示数据结构及表示,4.2.1 软件设计的任务,软件设计的主要任务是要解决如何做的问题。在需求分析的基础上,建立各种设计模型,并通过对设计模型的分析和评估,来确定这些模型是否能够满足需求。软件设计是将用户需求准确地转化成为最终的软件产品的唯一途径,在需求到构造之间
6、起到了桥梁作用。在设计阶段,往往存在多种设计方案,通常需要在多种设计方案之中进行决策和折中。,4.2.1 软件设计的任务,软件设计的阶段与任务从工程管理的角度,可以将软件设计分为概要设计阶段和详细设计阶段。从技术的角度,传统的结构化方法将软件设计划分为体系结构设计、数据设计、接口设计和过程设计4部分;面向对象方法则将软件设计划分为体系结构设计、类设计/数据设计、接口设计和构件级设计4部分。,4.2.1 软件设计的任务,软件设计的阶段与任务从管理和技术两个不同的角度对设计的认识。,4.2.1 软件设计的任务,软件设计的阶段与任务体系结构设计:体系结构设计定义软件的主要结构元素及其之间的关系。接口
7、设计:接口设计描述用户界面,软件和其他硬件设备、其他软件系统及使用人员的外部接口,以及各种构件之间的内部接口。数据设计:传统方法主要根据需求阶段所建立的实体关系图(ER图)来确定软件涉及的文件系统的结构及数据库的表结构。,4.2.1 软件设计的任务,软件设计的阶段与任务过程设计:过程设计的主要工作是确定软件各个组成部分内的算法及内部数据结构,并选定某种过程的表达形式来描述各种算法。,4.2.2 结构化设计与结构化分析的关系,结构化分析的结果为结构化设计提供了最基本的输入信息。两者的关系如图所示。,4.2.2 结构化设计与结构化分析的关系,结构化设计方法的实施要点(1)研究、分析和审查数据流图。
8、(2)根据数据流图决定问题的类型:变换型和事务型。针对两种不同的类型分别进行分析处理。(3)由数据流图推导出系统的初始结构图。(4)利用一些启发式原则来改进系统的初始结构图,直到得到符合要求的结构图为止。(5)根据分析模型中的实体关系图和数据字典进行数据设计,包括数据库设计或数据文件的设计。(6)在上面设计的基础上,并依据分析模型中的加工规格说明、状态转换图进行过程设计。(7)制定测试计划。,4.2.3 模块结构及表示,一般通过功能划分过程来完成软件结构设计。功能划分过程从需求分析确立的目标系统的模型出发,对整个问题进行分割,使其每一部分用一个或几个软件模块加以解决,整个问题就解决了。,4.2
9、.3 模块结构及表示,模块一个软件系统通常由很多模块组成,结构化程序设计中的函数和子程序都可称为模块,它是程序语句按逻辑关系建立起来的组合体。模块用矩形框表示,并用模块的名字标记它。,4.2.3 模块结构及表示,模块的分类,4.2.3 模块结构及表示,模块的结构模块结构最普通的形式就是树状结构和网状结构,如图所示。,4.2.3 模块结构及表示,结构图结构图(structure chart,SC)是精确表达模块结构的图形表示工具。(1)模块的调用关系和接口:在结构图中,两个模块之间用单向箭头连接。(2)模块间的信息传递:当一个模块调用另一个模块时,调用模块把数据或控制信息传送给被调用模块,以使被
10、调用模块能够运行。,4.2.3 模块结构及表示,结构图模块间的调用关系和接口表示,4.2.3 模块结构及表示,结构图(3)条件调用和循环调用:当模块A有条件地调用另一个模块B时,在模块A的箭头尾部标以一个菱形符号;当一个模块A反复地调用模块C和模块D时,在调用箭头尾部则标以一个弧形符号。,4.2.3 模块结构及表示,结构图(4)结构图的形态特征。在图中,上级模块调用下级模块,它们之间存在主从关系。,相关概念:宽度、深度、扇入、扇出。,深度:模块层次数,此图深度为 5,宽度:同一层最大模块数,此图宽度为 7,扇出:模块直接调用下属模块的数量。,扇入:调用某一模块的调用模块数量。,4.2.4 数据
11、结构及表示,数据结构是数据的各个元素之间逻辑关系的一种表示。数据结构设计应确定数据的组织、存取方式、相关程度,以及信息的不同处理方法。数据结构的组织方法和复杂程度可以灵活多样,但典型的数据结构种类是有限的,它们是构成一些更复杂结构的基本构件块。,4.2.4 数据结构及表示,典型的数据结构,4.3 体系结构设计,基于数据流方法的设计过程典型的数据流类型和系统结构变换型映射方法事务型映射方法软件模块结构的改进方法,4.3.1 基于数据流方法的设计过程,基于数据流的设计方法也称为过程驱动的设计方法;这种方法与软件需求分析阶段的结构化分析方法相衔接,可以很方便地将用数据流图表示的信息转换成程序结构的设
12、计描述;这种方法还能和编码阶段的“结构化程序设计方法”相适应,成为常用的结构化设计方法。,4.3.1 基于数据流方法的设计过程,设计过程基于数据流方法的设计过程,4.3.2 典型的数据流类型和系统结构,典型的数据流类型有变换型数据流和事务型数据流,数据流的类型不同,得到的系统结构也不同。通常,一个系统中的所有数据流都可以认为是变换流。但是,当遇到有明显事务特性的数据流时,建议采用事务型映射方法进行设计。,4.3.2 典型的数据流类型和系统结构,变换型数据流 变换型数据处理问题的工作过程大致分为 3步,即取得数据、变换数据和给出数据,如图所示。,4.3.2 典型的数据流类型和系统结构,变换型系统
13、结构图 变换型系统的结构图由输入、中心变换和输出3部分组成。,4.3.2 典型的数据流类型和系统结构,事务型数据流 通常接受一项事务,根据事务处理的特点和性质,选择分派一个适当的处理单元,然后给出结果。完成选择分派任务的部分称为事务处理中心,或分派部件。,4.3.2 典型的数据流类型和系统结构,事务型系统结构图,4.3.2 典型的数据流类型和系统结构,简化的事务型系统结构图 事务型系统的结构图可以有多种不同的形式,如有多层操作层或没有操作层。如果调度模块并不复杂,可将其归入事务中心模块。,4.3.3 变换型映射方法,系统数据处理问题的处理流程总能表示为变换型数据流图,进一步可采用变换型映射方法
14、建立系统的结构图。也可能遇到明显的事务数据处理问题,这时可采用事务型映射方法。,4.3.3 变换型映射方法,变换分析方法的步骤(1)重画数据流图:在需求分析阶段得到的数据流图侧重于描述系统如何加工数据,而重画数据流图的出发点是描述系统中的数据是如何流动的。(2)在数据流图上区分系统的逻辑输入、逻辑输出和中心变换部分。,4.3.3 变换型映射方法,变换分析方法的步骤(3)进行一级分解:设计系统模块结构的顶层和第一层。自顶向下设计的关键是找出系统树形结构图的根或顶层模块。首先设计一个主模块,并用程序的名字为它命名,然后将它画在与中心变换相对应的位置上。第 1 层设计:为每个逻辑输入设计一个输入模块
15、,它的功能是为主模块提供数据;为每个逻辑输出设计一个输出模块,它的功能是将主模块提供的数据输出;为中心变换设计一个变换模块,它的功能是将逻辑输入转换成逻辑输出。,4.3.3 变换型映射方法,变换分析方法的步骤 第一层模块与主模块之间传送的数据应与数据流图相对应。,4.3.3 变换型映射方法,变换分析方法的步骤(4)进行二级分解,设计中、下层模块。这一步工作是自顶向下,逐层细化,为每一个输入模块、输出模块、变换模块设计它们的从属模块。设计下层模块的顺序是任意的。但一般是先设计输入模块的下层模块。,4.3.4 事务型映射方法,事务分析也是从分析数据流图开始,自顶向下,逐步分解,建立系统的结构图。,
16、4.3.4 事务型映射方法,事务分析方法的步骤(1)识别事务源。利用数据流图和数据词典,从问题定义和需求分析的结果中,找出各种需要处理的事务。(2)规定适当的事务型结构。在确定了该数据流图具有事务型特征之后,根据模块划分理论,建立适当的事务型结构。(3)识别各种事务和它们定义的操作。(4)注意利用公用模块。,4.3.4 事务型映射方法,事务分析方法的步骤(5)建立事务处理模块。对每一事务,或对联系密切的一组事务,建立一个事务处理模块。(6)对事务处理模块规定它们全部的下层操作模块。(7)对操作模块规定它们的全部细节模块。大型的软件系统通常是变换型结构和事务型结构的混合结构,所以,我们通常利用以
17、变换分析为主,事务分析为辅的方式进行软件结构设计。,4.3.4 事务型映射方法,混合结构的例子,4.3.5 软件模块结构的改进方法,(1)模块功能的完善化。一个完整的功能模块,不仅能够完成指定的功能,而且还应当能够告诉使用者完成任务的状态,以及不能完成的原因。也就是说,一个完整的模块应当有以下几部分。执行规定的功能的部分。出错处理的部分。当模块不能完成规定的功能时,必须回送出错标志,向它的调用者报告出现这种例外情况的原因。如果需要返回一系列数据给它的调用者,在完成数据加工或结束时,应当给它的调用者返回一个“结束标志”。,4.3.5 软件模块结构的改进方法,(2)消除重复功能,改善软件结构。完全
18、相似。在结构上完全相似,可能只是在数据类型上不一致。此时可以采取完全合并的方法。局部相似。,4.3.5 软件模块结构的改进方法,局部相似:此时,不可以把两者合并为一,如图(b)所示,因为这样在合并后的模块内部必须设置许多查询开关,如图(f)所示。,4.3.5 软件模块结构的改进方法,(3)模块的作用范围应在控制范围之内。模块的控制范围包括它本身及其所有的从属模块。模块的作用范围是指模块内一个判定的作用范围,凡是受这个判定影响的所有模块都属于这个判定的作用范围。如果一个判定的作用范围包含在这个判定所在模块的控制范围之内,则这种结构是简单的。,4.3.5 软件模块结构的改进方法,(3)模块的作用范
19、围应在控制范围之内。图(b)表明作用范围不在控制范围之内。模块G做出一个判定之后,若需要模块 C工作,则必须把信号回送给模块D,再由D把信号回送给模块B。图中加黑框表示判定的作用范围。,(b),4.3.5 软件模块结构的改进方法,(3)模块的作用范围应在控制范围之内。图(c)虽然表明模块的作用范围是在控制范围之内,可是判定所在模块TOP所处层次太高,这样也需要经过不必要的信号传送,增加了数据的传送量。,(c),4.3.5 软件模块结构的改进方法,(3)模块的作用范围应在控制范围之内。图(d)表明作用范围在控制范围之内,只有一个判定分支有一个不必要的穿越,是一个较好的结构;图(e)所示为一个比较
20、理想的结构。,(d)(e),4.3.5 软件模块结构的改进方法,(3)模块的作用范围应在控制范围之内。如果在设计过程中,发现作用范围不在控制范围内,可采用如下办法把作用范围移到控制范围之内:将判定所在模块合并到父模块中,使判定处于较高层次。将受判定影响的模块下移到控制范围内。将判定上移到层次中较高的位置。,4.3.5 软件模块结构的改进方法,(4)尽可能减少高扇出结构,随着深度增大扇入。模块的扇出数是指模块调用子模块的个数。如果一个模块的扇出数过大,就意味着该模块过分复杂,需要协调和控制过多的下属模块。出现这种情况是由于缺乏中间层次,所以应当适当增加中间层次的控制模块。,4.3.5 软件模块结
21、构的改进方法,(4)尽可能减少高扇出结构,随着深度增大扇入。一个模块的扇入数越大,则共享该模块的上级模块数目越多。扇入大,是有好处的。但如果一个模块的扇入数太大,如超过8,而它又不是公用模块,说明该模块可能具有多个功能。在这种情况下应当对它进一步分析并将其功能分解。,4.3.5 软件模块结构的改进方法,(5)避免或减少使用病态连接。应限制使用如下3种病态连接,通常会增加耦合度。(a)直接访问内部数据;(b)模块直接通过公共数据域传递数据,增加耦合度;(c)通过通信模块传递数据,4.3.5 软件模块结构的改进方法,(6)模块的大小要适中。模块的大小,可以用模块中所含语句的数量的多少来衡量。通常规
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 结构 设计 方法
链接地址:https://www.31ppt.com/p-6015507.html