第4章软件总体设计概要课件.ppt
《第4章软件总体设计概要课件.ppt》由会员分享,可在线阅读,更多相关《第4章软件总体设计概要课件.ppt(119页珍藏版)》请在三一办公上搜索。
1、1,第四章 软件总体设计,2022年12月20日,第四章 软件总体设计,2,【本章引言】,总体设计过程通常由两个阶段组成:系统设计和结构设计。其中系统设计的任务是确定系统的具体实现方案,结构设计则是确定软件的模块结构。这两个阶段是紧密联系在一起的,它们执行的效果将直接影响到总体设计好坏,乃至整个软件工程的合理与否。前一个阶段是后一个阶段的基础,后一个阶段是前一个阶段的发展方向。因此,我们在总体设计的整个过程中必须围绕系统设计和结构设计这两个阶段展开每一项工作。,2022年12月20日,第四章 软件总体设计,3,第四章 软件总体设计,【本章重点】软件设计的概念与原则 ;掌握总体设计的步骤和方法
2、;【教学目标】掌握软件设计的概念与原则 ;掌握总体设计的步骤和方法 ;了解总体设计的文档与评审。,2022年12月20日,第四章 软件总体设计,4,第四章 软件总体设计,4.1 总体设计概述 4.2 总体设计的图形描述工具 4.3 模块化设计 4.4 面向数据流的设计方法 4.5 小结 4.6 习题,2022年12月20日,第四章 软件总体设计,5,软件设计阶段的任务与目标,软件编码前,必须先进行软件设计。软件设计是软件开发的关键步骤,直接影响软件的质量。在软件需求分析阶段已经完全弄清楚了软件的各种需求,较好地解决了所开发的软件“做什么”的问题,并已在软件需求说明书和数据要求说明书中详尽和充分
3、地阐明了这些需求以后,下一步就要着手实现软件的需求,即软件设计阶段要解决“怎么做”的问题。,2022年12月20日,第四章 软件总体设计,6,软件设计在开发阶段中的重要性,软件设计阶段要解决“如何做”的问题。这显然是整个软件开发过程的核心问题,所有的开发工作都将根据设计的方案进行。系统的总体结构在该阶段决定,因此软件的总体设计决定了系统的质量。软件需求确定以后,进入由软件设计、编码、测试三个关联阶段构成的开发阶段。开发阶段的信息流如图所示。在设计步骤中,根据软件的功能和性能需求等,采用某种设计方法进行数据设计、系统结构设计和过程设计。,2022年12月20日,第四章 软件总体设计,7,2022
4、年12月20日,第四章 软件总体设计,8,数据设计侧重于软件数据结构的定义系统结构设计定义软件系统的整体结构,是软件开发的核心步骤。在设计步骤中,建立软件主要成份之间的关系过程设计则是把结构成份转换成软件的过程性描述,在编码步骤中,根据这种过程性描述,生成源程序代码,然后通过测试,最终得到完整有效的软件。,2022年12月20日,第四章 软件总体设计,9,软件设计是后续开发步骤及软件维护工作的基础。如果没有设计,只能建立一个不稳定的系统结构,2022年12月20日,第四章 软件总体设计,10,软件设计阶段的任务,一、软件设计的任务将分析阶段获得的需求说明转换为计算机中可实现的系统,完成系统的结
5、构设计,包括数据结构和程序结构,最后得到软件设计说明书。,从工程管理的角度来看,软件设计分两步完成;分为总体设计(概要设计)和详细设计两个阶段。其工作流程如图所示。 首先做概要设计,将软件需求转化为数据结构和软件的系统结构。然后是详细设计,即过程设计。通过对结构表示进行细化,得到软件详细的数据结构和算法。,2022年12月20日,第四章 软件总体设计,11,把分析模型转变成软件,2022年12月20日,第四章 软件总体设计,12,2022年12月20日,第四章 软件总体设计,13,概要设计的基本目的就是回答“概括地说,系统应该如何实现”划分组成系统的物理元素-程序、文件、数据库和文档等,另一方
6、面要设计软件的结构,即确定系统中每个程序由哪些模块组成,以及这些模块相互间的关系,总体设计过程,2022年12月20日,第四章 软件总体设计,14,在详细设计过程中,需要完成的工作是:1.确定软件各个组成部分内的算法以及各部分的内部数据组织2.选定某种过程的表达形式来描述各种算法。3.进行详细设计的评审,详细设计,2022年12月20日,第四章 软件总体设计,15,总体设计,复审,修 改,详细设计,模块描述,复审,修 改,软件设计工作流程,设计阶段结束要交付的文档是设计说明书,根据设计方法的不同,有不同的设计文档。每个设计步骤完成后,都应进行复审。,2022年12月20日,第四章 软件总体设计
7、,16,1、划分模块,确定软件结构 开发方法不同,确定软件结构的方法也不同。例如SD法,是从分层的DFD图导出初始的结构图,再对初始的结构图进行改进,获得最终的结构图。 一般包括确定系统的软件结构,分解模块 ,确定系统的模块层次关系。,2、确定系统的数据结构 要确定数据的类型,组织、存取方式,相关程度及处理方式等。,3、设计用户界面,软件设计阶段的任务可分为三部分:,2022年12月20日,第四章 软件总体设计,17,二、软件设计的目标在设计阶段应达到的目标是:提高可靠性;提高可维护性;提高可理解性;提高效率。,2022年12月20日,第四章 软件总体设计,18,常用的设计方法有:SD法、Ja
8、ckson法、HIPO法、Parnas法、Warnier法等。,衡量该目标的准则:1、软件实体有明显的层次结构,利于软件元素间控制2、软件实体应该是模块化的,模块具有独立功能3、软件实体与环境的界面清晰4、设计规格说明清晰、简洁、完整和无二义性,2022年12月20日,第四章 软件总体设计,19,4.1 总体设计概述,4.1.1 总体设计的任务确定模块结构,划分功能模块,将软件功能需求分配给所划分的最小单元模块。确定模块间的联系,确定数据结构、文件结构、数据库模式,确定测试方法与策略。编写总体设计说明书,用户手册,测试计划,选用相关的软件工具来描述软件结构,结构图是经常使用的软件描述工具。选择
9、分解功能与划分模块的设计原则,2022年12月20日,第四章 软件总体设计,20,4.1 总体设计概述,4.1.2 总体设计的步骤1设计系统方案2选取合理的方案 3推荐最佳方案 4功能分解5软件结构设计6数据库设计、文件结构的设计7制定测试计划8书写文档9审查和复审,2022年12月20日,第四章 软件总体设计,21,软件结构,软件结构是软件模块之间关系的表示,它决定了整个系统的结构,也确定了系统的质量。模块之间的关系可有多种,但都可以归结为一种层次关系。 软件结构图是总体设计阶段的主要描述工具,它描述了构成系统的基本元素模块及模块之间的调用关系,模块之间的数据传递关系。,2022年12月20
10、日,第四章 软件总体设计,22,2022年12月20日,第四章 软件总体设计,23,软件结构的基本概念,模块(Module)模块是程序对象有名字的集合。例如,过程、函数、子程序、宏等,是构成软件系统结构的基本元素。,软件结构图,2022年12月20日,第四章 软件总体设计,24,体系结构设计是软件设计的第一个阶段,该阶段侧重于系统宏观结构的设计,而不关心模块的内部算法。杨叔子院子曾这样指点其弟子: 文学中有科学,音乐中有数学,漫画中有现代数学的拓扑学。漫画家可以“几笔”就把一个人画出来,不管怎么美化或丑化,就是活像。为什么?因为那“几笔”不是别的,而是拓扑学中的特征不变量,这是事物最本质的东西
11、。体系结构是软件系统中最本质的东西:软件系统的体系结构分为集中式的层次结构、客户机/服务器等。,2022年12月20日,第四章 软件总体设计,25,一、层次结构,2022年12月20日,第四章 软件总体设计,26,2022年12月20日,第四章 软件总体设计,27,二、 客户服务器模型(Client/Server Architectural Model),C/S结构是一种分布式模型,采用发请求、得结果的模式:客户机 向服务器发出请求(数据请求、网页请求、文件传输请求等)。服务器 响应请求,进行相应的操作,将结果回传给客户机,客户机再将格式化后的结果呈现给用户。,C/S结构的应用都由三个相对独立
12、的逻辑部分组成。,2022年12月20日,第四章 软件总体设计,28,两层客户服务器模型 (Two Tier Client/Server Architectural Model),C/S的工作模式是一种远程过程调用(RPC,Remote Procedure Call)模式,允许客户端和服务器端有不同的软硬平台。,2022年12月20日,第四章 软件总体设计,29,例:电影图片库的系统的体系结构s,2022年12月20日,第四章 软件总体设计,30,完整的应用包含三个相对独立的逻辑部分,而两层的C/S结构只有两个端应用。应用逻辑应该映射到哪一端上呢? 三种情况:,两层C/S架构将数据表示和处理逻
13、辑分开 ,但应用逻辑和两端之一是紧耦合的,不适宜多用户、多数据库、非安全的网络环境。,2022年12月20日,第四章 软件总体设计,31,2.三层/多层应用模型(Three/Multi Tier Model),第一级是数据库管理结点(database management node)。第二级或中间级是“商业逻辑结点” (business logic node),是指具体应用中实施的 程序逻辑和法则。第三级是用户界面级,强调高效、方便易用的用户界面。,服务器,客户机,2022年12月20日,第四章 软件总体设计,32,在多层模型中,中间层会用到应用服务,包括事务服务、消息服务等等。常见的事务服务
14、器有Microsoft Transaction Server,消息服务器有Microsoft Message Queue。,2022年12月20日,第四章 软件总体设计,33,三、分布式对象结构(Distributed Objects Architecture),在C/S模型中,客户和服务器在服务/请求上的差别,在一定程度上限制了系统的灵活性和可扩展性。,采用分布式对象结构 : “对象(Object)”提供服务的系统组件(System Component)。 每个对象在逻辑上是平等的,它们可以互相为对方提供所需的服务。 提供服务的对象就是服务器,而提出服务请求的对象就是客户。,2022年12月
15、20日,第四章 软件总体设计,34,软件总线(Software Bus)的中间件(Middleware) 即对象请求代理(Object Request Broker,ORB) 分布式对象结构具有很好的开放性和透明性,用户可以非常方便地在总线上添加、更新或删除组件对象。,2022年12月20日,第四章 软件总体设计,35,4.2 总体设计的图形工具,4.2.1 层次图,2022年12月20日,第四章 软件总体设计,36,4.2 总体设计的图形工具,4.2.2 HIPO图,2022年12月20日,第四章 软件总体设计,37,大学教务管理系统H图,2022年12月20日,第四章 软件总体设计,38,
16、IPO图的一个例子,2022年12月20日,第四章 软件总体设计,39,4.2 总体设计的图形工具,4.2.3 结构图,2022年12月20日,第四章 软件总体设计,40,软件结构图(SC图),结构图(Structure Chart,SC图)是精确表达软件结构的图形表示方法,它以特定的符号表示模块、模块间的调用关系和模块间信息的传递。模块(Module):用矩形框表示,框中写有模块的名字,说明模块的功能。模块是程序对象有名字的集合。例如:过程、函数、子程序、宏等。,数据:调用箭头边上的小箭头表示调用时从一个模块传送给另一模块的数据。,调用:从一个模块指向另一个模块的箭头表示前一模块对后一模块的
17、调用,一般是上层调用下层。,2022年12月20日,第四章 软件总体设计,41,模块调用图,2022年12月20日,第四章 软件总体设计,42,2022年12月20日,第四章 软件总体设计,43,2022年12月20日,第四章 软件总体设计,44,例:画出打印报告的软件结构图。,调用次序为上层调用下层; 同层按照数据传递关系确定;一般从左到右执行。 执行过程即按照数据流向进行。,报 告,计 算,获得编辑,确认数据,读入,编辑,打印报告头,打印报告尾,打印,输入EOF,输入,已编辑,已编辑,已编辑,已确认,已确认数据,已确认数据,计算结果,结果,日期,总结果,行,行,行,打印报告,予以确认,20
18、22年12月20日,第四章 软件总体设计,45,结构图的例子产生最佳解的一般结构,2022年12月20日,第四章 软件总体设计,46,4.3 模块化设计,4.3.1 模块化与局部化1模块化 模块是数据说明、可执行语句等程序对象的集合,模块可以单独被命名、而且可通过名字来访问,例如,过程、函数、子程序、宏等等都可作为模块。模块化就是把程序划分成若干个模块,每个模块具有一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能,进而满足问题的要求。,2022年12月20日,第四章 软件总体设计,47,“模块”,又称“构件”,一般指用一个名字可调用的一段程序。它一般具有如下三个基本属性:功能 即
19、指该模块实现什么功能,做什么事情逻辑 即描述模块内部怎么做。状态 即该模块使用时的环境和条件。所谓模块的独立性,是指软件系统中每个模块只涉及软件要求的具体的子功能,而和软件系统中其他模块的接口是简单的。即功能专一,模块之间无过多的相互作用的模块。这种类型的模块可以并行开发,模块独立性越强,开发越容易。独立性强的模块,还能减少错误的影响,使模块容易组合、修改及测试。,2022年12月20日,第四章 软件总体设计,48,模块化 模块化就是将系统划分为若干个模块,每个模块完成一个子功能。模块化的目的是将系统“分而治之”,模块化能够降低问题的复杂性,使软件结构清晰,易阅读、易理解,易于测试和调试,因而
20、也有助于提高软件的可靠性。,2022年12月20日,第四章 软件总体设计,49,模块化降低软件复杂度的简单证明,令: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后,其工作量和复杂度都降低。,2022年12月20日,第四章 软件总体设计,50,并非模块分得越小越好,因为模块之间接口的复杂度和工作量增加。显然,每个软件系统都有一个最佳模块数
21、M。注意选择分解的最佳模块数。右上图描述了模块化与软件成本的关系。,2022年12月20日,第四章 软件总体设计,51,4.3 模块化设计,4.3.1 模块化与局部化 2局部化 局部化的概念和信息隐蔽概念密切相关。所谓局部化是指把一些关系密切的软件元素物理地放得彼此靠近。在模块中使用局部数据元素是局部化的一个例子。显然,局部化有助于实现信息隐蔽。,2022年12月20日,第四章 软件总体设计,52,4.3 模块化设计,4.3.2 模块化独立性 模块的独立性可以用两个定性的标准来度量:耦合和内聚。耦合是模块之间互相连接的紧密程度的度量,内聚是一个模块内部各个元素彼此结合的紧密程度的度量。,202
22、2年12月20日,第四章 软件总体设计,53,4.3 模块化设计,4.3.2 模块化独立性1耦合非直接耦合 数据耦合 标记耦合 控制耦合 公共耦合 内容耦合,2022年12月20日,第四章 软件总体设计,54,耦合性是指软件结构中模块相互连接的紧密程度,是模块间相互连接性的度量。模块分解的一个目标是使块间联系尽可能小,块间联系的大小可从三个方面衡量:, 方式 块间联系方式有“直接引用”或“用过程语句调用” 作用 块间传送的共用信息(参数)类型,可为“数据型”、“控制型”或“混合型”(数据/控制型) 数量 块间传送的共用信息的数量,2022年12月20日,第四章 软件总体设计,55,模块分解的一
23、个目标是使块间联系尽可能小,达到这个目标可通过以下措施。每个模块用过程语句(或函数方式等)调用其他模块。模块间传送的参数为数据型。模块间公用的信息(如参数等)尽量少。,2022年12月20日,第四章 软件总体设计,56,耦合性的几种类型,内容耦合,公共耦合,控制耦合,复合耦合,数据耦合,高,耦合性,低,1、内容耦合(content coupling)一个模块直接访问另一模块的内部数据一个模块不通过正常入口转到另一模块的内部一个模块有多个入口两个模块有部分代码重迭,2022年12月20日,第四章 软件总体设计,57,2、公共耦合(Common Coupling) 若干模块访问一个公共的数据环境,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 总体 设计 概要 课件

链接地址:https://www.31ppt.com/p-1820295.html