软件制造工程程序设计.ppt
《软件制造工程程序设计.ppt》由会员分享,可在线阅读,更多相关《软件制造工程程序设计.ppt(127页珍藏版)》请在三一办公上搜索。
1、软件制造工程,第二章 程序设计,本章授课内容,基础 程序设计概述程序设计原理程序设计的启发式原则程序设计方法面向对象程序设计 团队 程序设计书的构成和理解,程序设计概述 _程序设计在软件开发中的位置,程序设计概述_概念,概要设计又称为总体设计或外部设计,详细设计又称为过程设计或内部设计。程序设计 程序设计是以详细设计为基础,对程序单元内的功能模块进行细化,对功能模块的功能处理要求和实现方法给予说明,并作出程序设计书。程序设计的结果将是编程工程和测试工程的主要依据。近年来,由于很多应用系统在开发周期短、开发成本低的条件下进行设计,常常把详细设计和程序设计的阶段合为一体。,程序设计概述_作业流程及
2、描述,程序设计概述_作业流程及描述,程序设计概述 作业流程及描述,程序设计概述 作业流程及描述,程序设计概述 作业流程及描述,程序设计概述_工作用表,程序设计原理,设计的原则:(l)分解协调的原则。(2)信息隐蔽,抽象的原则,即上层模块只规定下层模块做什么和所属模块间的协调关系,但不规定怎么做,以保证模块的相对独立性和内部结构的合理性,使得模块与模块之间层次分明,易于理解,易于实施,易于维护。,程序设计原理,设计的原则:(3)自顶向下原则:首先抓住总的功能目标,然后逐层分解,即先确定上层模块的功能,再确定下层模块的功能。(4)一致性原则:要保证整个软件设计过程中具有统一的规范,统一的标准,统一
3、的文件模式等等。(5)面向用户的原则,每个模块必须功能明确,接口明确,坚决消除多重功能和无用接口。,程序设计的一个重要课题就是模块划分和模块设计,把开发的软件系统按功能逐次分割成层次结构,使每一部分完成简单的功能且各个部分之间又保持一定的联系,这种功能设计所包括的内容有:采用某种设计原理和方法,将一个复杂的系统按功能划分为成模块的层次结构;确定每个模块的功能,建立与已确定的软件需求的对应关系;确定模块间的调用关系;确定模块间的接口,设计接口的信息结构;评估模块划分的质量及导出模块结构的规则。,程序设计原理,1、模块化模块的概念 在软件的体系结构中,模块是可组合、分解和更换的单元。程序设计单元都
4、被看成为“模块”,所谓模块就是程序对象的有名字的集合,例如,过程、函数、子程序、宏等。模块化模块化是把程序划分成若干个独立的模块,每个模块完成一个特定的子功能。,程序设计原理,模块具有以下几种基本属性:接口:指模块的输入与输出;功能:指模块实现什么功能;逻辑:描述内部如何实现要求的功能所需的数据和处理流程;状态:指该模块的运行环境,即模块的调用与被调用关系。功能、状态与接口反映模块的外部特性,逻辑反映它的内部特性。,程序设计原理,模块的概念 一个模块的规模应当取决于它的功能和用途。应减少接口的代价,提高模块的独立性。模块的独立性可以由两个定性标准度量,这两个标准分别称为聚合和耦合。,程序设计原
5、理,程序设计原理,2、抽象与逐步求精抽象是认识复杂现象过程中使用的思维工具,即抽出事物本质的共同的特性而暂不考虑它的细节,不考虑其他因素。通过抽象,可以确定组成软件的过程实体。,程序设计原理,抽象软件系统进行模块设计时,可有不同的抽象层次。在最高的抽象层次上,可以使用问题所处环境的语言概括地描述问题的解法。在较低的抽象层次上,则采用过程化的方法。在从概要设计到详细设计的过程中,抽象化的层次逐次降低。当产生源程序时到达最低抽象层次。,程序设计原理,2、抽象与逐步求精逐步求精是一种先总体,后局部的思维原则,先抓住主要问题并给予解决,然后分阶段逐步深入考虑问题的细节,也就是逐层分解,分而治之的方法。
6、,程序设计原理,3、信息隐蔽“为了得到最好的一组模块,应该怎样分解软件呢?”信息隐蔽指在设计和确定模块时,使得一个模块内包含的信息(过程和数据)对于不需要这些信息的模块来说,是不能访问的。通过信息隐蔽,可以定义和实施对模块的过程细节和局部数据结构的存取限制。“隐蔽”意味着有效的模块化可以通过定义一组独立的模块而实现,这些独立的模块彼此间仅仅交换那些为了完成系统功能而必须交换的信息。,程序设计原理,在一节不和谐的课堂里,老师叹气道:“要是坐在后排聊天的同学能象中间打牌的同学那么安静,就不会影响到前排睡觉的同学。”这个故事告诉我们,如果不想让坏事传播开来,就应该把坏事隐藏起来,“家丑不可外扬”就是
7、这个道理。为了尽量避免某个模块的行为去干扰同一系统中的其它模块,在设计模块时就要注意信息隐藏。应该让模块仅仅公开必须要让外界知道的内容,而隐藏其它一切内容。,程序设计原理,4、模块独立性模块独立性指每个模块只完成系统要求的独立子功能,并且与其他模块的联系最少且接口简单。用两个定性的度量标准耦合性(coupling)和内聚性(cohesion)来衡量模块的独立性。,程序设计原理,4、模块独立性(1)耦合性(coupling)耦合性也称块间联系。指软件系统结构中各模块间相互联系紧密程度的一种度量。模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。模块间耦合高低取决于模块间接口的复杂性、调用的
8、方式及传递的信息。,程序设计原理,耦合按从弱到强的顺序可分为以下七种类型:非直接耦合、数据耦合、标记耦合、控制耦合、外部耦合、共通耦合、内容耦合。按上述顺序,耦合性逐渐升高,模块独立性逐渐降低。,程序设计原理,非直接耦合(Nondirect Coupling)两个模块之间没有直接关系,它们之间的联系完是通过主模块的控制和调用来实现的。非直接耦合的模块独立性最强。,数据耦合(Data Coupling)一个模块访问另一个模块时,彼此之间是通过简单数据参数(不是控制参数、公共数据结构或外部变量)来交换输入、输出信息的。举例:float B(float w)/计算水费.,标记耦合(Stamp Cou
9、pling)一组模块通过参数表传递记录信息,就是标记耦合。这个记录是某一数据结构的子结构,而不是简单变量。举例:float B(struct Fee e)/计算水费.struct Fee float w;/水的用量 float h;/房子的面积,控制耦合(Control Coupling)如果一个模块通过传送开关、标志、名字等控制信息,明显地控制选择另一模块的功能,就是控制耦合。,外部耦合(External Coupling)模块之间通过指定的外部设备、通信协议等环境因素耦合在一起,则称之为外部耦合。公共耦合(Common Coupling)若一组模块都访问同一个公共数据环境,则它们之间的耦合
10、就称为公共耦合。公共的数据环境可以是全局数据结构、共享的通信区、内存的公共覆盖区等。,内容耦合(Content Coupling)如果发生下列情形,两个模块之间就发生了内容耦合(1)一个模块直接访问另一个模块的内部数据;(2)一个模块不通过正常入口转到另一模块内部;(3)两个模块有一部分程序代码重迭(只可能出现在汇编语言中);,内容耦合举例:int c;A(int*a,int*b)c=*a;*a=*b;*b=c;B()c=d;/访问了A的内部数据,原则:尽量使用数据耦合和标记耦合,少用控制耦合,限制外部耦合和公共耦合的范围,完全不用内容耦合。,4、模块独立性(2)内聚性内聚性又称块内联系。指模
11、块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。若一个模块内各元素(语名之间、程序段之间)联系的越紧密,则它的内聚性就越高。,程序设计原理,4、模块独立性(2)内聚性内聚按强度从低到高共分七级:巧合内聚、逻辑内聚、时间内聚、过程内聚、通信内聚、信息内聚、功能内聚。内聚性逐渐加强,功能趋于单一,模块独立性也逐渐加强。,程序设计原理,(2)内聚,4、模块独立性,功能内聚(Functional Cohesion)模块中的所有成员都是为了实现某一单一功能。比如根据生日计算雇员年龄的子程序就是功能内聚性的,因为它只完成一项工作,而且完成得很好。,信息内聚(顺序内聚)(Informat
12、ional Cohesion)一个模块内的处理元素和同一个功能密切相关,而且这些处理必须顺序进行。例:假设有一个按给出的生日计算雇员年龄、退休时间的子程序,如果它是利用所计算的年龄来确定雇员将要退休的时间,那么它就具有顺序内聚性。,通信内聚(Communication Cohesion)模块内所有处理元素都在同一个数据结构上的操作。在一个模块中,两个操作只是使用相同数据,而不存在其它任何联系时产生的。比如,在 GetNameAndChangePhoneNumber()这个子程序中,如果 Name 和PhoneNumber 是放在同一个用户记录中的,那么这个子程序就是通讯内聚性。,过程内聚(Pr
13、ocedural Cohesion)使用流程图做为工具设计程序时,把流程图中的某一部分划出组成模块,就得到过程内聚模块。例如,把流程图中的循环部分、判定部分、计算部分分成三个模块,这三个模块都是过程内聚模块。,时间内聚(Classical Cohesion)时间内聚又称为经典内聚。这种模块大多为多功能模块,但模块的各个功能的执行与时间有关,通常要求所有功能必须在同一时间段内执行。例如初始化模块和终止模块。,逻辑内聚(Logical Cohesion)这种模块把几种 相关的功能组合 在一起,每次被 调用时,由传送 给模块的判定参 数来确定该模块 应执行哪一种功 能。,巧合内聚(Coinciden
14、tal Cohesion)巧合内聚(偶然内聚)。当模块内各部分之间没有联系,或者即使有联系,这种联系也很松散,则称这种模块为巧合内聚模块,它是内聚程度最低的模块。,事实上,确定内聚的精确级别是不必要的,重要的是尽量争取高内聚和识别低内聚。,模块化的设计原则(1)改进软件结构提高模块独立性(2)模块规模应该适中(3)保持适当的扇入和扇出(4)模块的作用范围应在控制范围之内(5)力争降低模块接口的复杂程度(6)设计单入口单出口的模块(7)模块功能应该可以预测 以上启发式规则多数是经验数据,对改进设计,提高软件质量,有重要的参考价值,模块化设计的启发式原则,例:若其中B、C、D之间存在内容耦合,可将
15、它们合并为一个模块BCD,若E、F中有一个公共的子功能,可将该子功能独立成一个模块。,模块化设计的启发式原则,(1)改进软件结构提高模块独立性,(2)模块规模应该适中 经验表明,模块的规模要在一页以内,模块的总行数最好在3060行,这种规模易于阅读和理解。过长的模块往往是分解不充分的表现,会增加阅读理解的难度;但小模块太多也会使模块之间联系变得复杂,增大系统在模块调用时传递信息所花费的开销,不值得单独存在,可以把它合并到上级模块中去。由于种种原因如功能和用途的约束,一个模块可能会大于一页,要以不影响程序的清晰为前提。,模块化设计的启发式原则,(3)保持适当的扇入和扇出一个模块的扇入表示有多少个
16、模块直接调用它,一个模块的扇出表该模块控制的其它模块的数量,深度表示软件结构中控制的层数。经验表明,一个设计得好的典型系统平均扇出通常是3或4(扇出的上限通常是59)。,模块化设计的启发式原则,(3)保持适当的扇入和扇出,模块化设计的启发式原则,(4)模块的作用范围应在控制范围之内一个模块的作用范围(或称影响范围)指受该模块内一个判定影响的所有模块的集合。一个模块的控制范围指模块本身以及其所有下属模块(直接或间接从属于它的模块)的集合。一个模块的作用范围应在其控制范围之内,且判定所在的模块应在其影响的模块在层次上尽量靠近。,模块化设计的启发式原则,(5)力争降低模块接口的复杂程度模块接口复杂是
17、软件发生错误的一个主要原因,应该仔细设计模块接口,使得信息传递简单并且和模块的功能一致。接口复杂或不一致(即看起来传递的数据之间没有联系)是低内聚的表现,应该重新分析这个模块的独立性。,模块化设计的启发式原则,(6)设计单入口单出口的模块 不要使模块间出现内容耦合;从顶部进入模块并且从底部退出,软件比较容易理解,因此也比较容易维护。,模块化设计的启发式原则,模块化设计的启发式原则,(7)模块功能应该可以预测如果将一个模块看做黑盒子,就是说,只要输入的数据相同就产生同样的输出,这个模块的功能就是可以预测的。,模块化设计的启发式原则,(7)模块功能应该可以预测具有内部状态的模块,其输出不仅与输入有
18、关,而且还取决于模块的当前状态,其功能是不可预测的,这就增加了模块的测试和维护难度,这条原则不是绝对的,如对于实时系统来说,针对不定时的输入,系统状态要不断发生变化,这种变化又直接影响下一个输入引起的输出。对于这种不可避免的情况,要引起充分注意,要将相应模块做特殊处理。无论测试还是维护都把模块状态作为一个重要影响因素来考虑,int count(int s)int sum=0;for(int i=1;i=s;i+)sum+=i;return sum;,此模块功能可以预测吗?,Y,int count(int s)static int sum=0;for(int i=1;i=s;i+)sum+=i;
19、return sum;,此模块功能可以预测吗?,N,结构化设计的基本思想是把需求和求解的方法分离,把相关信息(数据结构和算法)集中在一个模块中,和其它模块隔离,外界不能随便访问这个模块的内部信息,在这种模式中,程序设计的首要任务是划分模块,数据则隐蔽在模块中。,程序设计方法_结构化方法,程序设计方法_结构化方法,结构化程序设计的内容 使用三种控制结构,有效地限制使用goto语句自顶向下,逐步求精的设计方法,程序设计方法_结构化方法,逐步细化的例子 例1 在一组数中找出其中的最大数解:第一步:1 输入一组数2 找出一个最大数3 输出最大数第二步:2.1 任取一个数,假设它是最大数2.2 将该数与
20、其余各数逐一比较;2.3 若发现有任何大于该一假设的最大数,即取而代之第三步:1.1 输入一个数组;2.1.1 令“最大数”=数组的第一个元素;2.2.1 从第二个元素至最末的一个元素依次做:2.3.1 如果新元素”最大数”则“最大数”=新元素;3.1 输出“最大数”,自顶向下,逐步求精方法的优点,符合人们解决复杂问题的普遍规律。可提高软件开发的成功率和生产率用先全局后局部,先整体后细节,先抽象后具体的逐步求精的过程开发出来的程序具有清晰的层次结构,程序容易阅读和理解每一步工作仅在上层节点的基础上做不多的设计扩展,便于检查,验证程序正确性。,结构化程序设计工具,流程图盒图(N-S图)问题分析图
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 制造 工程 程序设计
链接地址:https://www.31ppt.com/p-6027866.html