第3章 软件设计-1.pptx
《第3章 软件设计-1.pptx》由会员分享,可在线阅读,更多相关《第3章 软件设计-1.pptx(38页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第3章 软件设计3.1软件设计的基本概念 完成了需求分析,回答了软件系统能“做什么”的问题,软件的生命周期就进入了设计阶段。软件设计是软件开发过程中的重要阶段,在此阶段中,开发人员将集中研究如何把需求规格说明书里归纳的分析模型转换为可行的设计模型,并将解决方案记录到相关的设计文档中。实际上,软件设计的目标就是要回答“怎么做”才能实现软件系统的问题,也可以把设计阶段的任务理解为把软件系统能“做什么”的逻辑模型转换为“怎么做”的物理模型。软件设计在软件开发中处于核心地位。3.1软件设计的基本概念 3.1.1 软件设计的意义和目标 软件设计在软件开发过程中处于核心地位,它是保证质量的关键步骤。设计为
2、我们提供了可以用于质量评估的软件表示,设计是我们能够将用户需求准确地转化为软件产品或系统的唯一方法。软件设计是所有软件工程活动和随后的软件支持活动的基础。软件设计是一个迭代的过程,通过设计过程,需求被变换为用于构建软件的“蓝图”。McGlaughlin提出了可以指导评价良好设计演化的3个特征:1)设计必须实现所有包含在分析模型中的明确需求,而且必须满足用户期望的所有隐含需求。2)对于程序员、测试人员和维护人员而言,设计必须是可读的、可理解的指南。3)设计必须提供软件的全貌,从实现的角度说明数据域、功能域和行为域。以上每一个特征实际上都是设计过程应该达到的目标。3.1软件设计的基本概念 3.1.
3、2软件设计的原则为了提高软件开发的效率及软件产品的质量,人们在长期的软件开发实践中总结出一些软件设计的原则,其基本内容如下。1.模块化模块是数据说明、可执行语句等程序对象的集合,是构成程序的基本构件,可以被单独命名并通过名字来访问。在面向过程的设计中,过程、函数、子程序、宏都可以作为模块;在面向对象的设计中,对象是模块,对象中的方法也是模块。模块化就是把系统或程序划分为独立命名并且可以独立访问的模块,每个模块完成一个特定的子功能。模块集成起来可以构成一个整体,完成特定的功能,进而满足用户需求。3.1软件设计的基本概念 在模块化的过程中,要注意以下几点。(1)模块的规模要适中。(2)提高模块的独
4、立性,降低模块间的耦合程度。(3)提高模块的内聚程度。(4)加强模块的保护性。3.1软件设计的基本概念 2.抽象 抽象是人们认识复杂的客观世界时所使用的一种思维工具。抽象主要是为了降低问题的复杂度,以得到问题领域中较简单的概念,好让人们能够控制其过程或以宏观的角度来了解许多特定的事态。抽象在软件开发过程中起着非常重要的作用。一个庞大、复杂的系统可以先用一些宏观的概念构造和理解,然后再逐层地用一些较微观的概念去解释上层的宏观概念,直到最底层的元素。3.1软件设计的基本概念 3.逐步求精 在面对一个新问题时,开发人员可暂时忽略问题非本质的细节,而关注于与本质相关的宏观概念,集中精力解决主要问题,这
5、种认识事物的方法就是逐步求精。逐步求精是抽象的逆过程。开发人员认识问题时逐步求精的过程,同时也是抽象程度逐渐降低的过程。按照逐步求精的思想,程序的体系结构是按照层次结构,逐步精化过程细节而开发出来的。可见,求精就是细化,它与抽象是互补的概念。逐步求精与抽象的关系3.1软件设计的基本概念 4.信息隐藏信息隐藏与模块化的概念相关。当一个系统被分解为若干个模块时,为了避免某个模块的行为干扰同一系统中的其他模块,应该让模块仅仅公开必须让外界知道的信息,而将其他信息隐藏起来,这样模块的具体实现细节相对于其他不相关的模块而言就是不可见的,这种机制就叫做信息隐藏。信息隐藏提高了模块的独立性,加强了外部对模块
6、内部信息进行访问的限制,它使得模块的局部错误尽量不影响其他模块。信息隐藏有利于软件的测试和维护工作。通常,模块的信息隐藏可以通过接口来实现。模块通过接口与外部进行通信,而把模块的具体实现细节(如数据结构、算法等内部信息)隐藏起来。一般来说,一个模块具有有限个接口,外部模块通过调用相应的接口来实现对目标模块的操作。3.1软件设计的基本概念 5.复用性设计 软件复用就是将已有的软件成分用于构造新的软件系统。可以被复用的软件成分一般称作可复用构件,无论对可复用构件原封不动地使用还是作适当的修改后再使用,只要是用来构造新软件,则都可称作复用。软件复用不仅仅是对程序的复用,它还包括对软件生产过程中任何活
7、动所产生的制成品的复用,如软件开发计划、可行性研究报告、分析模型、设计模型、源程序、测试用例等等。如果是在一个系统中多次使用一个相同的软件成分,则不称作复用,而称作共享;对一个软件进行修改,使它运行于新的软硬件平台也不称作复用,而称作软件移值。3.1软件设计的基本概念 6.灵活性设计 灵活性设计,简而言之就是软件在面对需求修改时的随机应变能力,可以体现在修改程序代码的工程量等方面。抽象是软件设计的关键因素。设计模式、软件架构等可以用来实现更高抽象层次的编程,以达到软件的灵活性。在设计(尤其是面向对象的设计)中引入灵活性的方法如下。1)降低耦合并提高内聚2)建立抽象:就是创建有多态操作的接口和父
8、类,主要的目的就是能继承的就继承,尽可能不要写冗余代码3)不要将代码写死:就是消除代码中的常数。4)抛出异常:就是由操作的调用者处理异常。5)使用并创建可复用的代码3.1软件设计的基本概念 3.1.3软件设计的分类 软件设计可以从活动任务观点和工程管理观点分别对其进行分类。从活动任务来看,软件设计是对软件需求进行:数据设计、体系结构设计、接口设计、构件设计和部署设计。1)数据设计创建在高抽象级别上表示的数据模型和信息模型。然后,数据模型被精化为越来越多和实现相关的特定表示,即基于计算机的系统能够处理的表示。2)体系结构设计为我们提供软件的整体视图,定义了软件系统各主要成份之间的关系。3)接口设
9、计告诉我们信息如何流入和流出系统以及被定义为体系结构一部分的构件之间是如何通信的。4)构件设计完整的描述了每个软件构件的内部细节,为所有本地数据对象定义数据结构,为所有在构件内发生的处理定义算法细节,并定义允许访问所有构件操作的接口。5)部署设计指明软件功能和子系统如何在支持软件的物理计算环境内分布。3.1软件设计的基本概念 从工程管理角度来看,软件设计分为概要设计(总体设计)和详细设计。前期进行概要设计,得到软件系统的基本框架。后期进行详细设计,明确系统内部的实现细节。1)概要设计确定软件的结构以及各组成部分之间的相互关系。它以需求规格说明书为基础,概要地说明软件系统的实现方案,包括:目标系
10、统的总体架构每个模块的功能描述、数据接口描述及模块之间的调用关系数据库、数据定义和数据结构等 其中,目标系统的总体架构为软件系统提供了一个结构、行为和属性的高级抽象,由构成系统的元素的描述、这些元素之间的相互作用、指导元素集成的模式以及这些模式的约束组成。3.1软件设计的基本概念 2)详细设计确定模块内部的算法和数据结构,产生描述各模块程序过程的详细文档。它对每个模块的功能和架构进行细化,明确要完成相应模块的预定功能所需要的数据结构和算法,并将其用某种形式描述出来。详细设计的目标是得到实现系统的最详细的解决方案,明确对目标系统的精确描述,从而在编码阶段可以方便地把这个描述直接翻译为用某种程序设
11、计语言书写的程序。在进行详细设计的过程中,设计人员的工作涉及到的内容有过程、数据和接口等 过程设计主要是指描述系统中每个模块的实现算法和细节数据设计是对各模块所用到的数据结构的进一步细化接口设计针对的是软件系统各模块之间的关系或通信方式以及目标系统与外部系统之间的联系3.2 结构化软件设计概述 结构化软件设计的任务是从软件需求规格说明书出发,设计软件系统的整体结构、确定每个模块的实现算法以及编写具体的代码,形成软件的具体设计方案,解决“怎么做”的问题。在结构化设计中,概要设计(总体设计)阶段将软件需求转化为数据结构和软件的系统结构。概要设计阶段要完成体系结构设计、数据设计及接口设计。详细设计阶
12、段要完成过程设计,因此详细设计一般也称为过程设计,它详细地设计每个模块,确定完成每个模块功能所需要的算法和数据结构。在软件设计期间我们所做出的决策,将最终决定软件开发能否成功,更重要的是,这些设计决策将决定软件维护的难易程度。软件设计之所以如此重要,是因为设计是软件开发过程中决定软件产品质量的关键阶段。3.3 结构化设计与结构化分析的关系 要进行结构化的设计,必须依据结构化分析的结果,结构化设计与结构化分析的关系如图所示。图的左边是用结构化分析方法所建立的模型,图的右边是用结构化设计方法所建立的设计模型。3.4体系结构设计 3.4.1 表示软件结构的图形工具1 层次图和HIPO图通常使用层次图
13、描绘软件的层次结构。在层次图中一个矩形框代表一个模块,框间的连线表示调用关系(位于上方的矩形框所代表的模块调用位于下方的矩形框所代表的模块)。每个方框可以带编号,像这样带编号的层次图称为HIPO(Hierarchy Input-Process-Output)图。如图所示。3.4体系结构设计 2结构图结构图是描绘软件结构的图形工具,图中一个方框代表一个模块,框内注明模块的名字或主要功能;方框之间的箭头(或直线)表示模块的调用关系。在结构图中通常还用带注释的箭头表示模块调用过程中来回传递的信息。如果希望进一步标明传递的信息是数据还是控制信息,则可以利用注释箭头尾部的形状来区分:尾部是空心圆表示传递
14、的是数据,实心圆表示传递的是控制信息。3.4体系结构设计 3.4.2面向数据流的设计方法面向数据流的设计方法是常用的结构化设计方法,多在概要设计阶段使用。它主要是指依据一定的映射规则,将需求分析阶段得到的数据描述从系统的输入端到输出端所经历的一系列变换或处理的数据流图转换为目标系统的结构描述。在数据流图中,数据流分为变换型数据流和事务型数据流两种。所谓变换,是指把输入的数据处理后转变成另外的输出数据。信息沿输入路径流入系统,在系统中经过加工处理后又离开系统,当信息流具备这种特征时就是变换流。所谓事务,是指非数据变换的处理,它将输入的数据流分散成许多数据流,形成若干个加工,然后选择其中一个路径来
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第3章 软件设计-1 软件设计
限制150内