软件制造工程程序设计.ppt

上传人:小飞机 文档编号:6027866 上传时间:2023-09-16 格式:PPT 页数:127 大小:685KB
返回 下载 相关 举报
软件制造工程程序设计.ppt_第1页
第1页 / 共127页
软件制造工程程序设计.ppt_第2页
第2页 / 共127页
软件制造工程程序设计.ppt_第3页
第3页 / 共127页
软件制造工程程序设计.ppt_第4页
第4页 / 共127页
软件制造工程程序设计.ppt_第5页
第5页 / 共127页
点击查看更多>>
资源描述

《软件制造工程程序设计.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图)问题分析图

21、(PAD图)HIPO图判定表判定树 过程设计语言(PDL),程序设计方法_ 结构化工具,流程图处理用四方形图表示条件判断用菱形图表示用连接线把这些图形连接起来表示处理的流程,程序流程图使用五种基本控制结构,例2 例1(在一组数中找出其中的最大数)的流程图,MAX=A(1),J=2,J=N?,MAX A(J),MAX=A(J),J=J+1,F,F,T,入口,出口,程序设计方法_结构化工具,盒图(N-S图)盒图是Nassi和Shneiderman提出来的,又称N-S图,没有箭头,不允许随意转移。在NS图中,每个“处理步骤”是用一个盒子表示的,所谓“处理步骤”可以是语句或语句序列。需要时,盒子中还可

22、以嵌套另一个盒子,嵌套深度一般没有限制,只要整张图在一页纸上能容纳得下,由于只能从上边进入盒子然后从下边走出,除此之外没有其他的入口和出口,所以,NS图限制了随意的控制转移,保证了程序的良好结构。,盒图(N-S图)五种基本控制结构由五种图形构件表示。,例3 例1的N-S图,程序设计方法_结构化工具,PAD图 PAD图是日本日立公司于1973年发明的,指问题分析图(Problem Analysis Diagram),它是一种自左往右展开的二维树型结构。控制流程为自上而下、从左到右的执行。由机器自动通过走树的办法生成相应的源代码,大大提高了软件的生产率。,PAD也设置了五种基本控制结构的图式,并允

23、许递归使用。,程序设计方法_ 结构化工具,程序设计方法_结构化工具,例:1 求A、B、C三个数中的最大值。,程序设计方法_结构化工具,例:2 猴子吃桃问题:有一堆桃子不知数目,猴子第一天吃掉一半,觉得不过瘾,又多吃了一只,第二天照此办理,吃掉剩下桃子的一半另加一个,天天如此,到第十天早上,猴子发现只剩一只桃子了,问这堆桃子原来有多少个?,程序设计方法_结构化工具,例:2,程序设计方法_ 结构化工具,HIPO图(层次图加输入/处理/输出图)HIPO图由下面三部分组成:H(分层)图。即以方框形式表示程序的主要功能、次要功能及其与模块间的关系。总览IPO(Input-Process-Output)图

24、。为H图提供输入变量表、处理功能表和输出变量表。详细IPO图。为底层模块提供输入变量表、处理功能表和输出变量表。,程序设计方法_ 结构化工具,HIPO图(层次图加输入/处理/输出图)HIPO图是一种图解式设计工具。在概要设计、详细设计、程序设计、测试和维护的不同阶段,都可以使用HIPO图对设计进行描述,例 学生成绩管理系统的H图,程序设计方法_结构化工具,HIPO图(层次图加输入/处理/输出图),程序设计方法_结构化工具,判定表在许多软件设计中,常常需要设计一个模块,根据多种条件的复杂组合,选择执行相应的动作,这种设计过程用判定表表示比较合适。判定表可作为输入数据,被直接读入机器,由“表驱动”

25、算法程序自动处理,判定表的第一行是规则号,每一列对应一条处理规则,它根据不同的条件组合选择执行相应的动作。为了能表示出总的控制流程,单单用这个工具是不行的,还需加上其他信息。通常,判定表可以有效地用来作为其他详细设计工具的补充。,程序设计方法_结构化工具,判定表判定表采用以下步骤进行处理:列出与一个具体过程(或)有关的所有处理;列出过程执行期间的所有条件(或所有判断);将特定条件取值组合与特定的处理相匹配,消去不可能发生的条件取值组合;将右部每一纵列规定为一个处理规则。,程序设计方法_结构化工具,判定表举例1,程序设计方法_结构化工具,判定表举例2 某航空公司规定,乘客可以免费托运重量不超过3

26、0公斤的行李。当行李重量超过30公斤时,对头等舱的乘客超重部分每公斤收费4元,对其他舱的乘客超重部分每公斤收费6元,对外国乘客超重部分每公斤收费比国内乘客多一倍,对残疾乘客每公斤收费比正常乘客少一半。,程序设计方法_结构化工具,判定表举例2,程序设计方法_结构化工具,判定树判定树是判定表的变种,能清晰地表示复杂的条件组合与应做的动作之间的对应关系。判定树的优点是:由于是一种图形表示,形式简单,不需任何说明,易看出含义,易于掌握和使用。缺点是:简洁性不如判定表,相同的数据元素往往要重复写多遍,而且越接近树的叶端重复次数越多。,程序设计方法_结构化工具,判定树举例,思考:将行李重量作为最后一个分支

27、,将会是几片叶子,答案:16片叶子,程序设计方法_结构化工具,过程设计语言(PDL,Process Design Language)是一个笼统的名字,由许多种不同的过程设计语言。过程设计语言用于描述模块中算法 和加工的具体细节,以便在开发人员之间比较精确的进行交流。过程设计语言的外层语法描述结构,采用与一般编程语言类似的确 定的关键字,内层语法描述操作,可以采用任意的自然语句(如:英语、汉语)由于过程设计语言与 程序很相似,也称为伪程序,或伪码(Pseudo Code)。但它仅仅是对 算法的一种描述,是不可执行的。,程序设计方法_结构化工具,过程设计语言(PDL)PDL的优点:(1)可以作为注

28、释直接插在源程序中间。这样做能促使维护人员在修改程序代码的同时也相应地修改PDL注释,因此有助于保持文档和程序的一致性,提高了文档的质量。(2)可以使用普通的正文编辑程序或文字处理系统,很方便地完成PDL的书写和编辑工作。(3)已经有自动处理程序存在,而且可以自动由PDL生成程序代码。,程序设计方法_结构化工具,过程设计语言(PDL)PDL的缺点是不如图形工具形象直观,描述复杂的条件组合与动作间的对应关系时,不如判定表清晰简单。,例1的PDL描述:输入一个数组A;令MAX=A的第一个元素;DO FOR 从A的第二个元素到最末的一个元素 IF 这个元素的值MAX then 令 MAX=这个元素的

29、值;ENDIFENDDO打印最大值MAX;外层 语法DO FOR-ENDDO,IF-THEN-ENDIF是确定的,内层语法是不确定的。,程序设计方法_结构化工具,过程设计语言(PDL,Process Design Language)例:统计空格 seq 打开文件读入字符串Totalsum=0程序体 iter until 文件结束程序体end打印总数 seq 打印出空格总数打印总数end关闭文件停止统计空格end,顺序结构:A seq Block1 Block2 Block3A end选择结构:A select cond1 Block1A or cond2 Block2A or cond3 Bl

30、ock3A end,重复结构:A iter until cond Block1A endA iter while cond Block1A end,程序设计方法_面向对象的程序设计,面向对象的方法开始也只是着眼于编程,后来才形成了从分析、设计到编程、测试与维护一整套的软件工程体系,即产生了面向对象分析(OOA)、面向对象设计(OOD)、面向对象编程(OOP)、面向对象测试(OOT),程序设计方法_面向对象的程序设计,面向对象程序设计的特征面向对象的程序设计将计算看作是一个系统的开发过程,系统由对象组成,经历一连串的状态变化以完成计算任务。面向对象程序的基础构件是对象和类,从程序设计角度来看,对

31、象是一种不信赖于外界的模块,对应着存储器的一块被划分的区域。它包含数据,在逻辑上包含作用于这些数据的过程,这些过程称为方法。,程序设计方法_面向对象的程序设计,面向对象程序设计的特征面向对象程序设计的基本机制是继承性、消息和方法,还有在特定方面提供更为专门的、灵活的机制,如重置、多态等。,程序设计方法_面向对象的程序设计,结构化程序设计就是把内部设计中的功能模块的设计、功能模块间接口的设计、数据库的定义等详细化的设计过程。而面向对象开发时,在OOD阶段已把各个类直到接口(方法)都已定义,程序设计的对象就如同结构化程序设计一样就是进行类内部处理的详细化设计。,程序设计书的构成和理解,程序设计书的

32、构成和理解,程序处理概要图是内部设计阶段的成果文档,是程序设计阶段的输入,他是程序设计书的重要内容,主要描述该程序单元的处理概要,输入输出文件和屏幕、报表的关连图,给出了与该程序相关的文件ID、文件名称、屏幕ID、名称、报表名称等。,程序设计书的构成和理解,程序处理概要说明书也是内部设计阶段的成果文档,是程序设计阶段的输入,是程序设计书的重要内容,它对于程序处理概要图中的程序处理概要进行展开,给出了程序的各个功能模块的处理概要说明,小型的或简单的程序可以从程序功能概要说明书入手编写代码。,程序设计书的构成和理解,程序功能结构图是程序设计阶段的成果文档,它是程序结构设计的图形结果,在开发周期短,

33、程序设计时间不足的情况下,程序功能结构图可以省略。有程序功能结构图的情况下,要注意编写的程序结构是否实现了程序功能结构图的要求。,程序设计书的构成和理解,程序追加处理说明书是在程序概要说明书的基础上,对程序设计阶段所增加的功能进行补充说明。在程序编码之前,一定要注意确认程序追加处理说明书的功能是否能够实现,有无设计上的问题或文字上的疏漏。,程序设计书的构成和理解,工作缓冲区格式定义表给出了程序中使用的主要工作缓冲区和变量的命名、类型、长度、初期值和编辑方法等说明。在理解工作缓冲区格式定义表中的各个变量的定义时,一定要对照相关的程序设计书的内容。,程序设计书的构成和理解,模块功能定义书是在程序处

34、理概要说明书的基础上对于每个程序模块的实现方法进行了详细的说明,对于复杂的程序单元,一定要注意理解各个模块功能定义书的详细处理说明。对于程序设计阶段补充的功能模块和个别模块的补充功能,在模块功能定义书(补充)中给出了详细说明。,程序设计书的构成和理解,输入数据检查处理说明书主要说明屏幕输入项目的检查条件,所有登录到数据库的数据都必须通过屏幕输入检查处理,以保证用户数据的完整性和一致性。,DB/文件设计说明书是内部设计阶段的成果文档,是程序设计阶段的输入。主要描述该程序中所使用的数据库表/文件的存储格式和各字段名的变量定义。,程序设计书的构成和理解,程序设计实例,系统概要说明:本案例是一个学生成

35、绩管理子系统。它包含学生基本成绩登录、学生平均成绩计算、班级平均成绩计算、学生成绩表生成等4个程序模块,程序设计实例,程序设计实例,开发准备 确认基本/详细设计的成果物;制定工作计划,作出开发计划中日程表和开发计划小日程表;确立开发体制(开发人员的构成和组织体制);检查所制定的工作计划和工作内容,程序设计实例,程序设计“学生成绩管理系统流程图”的处理要求,该系统由四个处理模块构成,它们是:学生基本成绩登录;学生平均成绩计算;班级平均成绩计算;学生成绩表生成。,学生基本成绩登录的程序设计书 程序处理概要图:说明学生基本成绩登录处理的目的和处理概要;(详见工作用表)程序处理概要说明书:说明学生基本

36、成绩登录处理时的初期处理设计,数据登录处理要求和登录结束处理要求;(详见工作表)程序功能结构图:描述学生基本成绩登录处理的处理逻辑;(详见工作用表)模块功能定义书:描述在“保存”按钮按下时的基本处理功能和在“取消”按钮按下时的基本处理功能;(详见工作用表),模块功能定义书(补充):进一步补充输入数据编辑方法的处理功能;(详见工作用表);输入数据检查说明书:详细说明输入数据的检查内容及处理要求,以保证输入数据的合法性和有效性;(详见工作用表)窗体设计说明书:这是面向用户的实际窗显示设计。(详见工作用表和)数据库/文件格式定义表:学生基本成绩表的文件结构定义(详见工作用表),团队开发与协作,团队的

37、含义构成团队的重要要素团队与群体团队的类型软件团队的组织形式,团队,团队的含义:团队是由员工和管理人员组成的一个共同体,该共同体合理利用每一个成员的知识和技能协同工作,解决问题,达到共同的目标,团队,构成团队的重要要素目标(知道要向何处去)人(人员的能力如何,技能是否互补,人员的经验如何)团队的定位(团队在企业中处于什么位置,由谁选择和决定团队的成员,团队最终应对谁负责,团队采取什么方式激励下属;作为成员在团队中扮演什么角色?是订计划还是具体实施或评估?)权限(整个团队在组织中拥有什么样的决定权,比方说财务决定权、人事决定权、信息决定权;组织的基本特征)计划(目标的具体工作的程序),团队,群体

38、群体是指两个以上相互作用又相互依赖的个体,为了实现某些特定目标而结合在一起。群体成员共享信息,作出决策,帮助每个成员更好地担负起自己的责任。,团队,团队与群体 团队与群体的区别(1)领导方面。作为群体应该有明确的领导人;团队可能就不一样,尤其团队发展到成熟阶段,成员共享决策权。(2)目标方面。群体的目标必须跟组织保持一致,但团队中除了这点之外,还可以产生自己的目标。(3)协作方面。协作性是群体和团队最根本的差异,群体的协作性可能是中等程度的,有时成员还有些消极,有些对立;但团队中是一种齐心协力的气氛。,团队,团队与群体 团队与群体的区别(4)责任方面。群体的领导者要负很大责任,而团队中除了领导

39、者要负责之外,每一个团队的成员也要负责,甚至要一起相互作用,共同负责。(5)技能方面。群体成员的技能可能是不同的,也可能是相同的,而团队成员的技能是相互补充的,把不同知识、技能和经验的人综合在一起,形成角色互补,从而达到整个团队的有效组合。(6)结果方面。群体的绩效是每一个个体的绩效相加之和,团队的结果或绩效是由大家共同合作完成的产品。,团队,团队与群体 群体向团队的过渡,团队,团队的类型 问题解决型团队自我管理型的团队 多功能型的团队,团队,软件团队的组织形式 角色划分 角色岗位矩阵,团队,软件团队的组织形式 组织形式:垂直团队组织(由多面手组成,每个成员都充当多重角色)水平团队组织(由专家

40、组成,每个成员充当一到两个角色)混合团队组织(专家和多面手组成),团队,团队的发展阶段 形成阶段(对自己的职责及其他成员的角色都不是很了解)震荡阶段(团队内激烈冲突的阶段;随着工作的开展,各方面问题会逐渐暴露)规范阶段(团队将逐渐趋于规范;团队开始表现出凝聚力)执行阶段(团队的结构完全功能化并得到认可,内部致力于从相互了解和理解到共同完成当前工作上),团队,团队开发流程 PSP与TSP(帮助高绩效的工程师在一个团队中工作,来开发有质量保证的软件产品,生产安全的软件产品,改进组织中的过程管理。)TSP流程所包含的活动数据采集计划跟踪团队反馈负载均衡重新计划循环直至完成,团队,团队开发流程 TSP表格各表格记录跟踪计划执行情况,寻求团队反馈,根据反馈重新安排团队成员工作,使其达到平衡,循环反复直至工作完成。,团队,高效团队的建立与发展高效团队的特点?如何建立高效团队?,团队,高效团队的建立与发展高效团队的特点(1)明确的目标与共同的价值观(2)清晰的分工与精诚的协作(3)融洽的关系及通畅的沟通(4)高昂的士气与高效的生产力,团队,高效团队的建立与发展如何建立高效团队?选拔或培养适合角色职责的人才增强软件开发经理的领导才能 营造良好的沟通氛围和交流环境 充分发挥软件开发团队的凝聚力 建立共同的工作框架、规范和纪律约束 学习成功经验,

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号