软件系统设计概述概要课件.ppt

上传人:牧羊曲112 文档编号:1848242 上传时间:2022-12-21 格式:PPT 页数:60 大小:1.96MB
返回 下载 相关 举报
软件系统设计概述概要课件.ppt_第1页
第1页 / 共60页
软件系统设计概述概要课件.ppt_第2页
第2页 / 共60页
软件系统设计概述概要课件.ppt_第3页
第3页 / 共60页
软件系统设计概述概要课件.ppt_第4页
第4页 / 共60页
软件系统设计概述概要课件.ppt_第5页
第5页 / 共60页
点击查看更多>>
资源描述

《软件系统设计概述概要课件.ppt》由会员分享,可在线阅读,更多相关《软件系统设计概述概要课件.ppt(60页珍藏版)》请在三一办公上搜索。

1、软件系统设计概述,杨福林,目录,软件设计的概述软件设计的基本原理模块设计概要设计概述结构化设计方法JACKSON设计方法数据设计和文件设计过程设计(详细设计)设计的评审,软件设计的目标和任务软件设计重要性软件设计方法软件设计阶段,软件设计的概述,讨论要点,(1)如何将需求分析模型转换为软件设计?(2)作为软件工程师在软件设计方面应使用哪些基本原则和概念?,软件设计的概述,一. 软件设计的目标 软件需求:解决“做什么” 软件设计:解决“怎么做”二.软件设计的任务 问题结构(软件需求) 软件结构 从软件需求规格说明书出发,形成软件的具体设计方案。,映射,软件设计的目标和任务,数据设计侧重于数据结构

2、的定义。系统结构设计,包括接口设计和体系结构设计,定义软件系统各主要成份之间的关系。过程设计则是把结构成份转换成软件的过程性描述。在编码步骤,根据这种过程性描述,生成源程序代码,然后通过测试最终得到完整有效的软件。,软件设计的目标和任务,软件的开发阶段,软件设计的重要性,为什么软件设计很重要?,软件设计是开发阶段中最重要的步骤,它是软件开发过程中质量得以保证的关键步骤。设计提供了软件的表示,使得软件的质量评价成为可能。同时,软件设计又是将用户要求准确地转化成为最终的软件产品的唯一途径。另一方面,软件设计是后续开发步骤及软件维护工作的基础。如果没有设计,只能建立一个不稳定的系统。,软件设计的重要

3、性,只要出现一些小小的变动,就会使得软件垮掉,而且难于测试。,软件设计方法,结构化设计方法(SD)面向数据结构的设计方法(JSD方法)面向对象的设计方法(OOD),软件设计的阶段,软件设计的阶段,(1)概要设计(总体设计)确定软件的结构以及各组成成分(子系统或模块)之间的相互关系。(2)详细设计(过程设计,模块设计)确定模块内部的算法和数据结构,产生描述各模块程序过程的详细文档。,软件设计的概述软件设计的基础模块设计基础概要设计概述结构化设计方法JACKSON设计方法数据设计和文件设计过程设计(详细设计)设计的评审,目录,软件设计基础,软件体系结构 程序结构 数据结构 软件过程 自顶向下,逐步

4、细化 模块化 抽象化 信息隐蔽,一软件体系结构,软件结构包括两部分:程序结构和数据结构软件的体系结构通过一个划分过程来完成。该划分过程从需求分析确立的目标系统的模型出发,对整个问题进行分割,使其每个部分用一个或几个软件成份加以解决,整个问题就解决了,软件设计基础,软件设计基础,一软件体系结构,二程序结构,程序结构(控制层次)表明了程序各个部件(模块)的组织情况。,软件设计基础,三. 数据结构,软件设计基础,数据结构是数据的各个元素之间的逻辑关系的一种表示。数据结构设计应确定数据的组织、存取方式、相关程度以及信息的不同处理方法。 数据结构的组织方法和复杂程度可以灵活多样,但典型的数据结构种类是有

5、限的,它们是构成一些更复杂结构的基本构件块。,三. 数据结构,软件设计基础,四软件过程,软件过程则着重描述各个模块的处理细节。软件过程必须提供精确的处理说明,包括事件的顺序、正确的判定点、重复的操作等等。,软件设计基础,软件设计基础,四软件过程,五. 自顶向下,逐步细化,将软件的体系结构按自顶向下方式,对各个层次的过程细节和数据细节逐层细化,直到用程序设计语言的语句能够实现为止,从而最后确立整个的体系结构。,软件设计基础,六模块化(Modularity),软件系统的模块化是指整个软件被划分成若干单独命名和可编址的部分,称之为模块。这些模块可以被组装起来以满足整个问题的需求。把问题子问题的分解与

6、软件开发中的系统子系统或系统模块对应起来,就能够把一个大而复杂的软件系统划分成易于理解的比较单纯的模块结构。,软件设计基础,模块化是软件设计的一个基本准则 高层模块 从整体上把握 问题,隐蔽细节 复杂问题 较小问题 分解 可减小解题所需的总的工作,分解,软件设计基础,模块化和软件成本图,成本或工作量,模块数量,软件总成本,集成成本,成本/模块,M,最小成本区域,软件设计基础,七抽象化,软件系统进行模块设计时,可有不同的抽象层次。在最高的抽象层次上,可以使用问题所处环境的语言概括地描述问题的解法。在较低的抽象层次上,则采用过程化的方法。,软件设计基础,(1) 过程的抽象在软件工程中,从系统定义到

7、实现,每进展一步都可以看做是对软件解决方法的抽象化过程的一次细化。在软件需求分析阶段,用“问题所处环境的、为大家所熟悉的术语”来描述软件的解决方法。在从概要设计到详细设计的过程中,抽象化的层次逐次降低。产生源程序时到达最低抽象层次。,软件设计基础,(2)数据抽象 在不同层次上描述数据对象的细节,定义与该数据对象相关的操作。例如,在CAD软件中,定义一个叫做drawing的数据对象。可将drawing规定为一个抽象数据类型,定义它的内部细节为:,TYPE drawing IS STRUCTURE DEFIND number IS STRING LENGTH(12); geometry DEFIN

8、D notes IS STRING LENGTH(256); BOM DEFIND END drawing TYPE;,软件设计基础,数据抽象drawing本身由另外一些数据抽象,如geometry、BOM (bill of materials) 构成定义drawing的抽象数据类型之后,可引用它来定义其它数据对象,而不必涉及drawing的内部细节例如,定义:blue-print IS INSTANCE OF drawing;,软件设计基础,七. 信息隐蔽,由 parnas 方法提倡的信息隐蔽是指,每个模块的实现细节对于其它模块来说是隐蔽的。也就是说,模块中所包含的信息(包括数据和过程)不允

9、许其它不需要这些信息的模块使用。独立的模块间仅仅交换为完成系统功能而必须交换的信息。,软件设计基础,信息隐蔽的目的: 提高模块的独立性,减少修改或维护时的影响面。,软件设计基础,软件设计的概述软件设计的基础模块设计基础概要设计概述结构化设计方法JACKSON开发方法数据设计和文件设计过程设计(详细设计)设计的评审,目录,模块设计基础,一.模块(Module)“模块”,一般具有如下三个基本属性:功能:描述该模块实现什么功能逻辑:描述模块内部怎么做状态:该模块使用时的环境和条件,在描述一个模块时,还必须按模块的外部特性与内部特性分别描述模块的外部特性模块的模块名、参数表、其中的输入参数和输出参数,

10、以及给程序以至整个系统造成的影响模块的内部特性完成其功能的程序代码和仅供该模块内部使用的数据,模块设计基础,二.模块独立性 模块独立性, 是指软件系统中每个模块只涉及软件要求的具体的子功能, 而与软件系统中其它的模块的接口是简单的. 例如, 若一个模块只具有单一的功能且与其它模块没有太多的联系, 则称此模块具有模块独立性 一般采用两个准则度量模块独立性。即模块间耦合和模块内聚,模块设计基础,耦合是模块之间的互相连接的紧密程度的度量。 内聚是模块功能强度(一个模块内部各个元素彼此结合的紧密程度)的度量。 模块独立性比较强的模块应是高内聚低耦合的模块。,模块设计基础,三. 模块间的耦合,模块设计基

11、础,非直接耦合(Nondirect Coupling) 两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的。非直接耦合的模块独立性最强。,数据耦合 (Data Coupling)(Only data are passed. It is easy to trace data and make changes.) 一个模块访问另一个模块时,彼此之间是通过简单数据参数(不是控制参数、公共数据结构或外部变量)来交换输入、输出信息的。标记耦合 (Stamp Coupling)一组模块通过参数表传递记录信息,就是标记耦合。这个记录是某一数据结构的子结构,而不是简单变量。,模块设计

12、基础,控制耦合 (Control Coupling) 如果一个模块通过传送开关、标志、名字等控制信息,明显地控制选择另一模块的功能,就是控制耦合。,模块设计基础,外部耦合(External Coupling)一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息,则称之为外部耦合。公共耦合(Common Coupling)(Data are accessible from a common data store) 若一组模块都访问同一个公共数据环境,则它们之间的耦合就称为公共耦合。公共的数据环境可以是全局数据结构、共享的通信区、内存的公共覆盖区等。,模块设

13、计基础,公共耦合的复杂程度随耦合模块的个数增加而显著增加。若只是两模块间有公共数据环境,则公共耦合有两种情况。松散公共耦合和紧密公共耦合。,模块设计基础,公共耦合 (Common coupling):,问题: 公共部分的改动将影响所有调用它的模块; 公共部分的数据存取无法控制; 复杂程度随耦合模块的个数增加而增加。,内容耦合 (Content Coupling)如果发生下列情形,两个模块之间就发生了内容耦合:(1) 一个模块直接访问另一个模块的内部数据;(2) 一个模块不通过正常入口转到另一模块内部;(3) 两个模块有一部分程序代码重迭(只可能出现在汇编语言中);(4) 一个模块有多个入口。,

14、模块设计基础,例1:A访问C的内部数据或不通过正常入口而转入C的内部。,例2:部分代码重叠(常出现在汇编程序中),例3:一个模块有多个入口(功能),c,模块设计基础,内容耦合图,模块设计基础,实际上,模块之间是混合式的耦合,原则:尽量使用数据耦合,少用控制耦合,限制公共耦合的范围,完全不用内容耦合。,c,四. 模块内聚,模块设计基础,功能内聚(Functional Cohesion)一个模块中各个部分都是完成某一具体功能必不可少的组成部分,或者说该模块中所有部分都是为了完成一项具体功能而协同工作,紧密联系,不可分割的。则称该模块为功能内聚模块。,模块设计基础,信息内聚(Informationa

15、l Cohesion) 这种模块完成多个功能,各个功能都在同一数据结构上操作,每一项功能有一个唯一的入口点。这个模块将根据不同的要求,确定该执行哪一个功能。由于这个模块的所有功能都是基于同一个数据结构(符号表),因此,它是一个信息内聚的模块。,模块设计基础,模块设计基础,信息内聚示例图,信息内聚模块可以看成是多个功能内聚模块的组合,并且达到信息的隐蔽。即把某个数据结构、资源或设备隐蔽在一个模块内,不为别的模块所知晓。,模块设计基础,通信内聚 (Communication Cohesion)如果一个模块内各功能部分都使用了相同的输入数据,或产生了相同的输出数据,则称之为通信内聚模块。通常,通信内

16、聚模块是通过数据流图来定义的。,模块设计基础,模块设计基础,过程内聚(Procedural Cohesion) 使用流程图做为工具设计程序时,把流程图中的某一部分划出组成模块,就得到过程内聚模块。例如,把流程图中的循环部分、判定部分、计算部分分成三个模块,这三个模块都是过程内聚模块。,模块设计基础,时间内聚(Classical Cohesion)时间内聚又称为经典内聚。这种模块大多为多功能模块,但模块的各个功能的执行与时间有关,通常要求所有功能必须在同一时间段内执行。例如初始化模块和终止模块。,模块设计基础,逻辑内聚(Logical Cohesion)这种模块把几种相关的功能组合在一起,每次被调用时,由传送给模块的判定参数来确定该模块应执行哪一种功能。,模块设计基础,巧合内聚(Coincidental Cohesion)巧合内聚 (偶然内聚)。当模块内各部分之间没有联系,或者即使有联系,这种联 系也很松散, 则称这种模 块为巧合内 聚模块,它 是内聚程度 最低的模块。,模块设计基础,启发式规划,争取低耦合、高内聚(增加内聚 减少耦合)模块规模适中:过大不易理解;太小则接口开销过大。注意分解后不应降低模块的独立性。适当控制 深度 = 分层的层数。过大表示分工过细。宽度 = 同一层上模块数的最大值。过大表示系统复杂度大。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号