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