第3章-软件设计_第1页
第3章-软件设计_第2页
第3章-软件设计_第3页
第3章-软件设计_第4页
第3章-软件设计_第5页
已阅读5页,还剩75页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第3章软件设计内容介绍3.1软件设计概述3.2概要设计3.3模块和模块化3.4详细设计3.5Jackson程序设计方法3.6Warnier程序设计方法3.7用户界面设计3.8软件设计规格说明书3.9案例分析3.10小结3.1软件设计概述

3.1.1软件设计概念与重要性3.1.2软件设计的任务与策略3.1.3软件设计基本原则3.1.1软件设计概念与重要性软件设计就是根据软件需求分析阶段产生的数据和功能需求,采用某种设计方法进行概要设计(体系结构设计、数据设计/数据库设计)、详细设计(模块设计、过程设计、用户界面设计),生成所要构造的实体过程,是软件工程的技术核心。3.1.1软件设计概念与重要性软件设计是把需求转化为软件系统的最重要的环节,其优劣在根本上决定了软件系统的质量,重要性表现为以下两方面。(1)软件设计是开发阶段最重要的步骤,是软件质量得以保证的关键步骤。(2)软件设计是将用户要求准确地转化为最终的软件产品的惟一途径。3.1.2软件设计的任务与策略1.软件设计是一个把需求分析变换成软件表示的过程。(1)概要设计。(2)详细设计。2.在进行软件开发系统分析时需要遵循的策略。(1)概要设计概要设计:将软件需求转化为数据结构和软件的系统结构。概要设计只是描绘出软件的总体框架,根据功能、性能需求和数据需求导出软件的数据结构和系统结构。概括地说,概要设计进行数据设计/数据库设计和系统体系结构设计。概要设计主要完成以下任务:制定规范;软件系统结构的总体设计;数据设计;概要设计评审。(2)详细设计详细设计:对结构进行细化,得到软件的详细的数据结构和算法。对概要设计过程中给出的各种结构成分进行详细的加工,得到在程序细节上非常接近于源程序的软件表示。概括地说,详细设计就是进行过程设计。详细设计需要完成的工作是:确定软件各个组成部分内的算法以及各部分的内部数据组织;选定某种过程的表达形式来描述各种算法;用户界面的设计;编写详细设计文档;进行详细设计的评审。进行系统分析时需要遵循的策略“简单-复杂-简单”。分析经常要经历“简单-复杂-简单”的过程,前一个简单表现为分析人员“认为简单”;随着分析的深入,原以为简单的问题会越来越复杂;最后,经过概括、消化、分解,使得需求简单明了。软件复用技术。新开发的软件,要从一开始就考虑其可演化性,以便以后的再工程和构件提取。模块化概念。模块化可以增强系统的独立性,使耦合度降低,实现“高内聚-低耦合”。对于模块的内部,使其高度集中,而模块与模块的联系相对减少,这样使系统各模块独立的进行运转。3.1.3软件设计基本原则1.抽象与求精2.模块化和信息隐藏3.模块独立性1.抽象与求精抽象是一种思考和解决问题的形式,它集中注意事物某个一般性级别上的问题,避开不必要的低层细节。抽象可以分成若干级别,级别越高,细节就越少。抽象过程是指具有特定功能的一个命令的指令序列。抽象数据则是描述数据对象的一个命名的数据集合。求精的主要思想是将某个宏观功能不断分解,逐步确立过程细节,直至用程序设计语言描述的算法实现为止。2.模块化和信息隐藏合理的软件结构应该是分块的结构,即软件应该分解成可单独命名的且可访问的部件,这些部件称为模块。这种将软件分成具有一定结构的模块的过程称为模块化。信息隐藏是指模块中所包含的信息(包括数据和过程)对不需要这些信息的其他模块是不可访问的。这样,每一个将来可能的改变都会局部于一个特定的模块,改变该模块的内部过程或数据的设计不会影响到其他模块。3.模块独立性模块独立性是模块化、抽象和信息隐藏的直接产物,其基本含义是每一个模块只完成功能需求中的一个特定的子功能,而且从程序结构的其他部分来访问这一模块只具有一个简单的接口。3.2概要设计3.2.1概要设计的任务和步骤3.2.2面向数据流图的设计方法3.2.3面向对象的设计方法3.2.1概要设计的任务和步骤1.确定设计方案设计供选择的方案推荐最佳实现方案2.软件结构设计功能分解设计软件结构3.数据文件设计4.制定测试计划5.书写概要设计文档3.2.2面向数据流图的设计方法面向数据流图的设计方法是基于抽象和功能分解进行软件结构设计的一种结构化设计方法。有两种面向数据流图的设计方法:数据流分析和事务分析。理论上,只要需求规格说明是用数据流图表示,就可以使用数据流分析方法进行软件结构设计。1.数据流分析数据流分析,又称变换分析,是一种将数据流图转换成软件结构图的系统设计方法。计算机系统都有一个从“输入”到“变换”到“输出”的过程。1.数据流分析对数据流进行分析的关键问题是要找出从外部信息转换成内部数据的转折点(称为输入转折点)以及内部数据转换成外部信息的转折点(称为输出转折点)。2.事务分析面向数据流图的另一种设计方法是事务分析法。对数据流图中存在一个或多个具有事务处理特征的事务处理中心时(称为事务型数据流图,形状呈辐射状),对该数据流图或者图中的一部分应该采用事务分析的方法进行软件结构设计,从而将代表事务处理特征的数据流图映射成合适的模块化层次结构。2.事务分析2.事务分析2.事务分析一般地,一个大型的软件系统是变换型和事务型的混合结构。所以,在系统设计时,首先利用变换分析方法把软件系统分为输入、变换和输出三个部分,然后针对数据流图各部分的特点,适当用变换分析和事务分析方法,得到初始系统结构图。3.软件结构的改进模块的大小通常,模块的大小以50~100行为宜,最多不超过500行,可以用1~2页纸打印。模块的扇入与扇出模块的扇入是指共有多少其他模块直接调用本模块。模块的扇出指本模块直接调用了多少其他模块,也称为控制宽度。①一个模块的扇出不要超过7个(7±2原则)。②良好的软件结构图往往上层有较高的扇出,底层有较高的扇入,呈清真寺状。模块的作用域与控制域模块的作用域是指模块中判定的影响范围。模块的控制域是指模块本身及其直接或间接调用的模块。3.2.3面向对象的设计方法面向对象设计的主要目的则是将分析阶段得到的需求分析模型转化为“怎么做”的设计模型,从而为下一阶段的编码阶段提供坚实的设计指南。面向对象中常用的设计顺序:子系统设计、对象设计、消息设计和方法设计。1.子系统设计在子系统设计中,可以对面向对象分析模型从数据(对应于对象模型)、行为(对应于行为模型)和功能(对应于功能模型)三个方面结合起来进行问题分解,从而定义出若干个一致的类与对象、关系、行为和功能的集合,这里的每一个集合就是一个子系统。1.子系统设计在定义和设计子系统时,应该遵循以下一些常用的设计准则。①子系统应该具有良好定义的接口,通过这些接口可以与系统的其他部分通信。②除了极少数的“通信类”外,子系统的所有其他类都只能与子系统内部的类通信。③子系统的数目应该尽可能少。④子系统内部仍然可以进一步分解成更小的子系统以降低复杂性。1.子系统设计在定义每一个子系统后,就对每一个子系统进行设计。每个子系统可以进一步划分为最常见的四个部件:问题域部件、人机交互部件、数据管理部件和系统交互部件。2.对象设计面向对象中的对象是一个封装了数据(属性)和功能(方法)的能动体,这里的对象设计是指对每个对象中的数据部分的设计,即根据面向对象分析阶段得到的对象模型(主要是问题域的对象模型),以及面向对象设计阶段特别是从子系统设计中的各个部件设计得到的对象模型,进一步求精而得到每一个对象的更为准确的属性,然后设计出这些属性相应的数据结构。3.消息设计面向对象系统是一个对象与对象之间通过消息传递进行通信的系统。因此,消息的设计也是非常重要的。消息设计是指描述每一个对象可以接收和发送消息的接口。4.方法设计方法设计是指在面向对象设计阶段根据面向对象的行为模型和功能模型,进一步对每一个对象的方法进行求精,一方面是要将以前遗漏的方法找出来,另一方面是要定义每一种方法过程化的细节。3.3模块和模块化3.3.1模块3.3.2模块化3.3.3模块分割评价标准3.3.4模块设计规则3.3.1模块模块(Module)是能够单独命名,由边界元素限定的程序元素的序列。在软件的体系结构中,模块能独立地完成一定的功能,是可以组合、分解和更换的单元。模块有以下基本属性。名称:模块的名称必须表达该模块的功能,指明每次调用它时应完成的功能。接口:模块的输入和输出。功能:模块实现的功能。逻辑:模块内部如何实现功能及所需要的数据。状态:模块的调用与被调用关系。通常,模块从调用者那里获得输入数据,然后把产生的输出数据返回给调用者。3.3.2模块化模块化(Modularization)是把系统分割成能完成独立功能的模块,明确规定各模块及其输入输出规格,使模块的界面不会产生任何混乱。在软件工程中,模块化是大型软件设计的基本策略。在软件系统模块化时,最重要的原理是模块独立性,而模块独立性要求模块之间低耦合和模块内部高内聚。3.3.2模块化1.模块化可产生以下效果减少复杂性提高软件的可靠性提高可维护性有助于软件工程的组织管理有助于信息隐藏3.3.2模块化2.模块分割方法:在模块分割时,一个模块可分为7个左右的子模块,不要超过9个子模块。横向分割根据输入输出等功能的不同来分割模块。纵向分割根据系统对信息进行处理过程中不同的阶段来分割。模块分割顺序先确定中心控制模块,由控制模块指示从属模块,逐次进行。3.3.3模块分割评价标准评价模块分割好坏的标准,主要有以下4个方面。①模块大小②模块之间的联系程度(耦合)。③模块内的软件元素的联系程度(内聚)。④模块信息的隐蔽程度。其中,衡量模块独立程度的两个定性度量标准是耦合和内聚。1.耦合软件结构中模块之间互相依赖的程度用耦合来度量。耦合强弱取决于模块间接口的复杂程度,一般由模块之间的调用方式、传递信息的类型和数量来决定。在设计软件结构时应追求尽可能松散的耦合。1.耦合耦合有以下5类:数据耦合控制耦合特征耦合公共环境耦合内容耦合1.耦合为了降低模块间的耦合程度,应采用以下设计原则:在传递信息时尽量使用数据耦合,少用控制耦合和特征耦合。在耦合方式上,通过语句调用,用参数传递信息,不采用直接引用方式(内容耦合),尽量控制公共环境耦合。模块之间相互调用时,传递的参数最好只有一个,最多不超过四个。在设计模块时尽量做到把模块之间的连接限制到最少,模块环境的任何变化,都不应引起模块内部发生改变。2.内聚一个模块内各个元素彼此结合的紧密程度用内聚来度量。理想的模块只完成一个功能,模块设计的目标之一是尽可能高的内聚。2.内聚内聚有以下7类:偶然内聚逻辑内聚时间内聚过程内聚通信内聚顺序内聚功能内聚2.内聚上述几种内聚按紧密程度从高到低排列次序分别为功能内聚、顺序内聚、通信内聚、过程内聚、时间内聚、逻辑内聚、偶然内聚。其中,功能内聚最理想,一个模块完成一个功能,独立性强,内部结构紧密。3.3.4模块设计规则1.尽力提高模块独立性。2.注意模块的可靠性、通用性、可维护性和简单性。3.模块应大小适中。4.模块的深度、宽度、扇出和扇入要适当。5.模块接口要简单和清晰。3.4详细设计概要设计确定了软件系统的总体结构,详细设计则对概要设计结果进一步细化,给出目标系统的精确描述,以便在编码阶段直接翻译成计算机的程序代码。3.4.1详细设计的目标与任务1.详细设计的目标详细设计阶段将具体地设计目标系统,得出新系统软件的详细规格。2.详细设计的任务算法过程的设计数据结构的设计数据库物理设计信息编码设计测试用例的设计其他设计编写“详细设计说明书”3.4.2面向过程详细设计面向过程详细设计实质上就是面向算法分析设计,即使是采用其他设计方法,如面向对象的设计方法,其方法本身的实现仍然是面向过程的。因此,面向过程详细设计是其他各种详细设计的基础。3.4.2面向过程详细设计面向过程详细设计的描述工具有下列4种:1.流程图2.盒图3.程序设计语言4.判定表1.流程图流程图是用图形化的方式,表示程序中一系列的操作以及执行的顺序。流程图使用的符号如下所示。1.流程图常见的流程图结构如下所示。

(a)顺序结构

(b)选择结构

(c)while循环结构

(d)until循环结构1.流程图例如,描述并打印N!,流程图效果如下所示。2.盒图盒图又称N-S图,是流程图的另一种表达形式。

(a)顺序结构

(b)选择结构

(c)循环结构

2.盒图例如,N!的N-S图如图下所示。3.程序设计语言程序设计语言(PDL)也称结构化英语或伪代码,它使用结构化编程语言的风格描述程序算法,但不遵循特定编程语言的语法。例如,使用程序设计语言描述打印N!。读入N置F的值为1,置M的值为1当M<=N时,执行: 使F=F*M

使N=N+1打印F4.判定表当处理中含有复杂的判断逻辑时,可以使用判定表来描述,尤其适于处理由某些条件取值的组合引发的情况。如某校教师的课时津贴费规定如下。本校专职教师每课时津贴费:教授80元,副教授60元,讲师50元,助教40元。外聘兼职教师每课时津贴费:教授90元,副教授80元,讲师60元,助教50元。4.判定表专职TTTTFFFF教授TFFFTFFF副教授FTFFFTFF讲师FFTFFFTF助教FFFTFFFT90√80√√60√√50√√40√3.4.3面向数据详细设计面向数据设计以ER模型为基础,按照一定的规则将概念数据模型(CDM)转换成能被某种数据库管理系统接受的物理数据模型(PDM),创建物理上的数据库表、索引和视图,并且用存储过程和触发器来实现各种业务规则。数据模型是系统内部的静态数据结构,而概念数据模型和物理数据模型是数据模型的两个层次。概念数据模型就是数据库的逻辑设计,即ER图;物理数据模型就是数据库的物理设计,即物理表。图书馆信息系统的概念数据模型图书馆信息系统的物理数据模型3.4.4面向对象详细设计面向对象设计在详细设计阶段主要完成对象的属性和方法的设计,称之为面向对象程序的详细设计。面向对象程序的核心概念是类,具有三种基本特性:封装性、继承性和多态性。(具体内容详见第5章)3.4.4面向对象详细设计为了得到高质量的软件系统,在面向对象程序的详细设计阶段必须遵循一些基本原则,以确保能够在编码时得到高质量的面向对象程序。1.可复用性2.可扩展性3.健壮性4.协作性3.5Jackson程序设计方法Jackson结构程序设计方法是一种面向数据结构的结构化程序设计方法。通过分析问题的输入/输出数据结构(用Jackson图表示)的对应关系,按一定的映射规则将其映射成软件的过程描述,用Jackson伪代码表示。1.Jackson图Jackson图既可以表示程序结构,也可以表示数据结构,有利于结构化技术的实现。Jackson图描述的三种结构如下所示。

(a)顺序

(b)选择

(c)重复2.Jackson程序设计方法Jackson程序设计方法由下述五个步骤组成:分析并确定问题的输入数据和输出数据的逻辑结构,并用Jackson分析并确定问题的输入数据和输出数据的逻辑结构,并用Jackson图表示。找出输入数据结构和输出数据结构中有对应关系的数据单元。采用三条映射规则,将数据结构映射为程序结构,并用Jackson图表示。列出完成程序结构图中各处理框功能的全部操作以及有关条件,并将它们分配到程序结构图的适当位置。用Jackson伪代码写出与程序结构图相对应的过程。3.6Warnier程序设计方法Warnier程序设计方法是一种逻辑构造程序(LogicalConstructionofPrograms,简称LCP)程序设计方法。与Jackson程序设计方法类似,它也是由数据结构导出程序结构,但Warnier程序设计方法在逻辑上更严谨。1.Warnier图Warnier图同Jackson图一样也可用来表示数据结构和程序结构。Warnier图中使用的主要符号与说明见下表。表3-2Warnier图的主要符号与说明符号意义符号意义{表示层次组成(1次)顺序结构表示“或”(or)(n次)重复结构-表示非(0或1)次选择结构2.Warnier程序设计方法Warnier程序设计的基本步骤如下。分析和确定问题的输入和输出数据结构,并用Warnier图来表示。从数据结构(特别是输入数据结构)导出程序的处理结构,用Warnier图表示。将程序结构改用程序流程图表示。根据上一步得出的程序流程图,写出程序的详细过程性描述。3.7用户界面设计

1.用户界面设计问题(1)响应时间(2)用户帮助设施(3)出错信息处理(4)命令交互3.7用户界面设计2.用户界面设计过程先创建设计模型,实现模型——用户界面原型。用户试用并评估该原型,向设计者提出对界面的评价。设计者根据用户的意见修改设计并实现下一级原型。不断进行下去,直到用户感到满意为止。3.7用户界面设计3.用户界面设计的基本原则①系统

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论