3.1 软件设计--模块化.ppt
《3.1 软件设计--模块化.ppt》由会员分享,可在线阅读,更多相关《3.1 软件设计--模块化.ppt(200页珍藏版)》请在三一办公上搜索。
1、软 件 设 计Software Design,第 三 章Chapter 3,第三章 软件设计,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 软件设计在开发阶段中的重要性,软件设计,编码,软件测试,开发阶段信息流图示,软件需求确定以后,进入由软件设计、编码、测试三个关联阶段构成
2、的开发阶段。在设计步骤中,根据软件的功能和性能需求,采用某种设计方法进行系统结构设计、数据结构设计、过程设计和界面设计。,系统结构设计用于定义软件系统的整体结构,是软件开发的核心步骤。在设计步骤中,建立软件主要成份之间的关系。数据设计侧重于数据结构、数据库、文件的定义。过程设计则是把结构成份(模块)转换成软件的过程性描述。界面设计是对系统边界的描述,是用户和系统进行交互的工具。在编码步骤中,根据这种过程性描述,生成源程序代码,然后通过测试,最终得到完整有效的软件。软件设计决定了软件质量。,3.1.2 软件设计阶段的任务,一、软件设计的任务 将分析阶段获得的需求规格说明转换为计算机中可实现的系统
3、,完成软件的数据设计、系统结构设计、过程设计和界面设计,最后得到软件设计说明书。,总体设计,复审,修 改,详细设计,模块描述(过程描述),复审,修 改,软件设计工作流程图示,一般地,从工程管理的角度,软件设计分两步完成:总体设计(概要设计)和详细设计。其工作流程如图所示。,设计阶段结束时要交付的文档是设计规格说明书。根据设计方法的不同,有不同的设计文档。每个设计步骤完成后,都应进行复审。,首先做概要设计,将软件需求转化为软件的系统结构、数据结构、用户界面;然后是详细设计,即过程设计,通过对过程模块的详细描述,得到软件详细的数据结构和算法。,1、确定软件结构,划分子系统模块 好的软件结构可以使软
4、件的开发过程流畅自如,同时也能为软件的部署带来好处。合理的模块划分可以降低软件开发的浮渣度,同时也能提高软件的可重用性。,软件设计阶段的任务可分为四部分:,软件设计的目标,2、确定系统的数据结构 数据结构的建立对于信息系统而言尤为重要。要确定数据元素的类型,组织、存取方式以及处理方式等。,软件设计阶段的任务可分为四部分:,软件设计的目标,三类设计任务,3、过程设计 通过对过程模块的详细描述,得到软件详细的数据结构和算法。,软件设计阶段的任务可分为四部分:,三类设计任务,4、用户界面设计 作为人机接口的用户界面起着越来越重要的作用,它直接影响到软件的寿命。,软件设计阶段的任务可分为四部分:,二、
5、软件设计的目标在设计阶段应达到的目标是:提高可靠性;提高可维护性;提高可理解性;提高效率。,衡量该目标的准则:1、软件实体有明显的层次结构,有利于软件的维护。2、软件实体应该是模块化的,且每个模块具有独立功能。3、软件实体与外部环境的界面清晰。4、设计规格说明清晰、简洁、完整和无二义性。,常用的设计方法有:SD法、Jackson法、HIPO法、Parnas法、Warnier法等;还有面向对象的设计方法(OOD)。,3.2 软件体系结构设计,3.2.1 软件体系结构的基本概念,3.2.2 几种典型的软件体系结构,3.2.3 体系结构设计原则,3.2.1 软件体系结构的基本概念,起初,人们把软件设
6、计的重点放在数据结构和算法的选择上,随着软件规模的扩大,对总体的系统结构设计和规格说明比数据结构和算法的选择明显重要得多。当着一个软件被划分为若干个模块,并且模块之间相互作用,形成一个整体时,它就具有了体系结构。软件的体系结构定义:为软件系统提供了一个结构、行为和属性的高级抽象,由构成系统的元素的描述、这些元素的相互作用、指导元素集成的模式,以及这些模式的约束组成。,软件体系结构的意义主要体现在如下3个方面:重用:人们希望系统能够重用以前的代码和设计,从而提高开发效率。扩展:人们希望在系统能够保持结构稳定的前提下很容易地扩充功能和提高性能。简洁:好的架构一定易于理解、易于学习、易于维护。,所谓
7、软件架构师实际上就是软件的总体设计者。一般地,应用程序的功能模块划分:用户界面(user interface)、业务逻辑(business logic)和数据存储(data storage)。其中,,用户界面是应用程序呈现给最终用户的使用界面,与用户直接打交道的部分,用于表现和描绘数据。业务逻辑是应用程序的核心部分,处理业务流程和数据,是真正实现应用程序的功能模块。数据存储是业务逻辑部分所需处理或已处理结果的存储,是保存运算结果部分。,用户界面,数据存储,业务逻辑,基于宿主机的计算模型客户/服务器(C/S)模型三层C/S结构模型浏览器/服务器(B/S)模型异构结构模型(C/S与B/S混合软件体
8、系结构),集中型:,分布型:,优秀的开发者常常会使用一些体系结构模式(architecture pattern)作为软件系统结构设计策略。这里重点介绍集中型和分布式结构。,3.2.2 几种典型的软件体系结构,基于宿主机的计算模型(集中式),用户界面、业务逻辑和数据存储功能都集中在大、中/小型机上实现(用户通过哑终端来共享大、中/小型机的资源)。,数据表示,业务逻辑,数据存储,单层应用模型,仓库模型(The repository model)也称“容器模型”,是一种集中式的模型。各子系统可以直接访问中央数据仓库存储的共享数据。子系统之间紧密耦合。,仓库模型(The repository mode
9、l),各子系统共享中央数据库中的数据共享容器模型 各子系统可以有自己的数据库,子系统之间通过消息传递实现数据交换。,适宜命令控制系统、CAD系统,仓库模型的主要优缺点:优点:1.共享大数据量的有效方法。2.子系统不必关心其它的子系统如何使用它所产生的数据。3.易于将新子系统集成,若新子系统也采用相同规范。,缺陷:1.为了共享数据,各子系统必须有一致的数据视图,不可避免地会影响了整个系统的性能。2.子系统的改变,使产生的数据结构也可能发生改变。3.统一的数据库 结构(备份、安全、访问控制和恢复的策),将影响子系统的效率。,客户/服务器(C/S)模型(分布式),随着PC机诞生和应用,用户界面和部分
10、的业务逻辑被移到了PC端。服务器端(后台)负责数据管理,客户机(前台)完成与用户的交互任务。,业务逻辑,数据存储,数据表示,业务逻辑,数据库服务器,C/S结构的优缺点,便于进行快速应用开发,市场上有很多这样的工具,如PB、Delphi、Visual Basic、Visual C+等。C/S结构具有响应速度快,操作界面设计个性化,直观、简单、方便的特点。C/S结构不足:开发成本高,软件维护和升级困难,因此,新技术不能轻易应用。需要专门的客户端安装程序,分布功能弱。兼容性差,软件移植困难。,完整的应用包含三个相对独立的逻辑部分,而两层的C/S结构只有两个端应用。应用逻辑应该映射到哪一端上呢?三种情
11、况:,两层C/S架构将数据表示和处理逻辑分开,但应用逻辑和两端之一是紧耦合的,不适宜多用户、多数据库,是非安全的网络环境。,三层C/S结构,随着中间件技术的发展,出现了三层C/S结构。与二层C/S结构相比,增加了一个应用服务器。,数据库服务器,数据库服务器,应用服务器,表示层,数据层,功能层,InternetIntranet,三层C/S结构风格,表示层:应用的用户接口部分,担负找用户与应用间的对话功能。用于检查用户从键盘等设备输入的数据,显示应用输出的数据。功能(或业务逻辑)层:将具体的业务处理逻辑编入程序中,并确认用户对应用和数据库存取权限的功能数据层:数据库管理系统,负责管理数据库数据的读
12、写。,在多层模型中,中间层会用到应用服务,包括事务服务、消息服务等等。常见的事务服务器有Microsoft Transaction Server,消息服务器有Microsoft Message Queue。,浏览器/服务器(B/S)风格,基于Web的B/S风格其实也是一种客户机/服务器风格,只不过它的客户端是浏览器。为了区别传统的C/S风格,才特意称其为B/S风格。它实际上是一种三层应用结构的一种实现方式,即:浏览器/Web服务器/数据库服务器。,数据库服务器,InternetIntranet,Web服务器,表示层,数据层,功能层,数据库,B/S结构的优缺点,B/S结构具有分布式、基于Web、
13、开放性和适应性的优势,它使业务扩展简单,维护方便。但与C/S结构相比,B/S结构也有许多不足之处:个性化特点明显降低,实现个性化设计要求难。缺乏对动态页面的支持能力,没有集成有效的数据库处理能力;扩展能力差,安全性难以控制;数据查询等响应速度远低于C/S结构;数据提交一般以页面为单位,数据的动态交互性不强,不利于在线事务处理(OLTP)应用。,C/S与B/S混合的软件体系结构,“内外有别”模型企业内部用户通过局域网直接访问数据库服务器,软件系统采用C/S结构;企业外部用户通过Internet访问Web服务器,通过Web服务器再访问数据库服务器,软件系统采用B/S结构。,数据库服务器,Inter
14、netIntranet,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结构,案 例,背景:电力系
15、统精简机构,变电站向无人、少人和以点带面方向发展(“减人增效”)变电综合信息管理系统。功能需求:包括变电运行所需的运行记录、图形开票、安全生产管理、生产技术管理、行政管理、总体信息管理、技术台帐管理、班组建设、学习培训、系统维护等功能。体系结构设计:充分考虑变电站分布管理需要,采用“内外有别”模型。,本系统采用C/S与B/S混合的软件体系结构(“内外有别”)。,IntenetIntranet,县调,地调,省调,Internet用户,Web服务器,变电站内部,B/S结构,中央控制室,系统管理员,变电站内部局域网,站长、其他,C/S结构,数据库服务器,变电站外部,在架构设计中,系统划分方式通常有两
16、种:横向划分和纵向划分,其中:纵向划分是将系统划分成若干层,每个层完成一定的处理功能,如数据存储层、商务逻辑层和应用表达层等。横向划分是将系统按照商业逻辑进行划分,例如将一个网上书店系统划分为进货、销售、库存管理、员工管理等。,一般地,,分布式对象结构(Distributed Objects Architecture),在C/S模型中,客户和服务器在服务/请求上的差别,在一定程度上限制了系统的灵活性和可扩展性。,采用分布式对象结构:“对象(Object)”提供服务的系统组件(System Component)。每个对象在逻辑上是平等的,它们可以互相为对方提供所需的服务。提供服务的对象就是服务器
17、,而提出服务请求的对象就是客户。,“软件总线(Software Bus)”的中间件(Middleware)即对象请求代理(Object Request Broker,简称ORB)分布式对象结构具有很好的开放性和透明性,用户可以非常方便地在总线上添加、更新或删除组件对象。,分布式对象结构具有优良特性:1.可在系统布署完成后,再具体考虑服务的分布和如何提供服务的问题。2.具有开放式结构,提供了极好的灵活性和可伸缩性。3.系统可进行动态分配。,流行的ORB技术标准有两种:CORBA(Common Object Request Broker Architecture)DCOM(Distributed
18、Component Object Model),抽象机模型,又称为分层模型,通常用于建立子系统的接口模型。每层提供一组服务,每层定义一个抽象机。典型的例子:,ISO/OSI 开放系统互连参考模型,优点:支持增量式开发。缺点:系统构成,性能保证较困难。,3.2.3 体系结构设计原则,合适性结构稳定性可扩展性可复用性,3.3 模块分解,一旦确立软件体系结构以后,需要做的工作就是进行系统的模块分解。,模块是程序对象的集合,并且被命名。例如,过程、函数、子程序、宏;类等,是构成软件系统结构的基本元素。,所谓模块化(modularization),就是将系统划分为若干个模块,每个模块完成一个子功能。模块
19、化的目的是将系统“分而治之”,模块化能够降低问题的复杂性,使软件结构清晰,易阅读、易理解,易于测试和调试,因而也有助于提高软件的可靠性。,一、模块化,模块化降低了软件复杂度。,令: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。
20、注意选择分解的最佳模块数。右图描述了模块化与软件成本的关系。,二、模块之间的关系,模块之间关系决定了整个系统的结构,也确定了系统的质量。模块之间的关系可有多种,一般可表示为层次结构和网状结构。,层次结构(或树状结构),在树状结构中,位于最上层的根部是顶层模块,它是程序的主模块。与其联系的有若干下属模块,各下属模块还可以进一步引出更下一层的下属模块,如图所示的树状结构。,树状结构的特点:整个结构只有一个顶层模块,而对于任何一个下属模块来说,它只有一个上级模块,而且同一层模块之间不发生关系。,深度:表示软件结构中从顶层模块到最底层模块的层数。宽度:表示控制的总分布。扇出数:指一个模块直接控制下属的
21、模块个数。扇入数:指一个模块的直接上属模块个数。,衡量模块层次结构的有关指标是:,顶层,1层,2层,扇入为2,扇出为3,扇入为3,3层,4层,软件结构示意图,一个好的软件结构的形态准则是:顶部宽度小,中部宽度大,底部宽度次之;在结构顶部有较高的扇出数,在底部有较高的扇入数。,软件的层次结构相关指标:,上图是网状结构的两个例子。在网状结构中,任何两个模块间都可以有双向的关系。由于不存在上级模块和下属模块的关系,也就分不出层次来。任何两个模块都是平等的,没有从属关系。,网状结构,(a),(b),网状结构,分析比较两种结构的特点后可以看出,对于不加限制的网状结构,由于模块间相互关系的任意性,使得整个
22、结构十分复杂,处理起来势必引起许多麻烦,这与原来划分模块为便于处理的意图相矛盾。所以在软件开发的实践中,人们通常采用树状结构,而不采用网状结构。,三、模块的独立性,模块化的主要优点是降低了软件系统的复杂性,使得系统容易修改,同时使得系统各个部分可以并行开发,从而提高了软件的生产率。提高模块质量在于提高模块独立性。模块的独立性用耦合性和内聚性来衡量。,1、模块独立性(module independence),“模块”,又称“构件”,一般指用一个名字可调用的一段程序。它一般具有如下三个基本属性:功能 即指该模块实现什么功能,做什么事情。必须注意,这里所说的模块功能,应是该模块本身的功能加上它所调用
23、的所有子模块的功能。逻辑 即描述模块内部怎么做。状态 即该模块使用时的环境和条件。,所谓模块的独立性,是指软件系统中每个模块只涉及软件要求的具体的子功能,而和软件系统中其他模块的接口是简单的。即功能专一,模块之间无过多的相互作用的模块。这种类型的模块可以并行开发,模块独立性越强,开发越容易。独立性强的模块,还能减少错误的影响,使模块容易组合、修改及测试。,耦合性(Coupling):用于描述模块之间联系的紧密程度。内聚性(Cohesion):用于描述模块内部联系的紧密程度。模块独立性比较强的模块应该是具有高内聚性和的低耦合度。,模块独立性的度量标准是两个定性准则:,2、耦合性(Coupling
24、),耦合性是模块间相互连接性的度量。,模块分解的一个目标是使块间联系尽可能小,块间联系的大小可从三个方面衡量:,方式 块间联系方式有“直接引用”或“用过 程语句调用”。作用 块间传送的共用信息(参数)类型,可为“数据型”、“控制型”或“混合型”(数据/控制型)。数量 块间传送的共用信息的数量。,方式:每个模块用过程语句(或函数方式等)调用其他模块。作用:模块间传送的参数为数据型。数据:模块间公用的信息(如参数等)尽量少。,模块分解的一个目标是使块间联系尽可能小,达到这个目标可通过以下措施:,软件工程,模块独立性,非直接耦合,数据耦合,标记耦合,控制耦合,外部耦合,公共耦合,内容耦合,低,高,强
25、,弱,模块耦合度,模块独立性,软件工程,模块间的耦合,模块之间耦合性越强,功能独立性越差,这样形成的模块结构界面不好。,软件工程,非直接耦合(Nondirect Coupling),两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的。非直接耦合的模块独立性最强。,软件工程,数据耦合(Data Coupling),一个模块访问另一个模块时,彼此之间是通过简单数据参数(不是控制参数、公共数据结构或外部变量)来交换输入、输出信息的。,软件工程,标记耦合(Stamp Coupling),一组模块通过参数表传递记录信息,就是标记耦合。这个记录是某一数据结构的子结构,而不是简单变
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 3.1 软件设计-模块化 软件设计 模块化
链接地址:https://www.31ppt.com/p-2793820.html