软件工程_6_详细设计.pptx

上传人:精*** 文档编号:17402541 上传时间:2023-07-25 格式:PPTX 页数:63 大小:388KB
下载 相关 举报
软件工程_6_详细设计.pptx_第1页
第1页 / 共63页
软件工程_6_详细设计.pptx_第2页
第2页 / 共63页
软件工程_6_详细设计.pptx_第3页
第3页 / 共63页
软件工程_6_详细设计.pptx_第4页
第4页 / 共63页
软件工程_6_详细设计.pptx_第5页
第5页 / 共63页
软件工程_6_详细设计.pptx_第6页
第6页 / 共63页
软件工程_6_详细设计.pptx_第7页
第7页 / 共63页
软件工程_6_详细设计.pptx_第8页
第8页 / 共63页
软件工程_6_详细设计.pptx_第9页
第9页 / 共63页
软件工程_6_详细设计.pptx_第10页
第10页 / 共63页
软件工程_6_详细设计.pptx_第11页
第11页 / 共63页
软件工程_6_详细设计.pptx_第12页
第12页 / 共63页
软件工程_6_详细设计.pptx_第13页
第13页 / 共63页
软件工程_6_详细设计.pptx_第14页
第14页 / 共63页
软件工程_6_详细设计.pptx_第15页
第15页 / 共63页
软件工程_6_详细设计.pptx_第16页
第16页 / 共63页
软件工程_6_详细设计.pptx_第17页
第17页 / 共63页
软件工程_6_详细设计.pptx_第18页
第18页 / 共63页
软件工程_6_详细设计.pptx_第19页
第19页 / 共63页
软件工程_6_详细设计.pptx_第20页
第20页 / 共63页
亲,该文档总共63页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

软件工程_6_详细设计.pptx

《软件工程_6_详细设计.pptx》由会员分享,可在线阅读,更多相关《软件工程_6_详细设计.pptx(63页珍藏版)》请在冰点文库上搜索。

软件工程_6_详细设计.pptx

教学目标掌握常用的详细设计工具、了解人机界面设计问题、了解Jackson结构程序设计技术。

教学重点各种详细设计工具的使用。

教学难点Jackson结构程序设计技术。

第6章详细设计,详细设计的基本目的就是回答“详尽、精确地描述系统各模块的具体实现方法”。

详细设计的结果基本决定了最终程序代码的质量,其中包括:

正确性、可读性、效率。

第6章详细设计,第6章详细设计,6.1结构程序设计6.2人机界面设计6.3过程设计的工具6.4面向数据结构的设计方法6.5程序复杂程度的定量度量6.6小结及作业,结构程序设计的经典定义:

“如果一个程序的代码块仅仅通过顺序、选择和循环这3种基本控制结构进行连接,并且每个代码块只有一个入口和一个出口,则称这个程序是结构化的。

”消灭GOTO语句!

仅用3种基本结构,称为经典的结构程序设计;若还允许使用DO-CASE(多分支循环)、DO-UNTIL(直到型循环),成为扩展结构程序设计;如果在允许使用LEAVE(或BREAK,中断)结构,则称为修正结构程序设计。

6.1结构程序设计,6.2人机界面设计,对于交互式系统来说,人机界面设计和数据设计、体系结构设计及过程设计一样重要。

直接影响用户对软件产品的评价,从而影响软件产品的竞争力和寿命。

人机界面目前所占的工作量越来越大。

在设计人机界面常会遇到下述4个问题:

系统响应时间用户帮助设施出错信息处理命令交互上述问题,最好在设计初期作为重要的设计问题来考虑,这时修改比较容易,代价也低。

6.2.1设计问题,系统响应时间是指从用户完成某个控制动作(例如,按回车键或点击鼠标),到软件给出预期的响应(输出信息或做动作)之间的这段时间。

系统响应时间有两个重要属性,分别是长度和易变性。

响应时间过长,会感到沮丧;响应时间过短,会迫使用户加快节奏,会犯错。

易变性指系统响应时间相对于平均响应时间的偏差。

一般稳定较好,若发生变化,用户往往比较敏感,担心系统工作出现了异常。

1.系统响应时间,几乎交互式系统的每个用户都需要帮助,大多数现代软件都提供联机帮助设施,这使得用户无须离开用户界面就能解决自己的问题。

常见的帮助设施可分为集成的(根据当前的应用进行的帮助)和附加的(需查询使用)两类。

集成的帮助优于附加的帮助设施。

具体设计帮助设施时,必须解决下述的一系列问题。

(1)帮助的程度:

全部还是部分;

(2)如何实现帮助:

菜单、功能键和HELP命令;(3)怎样显示帮助信息:

独立窗口、指出参考某个文档(不理想)、显示简短;,2.用户帮助设施,(4)使用帮助后,如何返回原交互方式中:

返回按钮、功能键;(5)如何组织帮助信息:

平面结构、信息的层次结构和超文本结构。

2.用户帮助设施,交互式系统的出错信息或警告信息,应该具有下述属性:

(1)信息应该使用用户可以理解的术语描述问题;

(2)信息应该提供有助于从错误中恢复的建设性意见;(3)信息应该指出错误可能导致哪些负面后果(例如,破坏数据文件);(4)信息应该伴随着听觉上或视觉上的提示,强化出现异常;(5)信息不能带有指责用户的内容。

当确实出现了问题的时候,有效的出错信息能提高交互式系统的质量,减轻用户的挫折感。

3.出错信息处理,在多数情况下,用户既可以从菜单中选择软件功能,也可以通过键盘命令序列调用软件功能。

在提供命令交互方式时,必须考虑下列设计问题:

(1)是否每个菜单选项都有对应的命令;

(2)采用何种命令形式:

控制序列(如Ctrl+P)、功能键、键入命令。

(3)命令的难度有多大,忘记了命令怎么办;(4)用户是否可以定制或缩写命令。

4.命令交互,用户界面设计是一个迭代的、原型实现过程,各种用于界面设计和原型开发的软件工具较多,它们为简化窗口、菜单、设备交互、出错信息、命令及交互环境的许多其他元素的创建,提供了各种例程或对象。

使用评估的程序,直到用户满意为止。

早期评价用户界面的几个方面:

(1)界面的规格说明书的长度和复杂程度,预示了用户学习使用该系统所需要的工作量。

(2)命令或动作的数量、命令的平均参数个数或动作中单个操作的个数,预示了系统的交互时间和总体效率。

6.2.2设计过程,(3)设计模型中包含的动作、命令和系统状态的数量,预示了用户学习使用该系统时需要记忆的内容的多少。

(4)界面风格、帮助设施和出错处理协议,预示了界面的复杂程度及用户接受该界面的程度。

6.2.2设计过程,1.一般交互指南2.信息显示指南3.数据输入指南讲解详细,便于自学。

6.2.3人机界面设计指南,6.3过程设计的工具,描述程序处理过程的工具称为过程设计的工具。

一般有图形、表格和语言3种。

6.3.1程序流程图,程序流程图的主要缺点如下:

(1)程序流程图本质上不是逐步求精的好工具,它诱使程序员过早地考虑程序的控制流程,而不去考虑程序的全局结构。

(2)程序流程图中用箭头代表控制流,因此程序员不受任何约束,可以完全不顾结构程序设计的精神,随意转移控制。

(3)程序流程图不易表示数据结构。

6.3.1程序流程图,6.3.2盒图(N-S图),6.3.2盒图(N-S图),出于要有一种不允许违背结构程序设计精神的图形工具的考虑,Nassi和Shneiderman提出了盒图,又称为N-S图。

它有下述特点:

(1)功能域(即,一个特定控制结构的作用域)明确,可以从盒图上一眼就看出来。

(2)不可能任意转移控制。

(3)很容易确定局部和全程数据的作用域。

(4)很容易表现嵌套关系,也可以表示模块的层次结构。

6.3.3PAD图,6.3.3PAD图,PAD(problemanalysisdiagram,问题分析图)自1973年由日本日立公司发明以后,已得到一定程度的推广,该图翻译成程序代码比较容易。

PAD图的主要优点如下:

(1)使用表示结构化控制结构的PAD符号所设计出来的程序必然是结构化程序。

6.3.3PAD图,

(2)便于描绘程序结构,图中最左面的竖线是程序的主线,即第一层结构。

随着程序层次的增加,PAD图逐渐向右延伸,每增加一个层次,图形向右扩展一条竖线。

PAD图中竖线的总条数就是程序的层次数。

6.3.3PAD图,(3)程序从图中最左竖线上端的结点开始执行,自上而下,从左向右顺序执行,遍历所有结点,易读、易懂、易记。

(4)容易将PAD图转换成高级语言源程序,这种转换可用软件工具自动完成,从而可省去人工编码的工作,有利于提高软件可靠性和软件生产率。

(5)即可用于表示程序逻辑,也可用于描绘数据结构。

6.3.3PAD图,(6)PAD图的符号支持自顶向下、逐步求精方法的使用。

开始时设计者可以定义一个抽象的程序,随着设计工作的深入而使用def符号逐步增加细节,直至完成详细设计,如图所示。

例1:

对数组X进行排序。

“自顶而下,逐步求精”,1、循环一次,排好一个Xh,2、细化,(a),(b),(b),(a),3、连接各图,构成完整的PAD图,W:

=XhXh:

=XjXj:

=w,6.3.4判定表,对于多重嵌套的条件选择,用程序流程图、盒图、PAD图或后面即将介绍的过程设计语言(PDL)都不易清楚地描述。

例如:

假设某航空公司规定,乘客可以免费托运重量不超过30kg的行李。

当行李重量超过30kg时,对头等舱的国内乘客超重部分每公斤收费4元,对其他舱的国内乘客超重部分每公斤收费6元,对外国乘客超重部分每公斤收费比国内乘客多一倍,对残疾乘客超重部分每公斤收费比正常乘客少一半。

利用判定表则可清晰地描述。

6.3.判定表,6.3.5判定树,判定表含义不是一眼就能看出来的。

PDL(ProgramDesignLanguage)程序设计语言,这是一种结构化的语言。

是非形式化比较灵活的语言,用于描述模块内部过程的具体算法,以便在开发人员之间比较精确的进行交流。

PDL的语法是开放式的,其外层语法是确定的,而内层语法则不确定。

外层语法描述控制结构它用类似于一般程序设计语言控制结构的关键字:

IF-THEN-ELSEWHILE-DOREPEAT-UNTILDOCASEDOWHILE等表示。

有时还用关键字反排,表示控制结构结束:

DO-ODIF-FI,6.3.6过程设计语言PDL,例如:

ifXisnotnegativethenreturn(squarerootofXasarealnumber);elsereturn(squarerootof-Xasanimaginarynumber);外层语法IF-THEN-ELSE是确定的,内层操作“squarerootofX”是不确定的。

6.4面向数据结构的设计方法,面向数据结构的设计方法是按输入和输出以及内部存储信息的数据结构进行设计,然后再把数据结构的描述变换为对软件结构的描述。

Jackson方法和Warnier方法是最著名的两个面向数据结构的设计方法,本节结合一个简单例子扼要地介绍Jackson方法,目的是使读者对面向数据结构的设计方法有初步了解。

31,面向数据结构的设计与面向数据流的设计的异同,Jackson图是作为Jackson方法配套使用的表达工具,可以作为需求分析和程序设计阶段的表达工具。

Jackson图的优点:

便于表示层次结构,是对结构进行自顶向下分解的有力工具;形象直观,可读性好;既能表达程序的结构,也可表达问题的数据结构。

6.4.1Jackson图,33,重复结构,选择结构,A,B,C,A,B0,C0,A,B*,A,B,C,A,B0,C0,s,A,B*,I,A由B、C两部分顺序组成,A可以包含B或C(S代表选择),A由B重复任意次(含零次)构成(I代表重复),注:

改进的Jackson图规定顺序执行的处理中不许混有选择执行和重复执行。

顺序结构,Jackson图表达符号,Jackson图是层次图的一种精化,两者的图形类似,但有着许多区别,表现在:

层次图主要描绘软件结构,而Jackson图除描绘软件结构外,也能描绘数据结构;层次图中的一个方框代表一个模块,而Jackson图即使在描绘程序结构时,一个方框也不表示一个模块,而只代表几个语句;层次图表现的是调用关系,通常一个模块除了调用下级模块外还完成其它操作;而Jackson图表现的是组织关系,一个方框中包括的操作仅仅由它下层框中的哪些操作组成。

Jackson图与层次图的区别,Jackson图中三种结构对应的伪代码如下(凡带下划线的字均为关键字),Jackson伪代码,表头,表体,教职工名册,6.4.1Jackson图,6.4.1Jackson图,6.4.1Jackson图,6.4.2Jackson方法,Jackson方法的步骤分析并确定输入数据和输出数据的逻辑结构,用Jackson图描绘这些数据结构。

实质是对求解的问题进行需求分析。

用Jackson图表示数据结构时,省略与解题无关的多余信息,仅保留需要用到的数据单元。

找出输入数据结构和输出数据结构中有对应关系的数据单元(即有因果关系,在程序中可以同时处理的数据单元),按照下列映射规则,导出描绘程序结构的Jackson图。

6.4.2Jackson方法,

(1)为每一对在输入结构和输出结构中有对应关系的单元画一个处理框;

(2)为输入数据结构中每一剩余的数据单元画一个处理框;(3)为输出数据结构中每一剩余的数据单元画一个处理框;(4)所有处理框在程序结构上的位置,应与由它处理的数据单元在数据结构Jackson图上的位置相对应(程序中具有因果关系)。

6.4.2Jackson方法,写出程序的过程性表示:

列出所有操作和条件,并把它们分配到程序结构图的适当位置。

用Jackson伪代码写出与程序结构图对应的过程性表示。

6.4.2Jackson方法,45,(3)列出程序所需用的操作,并加到上一步画出的程序结构图上,I

(1),将新记录写入输出文件;,建立输出文件;,I

(1)文件结束,生成一条新记录;,打开两个输入文件;,关闭全部文件;,从输入文件中各读一条记录,停止;,分析考生记录,产生新文件,处理考生记录,产生通讯地址,产生姓名,产生准考证号,产生考分,1,4,6,5,7,4,3,2,产生新文件seq打开两个输入文件建立输出文件从输入文件中各读一条记录分析考生记录iteruntil文件结束处理考生记录seq产生准靠证号产生姓名产生通讯地址产生考分生成一条新记录将新记录写入输出文件从输入文件中各读一条记录处理考生记录end关闭全部文件停止产生新文件end,(4)用Jackson伪代码写出上述程序的过程表示。

6.5程序复杂程度的定量度量,定性度量软件质量软件设计基本原理;定量度量软件质量程序复杂度是一种方法。

定量度量程序复杂程度的方法的意义:

程序的复杂程度乘以适当常数:

估算软件中错误的数量、软件开发需要用的工作量;可用来比较不同的设计或不同算法的优劣;定量的复杂程度可以作为模块规模的精确限度。

下面着重介绍使用得比较广泛的McCabe方法和Halstead方法。

1.流图McCabe方法根据程序控制流的复杂程度定量度量程序的复杂程度程序的环形复杂度。

流图程序图,实质是“退化了的”程序流程图,仅描绘程序的控制流程。

在流图中用圆表示结点,一个圆代表一条或多条语句。

程序流程图中的一个顺序的处理框序列和一个菱形判定框,可以映射成流图中的一个结点。

6.5.1McCabe方法,1.流图流图中的箭头线称为边,代表控制流,终止于一个结点。

由边和结点围成的面积称为区域,当计算区域数时应该包括图外部未被围起来的那个区域。

图6.15所示。

6.5.1McCabe方法,6.5.1McCabe方法,图6.15程序流程图映射成流图,用任何方法表示的过程设计结果,都可以翻译成流图。

图6.16是用PDL表示的处理过程及与之对应的流图。

6.5.1McCabe方法,图6.16由PDL翻译成的流图,当过程设计中包含复合条件时,生成流图的方法稍微复杂一些。

所谓复合条件,就是在条件中包含了一个或多个布尔运算符(逻辑OR,AND,NAND,NOR)。

在这种情况下,应该把复合条件分解为若干个简单条件,每个简单条件对应流图中一个结点。

包含条件的结点称为判定节点,从每个判定结点引出两条或多条边。

图6.17是由包含复合条件的PDL片断翻译成的流图。

6.5.1McCabe方法,图6.17由包含复合条件的PDL映射成的流图,2.计算环形复杂度的方法环形复杂度定量度量程序的逻辑复杂度。

利用流图,可以用下述3种方法中的任何一种来计算环形复杂度。

(1)流图中的区域数等于环形复杂度。

(2)流图G的环形复杂度V(G)=E-N+2,其中,E是流图中边的条数,N是结点数。

(3)流图G的环形复杂度V(G)=P+1,其中,P是流图中判定结点的数目。

6.5.1McCabe方法,

(1)流图中的区域数等于环形复杂度;V(G)=4

(2)流图G的环形复杂度V(G)=E-N+2,其中,E是流图中边的条数,N是结点数;E=11,N=9,V(G)=4(3)流图G的环形复杂度V(G)=P+1,其中,P是流图中判定结点的数目;P=3,V(G)=4。

3.环形复杂度的用途程序的环形复杂度取决于程序控制流的复杂程度,也即是取决于程序结构的复杂程度。

当程序内分支数或循环个数增加时,环形复杂度也随之增加,因此它是对测试难度的一种定量度量,也能对软件最终的可靠性给出某种预测。

McCabe研究大量程序后发现,环形复杂度高的程序往往是最困难、最容易出问题的程序。

实践表明,模块规模以V(G)10为宜,也就是说,V(G)=10是模块规模的一个更科学更精确的上限。

6.5.1McCabe方法,Halstead方法是根据程序中运算符和操作数的总数来度量程序的复杂程度。

令N1为程序中运算符出现的总次数,N2为操作数出现的总次数,程序长度N定义为:

N=N1+N2。

详细设计完成之后,可以知道程序中使用的不同运算符(包括关键字)的个数n1,以及不同操作数(变量和常数)的个数n2。

Halstead给出预测程序长度的公式如下:

H=n1log2n1+n2log2n2多次验证都表明,预测的长度H与实际长度N非常接近。

6.5.2Halstead方法,Halstead还给出了预测程序中包含错误的个数的公式如下:

E=Nlog2(n1+n2)/3000有人曾对从300条到12000条语句范围内的程序核实了上述公式,发现预测的错误数与实际错误数相比误差在8%之内。

6.5.2Halstead方法,详细设计阶段的关键任务是确定怎样具体地实现用户需要的软件系统,以便将来编写出的程序:

可读性好容易理解容易测试容易修改和维护是详细设计阶段最重要的目标。

结构化设计可以帮助人们实现上述目标。

6.6小结及作业,人机界面设计是接口设计的一个重要的组成部分。

人机界面的质量直接影响用户对软件产品的接受程度。

人机界面设计是一个迭代过程。

过程设计应该在数据设计、体系结构设计和接口设计完成之后进行,它的任务是设计解题的详细步骤(即算法),它是详细设计阶段应完成的主要工作。

过程设计的工具可分为图形、表格和语言3类,这3类工具各有所长,读者应该能够根据需要选用适当的工具。

6.6小结及作业,当应用领域中信息有清楚的层次结构,可采用面向数据结构的设计方法完成过程设计。

例如Jackson结构程序设计技术。

使用环形复杂度可以定量度量程序的复杂程度,实践表明,环形复杂度V(G)=10是模块规模的合理上限。

6.6小结及作业,

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

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2