您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > 软件工程辅导课程八事务分析
软件工程主讲教师:程义月辅导课程八事务分析事务分析•事务分析的设计步骤和变换分析的设计步骤大部分相同或类似,主要差别仅在由数据流程图到软件结构的映射方法不同。由事务流映射成的软件结构包括一个接收分支和一个发送分支。•映射出接收分支结构的方法和变换分析映射出输入结构的方法相似,即从事务中心的边界开始,把沿着接收流通路的处理逻辑映射成模块。•发送分支的结构包含一个调度模块,它控制下层的所有活动模块;然后把数据流程图中的每一个活动流通路映射成与它的特征相对应的结构。事务分析的映射方法总控调度A_CTLB_CTLC_CTL接收通路C通路B通路A通路建议•对于一个大系统,常常把变换分析和事务分析应用到同一个数据流程图的不同部分,由此得到的子结构形成“构件”,可以利用它们构造完整的软件结构。•一般说来,如果数据流不具有显著的事务特点,最后使用变换分析;反之,如果具有明显的事务中心,则应该采用事务分析技术。总体设计说明书1.引言2.总体设计3.接口设计4.运行设计5.系统数据结构设计6.系统出错处理设计案例1案例2案例3小结数据流图变换分析事务分析模块软件结构耦合内聚软件工程第5章详细设计详细设计的目的总体设计软件结构程序模块文件数据库(黑盒级)详细设计程序流程图详细的算法过程设计内部数据结构设计程序逻辑结构设计学习内容及目标•结构化程序设计√•详细设计的工具√–程序流程图–盒图–PAD图•JACKSON程序设计方法•WARNIER程序设计方法•程序复杂度的定量和度量基本任务•回答的关键问题:“怎样具体地实现这个系统”•主要任务是设计出程序的“蓝图”,供程序员日后根据这个蓝图编写出实际的程序代码。•注意:设计程序的蓝图,不是具体地编写程序。•设计程序主要采用结构化的程序设计方法。基本步骤•确定模块如何实现•编写详细设计说明书•制定单元测试计划•详细设计评审什么是结构程序设计•结构程序设计是一种设计程序的技术,它采用自顶向下逐步求精的设计方法和单入口单出口的控制结构。结构化程序设计•概念–自顶向下逐步求精的设计方法–单入口单出口的控制结构–三种基本结构•优点–符合问题分解,抽象到具体的思路–具有清晰的层次结构,便于阅读和理解–程序的静态结构与动态执行具有较高的一致性–程序的控制结构简单(顺序,循环和分支)–清晰化与模块化便于代码重用–程序的清晰结构便于程序的正确性证明逐步求精的含义•详细设计阶段逐步求精的含义:把一个模块的功能逐步分解细化为一系列具体的处理步骤或某种高级语言的语句。•总体设计阶段逐步求精的含义:把一个复杂问题的解法分解和细化成一个由许多模块组成的层次结构的软件系统逐步求精的要领•不要急于用计算机指令、数字和逻辑符号去表示对问题的解法,而是用自然语言(或其他工具)描述问题的解法,最开始的描述处于比较高的抽象层次,接着对抽象描述逐步分解,直到描述能被计算机理解为止。例子-逐步求精•读入三个数,找出并打印其中的最大数•一级算法–输入X1,X2,X3–将X1与X2的大数存于MAX中–将X3与MAX的大数存于MAX中–输出•二级求精–②将X1与X2地大数存于MAX中•Ifx1x2thenmax=x1•Elsemax=x2–③将X3与MAX的大数存于MAX中•Ifx3maxthenmax=x3三种基本结构AB判断循环体判断处理1处理2BA)顺序结构B)分支结构C)循环结构例子-结构程序设计•问题描述:将AL寄存器中的机器数以二进制串的形式显示在屏幕上。•例:AL=10011101,则计算机屏幕上显示字符串:‘10011101’•问题分解–问题1:如何在屏幕上显示‘1’和’0’–问题2:如何提取出AL的一个位并在屏幕上显示–问题3:能不能将’提取位-显示‘用循环实现,以解决AL的所有位?•逐步求精–问题1:MOVDL,’1’MOVAH,2INT21H–…………结构程序设计技术的优越性1(1)自顶向下逐步求精的方法符合人类解决复杂问题的普遍规律,因此可以显著提高软件开发工程的成功率和生产率。(2)用先全局后局部、先整体后细节、先抽象后具体的逐步求精过程开发出的程序有清晰的层次结构,因此容易阅读和理解。(3)不使用GOTO语句仅使用单入口单出口的控制结构,使得程序的静态结构和它的动态执行情况比较一致,易于阅读和理解。结构程序设计技术的优越性2(4)控制结构有确定的逻辑模式,编写程序代码只限于很少几种直截了当的方式,因此源程序清晰流畅。(5)程序清晰和模块化使得在修改和重新设计一个软件时可以重用的代码量最大。(6)程序的逻辑结构清晰,有利于程序正确性证明。详细设计工具•程序流程图•盒图√•PAD图√•判定表√•判定树√程序流程图(1)程序流程图又称为程序框图,是早期软件设计的主要工具。(2)优点:–对控制流程的描绘很直观,便于初学者掌握。(3)缺点:–程序流程图本质上不是逐步求精的好工具,它诱使程序员过早地考虑程序的控制流程,而不去考虑程序的全局结构。–程序流程图中用箭头代表控制流,因此程序员不受约束,可以完全不顾结构程序设计的精神,随意转移控制。–程序流程图不易表示数据结构。盒图(N_S图)•盒图由Nassi和Shneiderman提出,又称为N_S图,它有以下特点:(1)功能域(即一个特定控制结构的作用域)明确,很容易从盒图上看出。(2)不可能任意转移控制(3)很容易确定局部和全程数据的作用域(4)很容易表现嵌套关系,也可以表示模块的层次结构(5)盒图没有箭头,不可以随意转移控制,不允许违背程序设计的原则。盒图第一个任务第二个任务第三个任务(A)顺序TrueFalse条件(B)IF-THEN-ELSEDO-WHILE部分循环条件DO-UNTIL部分循环条件A(D)DO-WHILE循环(E)DO-UNTIL循环(F)调用子程序CASE条件值1值2…值3(C)CASE多分支例子-盒图(1)•问题描述:将AL寄存器中的机器数以二进制串的形式显示在屏幕上。•例:AL=10011101,则计算机屏幕上显示字符串:‘10011101’将AL向左循环移1位DL←AL屏蔽DL高7位将DL转换为ASCII码显示DL中的字符CX←8CX≤8问题2:提取位问题1:显示问题3:循环例子-盒图(2)TrueFalseGNPFQstartifpthenwhileqdofenddoelseblockgnendblockendifstopPAD图•PAD图由日本日立公司在1973年发明,它用二维树型结构的图来表示程序的控制流,比较容易翻译成程序代码。主要特点:(1)使用PAD图设计的程序必然是结构化程序(2)PAD图描绘的程序结构十分清晰。(3)用PAD图表现程序逻辑,易读、易懂、易记。(4)容易将PAD图转换成高级语言源程序(5)PAD图既可用于表示程序逻辑,也可用于描绘数据结构。(6)PAD图的符号支持自顶向下、逐步求精方法的使用。(7)PAD图面向高级语言。PAD图P1P2WHILE条件PUNTIL条件PCP1P2…X=L1L2LnP1P2Pndef(A)顺序(B)while循环(C)until循环(D)选择(E)CASE多分支(F)语句标号(G)定义PAD图优点•PAD图具有以下优点:•使用PAD设计出来的程序必然是结构化程序;•PAD图所描述的程序结构十分清晰;•PAD图表现的程序逻辑易读、易懂、易记;•容易将PAD图转换成程序;•PAD图还可描述数据结构;•PAD图支持自顶向下、逐步求精方法的使用。例子-PAD图(1)startstopPWHILEQFGNstartifpthenwhileqdofenddoelseblockgnendblockendifstop例子-PAD图(2)•问题描述:将AL寄存器中的机器数以二进制串的形式显示在屏幕上。•例:AL=10011101,则计算机屏幕上显示字符串:‘10011101’CX←8WhileCX≥0将AL向左循环移1位DL←AL屏蔽DL高7位将DL转换为ASCII码显示DL中的字符CX←CX-1走图startstopPWHILEQFGNPAD图的结构类似树型结构,如果按照自上而下、自左而右的顺序走树,即可将PAD图转换为相应的算法乃至程序。判定表•判定表能够清晰地表示复杂的条件组合与应做的动作之间的对应关系,而其它的工具不易表示。•一张判定表由四部分组成,左上部列出所有条件,左下部是所有可能做的动作,右上部是表示各种条件组合的一个矩阵,右下部是和每种条件组合相对应的动作。•判定表的每一列实质上是一条规则,规定了与特定的条件组合相对应的动作。判定表所有条件条件组合所有动作对应动作判定表由4部分组成:①所有条件②所有动作③条件组合④对应动作例子-判定表123过期FTT2000金额T1000金额TT金额2000T发批准单√√发订货单√√发通知单√用判定表描述“检查定货单”的处理逻辑:“如果金额超过1000元而又未过期,则发出批准单和提货单。如果金额超过2000元,但已过期,则不发出批准单和提货单。如果金额低于2000元,则不论是否过期,都发出批准单和提货单,而且对低于2000元已过期的还需发出通知单”。判定树.判定树是判定表的变种,也能清晰地表示复杂的条件组合与应做的动作之间的对应关系。•优点:形式简单,不需任何说明,易看出含义,易于掌握和使用。•缺点:简洁性不如判定表,相同的数据元素往往要重复写多遍,而且越接近树的叶端重复次数越多。例子-判定树检查定货单过期不过期金额1000发订货单、批准单1000金额2000金额2000发通知单、定货单、批准单不发用判定表描述“检查定货单”的处理逻辑:“如果金额超过1000元而又未过期,则发出批准单和提货单。如果金额超过2000元,但已过期,则不发出批准单和提货单。如果金额低于2000元,则不论是否过期,都发出批准单和提货单,而且对低于2000元已过期的还需发出通知单”。过程设计语言PDL•PDL也称为伪码,是用正文形式表示数据和处理过程的设计工具。•PDL具有严格的关键字外部语法,用于定义控制结构和数据结构;另一方面,PDL表示实际操作和条件的内部语法通常又是灵活自由的,以便可以适应各种工程项目的需要。举例:查找拼错单词的PDL程序•ProcedureSPELLCHECKis•begin•splitdocumentintosinglewords•lookupwordsindictionary•displaywordswhicharenotindictionary•treatanewdictionary•endSPELLCHCK•------------------------------------------------------------------------------•Procedure查找拼错单词is•begin•把这个文件分离成单词•查字典•显示字典中查不到的单词•造一新字典•end查找拼错单词PDL程序的主要特征•用PDL写出的程序具有正文格式。在计算机上可做正文处理.•PDL程序中会有一些能够标明程序结构的关键字.•PDL语言仅有少量的简单语法规则,大量使用人们习惯的自然语言。•使用PDL语言常常按逐步细化的方式写出程序.•PDL程序的注释行对语句进行解释,起到提高可读性的作用。PDL程序的构成•(1)数据说明:PDL程序中指明数据名的类型及作用域.其形式为:declare<数据名>as<限定词><限定词>具体的数据结构:scalar<纯量>array<数组>list<列表>char<字符>structure<结构>•(2)子程序结构procedure<子程序名>interface<参数表>分程序PDL语句returnend<子程序名><PDL语句指各种PDL构造>面向数据结构的程序设计方法•有代表性的有Warnier、Jackson方法。本节介绍Warnier方法,它又称为逻辑地构造程序的方法。这种方法直接从数据结构导出程序设计。•Warnier程序设计方法的目标是导出对程序处理过程的详细描述,主要依据输入数据结构导出程
本文标题:软件工程辅导课程八事务分析
链接地址:https://www.777doc.com/doc-4422034 .html