《浙江工商大学软件工程导论_6_详细设计课件》由会员分享,可在线阅读,更多相关《浙江工商大学软件工程导论_6_详细设计课件(61页珍藏版)》请在金锄头文库上搜索。
1、n教学目标教学目标 掌握常用的详细设计工具、了解人机界面设掌握常用的详细设计工具、了解人机界面设计问题、了解计问题、了解Jackson结构程序设计技术结构程序设计技术。n教学重点教学重点 各种详细设计工具的使用。各种详细设计工具的使用。n教学难点教学难点 Jackson结构结构程序设计技术。程序设计技术。第第6章章 详细设计详细设计详详细细设设计计的的基基本本目目的的就就是是回回答答“详详尽尽、精精确确地地描述系统各模块的具体实现方法描述系统各模块的具体实现方法”。 详详细细设设计计的的结结果果基基本本决决定定了了最最终终程程序序代代码码的的质质量,其中包括:正确性、可读性、效率。量,其中包括
2、:正确性、可读性、效率。第第6章章 详细设计详细设计第第6章章 详细设计详细设计n6.1 结构程序设计结构程序设计n6.2 人机界面设计人机界面设计n6.3 过程设计的工具过程设计的工具n6.4 面向数据结构的设计方法面向数据结构的设计方法n6.5 程序复杂程度的定量度量程序复杂程度的定量度量n6.6 小结及作业小结及作业结结构构程程序序设设计计的的经经典典定定义义:“如如果果一一个个程程序序的的代代码码块块仅仅仅仅通通过过顺顺序序、选选择择和和循循环环这这3种种基基本本控控制制结结构构进进行行连连接接,并并且且每每个个代代码码块块只只有有一一个个入入口口和一个出口,则称这个程序是结构化的。和
3、一个出口,则称这个程序是结构化的。”消灭消灭GOTO语句!语句!仅用仅用3种基本结构,称为经典的结构程序设计;种基本结构,称为经典的结构程序设计;若若还还允允许许使使用用DO-CASE(多多分分支支循循环环)、DO-UNTIL(直直到到型型循循环环),成成为为扩扩展展结结构构程程序序设计;设计;如如果果在在允允许许使使用用LEAVE(或或BREAK,中中断断)结结构,则称为修正结构程序设计。构,则称为修正结构程序设计。6.1 结构程序设计结构程序设计浙江工商大学软件工程导论_6_详细设计6.2 人机界面设计人机界面设计对于交互式系统来说,人机界面设计和数据设对于交互式系统来说,人机界面设计和数
4、据设计、体系结构设计及过程设计一样重要。计、体系结构设计及过程设计一样重要。直接影响用户对软件产品的评价,从而影响软直接影响用户对软件产品的评价,从而影响软件产品的竞争力和寿命。件产品的竞争力和寿命。人机界面目前所占的工作量越来越大。人机界面目前所占的工作量越来越大。固定菜单固定菜单下拉菜单下拉菜单在设计人机界面常会遇到下述在设计人机界面常会遇到下述4 4个问题:个问题:l系统响应时间系统响应时间l用户帮助设施用户帮助设施l出错信息处理出错信息处理l命令交互命令交互上上述述问问题题,最最好好在在设设计计初初期期作作为为重重要要的的设设计计问问题题来考虑,这时修改比较容易,代价也低。来考虑,这时
5、修改比较容易,代价也低。6.2.1 设计问题系系统统响响应应时时间间有有两两个个重重要要属属性性,分分别别是是长长度度和和易易变性。变性。原则:原则:避避免免相相应应时时间间过过长长或或过过短短:响响应应时时间间过过长长,会会感感到到沮沮丧丧;响响应应时时间间过过短短,会会迫迫使使用用户户加加快快节节奏奏,会会犯犯错。错。减减少少易易变变性性。一一般般稳稳定定较较好好,若若发发生生变变化化,用用户户往往比较敏感,担心系统工作出现了异常。往往比较敏感,担心系统工作出现了异常。1. 系统响应时间系统响应时间常常见见的的帮帮助助设设施施可可分分为为集集成成的的(根根据据当当前前的的应应用用进进行行的
6、的帮帮助助)和和附附加加的的(需需查查询询使使用用)两两类类。集集成成的的帮助优于附加的帮助设施。帮助优于附加的帮助设施。具体设计帮助设施时,必须解决下述的具体设计帮助设施时,必须解决下述的 问题。问题。(1) (1) 帮助的程度:全部还是部分;帮助的程度:全部还是部分;(2) (2) 如何实现帮助:菜单、功能键和如何实现帮助:菜单、功能键和HELPHELP命令;命令;(3) (3) 怎怎样样显显示示帮帮助助信信息息:独独立立窗窗口口、指指出出参参考考某某个文档个文档( (不理想不理想) )、显示简短;、显示简短;(4) (4) 使使用用帮帮助助后后,如如何何返返回回原原交交互互方方式式中中:
7、 :返返回回按按钮、功能键;钮、功能键;(5) (5) 如如何何组组织织帮帮助助信信息息:平平面面结结构构、信信息息的的层层次次结构和超文本结构。结构和超文本结构。2. 用户帮助设施用户帮助设施交交互互式式系系统统的的出出错错信信息息或或警警告告信信息息,应应该该具具有有下下述属性:述属性:(1) (1) 信息应该使用用户可以理解的术语描述问题;信息应该使用用户可以理解的术语描述问题;(2) (2) 信信息息应应该该提提供供有有助助于于从从错错误误中中恢恢复复的的建建设设性性意见;意见;(3) (3) 信信息息应应该该指指出出错错误误可可能能导导致致哪哪些些负负面面后后果果( (例例如,破坏数
8、据文件如,破坏数据文件) );(4) (4) 信信息息应应该该伴伴随随着着听听觉觉上上或或视视觉觉上上的的提提示示,强强化出现异常;化出现异常;(5) (5) 信息不能带有指责用户的内容。信息不能带有指责用户的内容。当当确确实实出出现现了了问问题题的的时时候候,有有效效的的出出错错信信息息能能提提高交互式系统的质量,减轻用户的挫折感。高交互式系统的质量,减轻用户的挫折感。3. 出错信息处理出错信息处理在在多多数数情情况况下下,用用户户既既可可以以从从菜菜单单中中选选择择软软件件功功能,也可以通过键盘命令序列调用软件功能。能,也可以通过键盘命令序列调用软件功能。在提供命令交互方式时,必须考虑下列
9、设计问题:在提供命令交互方式时,必须考虑下列设计问题:(1) (1) 是否每个菜单选项都有对应的命令;是否每个菜单选项都有对应的命令;(2) (2) 采采用用何何种种命命令令形形式式:控控制制序序列列( (如如Ctrl+P)Ctrl+P)、功能键、键入命令。功能键、键入命令。(3) (3) 命令的难度有多大,忘记了命令怎么办;命令的难度有多大,忘记了命令怎么办;(4) (4) 用户是否可以定制或缩写命令。用户是否可以定制或缩写命令。4. 命令交互命令交互6.3 过程设计的工具过程设计的工具描述程序处理过程的工具称为过程设计的工具。描述程序处理过程的工具称为过程设计的工具。一般有图形、表格和语言
10、一般有图形、表格和语言3 3种。种。6.3.1 程序流程图程序流程图程序流程图的主要缺点如下:程序流程图的主要缺点如下:(1) (1) 程程序序流流程程图图本本质质上上不不是是逐逐步步求求精精的的好好工工具具,它它诱诱使使程程序序员员过过早早地地考考虑虑程程序序的的控控制制流流程程,而而不不去考虑程序的全局结构。去考虑程序的全局结构。(2) (2) 程程序序流流程程图图中中用用箭箭头头代代表表控控制制流流,因因此此程程序序员员不不受受任任何何约约束束,可可以以完完全全不不顾顾结结构构程程序序设设计计的精神,随意转移控制。的精神,随意转移控制。(3) (3) 程序流程图不易表示数据结构。程序流程
11、图不易表示数据结构。6.3.1 程序流程图程序流程图abX1X2X7X6X4X3X5higfedcjFTFFFTTT多分支选多分支选择结构择结构先判定型循先判定型循环结构环结构选择结构选择结构后判定型循环结构后判定型循环结构6.3.2 盒图盒图(N-S图图)顺序结构顺序结构块块1块块2块块3块块4条件条件T FELSETHEN选择结构选择结构Case I=1,2,3T块块1块块2多分支选择结构多分支选择结构F块块3块块当条件成立时当条件成立时当型循环当型循环块块直到条件成立时直到条件成立时直到型循环直到型循环6.3.2 盒图盒图(N-S图图)N-SN-S图。它有下述特点:图。它有下述特点:(1
12、) (1) 功功能能域域( (即即,一一个个特特定定控控制制结结构构的的作作用用域域) )明确,可以从盒图上一眼就看出来。明确,可以从盒图上一眼就看出来。(2) (2) 不可能任意转移控制。不可能任意转移控制。(3) (3) 很容易确定局部和全程数据的作用域。很容易确定局部和全程数据的作用域。(4) (4) 很很容容易易表表现现嵌嵌套套关关系系,也也可可以以表表示示模模块块的的层次结构。层次结构。ab条条 件件 1TF Case Xi, i=2,3,4X2X3X4当条件当条件3成立成立条条 件件 2直到条件直到条件4成立成立直直 到到 条条 件件 成立成立cdefghij顺顺序序结结构构选选择
13、择结结构构多多分分支支选选择择结结构构先先判判定定型型循循环环结结构构后后判判定定型型循循环环结结构构FTTFN-SN-S图举例图举例NS图举例6.3.3 PAD图图任务任务1任务任务2任务任务3 顺序结构顺序结构WHILE型条件型条件循环体循环体先判定型循环结构先判定型循环结构条件条件then部分部分else部分部分选择结构选择结构TFUNTIL型条件型条件循环体循环体后判定型循环结构后判定型循环结构控控制制变变量量 任务任务1任务任务2任务任务n多分支选择结构多分支选择结构值值 1值值 2值值 nPADPAD图基本结构图基本结构6.3.3 PAD图图PAD(problem PAD(prob
14、lem analysis analysis diagramdiagram,问问题题分分析析图图) ) 自自19731973年年由由日日本本日日立立公公司司发发明明以以后后,已已得得到到一一定定程度的推广,该图翻译成程序代码比较容易。程度的推广,该图翻译成程序代码比较容易。PADPAD图的主要优点如下:图的主要优点如下:(1) (1) 使使用用表表示示结结构构化化控控制制结结构构的的PADPAD符符号号所所设设计计出来的程序必然是结构化程序。出来的程序必然是结构化程序。6.3.3 PAD图图(2) (2) 便便于于描描绘绘程程序序结结构构,图图中中最最左左面面的的竖竖线线是是程序的主线,即第一层
15、结构。程序的主线,即第一层结构。随随着着程程序序层层次次的的增增加加,PADPAD图图逐逐渐渐向向右右延延伸伸,每每增增加加一一个个层层次次,图图形形向向右右扩扩展展一一条条竖竖线线。PADPAD图图中中竖线的总条数就是程序的层次数竖线的总条数就是程序的层次数。6.3.3 PAD图图(3)(3) 程程序序从从图图中中最最左左竖竖线线上上端端的的结结点点开开始始执执行行,自自上上而而下下,从从左左向向右右顺顺序序执执行行,遍遍历历所所有有结结点点,易读、易懂、易记。易读、易懂、易记。(4) (4) 容容易易将将PADPAD图图转转换换成成高高级级语语言言源源程程序序,这这种种转转换换可可用用软软
16、件件工工具具自自动动完完成成,从从而而可可省省去去人人工工编编码的工作,有利于提高软件可靠性和软件生产率。码的工作,有利于提高软件可靠性和软件生产率。(5) (5) 即即可可用用于于表表示示程程序序逻逻辑辑,也也可可用用于于描描绘绘数数据结构。据结构。6.3.3 PAD图图(6) (6) PADPAD图图的的符符号号支支持持自自顶顶向向下下、逐逐步步求求精精方方法法的使用。的使用。开开始始时时设设计计者者可可以以定定义义一一个个抽抽象象的的程程序序,随随着着设设计计工工作作的的深深入入而而使使用用defdef符符号号逐逐步步增增加加细细节节,直直至完成详细设计,如图所示。至完成详细设计,如图所
17、示。BEGIN FIRST:=K1; SECOND:=0;FIRST=KISECOND=0I:=2 to NKI SECONDKIFIRSTSECOND =FIRSTFIRST=KISECOND =KI ELSE SECOND:=KI END END END. PASCALPASCALPASCALPASCAL源程序段源程序段源程序段源程序段对应对应PADPAD图图FOR I:=2 TO N DO BEGIN IF KISECOND THENBEGIN IF KIFIRSTTHEN BEGIN SECOND:=FIRST; FIRST:=KI ENDPADPAD图应用举例图应用举例例2PAD图应
18、用举例6.3.4 判定表判定表对对于于多多重重嵌嵌套套的的条条件件选选择择,用用程程序序流流程程图图、盒盒图图、PADPAD图图或或后后面面即即将将介介绍绍的的过过程程设设计计语语言言(PDL)(PDL)都不易清楚地描述。都不易清楚地描述。例例如如:假假设设某某航航空空公公司司规规定定,乘乘客客可可以以免免费费托托运运重重量量不不超超过过30kg30kg的的行行李李。当当行行李李重重量量超超过过30kg30kg时时,对对头头等等舱舱的的国国内内乘乘客客超超重重部部分分每每公公斤斤收收费费4 4元元,对对其其他他舱舱的的国国内内乘乘客客超超重重部部分分每每公公斤斤收收费费6 6元元,对对外外国国
19、乘乘客客超超重重部部分分每每公公斤斤收收费费比比国国内内乘乘客客多多一一倍倍,对对残残疾疾乘乘客客超超重重部部分分每每公公斤斤收收费费比比正正常常乘乘客客少少一一半。半。利用判定表则可清晰地描述。利用判定表则可清晰地描述。6.3. 判定表判定表6.3.5 判定树判定树判定表含义不是一眼就能看出来的。判定表含义不是一眼就能看出来的。PDLPDL(Program Program Design Design LanguageLanguage)程程序序设设计计语语言言, ,这这是是一一种种结结构构化化的的语语言言。是是非非形形式式化化比比较较灵灵活活的的语语言言,用用于于描描述述模模块块内内部部过过程
20、程的的具具体体算算法法,以以便在开发人员之间比较精确的进行交流。便在开发人员之间比较精确的进行交流。PDLPDL的的语语法法是是开开放放式式的的,其其外外层层语语法法是是确确定定的的,而而内内层层语语法法则则不不确确定定。外外层层语语法法描描述述控控制制结结构构它它用类似于一般程序设计语言控制结构的关键字:用类似于一般程序设计语言控制结构的关键字:IF-THEN-ELSE WHILE- DO REPEAT- UNTILIF-THEN-ELSE WHILE- DO REPEAT- UNTIL DO CASE DO WHILE DO CASE DO WHILE 等表示。等表示。有时还用关键字反排,
21、表示控制结构结束:有时还用关键字反排,表示控制结构结束: DO - OD IF - FIDO - OD IF - FI6.3.6 过程设计语言过程设计语言 PDL浙江工商大学软件工程导论_6_详细设计6.4 面向数据结构的设计方法面向数据结构的设计方法面向数据结构的设计方法是按输入和输出以及面向数据结构的设计方法是按输入和输出以及内部存储信息的数据结构进行设计内部存储信息的数据结构进行设计, ,然后再把数然后再把数据结构的描述变换为对软件结构的描述。据结构的描述变换为对软件结构的描述。JacksonJackson方法和方法和WarnierWarnier方法是最著名的两个面方法是最著名的两个面向
22、数据结构的设计方法,本节结合一个简单例子向数据结构的设计方法,本节结合一个简单例子扼要地介绍扼要地介绍JacksonJackson方法,目的是使读者对面向方法,目的是使读者对面向数据结构的设计方法有初步了解。数据结构的设计方法有初步了解。主要适用主要适用范范 围围面向数据结构的设计面向数据结构的设计最终目标最终目标工作基础工作基础面向数据流的设计面向数据流的设计设计方法设计方法 在详细设计阶段确定部分在详细设计阶段确定部分或全部模块的逻辑过程。或全部模块的逻辑过程。 在概要设计阶段用在概要设计阶段用SD方法确方法确定软件的结构。定软件的结构。 以数据结构以数据结构 为基础。为基础。从问从问题的
23、数据结构出发题的数据结构出发导出它的程导出它的程序结构序结构 。 以数据流图为基础。在分析阶以数据流图为基础。在分析阶段用段用DFD表示软件的逻辑模型,表示软件的逻辑模型,在设计阶段按数据流类型,将在设计阶段按数据流类型,将数数据流图据流图转换为软件结构。转换为软件结构。两种方法的共同点:两种方法的共同点: 1.遵循遵循“由顶向下、逐步细化由顶向下、逐步细化”的原则;的原则; 2.服从服从“程序结构必须适应问题结构程序结构必须适应问题结构”的原则。的原则。程序的过程性描述。程序的过程性描述。软件的最终软件的最终SC图图面向数据结构的设计与面向数据流的设计的异同面向数据结构的设计与面向数据流的设
24、计的异同JacksonJackson图图是是作作为为JacksonJackson方方法法配配套套使使用用的的表表达达工工具具,可可以以作作为为需需求求分分析析和和程程序序设设计计阶阶段段的的表表达达工具。工具。JacksonJackson图的优点:图的优点:便便于于表表示示层层次次结结构构, ,是是对对结结构构进进行行自自顶顶向向下下分分解解的有力工具;的有力工具;形象直观形象直观, ,可读性好;可读性好;既能表达程序的结构既能表达程序的结构, ,也可表达问题的数据结构。也可表达问题的数据结构。6.4.1 Jackson图图31重复结构重复结构选择结构选择结构ABCAB0C0AB*ABCAB0
25、C0sAB*I A由由B、C两部分顺序两部分顺序组成组成 A可以包含可以包含B或或C(S代表选择代表选择) A由由B重复任意次重复任意次(含含零次零次)构成构成( I 代表重复代表重复) 注:改进的注:改进的Jackson图规定顺序执行的处理中不许混有选择执行和重复执行。图规定顺序执行的处理中不许混有选择执行和重复执行。顺序结构顺序结构JacksonJackson图表达符号图表达符号JacksonJackson图图是是层层次次图图的的一一种种精精化化,两两者者的的图图形形类类似,但有着许多区别,表现在:似,但有着许多区别,表现在:层层次次图图主主要要描描绘绘软软件件结结构构, ,而而Jacks
26、onJackson图图除除描描绘绘软件结构外软件结构外, ,也能描绘数据结构;也能描绘数据结构;层层次次图图中中的的一一个个方方框框代代表表一一个个模模块块, ,而而JacksonJackson图图即即使使在在描描绘绘程程序序结结构构时时, ,一一个个方方框框也也不不表表示示一一个个模块模块, ,而只代表几个语句;而只代表几个语句;层层次次图图表表现现的的是是调调用用关关系系, ,通通常常一一个个模模块块除除了了调调用用下下级级模模块块外外还还完完成成其其它它操操作作;而而JacksonJackson图图表表现现的是组织关系,的是组织关系,一一个个方方框框中中包包括括的的操操作作仅仅仅仅由由它
27、它下下层层框框中中的的哪哪些操作组成。些操作组成。Jackson图与层次图的区别图与层次图的区别JacksonJackson图图中中三三种种结结构构对对应应的的伪伪代代码码如如下下( (凡凡带带下下划划线线的的字均为关键字字均为关键字) )Jackson伪代码伪代码重复结构伪代码重复结构伪代码选择结构伪代码选择结构伪代码 A seq B C end A A select cond1 B or cond2 C end AABCAB0C0SAB*I untilA iter cond while Bend A顺序结构伪代码顺序结构伪代码姓名姓名类别类别津贴津贴表头表头表体表体教职工名册教职工名册6.
28、4.1 Jackson图图名册名册栏名行栏名行表名行表名行表头表头表体表体行行*姓名姓名类别类别津贴津贴工龄津贴工龄津贴0教龄津贴教龄津贴0IS教职工名册的数据结构教职工名册的数据结构教职工名册的数据结构教职工名册的数据结构6.4.1 Jackson图图产生名册文件产生名册文件产生栏名行产生栏名行产生表名行产生表名行产生表头产生表头产生表体产生表体产生行产生行*产生姓名产生姓名产生类别产生类别产生津贴产生津贴产生工龄津贴产生工龄津贴0产生教龄津贴产生教龄津贴0SI教职工名册的程序结构教职工名册的程序结构教职工名册的程序结构教职工名册的程序结构6.4.1 Jackson图图程序分析程序分析详细设
29、计详细设计结构设计结构设计程序设计程序设计JacksonJackson方法方法映射映射数据结构数据结构(Jackson(Jackson图图) )程序结构程序结构(Jackson(Jackson图图) )程序的过程描述程序的过程描述(Jackson(Jackson伪代码伪代码) )SDSD方法方法映射映射问题结构问题结构(DFD)(DFD)软件结构软件结构(SC(SC图图) )模块的过程表示模块的过程表示(PDL(PDL等工具等工具) )两种方法的比较两种方法的比较两种方法的比较两种方法的比较6.4.2 Jackson方法方法JacksonJackson方法的步骤方法的步骤 1.1.分析并确定输
30、入数据和输出数据的逻辑结构分析并确定输入数据和输出数据的逻辑结构, ,用用JacksonJackson图描绘这些数据结构。图描绘这些数据结构。实质是对求解的问题进行需求分析。实质是对求解的问题进行需求分析。 用用JacksonJackson图表示数据结构时图表示数据结构时, ,省略与解题无关的多余信息省略与解题无关的多余信息, ,仅保留需要用到的数据单元。仅保留需要用到的数据单元。2.2.找出输入数据结构和输出数据结构中有对应关找出输入数据结构和输出数据结构中有对应关系的数据单元系的数据单元( (即有因果关系即有因果关系, ,在程序中可以同在程序中可以同时处理的数据单元时处理的数据单元) ),
31、按照下列映射规则,按照下列映射规则, , 导出导出描绘程序结构的描绘程序结构的JacksonJackson图。图。6.4.2 Jackson方法方法(1)(1)为每一对在输入结构和输出结构中有对应关系为每一对在输入结构和输出结构中有对应关系的单元画一个处理框;的单元画一个处理框; (2)(2)为输入数据结构中每一剩余的数据单元画一个为输入数据结构中每一剩余的数据单元画一个处理框;处理框;(3)(3)为输出数据结构中每一剩余的数据单元画一个为输出数据结构中每一剩余的数据单元画一个处理框;处理框;(4)(4)所有处理框在程序结构上的位置所有处理框在程序结构上的位置, , 应与由它处应与由它处理的数
32、据单元在数据结构理的数据单元在数据结构JacksonJackson图上的位置相图上的位置相对应对应( (程序中具有因果关系程序中具有因果关系) )。6.4.2 Jackson方法方法3.3.写出程序的过程性表示写出程序的过程性表示: :列出所有操作和条件,列出所有操作和条件,并把它们分配并把它们分配 到程序结构图的适当位置。到程序结构图的适当位置。4.4.用用JacksonJackson伪代码写出与程序结构图对应的过程伪代码写出与程序结构图对应的过程性表示。性表示。6.4.2 Jackson方法方法例例: :有两个输入文件有两个输入文件: :考生基本情况文件考生基本情况文件( (简称考生情况文
33、件简称考生情况文件) )和考生和考生 高考成绩文件高考成绩文件( (简称考分文件简称考分文件) )如下如下: : 考生情况文件考生情况文件 考分文件考分文件通讯地址通讯地址姓姓 名名准考证号准考证号考考 分分准考证号准考证号 产生输出文件产生输出文件: : 考生新文件考生新文件 通讯地址通讯地址考考 分分姓姓 名名准考证号准考证号 试用试用JacksonJackson方法完成下列工作方法完成下列工作 (1)(1)用用JacksonJackson图表示输入与输出结构,找出它们之间的对应单元;图表示输入与输出结构,找出它们之间的对应单元; (2)(2)画出用画出用JacksonJackson图表示
34、的程序结构;图表示的程序结构; (3)(3)列出程序所需要的操作,并加到上一步画出的程序结构图上;列出程序所需要的操作,并加到上一步画出的程序结构图上; (4)(4)用用JacksonJackson伪代码写出与程序结构图对应的过程性表示。伪代码写出与程序结构图对应的过程性表示。 (1) (1)输入结构输入结构考生情况文件考生情况文件通讯地址通讯地址姓姓 名名准考证号准考证号考生情况文件考生情况文件考分文件考分文件考考 分分准考证号准考证号输出结构输出结构通讯地址通讯地址姓姓 名名准考证号准考证号考考 分分考生记录考生记录I I考生记录考生记录I I考生记录考生记录I I 输入结构与输出结构中对
35、应的数据单元输入结构与输出结构中对应的数据单元产生新文件产生新文件(2)(2)程序结构图程序结构图产生通讯地址产生通讯地址产生姓名产生姓名产生准考证号产生准考证号产生考分产生考分考生情况文件考生情况文件考生记录考生记录通讯通讯地址地址姓名姓名准考准考证号证号I I处理考生记录处理考生记录I I考生新文件考生新文件考分考分通讯通讯地址地址姓名姓名准考准考证号证号考生记录考生记录I I考分文件考分文件考生记录考生记录I I考分考分准考准考证号证号 (3) (3)列出程序所需用的操作,并加到上一步画出的程序结构图上列出程序所需用的操作,并加到上一步画出的程序结构图上I(1)I(1)将新记录写入输出文
36、件;将新记录写入输出文件;建立输出文件;建立输出文件;I(1)I(1)文件结束文件结束生成一条新记录;生成一条新记录;打开两个输入文件;打开两个输入文件;关闭全部文件;关闭全部文件;从输入文件中各读一条记录从输入文件中各读一条记录停止;停止;分析考生记录分析考生记录产生新文件产生新文件处理考生记录处理考生记录产生通讯地址产生通讯地址产生姓名产生姓名产生准考证号产生准考证号产生考分产生考分1 14 46 65 57 74 43 32 2 产生新文件产生新文件 seqseq 打开两个输入文件打开两个输入文件 建立输出文件建立输出文件 从输入文件中各读一条记录从输入文件中各读一条记录 分析考生记录分
37、析考生记录iter untiliter until文件结束文件结束 处理考生记录处理考生记录 seqseq 产生准靠证号产生准靠证号 产生姓名产生姓名 产生通讯地址产生通讯地址 产生考分产生考分 生成一条新记录生成一条新记录 将新记录写入输出文件将新记录写入输出文件 从输入文件中各读一条记录从输入文件中各读一条记录 处理考生记录处理考生记录 endend 关闭全部文件关闭全部文件 停止停止 产生新文件产生新文件 endend(4)(4)用用JacksonJackson伪代码写出上述程序的过程表示。伪代码写出上述程序的过程表示。浙江工商大学软件工程导论_6_详细设计6.5 程序复杂程度的定量度量
38、程序复杂程度的定量度量定性度量软件质量定性度量软件质量软件软件设计基本原理设计基本原理;定量度量软件质量定量度量软件质量程序复杂度是一种方法。程序复杂度是一种方法。定量度量程序复杂程度的方法的意义:定量度量程序复杂程度的方法的意义:l程程序序的的复复杂杂程程度度乘乘以以适适当当常常数数:估估算算软软件件中中错错误的数量、软件开发需要用的工作量;误的数量、软件开发需要用的工作量;l可用来比较不同的设计或不同算法的优劣;可用来比较不同的设计或不同算法的优劣;l定量的复杂程度可以作为模块规模的精确限度。定量的复杂程度可以作为模块规模的精确限度。下下面面着着重重介介绍绍使使用用得得比比较较广广泛泛的的
39、McCabeMcCabe方方法法和和HalsteadHalstead方法。方法。1. 流图流图McCabeMcCabe方方法法根根据据程程序序控控制制流流的的复复杂杂程程度度定定量量度度量程序的复杂程度量程序的复杂程度程序的环形复杂度程序的环形复杂度。流流图图程程序序图图,实实质质是是“退退化化了了的的”程程序序流流程图,仅描绘程序的控制流程。程图,仅描绘程序的控制流程。在在流流图图中中用用圆圆表表示示结结点点,一一个个圆圆代代表表一一条条或或多多条语句。条语句。程程序序流流程程图图中中的的一一个个顺顺序序的的处处理理框框序序列列和和一一个个菱形判定框,可以映射成流图中的一个结点菱形判定框,可
40、以映射成流图中的一个结点。6.5.1 McCabe方法方法1. 流图流图流流图图中中的的箭箭头头线线称称为为边边,代代表表控控制制流流,终终止止于于一个结点。一个结点。由由边边和和结结点点围围成成的的面面积积称称为为区区域域,当当计计算算区区域域数数时应该包括图外部未被围起来的那个区域。时应该包括图外部未被围起来的那个区域。图图6.15所示。所示。6.5.1 McCabe方法方法6.5.1 McCabe方法方法图图6.15程序流程图映射成流图程序流程图映射成流图用用任任何何方方法法表表示示的的过过程程设设计计结结果果,都都可可以以翻翻译译成流图。成流图。图图6.16是是用用PDL表表示示的的处
41、处理理过过程程及及与与之之对对应应的的流流图。图。6.5.1 McCabe方法方法图图6.16 由由PDL翻译成的流图翻译成的流图当当过过程程设设计计中中包包含含复复合合条条件件时时,生生成成流流图图的的方方法法稍稍微微复复杂杂一一些些。所所谓谓复复合合条条件件,就就是是在在条条件件中中包包含含了了一一个个或或多多个个布布尔尔运运算算符符( (逻逻辑辑OROR,ANDAND,NANDNAND,NOR)NOR)。在在这这种种情情况况下下,应应该该把把复复合合条条件件分分解解为为若若干干个个简单条件,每个简单条件对应流图中一个结点。简单条件,每个简单条件对应流图中一个结点。包包含含条条件件的的结结
42、点点称称为为判判定定节节点点,从从每每个个判判定定结结点点引引出出两两条条或或多多条条边边。图图6.176.17是是由由包包含含复复合合条条件件的的PDLPDL片断翻译成的流图。片断翻译成的流图。6.5.1 McCabe方法方法图图6.17 由包含复合条件的由包含复合条件的PDL映射成的流图映射成的流图2. 计算环形复杂度的方法计算环形复杂度的方法环形复杂度定量度量程序的逻辑复杂度。环形复杂度定量度量程序的逻辑复杂度。利利用用流流图图,可可以以用用下下述述3 3种种方方法法中中的的任任何何一一种种来来计算环形复杂度。计算环形复杂度。(1) (1) 流图中的区域数等于环形复杂度。流图中的区域数等
43、于环形复杂度。(2) (2) 流流图图G G的的环环形形复复杂杂度度V(G)=E-N+2,V(G)=E-N+2,其其中中,E E是是流图中边的条数,流图中边的条数,N N是结点数。是结点数。(3) (3) 流流图图G G的的环环形形复复杂杂度度V(G)=P+1V(G)=P+1,其其中中,P P是是流图中判定结点的数目。流图中判定结点的数目。6.5.1 McCabe方法方法(1) (1) 流图中的区域数等于环形复杂度;流图中的区域数等于环形复杂度;V(G)=4V(G)=4(2) (2) 流流图图G G的的环环形形复复杂杂度度V(G)=E-N+2,V(G)=E-N+2,其其中中,E E是是流流图中
44、边的条数,图中边的条数,N N是结点数;是结点数;E=11,N=9,V(G)=4E=11,N=9,V(G)=4(3) (3) 流流图图G G的的环环形形复复杂杂度度V(G)=P+1V(G)=P+1,其其中中,P P是是流流图中判定结点的数目图中判定结点的数目;P=3,V(G)=4;P=3,V(G)=4。3. 环形复杂度的用途环形复杂度的用途程程序序的的环环形形复复杂杂度度取取决决于于程程序序控控制制流流的的复复杂杂程程度,也即是取决于程序结构的复杂程度。度,也即是取决于程序结构的复杂程度。当当程程序序内内分分支支数数或或循循环环个个数数增增加加时时,环环形形复复杂杂度度也也随随之之增增加加,因
45、因此此它它是是对对测测试试难难度度的的一一种种定定量量度量,也能对软件最终的可靠性给出某种预测。度量,也能对软件最终的可靠性给出某种预测。McCabeMcCabe研研究究大大量量程程序序后后发发现现,环环形形复复杂杂度度高高的的程程序序往往往往是是最最困困难难、最最容容易易出出问问题题的的程程序序。实实践践表表明明,模模块块规规模模以以V(G)10V(G)10为为宜宜,也也就就是是说说,V(G)=10V(G)=10是模块规模的一个更科学更精确的上限。是模块规模的一个更科学更精确的上限。6.5.1 McCabe方法方法Halstead方方法法是是根根据据程程序序中中运运算算符符和和操操作作数数的
46、的总总数来度量程序的复杂程度。数来度量程序的复杂程度。令令N1为为程程序序中中运运算算符符出出现现的的总总次次数数,N2为为操操作作数出现的总次数,程序长度数出现的总次数,程序长度N定义为:定义为:N=N1+N2。详详细细设设计计完完成成之之后后,可可以以知知道道程程序序中中使使用用的的不不同同运运算算符符(包包括括关关键键字字)的的个个数数n1,以以及及不不同同操操作作数数(变变量量和和常常数数)的的个个数数n2。Halstead给给出出预预测测程程序序长长度的公式如下:度的公式如下:H=n1log2 n1+n2 log2n2多多次次验验证证都都表表明明,预预测测的的长长度度H与与实实际际长
47、长度度N非非常接近。常接近。6.5.2 Halstead方法方法Halstead还还给给出出了了预预测测程程序序中中包包含含错错误误的的个个数数的的公式如下:公式如下:E=N log2 (n1+n2)/3000有有人人曾曾对对从从300条条到到12000条条语语句句范范围围内内的的程程序序核核实实了了上上述述公公式式,发发现现预预测测的的错错误误数数与与实实际际错错误误数相比误差在数相比误差在8%之内。之内。6.5.2 Halstead方法方法详详细细设设计计阶阶段段的的关关键键任任务务是是确确定定怎怎样样具具体体地地实实现用户需要的软件系统现用户需要的软件系统,以便将来编写出的程序:以便将来
48、编写出的程序:l可读性好可读性好l容易理解容易理解l容易测试容易测试l容易修改和维护容易修改和维护是详细设计阶段最重要的目标。是详细设计阶段最重要的目标。结构化设计可以帮助人们实现上述目标。结构化设计可以帮助人们实现上述目标。6.6 小结小结人人机机界界面面设设计计是是接接口口设设计计的的一一个个重重要要的的组组成成部部分分。人人机机界界面面的的质质量量直直接接影影响响用用户户对对软软件件产产品品的的接受程度。接受程度。人机界面设计是一个迭代过程。人机界面设计是一个迭代过程。过过程程设设计计应应该该在在数数据据设设计计、体体系系结结构构设设计计和和接接口口设设计计完完成成之之后后进进行行,它它
49、的的任任务务是是设设计计解解题题的的详详细细步步骤骤( (即即算算法法) ),它它是是详详细细设设计计阶阶段段应应完完成成的的主主要工作。要工作。过过程程设设计计的的工工具具可可分分为为图图形形、表表格格和和语语言言3 3类类,这这3 3类类工工具具各各有有所所长长,读读者者应应该该能能够够根根据据需需要要选选用用适当的工具。适当的工具。6.6 小结小结当当应应用用领领域域中中信信息息有有清清楚楚的的层层次次结结构构,可可采采用用面向数据结构的设计方法完成过程设计。面向数据结构的设计方法完成过程设计。例如例如JacksonJackson结构程序设计技术。结构程序设计技术。使使用用环环形形复复杂杂度度可可以以定定量量度度量量程程序序的的复复杂杂程程度度,实实践践表表明明,环环形形复复杂杂度度V(G)=10V(G)=10是是模模块块规规模模的的合合理理上限。上限。6.6 小结及作业小结及作业浙江工商大学软件工程导论_6_详细设计