




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第四章软件总体设计1【本章引言】总体设计过程通常由两个阶段组成:系统设计和结构设计。其中系统设计的任务是确定系统的具体实现方案,结构设计则是确定软件的模块结构。这两个阶段是紧密联系在一起的,它们执行的效果将直接影响到总体设计好坏,乃至整个软件工程的合理与否。前一个阶段是后一个阶段的基础,后一个阶段是前一个阶段的发展方向。因此,我们在总体设计的整个过程中必须围绕系统设计和结构设计这两个阶段展开每一项工作。Tuesday,March21,20232第四章软件总体设计第四章软件总体设计【本章重点】软件设计的概念与原则;掌握总体设计的步骤和方法;【教学目标】掌握软件设计的概念与原则;掌握总体设计的步骤和方法;了解总体设计的文档与评审。Tuesday,March21,20233第四章软件总体设计第四章软件总体设计
4.1总体设计概述
4.2总体设计的图形描述工具
4.3模块化设计
4.4面向数据流的设计方法
4.5小结
4.6习题Tuesday,March21,20234第四章软件总体设计软件设计阶段的任务与目标
软件编码前,必须先进行软件设计。软件设计是软件开发的关键步骤,直接影响软件的质量。在软件需求分析阶段已经完全弄清楚了软件的各种需求,较好地解决了所开发的软件“做什么”的问题,并已在软件需求说明书和数据要求说明书中详尽和充分地阐明了这些需求以后,下一步就要着手实现软件的需求,即软件设计阶段要解决“怎么做”的问题。Tuesday,March21,20235第四章软件总体设计
软件设计在开发阶段中的重要性
软件设计阶段要解决“如何做”的问题。这显然是整个软件开发过程的核心问题,所有的开发工作都将根据设计的方案进行。系统的总体结构在该阶段决定,因此软件的总体设计决定了系统的质量。软件需求确定以后,进入由软件设计、编码、测试三个关联阶段构成的开发阶段。开发阶段的信息流如图所示。在设计步骤中,根据软件的功能和性能需求等,采用某种设计方法进行数据设计、系统结构设计和过程设计。
Tuesday,March21,20236第四章软件总体设计Tuesday,March21,20237第四章软件总体设计数据设计侧重于软件数据结构的定义系统结构设计定义软件系统的整体结构,是软件开发的核心步骤。在设计步骤中,建立软件主要成份之间的关系过程设计则是把结构成份转换成软件的过程性描述
在编码步骤中,根据这种过程性描述,生成源程序代码,然后通过测试,最终得到完整有效的软件。Tuesday,March21,20238第四章软件总体设计软件设计是后续开发步骤及软件维护工作的基础。如果没有设计,只能建立一个不稳定的系统结构Tuesday,March21,20239第四章软件总体设计软件设计阶段的任务一、软件设计的任务将分析阶段获得的需求说明转换为计算机中可实现的系统,完成系统的结构设计,包括数据结构和程序结构,最后得到软件设计说明书。
从工程管理的角度来看,软件设计分两步完成;分为总体设计(概要设计)和详细设计两个阶段。其工作流程如图所示。首先做概要设计,将软件需求转化为数据结构和软件的系统结构。然后是详细设计,即过程设计。通过对结构表示进行细化,得到软件详细的数据结构和算法。Tuesday,March21,202310第四章软件总体设计把分析模型转变成软件Tuesday,March21,202311第四章软件总体设计Tuesday,March21,202312第四章软件总体设计概要设计的基本目的就是回答“概括地说,系统应该如何实现”划分组成系统的物理元素-----程序、文件、数据库和文档等,另一方面要设计软件的结构,即确定系统中每个程序由哪些模块组成,以及这些模块相互间的关系总体设计过程Tuesday,March21,202313第四章软件总体设计在详细设计过程中,需要完成的工作是:
1.确定软件各个组成部分内的算法以及各部分的内部数据组织
2.选定某种过程的表达形式来描述各种算法。
3.进行详细设计的评审详细设计Tuesday,March21,202314第四章软件总体设计总体设计需求说明书复审软件结构修改详细设计可接受模块描述复审修改
设计说明书软件设计工作流程
设计阶段结束要交付的文档是设计说明书,根据设计方法的不同,有不同的设计文档。每个设计步骤完成后,都应进行复审。Tuesday,March21,202315第四章软件总体设计1、划分模块,确定软件结构
开发方法不同,确定软件结构的方法也不同。例如SD法,是从分层的DFD图导出初始的结构图,再对初始的结构图进行改进,获得最终的结构图。一般包括确定系统的软件结构,分解模块,确定系统的模块层次关系。2、确定系统的数据结构要确定数据的类型,组织、存取方式,相关程度及处理方式等。3、设计用户界面
软件设计阶段的任务可分为三部分:Tuesday,March21,202316第四章软件总体设计二、软件设计的目标在设计阶段应达到的目标是:提高可靠性;提高可维护性;提高可理解性;提高效率。软件设计高可靠性高可维护性高可理解性高效率软件设计的目标Tuesday,March21,202317第四章软件总体设计
常用的设计方法有:SD法、Jackson法、HIPO法、Parnas法、Warnier法等。衡量该目标的准则:1、软件实体有明显的层次结构,利于软件元素间控制2、软件实体应该是模块化的,模块具有独立功能3、软件实体与环境的界面清晰4、设计规格说明清晰、简洁、完整和无二义性Tuesday,March21,202318第四章软件总体设计4.1总体设计概述
4.1.1总体设计的任务确定模块结构,划分功能模块,将软件功能需求分配给所划分的最小单元模块。确定模块间的联系,确定数据结构、文件结构、数据库模式,确定测试方法与策略。编写总体设计说明书,用户手册,测试计划,选用相关的软件工具来描述软件结构,结构图是经常使用的软件描述工具。选择分解功能与划分模块的设计原则
Tuesday,March21,202319第四章软件总体设计
4.1总体设计概述
4.1.2总体设计的步骤1.设计系统方案2.选取合理的方案3.推荐最佳方案4.功能分解5.软件结构设计6.数据库设计、文件结构的设计7.制定测试计划8.书写文档9.审查和复审Tuesday,March21,202320第四章软件总体设计软件结构软件结构是软件模块之间关系的表示,它决定了整个系统的结构,也确定了系统的质量。模块之间的关系可有多种,但都可以归结为一种层次关系。软件结构图是总体设计阶段的主要描述工具,它描述了构成系统的基本元素——模块及模块之间的调用关系,模块之间的数据传递关系。Tuesday,March21,202321第四章软件总体设计Tuesday,March21,202322第四章软件总体设计软件结构的基本概念ABCDEFGHIJKLM模块(Module)模块是程序对象有名字的集合。例如,过程、函数、子程序、宏等,是构成软件系统结构的基本元素。
软件结构图Tuesday,March21,202323第四章软件总体设计体系结构设计是软件设计的第一个阶段,该阶段侧重于系统宏观结构的设计,而不关心模块的内部算法。杨叔子院子曾这样指点其弟子:文学中有科学,音乐中有数学,漫画中有现代数学的拓扑学。漫画家可以“几笔”就把一个人画出来,不管怎么美化或丑化,就是活像。为什么?因为那“几笔”不是别的,而是拓扑学中的特征不变量,这是事物最本质的东西。体系结构是软件系统中最本质的东西:软件系统的体系结构分为集中式的层次结构、客户机/服务器等。Tuesday,March21,202324第四章软件总体设计一、层次结构Tuesday,March21,202325第四章软件总体设计Tuesday,March21,202326第四章软件总体设计二、客户-服务器模型(Client/ServerArchitecturalModel)
C/S结构是一种分布式模型,采用发请求、得结果的模式:客户机向服务器发出请求(数据请求、网页请求、文件传输请求等)。服务器响应请求,进行相应的操作,将结果回传给客户机,客户机再将格式化后的结果呈现给用户。C/S结构的应用都由三个相对独立的逻辑部分组成。用户界面应用逻辑数据访问三种逻辑之间的关系Tuesday,March21,202327第四章软件总体设计两层客户-服务器模型
(TwoTierClient/ServerArchitecturalModel)服务器1网络服务器2服务器M客户1客户2客户N两层Client/Server结构请求结果请求C/S的工作模式是一种远程过程调用(RPC,RemoteProcedureCall)模式,允许客户端和服务器端有不同的软硬平台。Tuesday,March21,202328第四章软件总体设计client1client2client4client3Wide-bandwidthnetwokCatalogueservercataloguevideoserverFilmclipfilespictureserverdigitisedphotographshypertextserverhypertextweb例:电影图片库的系统的体系结构sTuesday,March21,202329第四章软件总体设计
完整的应用包含三个相对独立的逻辑部分,而两层的C/S结构只有两个端应用。应用逻辑应该映射到哪一端上呢?三种情况:网络用户界面客户端逻辑应用服务端逻辑应用客户端用户界面逻辑应用数据访问用户界面逻辑应用数据访问服务器应用逻辑层的映射情况数据访问C/S应用3C/S应用1C/S应用2
两层C/S架构将数据表示和处理逻辑分开,但应用逻辑和两端之一是紧耦合的,不适宜多用户、多数据库、非安全的网络环境。Tuesday,March21,202330第四章软件总体设计
2.三层/多层应用模型(Three/MultiTierModel)第一级是数据库管理结点(databasemanagementnode)。第二级或中间级是“商业逻辑结点”(businesslogicnode),是指具体应用中实施的程序逻辑和法则。第三级是用户界面级,强调高效、方便易用的用户界面。Databasemanagementnode(数据库管理结点)businesslogicnode(商业逻辑结点)Security(安全)Event(事件)Search(搜索)ClientAClientDClientBClientC服务器客户机第一级第二级第三级Tuesday,March21,202331第四章软件总体设计客户端用户界面服务器数据访问多层应用模型网络应用服务器1应用逻辑应用服务器n应用逻辑…
在多层模型中,中间层会用到应用服务,包括事务服务、消息服务等等。常见的事务服务器有MicrosoftTransactionServer,消息服务器有MicrosoftMessageQueue。Tuesday,March21,202332第四章软件总体设计三、分布式对象结构(DistributedObjectsArchitecture)
在C/S模型中,客户和服务器在服务/请求上的差别,在一定程度上限制了系统的灵活性和可扩展性。
采用分布式对象结构:“对象(Object)”——提供服务的系统组件(SystemComponent)。每个对象在逻辑上是平等的,它们可以互相为对方提供所需的服务。提供服务的对象就是服务器,而提出服务请求的对象就是客户。Tuesday,March21,202333第四章软件总体设计
软件总线(SoftwareBus)的中间件(Middleware)即对象请求代理(ObjectRequestBroker,ORB)
分布式对象结构具有很好的开放性和透明性,用户可以非常方便地在总线上添加、更新或删除组件对象。软件总线(ORB)O1S(O1)O2S(O2)OnS(On)…分布式对象结构Tuesday,March21,202334第四章软件总体设计4.2总体设计的图形工具
4.2.1层次图Tuesday,March21,202335第四章软件总体设计4.2总体设计的图形工具4.2.2HIPO图Tuesday,March21,202336第四章软件总体设计大学教务管理系统H图Tuesday,March21,202337第四章软件总体设计IPO图的一个例子Tuesday,March21,202338第四章软件总体设计
4.2总体设计的图形工具4.2.3结构图Tuesday,March21,202339第四章软件总体设计软件结构图(SC图)
结构图(Structure
Chart,SC图)是精确表达软件结构的图形表示方法,它以特定的符号表示模块、模块间的调用关系和模块间信息的传递。⑴模块(Module):用矩形框表示,框中写有模块的名字,说明模块的功能。模块是程序对象有名字的集合。例如:过程、函数、子程序、宏等。⑶数据:调用箭头边上的小箭头表示调用时从一个模块传送给另一模块的数据。⑵调用:从一个模块指向另一个模块的箭头表示前一模块对后一模块的调用,一般是上层调用下层。Tuesday,March21,202340第四章软件总体设计模块5模块5模块4模块4模块1模块3模块2valuesvaluesdatadata模块1模块2模块3valuesdatadata
模块调用图Tuesday,March21,202341第四章软件总体设计
模块间接口的表示A查询学生成绩B查找学生记录○学号查找成功的信息常用尾端带有空心圆的短箭头表示数据信息,用尾端带有实心圆的短箭头表示控制信息。有的结构图对这两种信息不加以区别,一律用注有信息名的短箭头来表示,如图所示。○数据信息控制信息Tuesday,March21,202342第四章软件总体设计Tuesday,March21,202343第四章软件总体设计例:画出打印报告的软件结构图。
调用次序为上层调用下层;
同层按照数据传递关系确定;一般从左到右执行。
执行过程即按照数据流向进行。报告计算获得编辑确认数据读入编辑打印报告头打印报告尾打印输入EOF输入已编辑
已编辑已编辑已确认已确认数据已确认数据计算结果结果日期总结果行行行打印报告予以确认Tuesday,March21,202344第四章软件总体设计结构图的例子——产生最佳解的一般结构Tuesday,March21,202345第四章软件总体设计
4.3模块化设计4.3.1模块化与局部化1.模块化
模块是数据说明、可执行语句等程序对象的集合,模块可以单独被命名、而且可通过名字来访问,例如,过程、函数、子程序、宏等等都可作为模块。模块化就是把程序划分成若干个模块,每个模块具有一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能,进而满足问题的要求。Tuesday,March21,202346第四章软件总体设计
“模块”,又称“构件”,一般指用一个名字可调用的一段程序。它一般具有如下三个基本属性:⑴功能即指该模块实现什么功能,做什么事情⑵逻辑即描述模块内部怎么做。⑶状态即该模块使用时的环境和条件。所谓模块的独立性,是指软件系统中每个模块只涉及软件要求的具体的子功能,而和软件系统中其他模块的接口是简单的。即功能专一,模块之间无过多的相互作用的模块。这种类型的模块可以并行开发,模块独立性越强,开发越容易。独立性强的模块,还能减少错误的影响,使模块容易组合、修改及测试。Tuesday,March21,202347第四章软件总体设计模块化
模块化就是将系统划分为若干个模块,每个模块完成一个子功能。模块化的目的是将系统“分而治之”,模块化能够降低问题的复杂性,使软件结构清晰,易阅读、易理解,易于测试和调试,因而也有助于提高软件的可靠性。Tuesday,March21,202348第四章软件总体设计模块化降低软件复杂度的简单证明令:C(X)表示问题X的复杂度函数;
E(X)解决问题X
所需工作量的复杂度函数;若:有问题P1,P2
;
C(P1)>C(P2);
显然:E(P1)>E(P2)由经验:C(P1+P2)>C(P1)+C(P2)于是:E(P1+P2)>E(P1)+E(P2)将问题(P1+P2)划分为两个问题P1和P2后,其工作量和复杂度都降低。Tuesday,March21,202349第四章软件总体设计
并非模块分得越小越好,因为模块之间接口的复杂度和工作量增加。显然,每个软件系统都有一个最佳模块数M。注意选择分解的最佳模块数。右上图描述了模块化与软件成本的关系。软件总成本
模块化与软件成本的关系成本模块数目模块成本接口成本}最小成本区MTuesday,March21,202350第四章软件总体设计4.3模块化设计4.3.1模块化与局部化
2.局部化
局部化的概念和信息隐蔽概念密切相关。所谓局部化是指把一些关系密切的软件元素物理地放得彼此靠近。在模块中使用局部数据元素是局部化的一个例子。显然,局部化有助于实现信息隐蔽。Tuesday,March21,202351第四章软件总体设计
4.3模块化设计4.3.2模块化独立性
模块的独立性可以用两个定性的标准来度量:耦合和内聚。耦合是模块之间互相连接的紧密程度的度量,内聚是一个模块内部各个元素彼此结合的紧密程度的度量。
Tuesday,March21,202352第四章软件总体设计
4.3模块化设计4.3.2模块化独立性1.耦合非直接耦合数据耦合标记耦合控制耦合公共耦合内容耦合
Tuesday,March21,202353第四章软件总体设计
耦合性是指软件结构中模块相互连接的紧密程度,是模块间相互连接性的度量。模块分解的一个目标是使块间联系尽可能小,块间联系的大小可从三个方面衡量:数据方式作用少多数量控制混合直接调用过程调用①方式
—块间联系方式有“直接引用”或“用过程语句调用”②作用—块间传送的共用信息(参数)类型,可为“数据型”、“控制型”或“混合型”(数据/控制型)③数量—块间传送的共用信息的数量Tuesday,March21,202354第四章软件总体设计模块分解的一个目标是使块间联系尽可能小,达到这个目标可通过以下措施。
⑴每个模块用过程语句(或函数方式等)调用其他模块。
⑵模块间传送的参数为数据型。
⑶模块间公用的信息(如参数等)尽量少。Tuesday,March21,202355第四章软件总体设计耦合性的几种类型内容耦合公共耦合控制耦合复合耦合数据耦合高耦合性低1、内容耦合(contentcoupling)
一个模块直接访问另一模块的内部数据 一个模块不通过正常入口转到另一模块的内部 一个模块有多个入口 两个模块有部分代码重迭Tuesday,March21,202356第四章软件总体设计2、公共耦合(CommonCoupling)
若干模块访问一个公共的数据环境,公共环境可为全局数据结构、共享的通信区、内存的公共覆盖区等。显然,公共数据区的变化,将影响所有公共耦合模块,严重影响模块的可靠性和可适应性,降低软件的可读性。Tuesday,March21,202357第四章软件总体设计3、控制耦合(ControlCoupling)
一个模块传递给另一模块的信息是用于控制该模块内部逻辑的控制信号。显然,对被控制模块的任何修改,都会影响控制模块。A
BFlagf1f2fn...Tuesday,March21,202358第四章软件总体设计publicinty;PublicA(stringx){
if(x==”true”){
y=1;}Else{
y=0;}}PublicvoidB(){
if(y==1){
F(
);
//F(
)是系统自定义的函数}Else{G(
);
//G(
)是系统自定义的函数}}Tuesday,March21,202359第四章软件总体设计4、复合耦合(StampCoupling)
一个模块传送给另一个模块的参数是一个复合的数据结构。例如,包含几个数据单项的记录。5、数据耦合(DataCoupling)
一个模块传送给另一个模块的参数是一个单个的数据项Tuesday,March21,202360第四章软件总体设计
总之,耦合是影响软件复杂程度的一个重要因素。应该采取下述设计原则:尽量使用数据耦合,少用控制耦合,限制公共环境耦合的范围,完全不用内容耦合。Tuesday,March21,202361第四章软件总体设计
4.3模块化设计4.3.2模块化独立性2.内聚偶然内聚逻辑内聚时间内聚过程内聚通信内聚顺序内聚功能内聚
Tuesday,March21,202362第四章软件总体设计块内联系的类型分为七类:内聚性表示一个模块内部各种数据和各种处理之间联系的紧密程度,它是从功能的角度来度量模块间的联系。显然,块内联系愈紧,即内聚性愈强,模块独立性愈好。偶然型逻辑型瞬时型过程型通信型弱内聚性强顺序型功能型Tuesday,March21,202363第四章软件总体设计
模块T中的三条语句毫无关系,A、B、C、D都不在文件CARD
FILE
中。模块P、Q、R分别与三条语句有关。PQRMOVEATOBREADCARDFILEMOVECTODT
偶然型模块
1、偶然型(CoincidentalCohesion)又称为巧合型,为了节约空间,将毫无关系(或者联系不多)的各成分放在一个模块中。这样的模块显然不易理解,不易修改。Tuesday,March21,202364第四章软件总体设计
2、逻辑型(LogicalCohesion)将几个逻辑上相似的功能放在一个模块中,调用时由调用模块传递的参数确定执行的功能。由于要进行控制参数的传递,必然要影响模块的内聚性。调用模块判定读一个记录写一个记录
逻辑型模块被调用模块Tuesday,March21,202365第四章软件总体设计
3、瞬时型(TemporalCohesion)将需要同时执行的成分放在一个模块中,因为模块中的各功能与时间有关,因此又称为时间内聚或经典内聚。例如,初始化模块,中止模块等这类模块内部结构较简单,一般较少判定,因此比逻辑内聚强,但是由于将多个功能放在一起,给修改和维护造成困难。Tuesday,March21,202366第四章软件总体设计
4、过程型(ProceduralCohesion)
如果一个模块内的处理是相关的,而且必须以特定次序执行,则称这个模块为过程内聚模块。通常通过程序流程图来确定,例如把流程图中的循环部分、判定部分、计算部分分成三个模块,这三个模块都是过程内聚模块。Tuesday,March21,202367第四章软件总体设计
5、通信型(CommunicationalCohesion)模块中的成分引用共同的输入数据,或者产生相同的输出数据,则称为是通信内聚模块通信型模块比瞬时型模块的内聚性强,因为模块中包含了许多独立的功能,但却引用相同数据A打印报告1打印报告2打印报告2B存入打印C修改删除打印(a)(b)(c)
通信型模块Tuesday,March21,202368第四章软件总体设计Tuesday,March21,202369第四章软件总体设计
6、顺序型(SequentialCohesion)
模块中某个成分的输出是另一成分的输入。由于这类模块无论数据还是执行顺序,模块中的一部分依赖于另外一部分。
顺序型模块,编辑功能的输入是读入功能的输出,打印功能的输入是累加功能的输出。读入编辑A数据累加打印B结果
顺序型模块Tuesday,March21,202370第四章软件总体设计
7、功能型(SequentialCohesion)一个模块包括而且仅包括完成某一具体功能所必须的所有成分。或者说,模块的所有成分都是为完成该功能而协同工作、紧密联系、不可分割的。
求解方程的功能模块求一元二次方程求平方根AB例如仅完成以下功能的模块为功能模块: ●求平方根 ●求解一元二次方程 ●计算利息 ●判素数 Tuesday,March21,202371第四章软件总体设计1计算雇员年龄并给出生日的模块2按给出的生日计算雇员年龄、退休时间的模块。如果利用所计算的年龄来确定雇员将要退休的时间,是什么内聚;如果分别计算年龄和退休时间,但使用相同生日数据,是什么内聚3打印季度开支报告、月份开支报告和日开支报告。具体打印哪一个,将由传入的控制标志决定。如何提高内聚性?功能内聚顺序内聚通信内聚逻辑内聚Tuesday,March21,202372第四章软件总体设计
4.3模块化设计4.3.2模块化独立性3.设计准则模块规模应该适中改进软件结构提高模块独立性深度、宽度、扇入和扇出都应适当模块的作用范围应该在控制范围之内降低模块接口的复杂程度设计单入口单出口的模块,避免“病态连接”模块功能应该可以预测Tuesday,March21,202373第四章软件总体设计1)模块的大小要适中
模块的大小,可以用模块中所含语句的数量的多少来衡量。把模块的大小限制在一定的范围之内。通常规定其语句行数在50~100左右,保持在一页纸之内,最多不超过500行。Tuesday,March21,202374第四章软件总体设计
消除重复功能(a)(b)(c)(d)Q重复部分XQ1YQ22)改进软件结构,消除重复功能
若两模块含有重复的部分,应设法将重复的功能消去。
如下图所示,Q1和Q2两个模块具有类似的功能,图(b)、(c)、(d)方案就是可能的解决方案。XYQ’1Q’2QYQ’2XQ’1QXQ’1YQ’2Tuesday,March21,202375第四章软件总体设计×逻辑内聚√√√Tuesday,March21,202376第四章软件总体设计消除重复功能,改善软件结构
①完全相似:在结构上完全相似,可能只是在数据类型上不一致。此时可以采取完全合并的方法。
②局部相似:找出其相同部分,分离出去,重新定义成一个独立的下一层模块。还可以与它的上级模块合并。Tuesday,March21,202377第四章软件总体设计有关指标:⑴深度:表示软件结构中从顶层模块到最底层模块的层数。⑵宽度:表示控制的总分布。⑶扇出数:指一个模块直接控制下属的模块个数。⑷扇入数:指一个模块的直接上属模块个数。3)深入、宽度、扇入、扇出Tuesday,March21,202378第四章软件总体设计3.2.1软件结构的基本概念
软件结构示意图一个好的软件结构的形态准则是:顶部宽度小,中部宽度大,底部宽度次之;在结构顶部有较高的扇出数,在底部有较高的扇入数。Tuesday,March21,202379第四章软件总体设计深度、宽度、扇入和扇出都应适当Tuesday,March21,202380第四章软件总体设计模块的扇入扇出数不宜太多一个模块调用其他模块的个数,称为该模块的扇出。模块的扇出不宜过大,一般认为不要超出7个。一个模块被其他模块调用的个数,称为该模块的扇入。扇入越大,除服务性模块外,模块的扇入扇出数不宜太多,否则块间联系增加。Tuesday,March21,202381第四章软件总体设计控制范围—结构方面的特点,包括模块及其所有下属模块。作用范围—判断所涉及到的模块,是从功能特点考虑的。SD方法认为:当作用范围为控制范围的子集时,才能获得较低的块间联系。如图(b)中的设计,判定的作用范围恰好在判定所在模块的下一层。4)模块的作用范围与控制范围Tuesday,March21,202382第四章软件总体设计TOPXTBAB1B2图(b)中模块TOP
的控制范围是:
模块TOP、X、T、B、A、B1、B2;模块B
的控制范围与作用范围相同,均为:模块B、A、B1、B2图(a)中模块A的控制范围:
A、B、C、D、G、E、F如果模块F的判定涉及到模块B、E、F则F的的作用范围:B、E、FABCDGEFFBE(a)(b)Tuesday,March21,202383第四章软件总体设计答案显然,图(a)不满足作用范围应与控制范围的原则,模块F的作用范围不在控制范围之内。图(b)中模块TOP和图(c)中模块B虽然满足上述原则,但其作用范围所涉及到的模块不是直接的。图(d)的模块设计最合理。应用范围与作用范围举例TOPABCDEF(a)◆TOPABCDEF(d)◆TOPABCDEF(b)◆TOPABCDEF(c)◆比较(a)、(b)、(c)、(d)4种设计方案的优劣Tuesday,March21,202384第四章软件总体设计5)降低接口复杂度例如:求一元二次方程的跟的模块,模块名为Quad_Root,这里有2种接口方式a.Quad_Root(Tbl,X)b.Quad_Root(A,B,C,Root1,Root2)Tuesday,March21,202385第四章软件总体设计
一个功能可预测的模块,不论内部处理细节如何,但对相同的输入数据,总能产生同样的结果。但是,如果模块内部蕴藏有一些特殊的鲜为人知的功能时,这个模块就可能是不可预测的。对于这种模块,如果调用者不小心使用,其结果将不可预测。6)功能可预测的模块,但避免过分受限制的模块Tuesday,March21,202386第四章软件总体设计Tuesday,March21,202387第四章软件总体设计
4.3模块化设计4.3.3抽象与信息隐蔽1.抽象抽象是人类认识问题和解决问题的基本工具和方法。在解决复杂的具体问题时,人们往往先忽略其细节和非本质的方面,而集中注意力去分析问题的本质和主要方面,搞清所要解决的问题的本质。同时人们在总结认识和实验规律时,也往往突出各类问题的共性,找出各种客观事物、状态和过程间的联系和相似性,加以概括和提取,即抽象。
Tuesday,March21,202388第四章软件总体设计
4.3模块化设计
4.3.3抽象与信息隐蔽2.信息隐蔽
信息隐蔽原理认为:模块所包含的信息(过程和数据)对于其他模块来说应该是隐蔽的。也就是说,模块应当被这样规定和设计,使得包含在模块中的信息(过程和数据)对于其他不需要这些信息的模块来说,是不能访问的,或者说是“不可见”的。Tuesday,March21,202389第四章软件总体设计例如:定义栈(stack)操作模块Makenull(置空栈);Push(进栈);Pop(出栈);Gettop(取栈顶)Empty(判栈空)其操作均被封装,无需了解模块内部的实现过程。Tuesday,March21,202390第四章软件总体设计
4.4面向数据流的设计方法4.4.1基本概念1.变换流信息沿输入通路进入系统,同时由外部形式变换成内部形式,进入系统的信息通过变换中心,经加工处理以后再沿输出通路变换成外部形式离开软件系统。当数据流图具有这些特征时,这种信息流就叫作变换流。
Tuesday,March21,202391第四章软件总体设计
4.4面向数据流的设计方法4.4.1基本概念1.变换流Tuesday,March21,202392第四章软件总体设计
4.4面向数据流的设计方法4.4.1基本概念2.事务流
数据沿输入通路到达一个处理T,这个处理根据输入数据的类型在若干个工作序列中选出一个来执行。这类系统的特征是具有在多种事务中选择执行某类事务的能力。事务型结构由至少一条接受路径、一个事务中心,与若干条动作路径组成。这类数据流应该划为一类特殊的数据流,称为事务流。Tuesday,March21,202393第四章软件总体设计
4.4面向数据流的设计方法4.4.1基本概念2.事务流Tuesday,March21,202394第四章软件总体设计设计过程
⑴变换型系统结构图通过变换分析技术,将中心变换型的DFD图转换而得的SC图,称为变换型系统结构图。相应于取得数据、变换数据、给出数据,系统的结构图由输入、中心变换和输出等三部分组成。
Tuesday,March21,202395第四章软件总体设计Tuesday,March21,202396第四章软件总体设计例:仪表板的功能:通过模数转换器实现传感器和微处理器接口在发光二极管面板上显示数据指示每小时英里数,行驶的里程,每加仑行驶的英里数指示加速或减速超速警告:如果超过55英里/小时,则发出超速警告铃声Tuesday,March21,202397第四章软件总体设计数字仪表板系统的数据流图Tuesday,March21,202398第四章软件总体设计具有边界的数据流图Tuesday,March21,202399第四章软件总体设计第一级分解的方法Tuesday,March21,2023100第四章软件总体设计数字仪表板系统的第一级分解Tuesday,March21,2023101第四章软件总体设计
第二级分解的方法Tuesday,March21,2023102第四章软件总体设计图4.19未经精化的输入结构Tuesday,March21,2023103第四章软件总体设计
未经精化的变换结构Tuesday,March21,2023104第四章软件总体设计
未经精化的输出结构Tuesday,March21,2023105第四章软件总体设计精化后的数字仪表板系统的软件结构Tuesday,March21,2023106第四章软件总体设计
⑵事务型系统结构图通过事务分析技术,将事务处理型的DFD图转换为的SC图,称为事务型的系统结构图。其中,事务中心模块按所接受的事务的类型,选择某一个事务处理模块执行。各个事务处理模块是并列的,依赖于一定的选择条件,分别完成不同的事务处理工作。每个事务处理模块可能要调用若干个操作模块,而操作模块又可能调用若干个细节模块。某些事务处理模块可能共享一些操作模块,而某些操作模块又可以共享一些细节模块。Tuesday,March21,2023107第四章软件总体设计T事务数据流沿输入通路到达一个处理T,这个处理根据输入数据的类型在若干个动作序列中选出一个来执行Tuesday,March21,2023108第四章软件总体设计Tuesday,March21,2023109第四章软件总体设计①确定主加工及逻辑输入/输出主加工—描述了系统的主要功能、特征。其特点是:输入/输出数据流较多,往往主加工不止一个。逻辑输入/输出—是指输入/输出主加工的数据流。输入流—是把物理输入转换为逻辑输入的数据流。
输出流—是将逻辑输出转换为物理输出的数据流。FDC中心加工2号加工3号加工1号加工4号加工ABE
输入流转换流输出流
输入流转换流输出流②进行一级分
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 演讲与口才班会课件
- 小学生课文《太阳》课件
- 小学生课件讲稿范文
- 燃气轮机值班员上岗证考试题库及答案
- 防锈处理工公司招聘笔试题库及答案
- 民航乘务员职业技能模拟试卷含答案
- 人工智能训练师安全技术操作规程
- 船艇救生员安全技术操作规程
- 六氟化铀制备工理论学习手册练习试题及答案
- 酒精酿造工安全技术操作规程
- GB/T 31776-2015车用甲醇汽油中甲醇含量检测方法
- 检验科临床基因扩增实验室质量手册
- 正性肌力药及血管扩张药血管活性药在心血管手术中的应用课件
- 预应力管桩抗弯性能检验报告
- 小学数学西南师大四年级下册八平均数小学数学西师版四年级下册《平均数》教学设计
- T-SDDA 0002-2021 住宅装饰装修工程质量验收标准
- 智慧机场贵宾厅建设方案
- DB32-T 3153-2016公路桥梁伸缩装置病害评定技术标准-(高清现行)
- CTPAT反恐文件1. 货物单据和文件记录安全控制程序
- 电子秤cal标定方法
- 艺术品及品牌项目合作协议书
评论
0/150
提交评论