收藏 分享(赏)

软件工程-第8章修改.ppt

上传人:dreamzhangning 文档编号:3355764 上传时间:2018-10-17 格式:PPT 页数:57 大小:3.03MB
下载 相关 举报
软件工程-第8章修改.ppt_第1页
第1页 / 共57页
软件工程-第8章修改.ppt_第2页
第2页 / 共57页
软件工程-第8章修改.ppt_第3页
第3页 / 共57页
软件工程-第8章修改.ppt_第4页
第4页 / 共57页
软件工程-第8章修改.ppt_第5页
第5页 / 共57页
点击查看更多>>
资源描述

1、软件工程,第8章面向过程的结构化设计,软件设计是后续开发步骤及软件维护工作的 基础。如果没有设计,只能建立一个不稳定的 系统结构。,1 抽象,软件系统进行模块设计时,可有不同的抽象层次。在最高的抽象层次上,使用问题所处环境的语言概括的描述问题的解法;在较低的抽象层次上,将提供更详细的解决方案。,8.1 软件设计的基本概念和原理,(1)过程抽象过程抽象是指具有明确和有限功能的指令序列。过程抽象的命名暗示了这些功能,但隐藏了具体的细节。在软件工程中,从系统定义到实现,每进展一步都可以看做是对软件解决方法的抽象化过程的一次细化。,(2)数据抽象数据抽象是描述数据对象的冠名数据集合。在不同层次上描述数

2、据对象的细节,定义与该数据对象相关的操作。,2 体系结构,体系结构是程序构件(模块)的结构或组织、这些构件交互的形式以及这些构件所用数据的结构。结构图:反映程序中模块之间的层次调用关系和联系:它以特定的符号表示模块、模块间的调用关系和模块间信息的传递。, 模块:模块用矩形框表示,并用模块的名字标记它。, 模块的调用关系和接口:模块之间用单向箭头联结,箭头从调用模块指向被调用模块。, 模块间的信息传递:当一个模块调用另一个模块时,调用模块把数据或控制信息传送给被调用模块,以使被调用模块能够运行。而被调用模块在执行过程中又把它产生的数据或控制信息回送给调用模块,系统结构图,3 模块化,软件被划分为

3、独立命名的构件,称之为模块。这些模块可以被组装起来以满足整个问题的需求。 经验1:工作量E(P1+P2)E(P1)+E(P2) 经验2:,4 信息隐蔽,信息隐蔽是指,每个模块的实现细节对于其它模块来说是隐蔽的。也就是说,模块中所包含的信息(包括数据和过程)不允许其它不需要这些信息的模块使用。,5 模块独立性,模块独立性, 是指软件系统中每个模块只涉 及软件要求的具体的子功能, 而和软件系统中其它的模块的接口是简单的。例如, 若一个模块只具有单一的功能且与其它模块没有太多的联系, 则称此模块具有模块独立性。一般采用两个准则度量模块独立性。即模块间耦合和模块内聚。,耦合是模块之间的互相连接的紧密程

4、度的度量。 内聚是模块功能强度(一个模块内部各个元素彼此结合的紧密程度)的度量。 模块独立性比较强的模块应是高内聚、低耦合的模块。,6 求精,求精是一个细化的过程。精化使设计者在原始陈述上细化,并持续提供更多的细节。抽象和精化是互补的,抽象使得设计人员能够说明过程和数据而忽略低层细节;精化有助于设计人员在设计过程中揭示低层的细节。,8.2 软件总体设计的任务和目标,在总体设计阶段中应从系统开发的角度出发,将系统逐次分割成层次结构,系统被表达为一个结构清晰层次分明的模块组合,每个模块完成各自相对简单的功能,并且他们之间都保持一定的联系,另外还定义这个系统与外部系统的接口。 这一阶段要从需求分析转

5、化到设计模型,8.2 软件总体设计的任务和目标,从分析模型转化到设计模型的元素对应关系,8.3 软件体系结构设计,根据数据变换的性质,我们可以把数据流图分为变换型和事务型两类,所以,结构化设计也被分为变换设计、事务设计以及两者相结合的综合设计。,8.3.1 基本概念,面向数据流的设计方法,把信息流映射成软件体系结构,不同的信息流选用不同的映射方法,总体来说,有以下两种类型的数据流: 变换流 事务流,8.3.1 基本概念,变换流 变换流体现的是数据从输入到加工,再到输出的一般步骤,数据首先需要输入过程,由外部形式变换成内部形式,这种内部形式适合进行加工处理;然后经过变换中心,将输入的数据加工成一

6、种新的数据形态;接着再通过输出通道变换成外部形式。当数据流图具备这些特性时,这种信息流我们就称为变换流。,8.3.1 基本概念,变换流,8.3.1 基本概念,事务流 当输入的信息流可以引发多个不同的事务活动流程,并且数据流图中有一个事务调度中心,那么我们称这种信息流为事务流。,8.3.1 基本概念,事务流,8.3.1 基本概念,不同的信息流对应的分析方法是不同的,我们需要根据数据流图中的流的类型分别进行变换分析或事务分析,从数据流图到最终的软件体系结构的分析设计过程如图所示,8.4 过程设计,在计算机技术发展的初期,由于计算机硬件条件的限制,导致对运算速度与存储空间都有要求,这样开发人员追求高

7、效率,把程序的可理解性、可扩充性等因素被放到第二位。随着计算机应用规模也越来越大,应用和开发越来越普及,计算机硬件与通信技术得到了高速发展,程序设计不再是一两个程序员可以完成的任务。编写程序不能再以片面追求高效率为第一要求,而要综合考虑程序的可靠性、可扩充性、可重用性和可理解性等因素。正是这种发展刺激了程序设计方法与程序设计语言的发展。,8.4 过程设计,过程设计的目标除了要使开发出来的程序满足功能、性能上的要求,同时也要满足代码简洁明了易懂的要求。 过程设计的好坏决定了最终代码的质量。随着程序规模与复杂性的不断增长,人们探索出新的程序设计方法。 专家证明了只用顺序、选择、循环这三种基本控制结

8、构,即可实现任何单入口/单出口的程序。 以下介绍几种结构设计的工具:,8.4.1 程序流程图,程序流程图是人们对解决问题的方法、思路或算法的一种描述。它的优点在于:采用简单规范的符号,画法简单;结构清晰,逻辑性强;便于描述,容易理解。,8.4.1 程序流程图,流程图采用以下的一些基本符号:,8.4.1 程序流程图,例如:使用程序流程图判断某个整数x是否为质数的算法,8.4.1 程序流程图,传统的程序流程图是一种非结构化的程序算法设计工具,它有以下一些缺点:它无法对嵌套进行清晰地表达,尤其当嵌套比较复杂的时候;程序流程图无法制止GOTO语句;程序流程图会使程序员过早地考虑程序的控制流程,它不是逐

9、步求精的好工具。,8.4.2 盒式图N-S,传统的程序流程图是一种非结构化的程序算法设计工具,它有以下一些缺点:它无法对嵌套进行清晰地表达,尤其当嵌套比较复杂的时候;程序流程图无法制止GOTO语句;程序流程图会使程序员过早地考虑程序的控制流程,它不是逐步求精的好工具。,8.4.2 盒式图N-S,Nassi和Shneiderman提出的盒式图N-S,它把整个程序写在一个大框图内,这个大框图由若干个小的基本框图构成,在盒式图N-S中,有三种基本控制结构的N-S图,8.4.2 盒式图N-S,下图为判断某个整数x是否为质数的算法设计图:,8.4.2 盒式图N-S,N-S盒式图实际上是程序流程图去掉控制

10、流线的变种,它有以下特点:功能表达明确;容易确定局部数据和全局数据的作用域;容易表达模块的层次与嵌套关系;容易培养程序员养成结构化分析问题和解决问题的习惯。 N-S盒式图的缺点在于,获得结构严密的同时,牺牲了一定的灵活性,不便于进行算法的调整优化,如果问题较为复杂,作图的难度会加大。,8.4.3 PAD图,问题分析图PAD(Problem Analysis Diagram),由日本日立公司于1973年发明,它用二维树形结构的图表示程序的控制流,将这种图转换为程序代码比较容易。以下是PAD的基本符号。,8.4.3 PAD图,同样是上面那个判定质数的例子,8.4.3 PAD图,PAD图的优点在于:

11、 用PAD图可以容易读懂程序所要表达的逻辑,PAD图是二维树型结构的图形,程序从图中最左边上端的结点开始执行,自上而下,从左到右顺序执行; PAD是一种程序结构可见性好、结构唯一、易于编制、易于检查和易于修改的详细设计表现方法,用PAD可以消除软件开发过程中设计与制作的分离,也可消除制作过程中的主观性; PAD图所描述的程序结构十分清晰。图中最左边的竖线是程序的主线,即第一层控制结构,随着程序层次的增加,PAD图逐渐向右延伸,每增加一个层次,图形向右扩展一条竖线,PAD图中竖线的总条数就是程序的层次数;既可用于表示程序逻辑,也可用于描述数据结构。,8.4.4 PDL语言,PDL(Program

12、 Design Language)也称为伪码,它是用正文形式表示数据和处理过程的设计工具。 PDL具有严格的关键字外部语法,用于定义控制结构和数据结构;另一方面,PDL表示实际操作和条件的内部语法通常又是灵活自由的,以便可以适应各种工程项目的需要。因此,一般说来PDL是一种“混杂”语言,它使用一种语言(通常是某种自然语言)的词汇,同时却使用另一种语言(某种结构化的程序设计语言)的语法。,8.4.4 PDL语言,PDL程序的构成,8.4.4 PDL语言,PDL程序的构成,8.4.4 PDL语言,同样是上面那个判定质数的例子,用PDL表示如下:procedure 判定质数declare x,n,j

13、 as 整型简单变量从键盘读入x将变量n赋值为x1/2将变量i赋值为2loop while i=n+1输出:x是质数else输出:x不是质数end if end判定质数,8.4.4 PDL语言,PDL具有下述特点: 它使用关键字的固定语法,为了使结构清晰和可读性好,通常在所有可能嵌套使用的控制结构的头和尾都有关键字,例如,ifend if、loopend loop等。 它使用自然语言的自由语法,来描述具体的处理逻辑。 它需要对数据进行说明。应该既包括简单的数据结构(例如简单变量和数组),又包括复杂的数据结构(例如,链表或层次的数据结构)。 它需要对模块定义和调用的技术进行说明。,8.4.5 判

14、定表,判定表(decision table),是指一个表格,用于显示条件和条件导致动作的集合。 判定表是分析和表达多逻辑条件下执行不同操作的情况的工具。如果数据流图的加工需要依赖于多个逻辑条件的取值,使用判定表来描述比较合适。,8.4.5 判定表,一张判定表通常由四部分组成,左上部列出的是所有的条件,左下部为所有可能的操作,右上部分表示各种条件组合的一个矩阵,右下部分是对应于每种条件组合应有的操作。,8.4.5 判定表,以学生的奖学金评定为例,说明判定表的应用。奖励的目的在于鼓励学生的品学兼优,此处理功能是要合理确定奖学金评定等级。决定受奖的条件为:成绩优秀占70或50以上,成绩为中或中以下占

15、15或20以下,团结纪律为优或中。奖励方案为一等奖、二等奖、三等奖三种。因为受奖条件有些是相容的,相互组合的项较多。描述此学生奖励政策的判定表如下表所示:,8.4.5 判定表,8.4.5 判定表,判定表的优点:能够将复杂的问题按照各种可能的情况全部列举出来,简明并避免遗漏。因此,利用判定表能够设计出完整的测试用例集合。 在一些数据处理问题当中,某些操作的实施依赖于多个逻辑条件的组合,即:针对不同逻辑条件的组合值,分别执行不同的操作。判定表很适合于处理这类问题。,8.4.6 判定树,判定树是判定表的变种,也能清晰地表示复杂的条件组合与应做的动作之间的对应关系。判定表虽然能清晰地表示复杂的条件组合

16、与应做的动作之间的对应关系,但其含义却不是一眼就能看出来的,初次接触这种工具的人要理解它需要有一个简短的学习过程。此外,当数据元素的值多于两个时,判定表的简洁程度也将下降。,8.4.6 判定树,一个支持自行开发、购买决策的决策树,8.4.6 判定树,判定树易于掌握和使用,它形式简单,不需任何说明,一眼就可以看出其含义。从不足方面来看,判定树虽然比判定表直观,但简洁性却不如判定表,数据元素的同一个值往往要重复画出多遍,而且越接近树的叶端重复次数越多。此外还可以看出画判定树时分枝的次序可能对最终画出的判定树的简洁程度有较大影响。,8.5 Jackson设计方法,MAJackson提出了一类至今仍广

17、泛使用的软件开发方法,该方法有时也称为面向数据结构的软件设计方法。这一方法从目标系统的输入、输出数据结构入手,导出程序框架结构,再补充其它细节,就可得到完整的软件体系结构。对于输入、输出数据结构明确的中小型系统,这个方法比较有效。Jackson设计方法也可与其它方法结合,用于模块的详细设计。,8.5 Jackson设计方法,Jackson结构图是Jackson方法提供的工具。虽然实际使用的数据结构种类繁多,但是数据元素间的逻辑关系只有顺序、选择和重复三类。,三类Jackson结构图,8.5 Jackson设计方法,(1)顺序结构 顺序结构的数据由一个或多个数据元素组成,每个元素按确定次序出现一次。 (2)选择结构 选择结构的数据包含两个或多个数据元素,可以按照选择的条件,选择使用相应的数据元素。 (3)重复结构 重复结构的数据,可以根据条件,重复使用零次或多次数据元素。,8.5 Jackson设计方法,Jackson程序设计的步骤 : (1)分析并确定输入数据和输出数据的逻辑结构,并用Jackson结构图来表示这些数据结构。 (2)找出输入数据结构和输出数据结构中有对应关系的数据单元。 (3)按以下的规则由输入、输出的数据结构导出程序结构。 (4)列出基本操作与条件,并把它们分配到程序结构图的适当位置。 (5)用伪码写出程序。,本章结束,

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

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报