西安工业大学软件工程第五章软件设计

上传人:仙*** 文档编号:45947814 上传时间:2021-12-09 格式:PPT 页数:39 大小:447.50KB
返回 下载 相关 举报
西安工业大学软件工程第五章软件设计_第1页
第1页 / 共39页
西安工业大学软件工程第五章软件设计_第2页
第2页 / 共39页
西安工业大学软件工程第五章软件设计_第3页
第3页 / 共39页
点击查看更多>>
资源描述
第五章第五章 软件设计软件设计进入设计阶段,要把软件“做什么”的逻辑模型变换为“怎么做”的物理模型,即着手实现软件的需求,并将设计的结果反映在“设计规格说明书”文档中,所以软件设计是一个把软件需求转换为软件表示的过程,最初这种表示只是描述了软件的总的体系结构,称为软件概要设计或结构设计。然后对结构进一步细化,称为详细设计或过程设计。 5.1 软件概要设计的基本任务软件概要设计的基本任务1.设计软件系统结构(简称软件结构)2.数据结构及数据库设计3编写概要设计文档4评审5.软件概要设计说明书的主要内容5.2 软件设计的过程软件设计的过程 1软件设计在开发阶段的重要性软件设计在开发阶段的重要性 设计提供了软件的表示,使得软件的质量评价成为可能。同时,软件设计又是将用户要求准确地转化成为最终的软件产品的唯一途径。另一方面,软件设计是后续开发步骤及软件维护工作的基础。如果没有设计,只能建立一个不稳定的系统。只要出现一些小小的变动,就会使得软件垮掉,而且难于测试。 维 护测 试实 现设 计测 试实 现维 护有软件设计没有软件设计2软件设计的过程软件设计的过程 软件设计是一个把软件需求变换成软件表示的过程。 从工程管理的角度来看,软件设计分两步完成。首先做概要设计,将软件需求转化为数据结构和软件的系统结构,并建立接口。然后是详细设计,即过程设计。通过对结构表示进行细化,得到软件的详细的数据结构和算法。 5.3 软件设计的原则软件设计的原则v1 抽象化 对软件进行模块设计的时候,可以有不同的抽象层次。在最高的抽象层次上,可以使用问题所处环境的语言描述问题的解法。而在较低的抽象层次上,则采用过程化的方法。 过程的抽象 数据抽象 控制抽象 v2 自顶向下,逐步细化 Niklaus Wirth提出的设计策略。将软件的体系结构按自顶向下方式,对各个层次的过程细节和数据细节逐层细化,直到用程序设计语言的语句能够实现为止,从而最后确立整个的体系结构。 v3 模块化 软件系统的层次结构正是模块化的具体体现。就是说,整个软件被划分成若干单独命名和可编址的部分,称之为模块。这些模块可以被组装起来以满足整个问题的需求。 模块数目增加模块大小减少M最小成本范围成本/模块联接成本总的软件成本成本或工作量模块个数 模块数/模块大小v4 控制层次 控制层次也叫做程序结构,它表明了程序构件(模块)的组织情况。控制层次往往用程序的层次(树形或网状)结构来表示。 D DA AE EB BJ JH HF FI IG GK KM MC CL LN NP PQ QR RS ST T深度宽度主宰从属扇入扇出v5 结构划分 程序结构可以按水平方向或垂直方向进行划分。水平划分按主要的程序功能来定义模块结构的各个分支。 v6 数据结构 数据结构是数据的各个元素之间的逻辑关系的一种表示。数据结构设计应确定数据的组织、存取方式、相关程度以及信息的不同处理方法。 标量项链表顺序向量分层树n维空间典型的数据结构v7 软件过程 程序结构描述了整个程序的控制层次关系和各个部分的接口情况,而图所示的软件过程则着重描述各个模块的处理细节。 模块A模块Av8信息隐蔽 如何分解一个软件才能得到最佳的模块组合?为了明确怎样去做,需要了解什么是信息隐蔽。由parnas提倡的信息隐蔽是指,每个模块的实现细节对于其他模块来说是隐蔽的。就是说,模块中所包含的信息(包括数据和过程)不允许其他不需要这些信息的模块使用。 5.4 有效的模块设计有效的模块设计v1模块 模块又称构件,在传统的方法中指用一个名字就可调用的一段程序。类似于高级语言中的过程、函数等。它一般具有如下三个基本属性: 功能:即指该模块实现什么功能,做什么事情。 逻辑:即描述模块内部怎么做。 状态:即该模块使用时的环境和条件。v2模块独立性 所谓模块的独立性,是指软件系统中每个模块只涉及软件要求的具体的子功能,而和软件系统中其他的模块的接口是简单的。 v3内聚性 内聚是模块功能强度(一个模块内部各个元素彼此结合的紧密程度)的度量。一个内聚程度高的模块(在理想情况下)应当只做一件事.v4耦合性 耦合是模块之间的相对独立性(互相连接的紧密程度)的度量。它取决于各个模块之间接口的复杂程度、调用模块的方式以及哪些信息通过接口。 符 号 表查找登录删除修改 一般模块之间可能的连接方式有七种,构成耦合性的七种类型。 两个模块之间的耦合不只是一种类型,而是多种类型的混合。这就要求设计人员进行分析、比较,逐步加以改进,以提高模块的独立性。 5.5 结构化设计方法(Structured Design) v 结构化设计方法是基于模块化、自顶向下细化、结构化程序设计等程序设计技术基础上发展起来的。该方法实施的要点是: 建立数据流的类型。 指明流的边界。 将数据流图映射到程序结构。 用“因子化”方法定义控制的层次结构。 用设计测量和一些启发式规则对结构进行细化。 1 在系统结构图(SC)中的模块一般地,在系统结构图中有4种类型的模块: 传入模块 :从下属模块取得数据,经过某些处理,再将其传送给上级模块。 传出模块 :从上级模块获得数据,进行某些处理,再将其传送给下属模块。 变换模块 :即加工模块。它从上级模块取得数据,进行特定的处理,转换成其他形式,再传送回上级模块。大多数计算模块(原子模块)属于这一类。 协调模块 :对所有下属模块进行协调和管理的模块。 在系统的输入输出部分或数据加工部分可以找到这样的模块。在一个好的系统结构图中,协调模块应在较高层出现。 传 入 模 块传 出 模 块变 换 模 块协 调 模 块AADDBCXXYY( a)( b)( c)( d)2 变换流与变换型系统结构变换流与变换型系统结构 变换型数据处理问题的工作过程大致分为三步,即取得数据,变换数据和给出数据。如图所示。 取 得 数 据C给 出 数 据D变 换 数 据C D主模块C变换成D取得C给出D取得BB变换成CD变换成E给出E取得AA变换成BAABBBCCCDDDEEv3 事务型系统结构图事务型系统结构图 事务型数据处理问题的工作机理是接受一项事务,根据事务处理的特点和性质,选择分派一个适当的处理单元,然后给出结果。我们把完成选择分派任务的部分叫做事务处理中心或分派部件。这种事务型数据处理问题的数据流图如图所示。 TD4D3D2D1事 务 中 心输 入 已 分 析 的 作 业调 度给 出 结 果读 入 作 业分 析 作 业事 务 1事 务 2事 务 3事 务 4操 作 1操 作 2操 作 3操 作 4操 作 5操 作 6细 节 1细 节 2细 节 3细 节 4细 节 5细 节 6细 节 7内 部表 示 的 作 业结 果作 业 信 息结 果作 业已 分 析 的 作 业作 业4变换映射 变换映射是体系结构设计的一种策略。运用变换映射方法建立初始的变换型系统结构图,然后对它做进一步的改进,最后得到系统的最终结构图。 5事务映射 在很多应用中,存在某种作业数据流,它可以引发一个或多个处理。这种数据流就叫做事务。与变换映射类似,事务映射也是从分析数据流图开始,自顶向下,逐步分解,建立系统结构图。所不同的是由数据流图映射成的系统结构图不同。 6 注意“黑箱”技术的使用 v在设计当前模块时, 先把这个模块的所有下层模块定义成“黑箱”,并在系统设计中利用它们,暂时不考虑它们的内部结构和实现方法。 5.6 数据设计和文件设计 1 数据设计的原则数据设计的原则 Pressman提出了一组原则,用来定义和设计数据。 用于软件的系统化方法也适用于数据。 要确定所有的数据结构和在每种数据结构上施加的操作。 应当建立一个数据词典并用它来定义数据和进行软件的设计。 低层数据设计的决策应推迟到设计过程的后期进行。 数据结构的表示只限于那些必须直接使用该数据结构内数据的模块才能知道。 数据结构应当设计成为可复用的。 软件设计和程序设计语言应当支持抽象数据类型的定义和实现。 2 文件设计的过程 文件设计的过程 有两个阶段。 第一个阶段是文件的逻辑设计。它包括: 1 整理必须的数据元素。2 分析数据间的关系。3 确定文件的逻辑设计。 第二个阶段是文件的物理设计,主要工作有:4 理解文件的特性。5 确定文件的存储媒体。6 确定文件的组织方式。7 确定文件的记录格式。8 估算存取时间和存储容量 5.7设计规格说明与设计评审 软件设计规格说明的大纲如表所示。每一个编号的段落描述了设计模型的不同侧面。在设计人员细化他们的软件设计时,就可以逐步完成各章节内容的编写。 设计评审的内容包括: 可追溯性: 接口: 风险: 实用性: 技术清晰度: 可维护性: 质量: 各种选择方案: 限制: 其他具体问题:5.8详细设计 v详细设计(又称过程设计)阶段的根本目标是要开发一个可以直接转换成某种程序语言的软件表示,所以详细设计阶段的根本任务仍不是进行具体的编码。用软件开发的工程化的观点来看,在使用程序设计语言编写具体的代码之前,要对所采用算法的逻辑关系进行分析,设计出全部必要的过程细节,并给予清晰的表达,使之成为编码的直接依据,这才是详细设计的主要任务。 v 1详细设计的任务和原则详细设计的任务和原则 v 主要任务,是编写软件的“详细设计说明书”。因此,设计人员应该做到如下几方面:v (1)为每个模块确定所采用的算法,并选择某种适当的工具表达算法的执行过程,写出模块的详细过程性描述。v (2)确定每一模块使用的数据结构。v (3)确定模块接口的细节,包括对系统外部的接口和用户界面,对系统内部其他模块的接口,以及模块的输入数据、输出数据及局部数据的全部细节。v (4)为每一个模块设计出一组测试用例,以便在编码阶段对模块代码进行预定的测试。 v 详细设计的原则详细设计的原则结构化程序设计结构化程序设计 结构程序设计的基本方法和原则归纳为如下几点:(1)程序结构中应尽可能少用GOTO语句,以确保程序结构的独立性。(2)使用单入口单出口的控制结构,确保程序的静态结构和动态执行情况相一致,保证程序易于理解。(3)程序的控制结构一般采用顺序、选择和循环三种结构来完成,确保程序结构尽可能简单。(4)用自顶向下、逐步求精的方法完成程序设计。结构化程序设计的缺点是存储容量和运行时间增加10%20%,但易读和易维护性比较好。 v2详细设计的描述工具 表达详细设计规格说明的工具叫做详细设计工具。它可以分为三类: 图形工具把过程的细节用图形的方式描述出来。 表格工具用一张表来表达过程的细节。这张表列出了各种可能的操作及相应的条件,即描述了输入、处理和输出信息。 语言工具用某种类高级语言(伪码)来描述过程的细节。 具体工具有:v a.程序流程图又称为程序框图,是软件开发者最熟悉的一种算法表达工具。v b. Nassi和Shneiderman提出了一种符合结构化程序设计原则的图形描述工具,叫做盒图(Box_Diagram),又称为N-S图。v C. PAD图是1973年由日本日立公司提出的一种主要用于描述详细设计的图形表示工具。 v d.清晰地表达复杂的条件组合与应做的动作之间的对应关系 的判定表v e判定树是判定表的变种,也能清晰地表示复杂的条件组合与应做的动作之间的对应关系。 v f PDL是一种用于描述功能模块的算法设计和加工细节的语言,称为过程设计语言,也叫伪码。 v3程序复杂程度的定量度量程序复杂程度的定量度量 定量度量程序复杂程度的方法很有价值,因为程序的复杂程度对于估算软件的开发成本、软件中的故障数量以及不同设计方案的优劣等诸方面关系密切。软件复杂性度量是软件度量的一个重要分支。 程序复杂性的定量度量比较广泛采用的是McCabe方法和Halstead方法。v 用McCabe方法度量得出的结果称为程序的环形复杂度,它等于强连通的程序图中线性无关有向环的个数。v Halstead方法也称为文本复杂性度量,是另一个著名的方法,它根据程序中运算符和操作数的总数来度量程序的复杂程度。 v4设计复审设计复审 设计复审是指对设计文档的复审。 1)复审的指导原则 2)复审的主要内容 3)复审的方式:复审分为正式与非正式两种方式。5.9实例实例v1机票预定系统概要设计说明书机票预定系统概要设计说明书 v2 详细设计说明书的编写详细设计说明书的编写 习题五习题五1. 什么是软件概要设计?软件概要设计的基本任务是什么?2. 衡量模块独立的两个标准是什么?它们各表示什么含义?3. 什么是软件结构?结构图的主要内容有哪些?4. 什么是面向数据流的设计方法?它有哪些策略?5. 由IDEF0图导出初始软件结构图的方法有哪些?6. 通常采取哪些措施来降低模块间的耦合度?7. 如何设计软件系统结构?8. 概要设计文档主要包括哪些文档?9. 逐步求精、分层过程与抽象等概念之间的相互关系如何?10.完成良好的软件设计应遵循哪些原则?11.如何理解模块独立性?用什么指标来衡量模块独立性?12.什么是软件详细设计?13.简述详细设计的基本原则和主要任务。14. 概要设计和详细设计有什么区别?15. 什么是结构化程序设计?简述结构化程序设计的基本要点。16. 详细设计有哪几种描述方法?17. 任选一种排序算法,分别用流程图、盒图、PAD图和PDL语言描述其详细过程。18. 请使用流程图、PAD图、PDL来设计航空机票预订系统的算法。19. 某商场在“五一”期间,顾客购物时收费有4种情况:普通顾客一次购物累计少于100元,按A类标准收费(不打折);一次购物累计多于或等于100元,按B类标准收费(打9折);会员顾客一次购物累计少于1000元,按C类标准收费(打8折);一次购物累计等于或多于1000元,按D类标准收费(打7折)。请使用流程图、PAD图、PDL来设计收费算法。20. 旅游票预订系统中,在旅游旺季710月、12月,如果订票超过50张,则票价优惠15%;50张以下,优惠5%。在旅游淡季16月、11月,若订票超过50张,则优惠30%,50张以下,优惠20%。试用判定表和判定树来表示该订票系统的算法。21. 下面是一个模块的伪码描述,使用McCabe方法,先画出其程序图,再计算其环形复杂度。22. begin s1; if c then s2; else s3; s4; end
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 成人自考


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

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


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