《软件工程第4章:详细设计(w).ppt》由会员分享,可在线阅读,更多相关《软件工程第4章:详细设计(w).ppt(108页珍藏版)》请在三一办公上搜索。
1、软件工程,1,第4章 详 细 设 计,本章要点:详细设计的目标和任务结构化程序的详细设计技术与工具面向对象程序的详细设计,软件工程,2,第4章 详 细 设 计,本章学习目标:深刻理解详细设计的基本任务 深刻理解结构化程序的详细设计和面向对象的详细设计的关系熟练掌握Jackson程序设计、Warnner程序设计方法等设计方法,软件工程,3,详细设计的目标,概要设计,详细设计,细化,软件工程,4,详细设计的任务,算法过程的设计 选择某种图形、表格、语言等合适的工具,表示每个处理过程的详细算法。数据结构的设计 定义处理过程中涉及的概念性数据类型数据库物理设计 确定那些依赖于具体使用的数据库系统的数据
2、存储记录格式、存储方法和存储记录安排等,软件工程,5,详细设计的任务,信息编码设计 为了提高数据处理的效率,将某些数据项的值用某一代号来表示。特点:唯一性、灵活性、简洁性、一致性、实用性、稳定性,软件工程,6,详细设计的任务,测试用例的设计 包括输入数据和预期的结果其他设计 系统结构、人机交互等设计撰写“详细设计说明书”撰写并评审,软件工程,7,结构化程序的详细设计技术,结构化程序的设计技术特点自顶向下,逐步求精单入口、单出口的三种基本流程控制结构 顺序、选择、循环,软件工程,8,结构化程序的详细设计技术,结构化程序的详细设计工具程序流程图盒图判定表与判定树问题分析图,软件工程,9,结构化程序
3、的详细设计技术,结构化程序的详细设计工具程序流程图 程序流程图(Program Flow Diagram简称PFD图)又称为程序框图。程序流程图使用的符号分为国际标准和国内标准,其中国内GB152689标准等同采用国际标准ISO 5807985。使用程序流程图的主要优点是很直观地描述了程序的控制逻辑,便于初学者掌握,而且其表现方式较为灵活,使用起来非常方便。但也存在一定的缺点.,软件工程,10,结构化程序的详细设计技术,结构化程序的详细设计工具(程序流程图)通常我们把由这3种基本控制结构设计的程序称为经典的结构程序设计。有时为了实际使用方便起见,常常还允许使用DO-UNTIL和DO-CASE两
4、种控制结构。如果设计程序时使用了这两种结构,则称为扩展的结构程序设计。,软件工程,11,结构化程序的详细设计技术,结构化程序的详细设计工具(程序流程图),软件工程,12,结构化程序的详细设计技术,结构化程序的详细设计工具(程序流程图),软件工程,13,结构化程序的详细设计技术,结构化程序的详细设计工具(程序流程图)案例一:,软件工程,14,结构化程序的详细设计技术,结构化程序的详细设计工具(程序流程图)案例二:电子商务程序流程图,软件工程,15,结构化程序的详细设计技术,结构化程序的详细设计工具(程序流程图)案例三:图书管理系统程序流程图,软件工程,16,结构化程序的详细设计技术,结构化程序的
5、详细设计工具(程序流程图)案例四:一卡通语音播放程序流程图,软件工程,17,结构化程序的详细设计技术,结构化程序的详细设计工具(程序流程图)课堂作业:请设计出ATM自动柜员机程序流程图,软件工程,18,结构化程序的详细设计技术,结构化程序的详细设计工具(程序流程图)它的缺点也非常明显,主要有:程序流程图本质上不是逐步求精的好工具,它诱使程序员过早地考虑程序的控制流程,而不去考虑程序的全局结构。程序流程图中用箭头代表控制流,因此程序员不受任何约束,可以完全不顾结构程序设计的精神,随意转移控制。程序流程图不易表示数据结构。详细的微观程序流程图每个符号对应于源程序的一行代码,对于提高大型系统的可理解
6、性作用甚微。为此,在使用程序流程图时,必须严格控制箭头流向,严格按照结构化设计的3种基本控制逻辑结构进行程序设计。所谓3种基本控制逻辑结构是指顺序、选择、循环三种结构。,软件工程,19,结构化程序的详细设计技术,结构化程序的详细设计工具2盒图(N-S图)盒图是为了满足结构化需要,特别是取消了程序流程图随意跳转规则后而提出的。,软件工程,20,结构化程序的详细设计技术,结构化程序的详细设计工具(盒图(N-S图)与程序流程图相比较,盒图具有如下明显的优点:l在盒图中不能任意转移控制。l 特定控制逻辑的作用范围明确,可以从盒图上一目了然。l很容易确定局部和全程数据的作用域。l很容易表现嵌套关系,也容
7、易表示模块的层次结构。l 所有的程序结构均用方框表示。因此程序的结构非常清晰。l程序只有一个入口、一个出口,完全能够满足单人口单出口的结构化程序设计要求。l盒图形象直观,具有良好的可视性。循环的范围、条件语句的控制范围等都是一目了然的。l盒图简单,易学易用。主要缺点是:当程序内嵌套的层数增多时,内层方框会越来越小,一方面会增加画图难度,另一方面会影响图形的清晰度。,软件工程,21,结构化程序的详细设计技术,结构化程序的详细设计工具(盒图(N-S图)案例一:盒图没有箭头,因此不允许随意转移控制。坚持使用盒图作为详细设计的工具,可以使程序员逐步养成用结构化的方式思考问题和解决问题的习惯。,软件工程
8、,22,结构化程序的详细设计技术,结构化程序的详细设计工具(盒图(N-S图)案例二:,软件工程,23,结构化程序的详细设计技术,结构化程序的详细设计工具(盒图(N-S图)案例三:输入两个数a,b,输出较小的数,软件工程,24,结构化程序的详细设计技术,结构化程序的详细设计工具(盒图(N-S图)案例四:求n!,软件工程,25,结构化程序的详细设计技术,结构化程序的详细设计工具(盒图(N-S图)案例五:求两个数的商,软件工程,26,结构化程序的详细设计技术,结构化程序的详细设计工具(盒图(N-S图)课堂作业:请设计出ATM自动柜员机取款的N-S图,软件工程,27,结构化程序的详细设计技术,结构化程
9、序的详细设计工具3 判定表与判定树 在进行软件设计时如遇到复杂的条件选择,有必要使用一种描述机制来清晰地表示复杂的条件组合与动作间的对应关系,判定表就是解决这一问题的有力工具。一张判定表由4部分组成。左上部列出所有条件;左下部列出所有可能做的工作;右上部每一列表示出各种条件的一种可能组合,填入“T”表示条件成立,填入“F”表示条件不成立,空白表示条件成立与否不影响。所以所有列表示条件组合全部可能情况;右下部的每一列是和每一种条件组合相对应的工作,填入“”表示在该列上部规定的条件下做该行左边列出的那项工作,空白表示不做该项工作。,软件工程,28,结构化程序的详细设计技术,结构化程序的详细设计工具
10、(判定表)案例一:某校对于各种不同职称教师,根据是本校专职教师还是外聘兼职教师决定其讲课的每课时津贴标准。本校专职教师每课时津贴费:教授50元副教授40元。讲师30元,助教20元。外聘兼职教师每课时津贴费:教授60元,副教授50元,讲师40元,助教30元。,软件工程,29,结构化程序的详细设计技术,结构化程序的详细设计工具(判定表),教师课时津贴判定表,条件桩,动作桩,条件条目,动作条目,软件工程,30,结构化程序的详细设计技术,结构化程序的详细设计工具(判定表)判定树是判定表的图形化表示,是判定表的变种。由于判定表不直观,需要仔细推敲才能看出它的含义。所以引入判定树后,可以很直观地看出各种复
11、杂的条件组合与相应的动作之间的对应关系。,软件工程,31,结构化程序的详细设计技术,结构化程序的详细设计工具(判定树),软件工程,32,结构化程序的详细设计技术,结构化程序的详细设计工具(判定树)案例二:某工厂对工人的超产奖励政策为:该厂生产两种产品A和B。凡工人每月的实际生产量超过计划指标者均有奖励。奖励政策为:对于产品A的生产者,超产数N小于或等于100件时,每超产1件奖励2元;N大于100件小于等于150件时,大于100件的部分每件奖励2.5元,其余的每件奖励金额不变;N大于150件时,超过150件的部分每件奖励3元,其余按超产150件以内的方案处理。对于产品B的生产者,超产数N小于或等
12、于50件时,每超产1件奖励3元;N大于50件小于等于100件时,大于50件的部分每件奖励4元,其余的每件奖励金额不变;N大于100件时,超过100件的部分每件奖励5元,其余按超产100件以内的方案处理。,软件工程,33,结构化程序的详细设计技术,结构化程序的详细设计工具(判定树)案例二:,软件工程,34,结构化程序的详细设计技术,结构化程序的详细设计工具(判定树)案例三:以学生的奖学金评定为例,说明判定表的应用。奖励的目的在于鼓励学生的品学兼优,此处理功能是要合理确定奖学金评定等级。决定受奖的条件为:成绩优秀占70或50以上,成绩为中或中以下占15或20以下,团结纪律为优良或一般者。奖励方案为
13、一等奖、二等奖、三等奖、鼓励奖四种。因为受奖条件有些是相容的,相互组合的项较多。描述此学生奖励政策的判定表,软件工程,35,结构化程序的详细设计技术,结构化程序的详细设计工具(判定树)案例三:,软件工程,36,结构化程序的详细设计技术,结构化程序的详细设计工具(PAD)4.问题分析图(Proble Analysis Diagram,PAD)PAD图是由日本日立公司的二村良彦等人于1973年提出的设计详细算法的图式,它用二维树图表示程序流程,是一种具有很强的结构化特征的分析工具。PAD图完全支持结构化设计方法。PAD图的基本图形符号见下图。,软件工程,37,结构化程序的详细设计技术,结构化程序的
14、详细设计工具4.问题分析图(Proble Analysis Diagram,PAD),软件工程,38,结构化程序的详细设计技术,结构化程序的详细设计工具(问题分析图PAD)PAD图具有以下优点:使用表示结构化控制结构的PAD符号设计出来的程序必然是结构化程序。PAD图所描绘的程序结构十分清晰。图中最左边的竖线是程序的主线,即第一层结构。随着程序层次的增加,PAD图逐渐向右延伸,每增加一个层次,图形向右扩展一条竖线。PAD图中竖线的总条数就是程序的层次数。用PAD图表现程序逻辑,易读、易懂、易记。PAD图是二维树形结构的图形,程序从图中最左竖线上端的结点开始执行,自上而下,从左向右顺序执行,遍历
15、所有结点。容易将PAD图转换成高级语言源程序,这种转换可用软件工具自动完成,从而可省去人工编码的工作,有利于提高软件可靠性和软件生产率。既可用于表示程序逻辑,又可用于描绘数据结构。PAD图的符号支持自顶向下、逐步求精方法的使用。开始时设计者可以定义一个抽象的程序,随着设计工作的深入而使用def符号逐步增加细节,直至完成详细设计。,软件工程,39,结构化程序的详细设计技术,结构化程序的详细设计工具(问题分析图PAD)正因为PAD图有上面的许多优点,所以PAD图已被ISO认可。但是它还存在缺点,那就是不适应初学者和算法未考虑成熟情况下的设计。,案例一:,软件工程,40,结构化程序的详细设计技术,结
16、构化程序的详细设计工具(问题分析图PAD),案例二:,软件工程,41,结构化程序的详细设计技术,结构化程序的详细设计工具(问题分析图PAD)PAD图是面向高级程序设计语言的,为FORTRAN、COBOL和PASCAL等每种常用的高级程序设计语言都提供了一整套相应的图形符号。由于每种控制语句都有一个图形符号与之对应,显然将PAD图转换成与之对应的高级语言程序比较容易。PAD的执行顺序从最左主干线的上端的结点开始,自上而下依次执行。每遇到判断或循环,就自左而右进入下一层,从表示下一层的纵线上端开始执行,直到该纵线下端,再返回上一层的纵线的转入处。如此继续,直到执行到主干线的下端为止。,软件工程,4
17、2,结构化程序的详细设计技术,课堂作业:1.请设计出ATM自动柜员机取款功能程序流程图、盒图、判定表和判定树。2.请设计出QQ登录功能程序流程图、盒图、判定表和判定树。,软件工程,43,Jackson程序设计方法,面向数据结构的设计是由英国人M。Jackson首先提出和倡导的,所以又称为Jackson程序设计方法(简称JSP)。该方法的基本思想是使程序结构与问题结构相对应,即与数据结构相对应。因此它按输入输出以及内部存储信息的数据结构进行设计,把数据结构的描述变换为对程序结构的描述,有时也称为结构数据设计方法。此方法在欧洲颇为流行,特别适用于设计企事业管理一类的数据处理系统。为了完成从数据结构
18、到程序结构的映射和转换,Jackson同时提出了相互配套使用的表达工具。一种称为Jackson图,另一种称为图解逻辑(Schematic Logic)。Jackson图除了可表达程序结构外,还可以表达数据结构,从而成为在需求分析和程序设计阶段均可使用的一种通用表达方式。图解逻辑类似于程序设计语言,实际上它是一种伪码表示,它使用的是与Jackson图完全对应的伪码表示。,软件工程,44,Jackson程序设计方法,Jackson为了表达程序中使用的数据结构,使用了与程序结构相同的三种基本结构形式,即顺序结构、选择结构和循环结构。使用这三种基本的数据结构表达方法,可以形成更复杂的数据结构。,软件工
19、程,45,Jackson程序设计方法,数据结构组合表示,软件工程,46,Jackson图,Jackson图有以下优点:便于表示层次结构,是对结构进行自顶向下分解的有力工具。形象直观,可读性好。能表示数据结构也能表示程序结构(因为程序结构也只有上述三种基本类型)。便于结构化程序设计,因为只使用了三种基本结构。Jackson图和描绘软件结构的层次图非常相似,但两者表示的含义有本质的不同。层次图中的一个方框通常代表一个模块,模块上下级之间表示的是调用关系,通常一个模块除了调用下级模块外,还完成其他操作;而Jackson图表示的是组成关系,在描绘程序结构时,一个方框并不代表一个模块,通常一个方框只代表
20、几个语句,上层方框中包括的操作仅仅由它下层框中的那些操作组成。,软件工程,47,图解逻辑,Jackson为了将Jackson图表达的设计思想用语言形式准确的描述出来,使用了与Jackson图完全对应的3种基本结构相对应的图解逻辑。图解逻辑是一种描述算法过程的语言,实际上它是一种伪码。与顺序结构相对应的Jackson图解逻辑,使用seq和end关键字:A seq do B;do C;do D;Aend,软件工程,48,图解逻辑,与选择结构相对应的Jackson图解逻辑,使用select、or和end是关键字,其中cond1、cond2和cond3分别是执行B、C或D的条件:A select co
21、nd1do B;or cond2do C;or cond3do D;A end 与重复结构相对应的Jackson图解逻辑,使用iter、until、while和end是关键字,其中cond是条件:A iter until(或while)conddo B;A end,软件工程,49,JSP方法设计步骤,JSP设计方法分为五个步骤:第1步:将数据结构化表示。第2步:找出输入数据结构与输出数据结构的对应关系。第3步:确定程序结构。以输出数据结构为基础,将描绘数据结构的Jackson图映射成描绘程序结构的Jackson图。映射遵从下面三条规则:为每对有对应关系的数据单元,按照它们在数据结构图中的层次在
22、程序结构图的相应层次画一个处理框。如果这对数据单元在输入数据结构和输出数据结构中所处的层次不同,则和它们对应的处理框在程序结构图中所处的层次与它们之中在数据结构图中层次低的那个对应。,软件工程,50,JSP方法设计步骤,在输入数据结构中有,但与输出数据结构没有对应关系的数据单元,在程序结构图的适当位置上画一个程序框。在输出数据结构中有,但与输入数据结构没有对应关系的数据单元,在程序结构图的适当位置上画一个程序框。第4步:列出和分配可执行操作。第5步:用Jackson图解逻辑来表示程序。,软件工程,51,JSP方法设计步骤,下面用一个信用卡记账的例子具体说明。信用卡记账系统的输入数据结构是两个实
23、际的账册,它们对应的两个输入文件如图所示。,图4.18 信用卡记账系统的输入,软件工程,52,JSP方法设计步骤,两个实际输入账册都按顾客号码进行登记,所以两个输入文件也是以顾客号码组织记录的。在支付账册中,每个顾客号码行上要登记支付金额、支付日期。则在支付文件中的每个记录中也对应有支付金额(AMT)和支付日期(DATE)项,另外还有标识这个记录的顾客号码(CNO)项。在支付账册中是以顾客号码进行排序的,顾客号码相同的支付记录在支付账册中排列在一起,构成关于该顾客的顾客号码组,在支付文件中也有与之对应的顾客号码组。在顾客主账册中,每一个顾客号码行上登记了顾客号码(CNO)和结余(BAL),给出
24、某一位顾客的支付能力情况。与之对应的顾客主文件每个记录也有这两项。两个输入文件的内容是一致的。对应这两个输入文件的输入数据结构画在文件图示的左侧。,软件工程,53,JSP方法设计步骤,图4.19(a)给出了信用卡记账系统的输出记账报告,在报告中隐含了一个“店方总计”层次。报告中其它部分是顾客信息,因此,隐含了一个与“店方总计”同一层次的“顾客数据”子结构。图4.19(b)给出了根据输入和输出数据结构的对应关系建立的输出文件。,图4.19 信用卡记账系统的输出,软件工程,54,JSP方法设计步骤,从层次性的输入和(或)输出数据结构可以直接推导出程序或进程的过程性表示。例如从图4.19(b)所示的
25、输出文件的Jackson数据结构图所导出的程序结构如图4.20所示。,图4.20 从输出数据结构导出的程序结构,软件工程,55,JSP方法设计步骤,最后,利用Jackson给出的三种图解来表示程序或进程的执行逻辑 在给出程序的过程性描述时,还需要添加一些必要的可执行操作。例如,打开文件、读文件结束符、读表头数据项、读行数据项、打印符号行、打印数字行、关闭文件等等。把它们分配到程序或进程结构的适当位置,以得到一个完整的过程性描述。对于上例中“处理顾客数据”部分,给出过程性描述如下:,软件工程,56,JSP方法设计步骤,PROCESS_CUST_DATA seq open PAY_FILE;ope
26、n CUST_M_FILE;分别打开支付文件和顾客主文件 PROCESS_CNO_GROUP iter until eof:PAY_FILE;处理顾客号码组 read PAY_FILE;读支付文件一个记录 PROCESS_CNO;读顾客主文件一个记录,找老结余 PROCESS_PAY_RECORD iter until end:CNO_GROUP;处理顾客号码组中每个支付记录 write report line;写出报告行 compute total payments;计算总支付额 read PAY_FILE;读支付文件下一个记录 PROCESS_PAY_RECORD end;一位顾客数据处理
27、完 COMPUTE_CUST_TOTAL;计算顾客总数 COMPUTE_BALANCE seq计算结余 PROCESS_OLD_BALANCE;处理老结余 COMPUTE_NEW_BALANCE;计算新结余)write report line;写出报告行 COMPUTE_BALANCE end;计算结余完毕 PROCESS_CNO_GROUP end;支付文件处理完成 PROCESS_CUST_DATA end;Substructure PROCESS_CUST_DATA,软件工程,57,JSP方法设计步骤,用JSP方法得到的程序或进程结构图,一般都需要求精和优化。因为这种方法是从输入输出数据
28、结构导出程序结构图,因此有些中间处理过程在结构图中反映不出来。在求精过程中,可以对结构图进行改进和细化,使之完整和易于实现。,软件工程,58,JSP方法设计案例,1)问题陈述 某仓库存放多种零件(如P1P2,),每个零件的每次进货、发货都有一张卡片作记录,每月根据这样叠卡片打印一张月报表。报表每行列出某种零件本月库存量的净变化。用Jackson方法对该问题进行设计。,软件工程,59,JSP方法设计案例,2)建立输入、输出数据结构建立输入、输比数据结构的步骤如下(1)输入数据;根据问题陈述,同一种零件的进货、发货状态不同,每月登记有若干张卡片。把同种零件的卡片放在一起组成一组,所有的卡片组按零件
29、名排序。所以输入数据是由许多零件组组成的文件,每个零件组有许多张卡片,每张卡片上记录着本零件进货发货的信息。由此输入数据结构的Jackson图为图(a)。,软件工程,60,JSP方法设计案例,(2)输出数据:根据问题陈述,输出数据是一张如下图(c)的月报表,它由表头和表体两部分组成,表休中有许多行,一个零件的净变化占一行,其输出数据结构的Jackson图为下图(b)。,软件工程,61,JSP方法设计案例,3)找出输入、输出数据结构中有对应关系的单元 月报表由输入文件产生,有直接的因果关系因此顶层的数据单元是对应的。表体的每行数据由输入文件的每一个“零件组”计算而来,行数与组数相同,且行的排列次
30、序与组的排列次序一致,都按零件号排序。因此“零件组”与“行”两个单元对应,以下再无对应的单元,软件工程,62,JSP方法设计案例,软件工程,63,JSP方法设计案例,4)导出程序结构 找出对应关系后,根据以下规则导出程序结构:对于输入数据结构与输出数据结构中的数据单元,每对有对应关系的数据单元按照它们所在的层次,在程序结构图适当位置画一 个处理框,并对应关系的数据单元,各画一个处理框。根据以上规则画出的程序结构图如下图所示。,软件工程,64,JSP方法设计案例,软件工程,65,JSP方法设计案例,在图的程序结构的第4层增加了一个“处理零件组”的框,因为改进的Jackson图规定顺序执行的处理户
31、不允许混有重复执行和选择执行的处理。增加了这详一个框,使符合该规定,同时也提高了结构图的易读性 5)列出并分配操作与条件 为了对程序结构作补充,要列出求解问题的所有操作和条件,然后分配到程序结构图的适当位置,就可得到完整的程序结构图。,软件工程,66,JSP方法设计案例,(1)本问题的基本操作列出如下:A、终止 B、打开文件 c、关闭文件 D、打印字符行 E、读一张卡 F、产生行结束符 G、累计进货量 H、累计发货 I计算净变化 J、置零件组开始标志(z)列出条件如下:I(1):输入条件未结束 I(2):零件组末结率 S(3):进发货标志将操作与条件分配到适当位置的程序结构图如图所示”,软件工
32、程,67,JSP方法设计案例,A、终止 B、打开文件 c、关闭文件 D、打印字符行 E、读一张卡 F、产生行结束符 G、累计进货量 H、累计发货 I计算净变化 J、置零件组开始标志,软件工程,68,JSP方法设计案例分析,在分配操作时注意:为了能获得重复和选择的条件,Jackson建议至少超前一个记录,以便使得程序不论在什么时候判定,总有数据已经读入并做好准备,因此在图中,将操作K(读一张卡)放在打开文件之后,同时存处理完一张卡片后再读一次。,软件工程,69,JSP方法设计案例,6)用纲要逻辑与出程序 Jackson方法中的纲要逻辑与Jackson所示的程序结构图完全对应,用纲要逻辑写出程序的
33、过程,实际上就是自顶向下用这些纲要逻辑替换Jackson图中每个处理框的过程每个处理框都看作是下层处理框及分配在上面的操作组成。,软件工程,70,JSP方法设计案例,图所示的程序结构的纲要逻辑为:,软件工程,71,JSP方法设计案例,产生表体eM 关闭文件 终止产生月报表end,软件工程,72,JSP方法设计,(3)结构冲突Jackson把结构冲突定义为三种类型。顺序冲突顺序冲突是指在输入数据结构和输出数据结构中,输入数据与输出数据的顺序冲突。例如,仓库存放多种零件P1,P2,每个零件的每次变动(收或发)都有一张卡片做记录。库存管理系统的输入数据结构是一叠卡片组成的文件。文件包括许多零件组,每
34、个零件组又包括许多卡片(变动记录),每张卡片又分别可以是“收”或“发”,图4.22(b)。输出数据结构是月报表,见图4.22(a)。表中列出每种零件的净变化,一种零件的净变化占一行,见图4.22(c)。月报表来自输入文件,所以它们之间应有很好的对应性。,软件工程,73,JSP方法设计,图4.22 顺序冲突的例子,软件工程,74,JSP方法设计,边界冲突在输入与输出数据结构中,虽然输入数据与输出数据的顺序相同,但分解不一样。多重穿插冲突在输入与输出数据结构中,输入数据与输出数据的顺序相同,而且处于同一程序段中,就象绳索穿绕一样。这些数据并行运行,同时在输入文件中重叠在一起。为了解决上述的结构冲突
35、,Jackson提出了定义中间数据结构来解决冲突的方法。它可归纳成以下4点:利用数据结构图来定义输入数据结构的特性;将输入数据结构的元素分解,构造成中间数据结构;描述输出数据结构的特性;根据中间数据结构,构造输出数据结构.,软件工程,75,JSP方法设计,这就需要两套程序结构,一个是把输入数据结构转换成中间数据结构;另一个是把中间数据结构转换成输出数据结构。Myers提出了一种叫做“程序变换”或“多道穿插”的方法,用以解决冲突。即设计两个子程序,它们既能单独执行,又能并发执行。这样,中间数据结构也可以不要,而使用一个单记录缓冲区来代替它。第一个子程序读入输入记录,把它写到缓冲区中,然后开始等待
36、,直到这个缓冲区变空,然后再把读入的下一个输入记录写到缓冲区中。第二个子程序在等待,待到一个记录被放入缓冲区中之后,它开始读它并进行处理,之后它再等待,直到下一个记录再放入缓冲区后,再读它并进行处理。,软件工程,76,JSP方法设计,例如,用卡片按行输入一个矩阵文件,要求按列打印该矩阵,图4.23(a)表明这个例子的输入、输出数据结构。从图中可见,卡片文件和打印文件之间存在着对应关系,但行和列的内容不符,行选择和列选择的次序不同。因此,没有办法从这个结构图上构造出相应的程序结构。这就是所谓的结构冲突。,软件工程,77,JSP方法设计,图4.23 解决冲突的例子,软件工程,78,JSP方法设计,
37、课堂作业:设计一个程序,要求统计一个正文文件里每个记录中空格字符的个数,以及文件中空格字符的总个数。已知正文文件是由若干个记录组成,每个记录是一个字符串,字符串是由若干字符组成,而字符可能是由空格和非空格字符组成;输出数据的表格格式是,每复制一行输入字符串之后,另起一行印出这个字符串中的空格数,最后印出文件中空格的总个数。,软件工程,79,JSP方法小结,JSP方法的基本思想是使程序结构与问题结构相对应,即与数据结构相对应。与传统的结构化方法不同,JSP方法强调对问题解的组合而不是分解,而且两种方法有不同的出发点,一个是数据结构,一个是数据流。另外两种方法有不同的最终目的,结构化方法得到的是软
38、件结构的整体描述,JSP方法最后得到的程序过程描述实际上已接近详细过程描述。因此JSP方法的优点主要表现在以下几个方面:数据结构表现的结构型式与问题的结构型式一致,因而易于理解。当问题发生局部性变化时也易于修改。数据结构是对问题环境的客观猫述,这样就不会依赖于设计者自身的经验,使软件系统的开发“有章可循”。对能导出树型数据结构一类问题的设计是行之有效的,特别适合于以数据为主,顺序文件的处理以及“计算”较简单的事务型数据处理系统。,软件工程,80,JSP方法小结,在JSP方法中关键是要找出输入数据和输出数据之问的对应关系,但是在许多软件项目中输入数据和输出数据之问很少有或者没有结构上的对应关系,
39、特别是较大的系统往住涉及许多输入、输出数据,其结构不相对应产生结构冲突,此时使用JSP方法比较困难。另外,在软件生存周期中数据结构往往会发生变化,一旦数据结构改变。以数据结构为基础建立的程序结构也要改变,这样就给软件维护带来很大的不便。鉴于这种原因,可将软件结构方法同JSP方法结合起来使用,在概要设计阶段先用软件结构D方法建立系统的总体结构,然后在详细设计阶段局部范围内使用JSP方法,这可能是一种更为有效的设计方法。,软件工程,81,Warnier程序设计方法,1974年,JDWarnier提出的软件开发方法与Jackson方法类似。差别有三点:一 它们使用的图形工具不同,分别使用Warnie
40、r图和Jackson图;使用的伪码不同最主要的差别是在构造程序框架时,Warnier方法仅考虑输入数据结构,而Jackson方法不仅考虑输入数据结构,而且还考虑输出数据结构。,软件工程,82,Warnier程序设计方法,软件工程,83,Warnier程序设计方法,步骤:1 分析输入和输出数据结构,用Warnier图表示2 从数据结构(主要是根据输入数据结构,输出数据结构可以用来完善数据结构)导出程序结构,同样用Warnier图表示3 将程序结构改用程序流程图来表示4 根据程序流程图写出程序的详细过程性描述自顶向下给每个框统一编号;列出每个处理框所需要的指令,加上处理情况,并将指令分成输入和输入
41、准备指令、分支和分支准备指令、计算指令、子程序调用指令、输出和输出准备指令,软件工程,84,Warnier程序设计方法,步骤:(3)按分类指令表中的指令全部按处理框的编号从新排序,序号相同则基本按“输入处理输出”的顺序排列。得到程序的详细过程性描述。,软件工程,85,面向对象程序的详细设计,面向对象程序的详细设计主要完成对象的属性和方法的设计,软件工程,86,面向对象程序的详细设计,面向对象程序的特性封装性继承性多态性,软件工程,87,面向对象程序的详细设计,面向对象程序的特性封装性类的分装性是面向对象方法学的中心环节;类的分装性使得数据和操作数据的算法(函数或过程)紧密捆绑在一起;一般用户只
42、能使用类的接口。,软件工程,88,面向对象程序的详细设计,面向对象程序的特性继承性,家具,桌子,椅子,衣柜,床,餐椅,办公椅,课桌椅,软件工程,89,面向对象程序的详细设计,面向对象程序的特性继承性面向对象程序设计中,允许某个类继承其他类的成员函数或数据成员被继承的类称为父类(基类或超类)继承的类称为子类(派生类)public类型的成员允许其他函数存取 private类型的成员只能本类中的成员函数存取 protected类型的成员可以供父类、子类成员存取。子类除可以按一定的规则从基类继承相应的成员外,还可以添加自己的数据成员和函数,也可以重载父类的成员函数。,软件工程,90,面向对象程序的详细
43、设计,面向对象程序的特性继承性父类与子类存取权限标识使用规则子类存取权限定义为public,在父类分别为public和 protected成员在子类不发生改变当子类存取权限申明为private,父亲类中所有public和protected成员在子类中都变为private,软件工程,91,面向对象程序的详细设计,面向对象程序的特性多态性 简单的说,就是在许多种不同的对象中,可以使用相同的方法,但是同样的方法能为各个对象执行不同的任务.也就是说程序能在运行时根据不同的对象,运行是用于当前对象的方法.例如,几乎所有的控件都包含一个move方法.当一个控件调用这个方法时,程序能够准确的知道是那一个控件
44、在使用这个方法,从而执行此控件特定的任务.,软件工程,92,面向对象程序的详细设计,面向对象程序的设计原则可复用性可扩展性健壮性协作性,软件工程,93,基于组件的程序设计方法,三层应用体系结构,工作站A,工作站B,工作站C,工作站N,应用服务器,数据存取服务器,用户层,业务层,数据层,软件工程,94,基于组件的程序设计方法,三层应用体系结构用户层 用户层用于向用户显示系统中的数据允许用户输入和编辑数据。业务层 业务层用于执行业务和制定数据规则。业务层为用户提供服务,不与任何特定的用户捆绑在一起,而面向所有的应用。业务层不应该知道它所操纵数据是如何存储和位置,业务层不依赖于数据层的数据存取服务完
45、成实际的数据存取操作。数据层 某个或某些数据系统的一部分不是以数据库形式而是以文件或其他形式实现,可以实现对文件等进行实质性的存储、检索和更新操作。,软件工程,95,基于组件的程序设计方法,CORBA对象总线技术公用对象请求代理体系结构(Common Object Request Broker Architecture,CORBA),对象管理体系结构,软件工程,96,基于组件的程序设计方法,CORBA对象总线技术公用对象请求代理体系结构(CORBA)对象请求代理(ORB):管理对象之间进行通信和数据交换的中间件.,软件工程,97,基于组件的程序设计方法,CORBA对象总线技术公用对象请求代理体
46、系结构(CORBA)公用对象服务:是对象请求代理的功能扩充和补充.为创建对象、对象访问控制、对象跟踪和对象引用等提供服务。开发人员无需从头开发,只需调用这些对象的服务功能。,软件工程,98,基于组件的程序设计方法,CORBA对象总线技术公用对象请求代理体系结构(CORBA)公用设施:基于这些技术向应用程序开发者和最终用户提供一些共性的对象组件应用程序对象:是CORBA基础结构的最终使用者,软件工程,99,基于组件的程序设计方法,COM对象总线技术 组件对象模型(Componet Object Model,COM)是微软公司专有的对象总线技术,基于对象的程序设计模型。支持组件互操作性、软件进化、
47、异构环境下的分布式对象计算。,典型的基于COM组件的Windows DNA软件开发模式,软件工程,100,基于组件的程序设计方法,组件库技术组件库的组织和检索方式关键词分类:通过领域分析,将应用领域中的概念按照从抽象到具体的顺序逐次分解为树形或有向无环图结构。如图形截面设计组件库,用户截面,窗口,菜单,对话框,事件处理,图形窗口,文本窗口,信息对话框,数据录入对话框,拖放处理,键盘事件处理,关键词分类结构例子,软件工程,101,基于组件的程序设计方法,组件库技术组件库的组织和检索方式多面分类方式 多面分类机制:分析领域范围并定义若干描述组件特征的“面”,每个“面”包含若干“概念”,这些概念表述
48、在“面”上的基本特征,“面”可以描述组件执行的功能、被操作的数据、组件应用的上下文及其他特征。同义词库:意义相同或相近的若干词汇组成同义词汇。概念距离图:概念距离图用来度量每个“面”中概念相似程度。,软件工程,102,“软件设计国家标准GB 8567-88”详细设计说明书的大纲,1 引言1.1 编写目的说明编写该总体设计的目的,指出预期的读者.1.2 背景所建议开发的软件系统的名称;本项目的任务提出者、开发者、用户及实现该软件的计算中心或计算机网络;该软件系统同其他系统或其他机构的基本的互相往来关系。1.3 定义列出本文件中用到的专门术语的定义和外文首字母组词的确原词组。,软件工程,103,“
49、软件设计国家标准GB 8567-88”详细设计说明书的大纲,1.4 参考资料列出用得着的参考资料,如:a.本项目的经核准的计划任务书或合同、上级机关的批文;b.属于本项目的其他已发表的文件;c.本文件中各处引用的文件、资料,包括所需要的软件开发标准列出这些文件资料的标题、文件编号、发表日期和出版单位,说明能够得到这些文件资料的来源。2.程序系统的结构 用一系列图表列出本程序系统内的每个程序(包括每个模块和子程序)的名称,标志符和它们之间的层次关系。,软件工程,104,“软件设计国家标准GB 8567-88”详细设计说明书的大纲,3 程序1(标识符)设计说明 从本章开始,逐个地给出各个层次中每个
50、程序的设计考虑。以下给出的提纲是针对一般情况的,对于一个具体的模块,尤其是层次比较低的模快或子程序,其很多条目的内容往往与它所属的上一层模块的对应条目的内容相同。在这种情况下,只要简单的说明这一点即可。3.1 程序描述 给出对程序的简要描述,主要说明安排设计本程序的目的意义,并且还要说明本程序的特点3.2.功能说明该程序具备的功能,可采用IPO图的形式,软件工程,105,“软件设计国家标准GB 8567-88”详细设计说明书的大纲,3.3 性能说明对该程序的全部性能要求,包括对精度、灵活性和时间特性的要求。3.4 输入项给出对每一个输入项的特性,包括名称、标志、数据的类型和格式、数据值的有效范