《软件设计-模块化》PPT课件.ppt

上传人:sh****n 文档编号:12760322 上传时间:2020-05-22 格式:PPT 页数:200 大小:4.72MB
返回 下载 相关 举报
《软件设计-模块化》PPT课件.ppt_第1页
第1页 / 共200页
《软件设计-模块化》PPT课件.ppt_第2页
第2页 / 共200页
《软件设计-模块化》PPT课件.ppt_第3页
第3页 / 共200页
点击查看更多>>
资源描述
软件设计SoftwareDesign,第三章Chapter3,第三章软件设计,3.1软件设计概述,3.2软件体系结构设计,3.3模块分解,3.5详细设计描述工具,3.6用户界面设计,3.4面向数据流的设计方法*,3.1软件设计概述,3.1.1软件设计在开发阶段中的重要性,3.1.2软件设计阶段的任务,3.1软件设计概述,软件需求分析阶段解决了所开发的软件“做什么”的问题;软件设计阶段要解决软件“怎么做”的问题。,3.1.1软件设计在开发阶段中的重要性,软件设计,编码,软件测试,开发阶段信息流图示,软件需求确定以后,进入由软件设计、编码、测试三个关联阶段构成的开发阶段。在设计步骤中,根据软件的功能和性能需求,采用某种设计方法进行系统结构设计、数据结构设计、过程设计和界面设计。,系统结构设计用于定义软件系统的整体结构,是软件开发的核心步骤。在设计步骤中,建立软件主要成份之间的关系。数据设计侧重于数据结构、数据库、文件的定义。过程设计则是把结构成份(模块)转换成软件的过程性描述。界面设计是对系统边界的描述,是用户和系统进行交互的工具。在编码步骤中,根据这种过程性描述,生成源程序代码,然后通过测试,最终得到完整有效的软件。软件设计决定了软件质量。,3.1.2软件设计阶段的任务,一、软件设计的任务将分析阶段获得的需求规格说明转换为计算机中可实现的系统,完成软件的数据设计、系统结构设计、过程设计和界面设计,最后得到软件设计说明书。,总体设计,复审,修改,详细设计,模块描述(过程描述),复审,修改,软件设计工作流程图示,一般地,从工程管理的角度,软件设计分两步完成:总体设计(概要设计)和详细设计。其工作流程如图所示。,设计阶段结束时要交付的文档是设计规格说明书。根据设计方法的不同,有不同的设计文档。每个设计步骤完成后,都应进行复审。,首先做概要设计,将软件需求转化为软件的系统结构、数据结构、用户界面;然后是详细设计,即过程设计,通过对过程模块的详细描述,得到软件详细的数据结构和算法。,1、确定软件结构,划分子系统模块好的软件结构可以使软件的开发过程流畅自如,同时也能为软件的部署带来好处。合理的模块划分可以降低软件开发的浮渣度,同时也能提高软件的可重用性。,软件设计阶段的任务可分为四部分:,软件设计的目标,2、确定系统的数据结构数据结构的建立对于信息系统而言尤为重要。要确定数据元素的类型,组织、存取方式以及处理方式等。,软件设计阶段的任务可分为四部分:,软件设计的目标,三类设计任务,3、过程设计通过对过程模块的详细描述,得到软件详细的数据结构和算法。,软件设计阶段的任务可分为四部分:,三类设计任务,4、用户界面设计作为人机接口的用户界面起着越来越重要的作用,它直接影响到软件的寿命。,软件设计阶段的任务可分为四部分:,二、软件设计的目标在设计阶段应达到的目标是:提高可靠性;提高可维护性;提高可理解性;提高效率。,衡量该目标的准则:1、软件实体有明显的层次结构,有利于软件的维护。2、软件实体应该是模块化的,且每个模块具有独立功能。3、软件实体与外部环境的界面清晰。4、设计规格说明清晰、简洁、完整和无二义性。,常用的设计方法有:SD法、Jackson法、HIPO法、Parnas法、Warnier法等;还有面向对象的设计方法(OOD)。,3.2软件体系结构设计,3.2.1软件体系结构的基本概念,3.2.2几种典型的软件体系结构,3.2.3体系结构设计原则,3.2.1软件体系结构的基本概念,起初,人们把软件设计的重点放在数据结构和算法的选择上,随着软件规模的扩大,对总体的系统结构设计和规格说明比数据结构和算法的选择明显重要得多。当着一个软件被划分为若干个模块,并且模块之间相互作用,形成一个整体时,它就具有了体系结构。软件的体系结构定义:为软件系统提供了一个结构、行为和属性的高级抽象,由构成系统的元素的描述、这些元素的相互作用、指导元素集成的模式,以及这些模式的约束组成。,软件体系结构的意义主要体现在如下3个方面:重用:人们希望系统能够重用以前的代码和设计,从而提高开发效率。扩展:人们希望在系统能够保持结构稳定的前提下很容易地扩充功能和提高性能。简洁:好的架构一定易于理解、易于学习、易于维护。,所谓软件架构师实际上就是软件的总体设计者。一般地,应用程序的功能模块划分:用户界面(userinterface)、业务逻辑(businesslogic)和数据存储(datastorage)。其中,,用户界面是应用程序呈现给最终用户的使用界面,与用户直接打交道的部分,用于表现和描绘数据。业务逻辑是应用程序的核心部分,处理业务流程和数据,是真正实现应用程序的功能模块。数据存储是业务逻辑部分所需处理或已处理结果的存储,是保存运算结果部分。,用户界面,数据存储,业务逻辑,基于宿主机的计算模型客户/服务器(C/S)模型三层C/S结构模型浏览器/服务器(B/S)模型异构结构模型(C/S与B/S混合软件体系结构),集中型:,分布型:,优秀的开发者常常会使用一些体系结构模式(architecturepattern)作为软件系统结构设计策略。这里重点介绍集中型和分布式结构。,3.2.2几种典型的软件体系结构,基于宿主机的计算模型(集中式),用户界面、业务逻辑和数据存储功能都集中在大、中/小型机上实现(用户通过哑终端来共享大、中/小型机的资源)。,数据表示,业务逻辑,数据存储,单层应用模型,仓库模型(Therepositorymodel)也称“容器模型”,是一种集中式的模型。各子系统可以直接访问中央数据仓库存储的共享数据。子系统之间紧密耦合。,仓库模型(Therepositorymodel),各子系统共享中央数据库中的数据共享容器模型各子系统可以有自己的数据库,子系统之间通过消息传递实现数据交换。,适宜命令控制系统、CAD系统,仓库模型的主要优缺点:优点:1.共享大数据量的有效方法。2.子系统不必关心其它的子系统如何使用它所产生的数据。3.易于将新子系统集成,若新子系统也采用相同规范。,缺陷:1.为了共享数据,各子系统必须有一致的数据视图,不可避免地会影响了整个系统的性能。2.子系统的改变,使产生的数据结构也可能发生改变。3.统一的数据库结构(备份、安全、访问控制和恢复的策),将影响子系统的效率。,客户/服务器(C/S)模型(分布式),随着PC机诞生和应用,用户界面和部分的业务逻辑被移到了PC端。服务器端(后台)负责数据管理,客户机(前台)完成与用户的交互任务。,业务逻辑,数据存储,数据表示,业务逻辑,数据库服务器,C/S结构的优缺点,便于进行快速应用开发,市场上有很多这样的工具,如PB、Delphi、VisualBasic、VisualC+等。C/S结构具有响应速度快,操作界面设计个性化,直观、简单、方便的特点。C/S结构不足:开发成本高,软件维护和升级困难,因此,新技术不能轻易应用。需要专门的客户端安装程序,分布功能弱。兼容性差,软件移植困难。,完整的应用包含三个相对独立的逻辑部分,而两层的C/S结构只有两个端应用。应用逻辑应该映射到哪一端上呢?三种情况:,两层C/S架构将数据表示和处理逻辑分开,但应用逻辑和两端之一是紧耦合的,不适宜多用户、多数据库,是非安全的网络环境。,三层C/S结构,随着中间件技术的发展,出现了三层C/S结构。与二层C/S结构相比,增加了一个应用服务器。,数据库服务器,数据库服务器,应用服务器,表示层,数据层,功能层,InternetIntranet,三层C/S结构风格,表示层:应用的用户接口部分,担负找用户与应用间的对话功能。用于检查用户从键盘等设备输入的数据,显示应用输出的数据。功能(或业务逻辑)层:将具体的业务处理逻辑编入程序中,并确认用户对应用和数据库存取权限的功能数据层:数据库管理系统,负责管理数据库数据的读写。,在多层模型中,中间层会用到应用服务,包括事务服务、消息服务等等。常见的事务服务器有MicrosoftTransactionServer,消息服务器有MicrosoftMessageQueue。,浏览器/服务器(B/S)风格,基于Web的B/S风格其实也是一种客户机/服务器风格,只不过它的客户端是浏览器。为了区别传统的C/S风格,才特意称其为B/S风格。它实际上是一种三层应用结构的一种实现方式,即:浏览器/Web服务器/数据库服务器。,数据库服务器,InternetIntranet,Web服务器,表示层,数据层,功能层,数据库,B/S结构的优缺点,B/S结构具有分布式、基于Web、开放性和适应性的优势,它使业务扩展简单,维护方便。但与C/S结构相比,B/S结构也有许多不足之处:个性化特点明显降低,实现个性化设计要求难。缺乏对动态页面的支持能力,没有集成有效的数据库处理能力;扩展能力差,安全性难以控制;数据查询等响应速度远低于C/S结构;数据提交一般以页面为单位,数据的动态交互性不强,不利于在线事务处理(OLTP)应用。,C/S与B/S混合的软件体系结构,“内外有别”模型企业内部用户通过局域网直接访问数据库服务器,软件系统采用C/S结构;企业外部用户通过Internet访问Web服务器,通过Web服务器再访问数据库服务器,软件系统采用B/S结构。,数据库服务器,InternetIntranet,Web服务器,企业内部,企业外部,C/S结构,B/S结构,查询浏览PC,查询浏览PC,修改维护PC,修改维护PC,Internet用户,内部局域网,企业内部,企业外部,“查改有别”模型不管用户是通过什么方式(局域网或Internet)连接到系统,凡是需要执行维护和修改数据操作的,就使用C/S结构;若只是执行一般的查询和浏览操作,则使用B/S结构。,数据库服务器,IntenetIntranet,Web服务器,企业内部,企业外部,C/S结构,B/S结构,查询浏览PC,查询浏览PC,修改维护PC,修改维护PC,Internet用户,内部局域网,C/S结构,案例,背景:电力系统精简机构,变电站向无人、少人和以点带面方向发展(“减人增效”)变电综合信息管理系统。功能需求:包括变电运行所需的运行记录、图形开票、安全生产管理、生产技术管理、行政管理、总体信息管理、技术台帐管理、班组建设、学习培训、系统维护等功能。体系结构设计:充分考虑变电站分布管理需要,采用“内外有别”模型。,本系统采用C/S与B/S混合的软件体系结构(“内外有别”)。,IntenetIntranet,县调,地调,省调,Internet用户,Web服务器,变电站内部,B/S结构,中央控制室,系统管理员,变电站内部局域网,站长、其他,C/S结构,数据库服务器,变电站外部,在架构设计中,系统划分方式通常有两种:横向划分和纵向划分,其中:纵向划分是将系统划分成若干层,每个层完成一定的处理功能,如数据存储层、商务逻辑层和应用表达层等。横向划分是将系统按照商业逻辑进行划分,例如将一个网上书店系统划分为进货、销售、库存管理、员工管理等。,一般地,,分布式对象结构(DistributedObjectsArchitecture),在C/S模型中,客户和服务器在服务/请求上的差别,在一定程度上限制了系统的灵活性和可扩展性。,采用分布式对象结构:“对象(Object)”提供服务的系统组件(SystemComponent)。每个对象在逻辑上是平等的,它们可以互相为对方提供所需的服务。提供服务的对象就是服务器,而提出服务请求的对象就是客户。,“软件总线(SoftwareBus)”的中间件(Middleware)即对象请求代理(ObjectRequestBroker,简称ORB)分布式对象结构具有很好的开放性和透明性,用户可以非常方便地在总线上添加、更新或删除组件对象。,分布式对象结构具有优良特性:1.可在系统布署完成后,再具体考虑服务的分布和如何提供服务的问题。2.具有开放式结构,提供了极好的灵活性和可伸缩性。3.系统可进行动态分配。,流行的ORB技术标准有两种:CORBA(CommonObjectRequestBrokerArchitecture)DCOM(DistributedComponentObjectModel),抽象机模型,又称为分层模型,通常用于建立子系统的接口模型。每层提供一组服务,每层定义一个抽象机。典型的例子:,ISO/OSI开放系统互连参考模型,优点:支持增量式开发。缺点:系统构成,性能保证较困难。,3.2.3体系结构设计原则,合适性结构稳定性可扩展性可复用性,3.3模块分解,一旦确立软件体系结构以后,需要做的工作就是进行系统的模块分解。,模块是程序对象的集合,并且被命名。例如,过程、函数、子程序、宏;类等,是构成软件系统结构的基本元素。,所谓模块化(modularization),就是将系统划分为若干个模块,每个模块完成一个子功能。模块化的目的是将系统“分而治之”,模块化能够降低问题的复杂性,使软件结构清晰,易阅读、易理解,易于测试和调试,因而也有助于提高软件的可靠性。,一、模块化,模块化降低了软件复杂度。,令: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后,其工作量和复杂度都降低。,并非模块分得越小越好,因为模块之间接口的复杂度和工作量增加。显然,每个软件系统都有一个最佳模块数M。注意选择分解的最佳模块数。右图描述了模块化与软件成本的关系。,二、模块之间的关系,模块之间关系决定了整个系统的结构,也确定了系统的质量。模块之间的关系可有多种,一般可表示为层次结构和网状结构。,层次结构(或树状结构),在树状结构中,位于最上层的根部是顶层模块,它是程序的主模块。与其联系的有若干下属模块,各下属模块还可以进一步引出更下一层的下属模块,如图所示的树状结构。,树状结构的特点:整个结构只有一个顶层模块,而对于任何一个下属模块来说,它只有一个上级模块,而且同一层模块之间不发生关系。,深度:表示软件结构中从顶层模块到最底层模块的层数。宽度:表示控制的总分布。扇出数:指一个模块直接控制下属的模块个数。扇入数:指一个模块的直接上属模块个数。,衡量模块层次结构的有关指标是:,顶层,1层,2层,扇入为2,扇出为3,扇入为3,3层,4层,软件结构示意图,一个好的软件结构的形态准则是:顶部宽度小,中部宽度大,底部宽度次之;在结构顶部有较高的扇出数,在底部有较高的扇入数。,软件的层次结构相关指标:,上图是网状结构的两个例子。在网状结构中,任何两个模块间都可以有双向的关系。由于不存在上级模块和下属模块的关系,也就分不出层次来。任何两个模块都是平等的,没有从属关系。,网状结构,(a),(b),网状结构,分析比较两种结构的特点后可以看出,对于不加限制的网状结构,由于模块间相互关系的任意性,使得整个结构十分复杂,处理起来势必引起许多麻烦,这与原来划分模块为便于处理的意图相矛盾。所以在软件开发的实践中,人们通常采用树状结构,而不采用网状结构。,三、模块的独立性,模块化的主要优点是降低了软件系统的复杂性,使得系统容易修改,同时使得系统各个部分可以并行开发,从而提高了软件的生产率。提高模块质量在于提高模块独立性。模块的独立性用耦合性和内聚性来衡量。,1、模块独立性(moduleindependence),“模块”,又称“构件”,一般指用一个名字可调用的一段程序。它一般具有如下三个基本属性:功能即指该模块实现什么功能,做什么事情。必须注意,这里所说的模块功能,应是该模块本身的功能加上它所调用的所有子模块的功能。逻辑即描述模块内部怎么做。状态即该模块使用时的环境和条件。,所谓模块的独立性,是指软件系统中每个模块只涉及软件要求的具体的子功能,而和软件系统中其他模块的接口是简单的。即功能专一,模块之间无过多的相互作用的模块。这种类型的模块可以并行开发,模块独立性越强,开发越容易。独立性强的模块,还能减少错误的影响,使模块容易组合、修改及测试。,耦合性(Coupling):用于描述模块之间联系的紧密程度。内聚性(Cohesion):用于描述模块内部联系的紧密程度。模块独立性比较强的模块应该是具有高内聚性和的低耦合度。,模块独立性的度量标准是两个定性准则:,2、耦合性(Coupling),耦合性是模块间相互连接性的度量。,模块分解的一个目标是使块间联系尽可能小,块间联系的大小可从三个方面衡量:,方式块间联系方式有“直接引用”或“用过程语句调用”。作用块间传送的共用信息(参数)类型,可为“数据型”、“控制型”或“混合型”(数据/控制型)。数量块间传送的共用信息的数量。,方式:每个模块用过程语句(或函数方式等)调用其他模块。作用:模块间传送的参数为数据型。数据:模块间公用的信息(如参数等)尽量少。,模块分解的一个目标是使块间联系尽可能小,达到这个目标可通过以下措施:,软件工程,模块独立性,非直接耦合,数据耦合,标记耦合,控制耦合,外部耦合,公共耦合,内容耦合,低,高,强,弱,模块耦合度,模块独立性,软件工程,模块间的耦合,模块之间耦合性越强,功能独立性越差,这样形成的模块结构界面不好。,软件工程,非直接耦合(NondirectCoupling),两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的。非直接耦合的模块独立性最强。,软件工程,数据耦合(DataCoupling),一个模块访问另一个模块时,彼此之间是通过简单数据参数(不是控制参数、公共数据结构或外部变量)来交换输入、输出信息的。,软件工程,标记耦合(StampCoupling),一组模块通过参数表传递记录信息,就是标记耦合。这个记录是某一数据结构的子结构,而不是简单变量。,软件工程,控制耦合(ControlCoupling),如果一个模块通过传送开关、标志、名字等控制参数,明显地控制选择另一模块的功能,就是控制耦合。,软件工程,外部耦合(ExternalCoupling)一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息,则称之为外部耦合。当模块连接到软件、硬件外部环境上时会发生的偶合关系,是相对较高的偶合度。例:I/O将模块耦合到特定设备、合适和通信协议上。应将外部耦合局限在少量的模块中。,软件工程,公共耦合(CommonCoupling)若一组模块都访问同一个公共数据环境,则它们之间的耦合就称为公共耦合。公共的数据环境可以是全局数据结构、共享的通信区、内存的公共覆盖区等。公共耦合的复杂程度随耦合模块的个数增加而显著增加。若只是两模块间有公共数据环境,则公共耦合有两种情况。松散公共耦合和紧密公共耦合。,松散的公共耦合,紧密的公共耦合,软件工程,如果发生下列情形,模块之间就是内容耦合:一个模块直接访问另一个模块的内部数据;一个模块不通过正常入口转到另一模块内部;两个模块有一部分程序代码重迭(只可能出现在汇编语言中);一个模块有多个入口。,内容耦合(ContentCoupling),软件工程,c,进入另一模块内部,模块代码重叠,模块多个入口,软件工程,其他耦合编译器耦合:将源代码同编译器的特定(一般是非标准的)属性联系到一起。操作系统耦合:将设计和结果代码同操作系统联系到一起,当OS发生变化时会造成严重的破坏。,软件工程,软件工程,耦合小结,不希望的,可接受的,理想的,软件工程,模块内聚,模块内聚性越强,功能独立性越好,对于形成的模块结构有比较好的作用。要求模块结构达到高内聚,低耦合。,软件工程,一个模块中各个部分都是完成某一具体功能必不可少的组成部分,或者说该模块中所有部分都是为了完成一项具体功能而协同工作,紧密联系,不可分割的。则称该模块为功能内聚模块。功能内聚模块的功能独立性最强。,功能内聚(FunctionalCohesion),软件工程,这种模块完成多个功能,各个功能相互独立但都在同一数据结构上操作,每一项功能有一个唯一的入口点。这个模块将根据不同的要求,确定该执行哪一个功能。由于这个模块的所有功能都是基于同一个数据结构(符号表),因此,它是一个信息内聚的模块。信息内聚模块可以看成是多个功能内聚模块的组合,并且达到信息的隐蔽。,信息内聚(InformationalCohesion),软件工程,初始化,插入,删除,查找,修改,符号表,软件工程,如果一个模块内各功能部分都使用了相同的输入数据,或产生了相同的输出数据,则称之为通信内聚模块。通常,通信内聚模块是通过数据流图来定义的。模块内各个功能是紧密相连的。,通信内聚(CommunicationCohesion),软件工程,软件工程,使用流程图做为工具设计程序时,如果流程图太大,可以把流程图中的某一部分划出组成模块,就得到过程内聚模块。例如,把流程图中的循环部分、判定部分、计算部分分成三个模块,这三个模块都是过程内聚模块。,过程内聚(ProceduralCohesion),软件工程,时间内聚又称为经典内聚。这种模块大多为多功能模块,但模块的各个功能的执行与时间有关,通常要求所有功能必须在同一时间段内执行。例如,初始化模块和终止模块就是时间内聚模块。,时间内聚(ClassicalCohesion),软件工程,这种模块把几种相关的功能组合在一起,每次被调用时,由传送给模块的判定参数来确定该模块应执行哪一种功能。,逻辑内聚(LogicalCohesion),软件工程,当几个模块内正好有一段代码是相同的,将它们抽取出来形成单独的模块,即巧合内聚模块。这种模块没有独立功能,各部分之间没有联系,或联系很松散。,巧合内聚(CoincidentalCohesion),软件工程,内聚小结,在软件设计过程中不必要确定内聚的精确级别,但要识别低端内聚,争取中高端内聚。,不希望的,可接受的,理想的,4、信息隐蔽(informationconcealment),每个模块的实现细节对于其他模块来说是隐蔽的。也就是说,模块中所包含的信息(数据和过程)不允许其他不需要这些信息的模块使用。该原则有利于提高模块的内聚性。在软件开发中抽象数据类型,如类、对象等。利用他们,在将来修改软件时,可将偶然引入错误所造成的影响限制在一个局部范围之内,不致波及到软件的其他部分。,例如:顺序栈类模板定义constintMAX_SIZE=100;templateclassseqStackpublic:seqStack();seqStack();voidPush(Tx);TPop();TGetTop();boolEmpty();private:TdataMAX_SIZE;inttop;其信息被封装,只能通过访问函数进行处理。,templateclassBiTreepublic:BiTree()root=NULL;BiTree(BiNode*root);BiTree();voidPreOrder(BiNode*root);voidInOrder(BiNode*root);voidPostOrder(BiNode*root);voidLeverOrder(BiNode*root);private:BiNode*root;voidCreat(BiNode*root);voidRelease(BiNode*root);,再如:二叉链表类声明,3.4面向数据流图的设计方法,一、变换分析,基本思想:DFDSystemHierarchy,事实上所有信息流都可归结为变换流(TransformFlow)。,确定主加工及逻辑输入/输出主加工描述了系统的主要功能、特征。其特点是:输入/输出数据流较多,往往主加工不止一个。逻辑输入/输出是指输入/输出主加工的数据流。输入流是把物理输入转换为逻辑输入的数据流。输出流是将逻辑输出转换为物理输出的数据流。,变换分析步骤:,输入流,变换流,输出流,输入流,变换流,输出流,进行一级分解,设计上层模块为每个输入设计一个输入模块,为每个输出设计一个输出模块,同时为每个主加工设计一个处理模块。,M,CI,CT,CO,C,C,D,D,CI,CT,CO,变换分析,进行二级分解,设计中下层模块这一步的工作是自顶向下,逐步细化,为第一层的每一个输入模块、输出模块、处理模块设计它们的从属模块,设计下层模块的顺序一般从设计输入模块的下层开始。,M,CI,CT,CO,处理C,取B,转换B,转换D,送E,进一步细化,取A,转换A,转换E,送F,变换分析技术,F,二、事务分析,当信息流具有明显的“发射中心”时,可归结为事务流(TransactionFlow)。,二、事务分析(续),事务分析步骤:,确定流界首先从数据流图中找出事务流、事务处理中心和事务路径。事务中心前是接受事物,事务中心后是事物路径。,进行一级分析,设计上层模块事务分析的任务是从数据流图中导出具有接受分支和发送分支的软件结构。对事务中心应设计“事物控制”模块;对事物流应设计“接受事物”模块;对事务路径,应设计“发送控制”模块。,进行二级分解,设计中下层模块对于接受分支,可用类似于转换处理型数据流图中对输入数据流的方法设计中下层。对于发送分支,在发送控制模块下为每条事务路径设计一个事务处理模块,这一层称为事务层。在事务层模块下,沿各事务路径进行进一步细化。,对应模块图,事务控制,接受事务,发送事务,P1,P2,P3,事务分析,面向数据流的设计方法举例:,例如:汽车数字仪表板的设计,功能:通过模-数转换实现传感器和微处理机接口;在发光二极管面板上显示数据;指示每小时英里数(mph),行驶的里程,每加仑油行驶的英里数(mpg)等等;指示加速或减速;如果车速超过55mph,则发出警告铃声。,第一步:DFD的分界,先分出I、P、O三块,一般问题的一级分解方法:,第二步:映射,例如:,第三步:修改本着高内聚、低耦合的原则。例:对上面数字仪表板系统的软件结构进一步精化。下面是某些可能的修改:输入结构中的“转换成rpm”和“收集sps”可以合并。模块“确定加速/减速”可以放在模块“计算mph”下面,以减少耦合。模块“加速/减速显示”可以相应地放在模块“显示mph”下面。,例如:,例:精化后的数字仪表板系统的软件结构。,加速/减速显示,确定加速/减速,注:每个模块应附一简要说明描述进出该模块的信息(接口描述);模块内部的信息;过程陈述,包括主要判定点及任务等;对约束和特殊特点的简短讨论。,面向数据流的设计的总体过程:,按照“降低块间联系,提高块内联系”的设计总则进行修改,完善系统的模块图,写出模块的功能说明。,软件结构图的改进:,具体应从以下方面改进:1)尽可能建立功能模块功能模块具有最强的内聚性,满足信息屏蔽原则:一个模块内所包含的信息(过程和数据)对不需要这些信息的模块是不能访问的(黑盒)。一个功能模块应由3部分组成:执行某项任务的部分出错处理部分返回结束标志,消除重复功能,(a),(b),(c),(d),Q,重复部分,2)消除重复功能若两模块含有重复的部分,应设法将重复的功能消去。如下图所示,Q1和Q2两个模块具有类似的功能,图(b)、(c)、(d)方案就是可能的解决方案。,控制范围结构方面的特点,包括模块及其所有下属模块。作用范围判断所涉及到的模块,是从功能特点考虑的。SD方法认为:当作用范围为控制范围的子集时,才能获得较低的块间联系。,3)模块的作用范围与控制范围,图(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、F,(a),(b),答案,显然,图(a)不满足作用范围应在控制范围之内的原则,模块F的作用范围不在控制范围之内。图(b)中模块TOP和图(c)中模块B虽然满足上述原则,但其作用范围所涉及到的模块不是直接的。图(d)的模块设计最合理。,应用范围与作用范围举例:,比较(a)、(b)、(c)、(d)4种设计方案的优劣!,4)模块的大小适当模块大小指其篇幅,一般模块大小约50-100行为宜。5)模块的扇入扇出数不宜太多一个模块调用其他模块的个数,称为该模块的扇出。模块的扇出不宜过大,一般认为不要超出个。一个模块被其他模块调用的个数,称为该模块的扇入。扇入越大,除服务性模块外,模块的扇入扇出数不宜太多,否则块间联系增加。,3.5.1程序流程图(PFC图),3.5.2盒式图(N-S图),3.5.3问题分析图(PAD图),3.5详细设计(ProgramDesignCoding),3.5.4过程设计语言PDL,详细设计的任务:开发一个可以直接转换为程序的软件表示,即对系统中每个模块的内部过程进行设计和描述。,3.5详细设计描述工具,结构化程序设计的特点:自顶向下逐步求精;具有单入口和单出口的控制结构(取消GOTO语句),常用的描述工具:1、PFC图(ProgramFlowChart)2、N-S图(Nassu-Shneiderman)3、PAD图(ProblemAnalysisDiagram)4、PDL语言(ProcedureDesignLanguage),1、程序流程图(ProgramFlowChart),5种基本控制结构为:,(1)顺序结构(sequentialstructure),(2)选择结构(selectivestructure),(3)先判定型循环结构(while-loopstructure),(4)后判定型循环结构(until-loopstructure),(5)多情况选择(casestructure),任何复杂的程序流程图都应由以上五种基本结构组合而成。,缺点:本质上不具备逐步求精的特点,对于提高大型系统的可理解性作用甚微;不易表示数据结构;转移控制太方便。,优点:容易掌握,且历史“悠久”,使用广泛。,ISO认可的规定符号,b,X1,X2,X7,X6,X4,X3,X5,h,i,g,f,e,d,c,F,T,F,F,F,T,T,T,多分支选择结构,先判定型循环结构,选择结构,后判定型循环结构,PFC图,程序流程图,a,j,课堂练习请问:这是结构化程序吗?为什么?试设计一个与它等价的结构化程序。,2、盒图(BoxDiagram):NassiSECOND:=0;,FIRST=KISECOND=0,SECOND=FIRSTFIRST=KI,SECOND=KI,ELSESECOND:=KIENDENDEND,PASCAL源程序段,对应PAD图,FORI:=2TONDO,BEGINIFK1SECONDTHEN,BEGINIFKIFIRST,THENBEGINSECOND:=FIRST;FIRST:=KIEND,例:,PAD图应用举例,一个加工在一页中画不下时,可在另一页上画出。,PAD图的扩充图式,例:N-S图与PAD的转换,特点:结构清晰,层次分明,易读;支持逐步求精的设计思想;容易将PAD自动转换为高级语言源程序。,4、判定表&判定树(DecisionTable&Tree),表示复杂的条件(input)组合与应做动作(output)之间的对应关系。,工具,例:航空行李托运费的算法按规定:重量不超过30公斤的行李可免费托运。重量超过30公斤时,对超运部分,头等舱国内乘客收4元/公斤;其它舱位国内乘客收6元/公斤;外国乘客收费为国内乘客的2倍;残疾乘客的收费为正常乘客的1/2。,工具,用判定树表示计算行李费的算法,注:判定表与判定树并不适用于作为一种通用的设计工具,通常将之用于辅助测试,5、PDL(ProgramDesignLanguage):又称Pseudocode。,例:,有固定的外语法(keyword);,有数据说明,例如:TYPEnumberISSTRINGLENGTH(12)TYPEtableISINSTANCEOFsymbol_table,有子程序定义与调用机制,例如:PROCEDUREINTERFACEpseudocodelinesEND调用时可用:PERFORMUSING,内语法用自然语言描述;,抽象类型,应具备以下特点:,优点:易于实现由PDL到源代码的自动转换。缺点:不够直观。,3.6.1用户界面设计的特性及任务,3.6.3用户界面的基本类型,3.6.4I/O用户界面设计,3.6用户界面(UI)设计,3.6.5MVC模式,3.6.2用户界面设计的原则,随着各种应用软件的面市,作为人机接口的用户界面具有越来越重要的作用,用户界面是否友好直接影响到软件的寿命与竞争力。因此,对用户界面的设计必须予以足够的重视。,UserInterface(UI),FriendlyUI,用户界面应具有的特性什么是友好的用户界面。用户界面设计的任务用户界面设计应该完成的工作。用户界面的基本类型用户界面的工作模式。,用户界面设计中的主要问题:,一、用户界面应具有的特性1、可使用性(availability)使用简单。用户界面中所用术语的标准化和一致性。具有HELP功能。快速的系统响应和低的系统成本。具有容错能力。,3.6.1用户界面设计的特性及任务,2、灵活性(agility)考虑用户的特点、能力、知识水平。提供不同的系统响应信息。提供根据用户需求制定和修改界面。,3、界面的复杂性与可靠性(complexity&reliability)复杂性界面规模及组织的复杂程度。应该愈简单愈好。可靠性指无故障使用的时间间隔。用户界面应该能够保证用户正确、可靠地使用系统,及程序、数据的安全。,1、用户特性分析用户模型了解所有用户的技能和经验,针对用户能力设计或更改界面。从以下方面分析:,二、用户界面设计的任务,这部分工作应该与软件需求分析同步进行。主要包括以下内容:,用户类型通常分为:外行型、初学型、熟练型、专家型。用户特性度量与用户使用模式和用户群体能力有关。包括:用户使用频度、用户用机能力、用户的知识、思维能力等。,2、用户界面的任务分析任务模型(DFD图)是对系统内部活动的分解,不仅要进行功能分解(用DFD图描述),还要包括与人相关的活动。每个加工即一个功能或任务。,3、确定用户界面类型字符界面GUI界面无交互界面,3.6.2用户界面的原则,提高易用性的设计原则:用户界面适合于软件的功能容易理解风格一致及时反馈信息出错处理适应各种用户国际化个性化提高美观程度的设计原则:合理的布局和谐的色彩,3.6.3用户界面的基本类型,从用户角度出发,用户界面设计的类型主要有菜单、图像、对话框和窗口以及问题描述语言、数据表格、图形与图标等。每一种类型都有不同的特点和性能。,混合菜单,1、菜单(menu)按照显示方式:正文菜单、图标菜单、正文和图标混合菜单,如“开始”菜单。,按屏幕位置和操作风格:固定位置、浮动位置(弹出)、下拉式、嵌入式。,2、图像(image)在用户界面中,加入丰富多彩的画面,将能够更加形象地为用户提供有用的信息,以达到可视化的目的。主要的处理操作有:图像的隐蔽和再现、屏幕滚动和图案显示、动画等。,3、对话框(dialoguebox)对话框是在需要时,显示在屏幕上一个矩形区域内的图形和正文信息。通过对话,实现系统和用户之间的通信。对话框显示的方式与弹出式菜单类似,即瞬时弹出。同时,系统还应将对话框所覆盖的原图像进行保存,以便在对话结束后能立即恢复。有三种对话形式:,必须回答式对话框,无需回答式对话框,警告式对话框,必须回答式无需回答式警告式,4、窗口(window)图形学中称为视图区(Viewport),视为虚拟屏幕。一个实用窗口,可包含部件:,菜单区(menubar)标题区(titlebar)大小区(sizebar)用户工作区(usersworkbar)横向滚动区(horizontalscrollbar)纵向滚动区(verticalscrollbar)图标区(iconbar)移动区(movebar)退出区(quitbar),下图描述了一个包括多个部件的窗口.,3.6.4I/O用户界面设计,I/O用户界面的设计,尤其是数据输入界面的设计,直接影响到用户使用系统的效率。特别是输入数据量大时,主要考虑提高输入速度。,、数据输入界面设计数据输入界面设计是系统的一个重要组成部分,一个好的输入界面应该尽可能方便而有效地进行数据输入。,尽量减少输入工作量采用对相同内容输入设置默认值(缺省值)、自动填入、列表或点击选择输入屏幕与输入格式匹配应以操作简便为主要原则。数据输入的一般规则常常考虑确定输入、交互动作、确定删除、提供反馈数据等。,、输出界面设计,数据输出界面设计,首先应该了解数据显示的要求,选择适当的显示内容和显示的形式。,显示内容选择的原则是:只选择必需的数据显示,联系紧密的数据应一起显示,每一屏数据的数量不超过整个屏幕的30%。安排显示结构的规则:数据安排要方便用户使用,要提供明了的提示帮助信息。信息的表示方法例:1l显示重要信息时应注意文字和数值的显示显示数值信息时,我们应根据信息是定量还是定性表达来选择显示方式。,3、颜色的使用,1)限制使用的颜色数目并且用一种保守的方式使用它们。2)使用颜色的改变来表示系统状态的改变。3)用有意义的和一致的方式使用颜色。4)考虑颜色的生理作用。5)尽量不要选择高亮度或者高饱和度的纯色,并注意合适的颜色搭配。,View,Controller,Model,TableClass,嵌入SQL,Data,V:呈现给用户的界面,也是表现数据的层次,负责人机界面。,C:用户界面与业务逻辑层的通信控制层,一方面解释来自用户界面的输入,调用相应的Model中的方法,另一方面处理来自Model的事件和返回的执行结果,调用适当的View给用户。,M:整个模型的核心部分,代表解决方案的真正业务逻辑部分。,D:数据存储层,负责模型与数据库相联系。,3.6.5MVC模型,举例:,通常结构化分析包括问题定义、可行性研究和需求分析3个阶段;接下来,就进入结构化设计。,例1:利用结构化方法分析和设计一个工资支付系统。,软件设计实例,某校财务部门人工计算工资并编制财务报表,每个月都需要两名会计紧张工作半个月才能完成,不仅效率低而且成本高。现在寻找一种比较便宜的生成工资明细表和各种财务报表的办法。,一个工资支付系统,1)问题定义,预期项目规模:目前计算工资所花费的成本;新系统的开发成本;运行费用。,项目名称:工资支付。问题:目前计算工资和编制报表的费用太高。项目目标:研究开发费用较低的新工资支付系统的可能性。项目规模:开发成本应该不超过7.2万元(50%)。(假定一名会计人工费2.4万/年;新系统年获利2.4万;3年可收回投资即7.2万;所以7.2万可能是投资上限。)初步设想:用自己的计算机系统生成工资明细表和财务报表。可行性研究:为了更全面地研究工资支付项目的可行性,建议进行大约2周的可行性研究。这个研究成本不超过4000元。,问题定义结果:,2)可行性研究用最小的代价尽快确定问题是否能够解决,以避免盲目投资带来的巨大浪费。-澄清系统规模和目标;-研究现有系统;(用系统流程图描述处理工资事务的大致过程;现有人工工资支付系统的工作流程。),-导出高层逻辑模型(工资支付系统的数据流图),-进一步确定系统规模和目标步骤到是一个循环过程。-导出供选择的解法,进行可行性分析,包括技术可行性、操作可行性和经济可行性。通常分析员应该至少提出3种类型的供选择的方案:低成本系统、中等成本系统和高成本系统。,-低成本方案:每2个月发一次工资,则人工计算成减半。-中等成本方案:中等成本方案的系统流程图。中等成本方案的成本效益分析。,高成本方案:建立一个中央数据库,为开发完整的管理信息系统做好准备,且把工资支付系统作为该系统的第一个子系统。开发成本大约增加到12万。,-推荐最佳方案低成本方案虽然诱人,但很难付诸实现;高成本方案从长远看是合理的,但它所需要的投资超出了预算;从已经确定的系统规模和目标看,显然中等成本方案是最好的。-草拟开发计划:即实现中等成本方案的粗略计划。,-写出文档(形成可行性分析报告)提交审查,3)需求分析确切地回答“系统必须做什么?”具体地,以数据流图为出发点设计出更精确的数据流图,并写出数据字典及一系列简明的算法描述,更详细地定义系统应该完成的每一个逻辑功能。,沿数据流图回朔,把数据流和数据存储定义到元素级。如:工资明细表上包含的数据元素,写出文档初稿至少包含:数据流图,数据字典(数据字典软件包或卡片形式),以及一组黑盒形式的算法描述(通常用IPO表记录对算法的初步描述)。,定义逻辑系统:补充后的工资支付系统数据流图:,细化数据流图:如对“加工事务数据”的细化:,工资支付系统完整的数据流图:,书写正式文档:软件需求规格说明书技术审查和管理复审,4)结构化设计画出流边界的工资支付系统流程图。,工资支付系统的第一级分解:高层控制结构如图所示:,工资支付系统的第二级分解:,再进一步消除重复功能(即接收工资数据和取数据两个功能模块),优化后的工资支付软件结构:,例2:请用状态图描绘复印机的行为。,复印机的状态图如下:,例3:请画出患者监护系统的数据流图。,患者监护系统的基本系统模型如下:,患者监护系统的功能级数据流图如下:,例4:请画出计算机储蓄系统的实体-关系图、数据流图。,例5:请画出仓库管理ER图。,2、请分析下面软件结构图中模块之间的耦合类型。,内容耦合,公共耦合,控制耦合,复合耦合,数据耦合,高,耦合性,低,本章习题,一、选择题1、模块的基本特征是()。A)外部特征(输入/输出、功能)B)内部特征(输入/输出、功能)C)内部特征(局部数据、代码)D)外部特征(局部数据、代码)2、SD方法的设计总则是()。A)程序简洁、操作方便B)结构清晰、合理C)模块内聚性强D)模块之间耦合度低3、软件设计的主要任务是()。A)将分析阶段获得的需求说明转换为计算机中可实现的系统B)完成系统的数据结构和程序结构设计C)完成模块的编码和测试D)对模块内部的过程进行设计,4、设计阶段应达到的目标有()。A)提高可靠性和可维护性B)提高应用范围C)结构清晰D)提高可理解性和效率5、从工程管理的角度来看,软件设计分两步完成()。A)系统分析模块设计B)详细设计总体设计C)模块设计详细设计D)总体设计详细设计6、模块独立性准则由以下定性指标来衡量()。A)分解度B)耦合度C)屏蔽性D)内聚性7、用户界面设计的任务包括()。A)确定用户界面类型B)建立任务模型C)建立用户模型D)建立功能模型,二、判断题1、划分模块可以降低软件的复杂度和工作量,所以应该将模块分得越小越好。()2、在网状结构中任何两个模块都是平等的,没有从属关系,所以在软件开发过程中常常被使用。()3、信息隐蔽原则有利于提高模块的内聚性。()4、中心变换型的DFD图可看成是对输入数据进行转换而得到输出数据的处理,因此可以使用事务分析技术得到初始的模块结构图。()5、SD法是一种面向数据结构的设计方法,强调程序结构与问题结构相对应。()6、所谓结构冲突,是指输入数据与输出数据之间很少或没有结构上的对应关系。通常解决的办法是:构造一个或者多个中间结构,在输入和输出结构之间进行转换。()7、当模块的控制范围是其作用范围的子集时,模块之间的耦合度较低。()8、JACKSON方法是以数据流、数据封闭性准则逐层分解的。(),三、简答题1、模块内联系和模块间联系有哪些种类?2、分析以下DFD图,说明属于哪种类型的DFD图,并按照相应的变换将其转换为初始的模块结构图。,3、下图是修改文件记录的DFD图,请确定其主加工。,4、按照“降低块间联系,提高块内联系”的设计总则对模块进行修改,具体从哪些方面进行改进?,5、根据模块的作用范围与控制范围的原则,判定a、b两图的正确性。,
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


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

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


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