软件工程:第06章详细设计.ppt

上传人:牧羊曲112 文档编号:6063565 上传时间:2023-09-19 格式:PPT 页数:101 大小:4.05MB
返回 下载 相关 举报
软件工程:第06章详细设计.ppt_第1页
第1页 / 共101页
软件工程:第06章详细设计.ppt_第2页
第2页 / 共101页
软件工程:第06章详细设计.ppt_第3页
第3页 / 共101页
软件工程:第06章详细设计.ppt_第4页
第4页 / 共101页
软件工程:第06章详细设计.ppt_第5页
第5页 / 共101页
点击查看更多>>
资源描述

《软件工程:第06章详细设计.ppt》由会员分享,可在线阅读,更多相关《软件工程:第06章详细设计.ppt(101页珍藏版)》请在三一办公上搜索。

1、第六章 详细设计,How to do detailedly?,详细设计,详细地确定怎样具体地实现系统。给出目标系统的详细描述。设计模块内部的处理过程。结构化程序设计是详细设计的逻辑基础。为编码实现、测试方案设计提供蓝图。,第6章 详细设计,6.1 结构程序设计6.2 人机界面设计6.3 过程设计的工具6.4 面向数据结构的设计方法6.5 程序复杂程度的定量度量,6.1 结构程序设计,结构化程序设计“结构程序设计是尽可能少用GO TO语句的程序设计方法。最好仅在检测出错误时才使用GO TO语句,而且应该总是使用前向GO TO语句”,“程序的质量与程序中所包含的GO TO 语句的数量成反比”。E.

2、W.Dijkstra,1965。基本的程序控制结构Bohm和Jacopini证明了:3种基本的控制结构(顺序,选择,循环)就能实现任何单入口单出口的程序。实际上,顺序结构和循环结构理论上是的最基本的控制结构。,三种基本的控制结构,图6.1 3种基本的控制结构,顺序结构,分支结构,循环结构,其他常用的控制结构,图6.2 其他常用的控制结构,多项选择结构,后置循环结构,结构程序设计指导准则,经典的结构程序设计:只允许使用顺序、IF-THEN-ELSE型分支和DO-WHILE型循环这3种基本控制结构;扩展的结构程序设计:除了上述3种基本控制结构之外,还允许使用DO-CASE型多分支结构和DO-UNT

3、IL型循环结构;修正的结构程序设计:除上述结构以外,还允许使用LEAVE(或BREAK)结构。使用GO TO语句的原则:结构程序设计是不使用(或尽可能少用)GO TO语句的程序设计方法。仅在检测出错误时才使用GO TO语句,而且总是使用后向GO TO语句。,6.2人机界面设计,6.2.1设计问题6.2.2设计过程6.2.3人机界面设计指南,6.2.1设计问题,1.系统响应时间 响应时间的长度:适中相应时间的易变性:同一类操作的响应时间不要差异太大。2.用户帮助设施 脱机帮助手册附加的联机帮助集成的联机帮助上下文相关的联机帮助3.出错信息(及警告信息)处理 如何办,用户心理4.命令交互多媒体(图

4、,文,声,光)自定义宏指令控制序列(CTRL+字母),6.2.2设计过程,迭代的设计过程创建设计模型原型实现评估复审进一步精化评估复审的准则系统规格说明书的长度和复杂程度动作、命令中的包含的平均参数个数及操作个数设计模型中包含的动作、命令、状态的数量界面风格、帮助设施、出错处理的友好性,6.2.3人机界面设计指南,界面的类别界面应具有的基本特性界面设计指南界面设计的任务界面的基本形式(举例),用户界面的类别,一般交互界面“一般交互”包括信息显示、数据输入、系统整体控制。这一部分指南具有全局性意义,对系统界面好坏影响极大。信息显示界面指显示信息时要注意的问题。显示的信息应该是完整的、无二义的、好

5、理解的,这样才能满足用户要求。信息“显示”的不同方式:文字/图形/声音;不同位置/移动;不同大小;不同颜色/分辨率;等等。数据输入界面数据输入界面,是系统的重要组成部分。主要从输入效率和减少出错率考虑。用户一般会花费大量的时间在命令操作和数据输入操作,因此友好的数据输入操作非常必要。不同输入手段(介质/设备):键盘、鼠标、数字化仪、扫描仪、语音、照片、视频等等。,1、可使用性 使用简单 用户界面中所用术语的标准化和一致性 具有HELP功能 快速的系统响应和低的系统成本 具有容错能力2、灵活性 考虑用户的特点、能力、知识水平。提供不同的系统响应信息。提供根据用户需求制定和修改界面。3、界面的复杂

6、性与可靠性复杂性界面规模及组织的复杂程度。应该愈简单愈好。可靠性指无故障使用的时间间隔。用户界面应该能够保证用户正确、可靠地使用系统,及程序、数据的安全。,用户界面应具有的基本特性,一般交互界面设计指南,保持界面格式的一致性提供有意义的反馈信息重要操作要确认:如新增0次确认、修改1次确认、删除2次确认为大部分操作提供“回退”(Undo)减少两次操作之间的记忆的信息量(自动补充缺省值)提高操作效率:思考、对话、按键、光标移动等效率容许错误操作,出错后不会对系统造成严重影响操作功能/动作分类,屏幕合理布局提供操作的帮助设施简单易懂的命令名,信息显示界面设计指南,只显示当前工作相关的信息以合适的形式

7、显示信息:图形?图表?清单?以统一的风格显示信息:统一的标记、标准的缩写、预定的颜色、确定的位置等提供可视化的显示环境产生有意义的出错信息使用格式化的显示板式:大小写、缩进、文本分段等使用窗口分隔不同类型信息使用“模拟”显示方式表示信息:数字仪表盘技术合理高效地使用物理显示屏,数据输入界面设计指南,尽量减少用户的输入动作,使按键最少,如对相同内容输入设置默认值、自动填入、列表选择或点击选择等。保持信息显示和数据输入一致性:视觉效果一致容许用户自定义输入:为专家级用户提供的机制提供灵活的交互方式:键盘、鼠标等,适应不同用户休眠(disable)当前动作语境中不用的命令让用户控制交互流:灵活的操作

8、顺序和恢复机制对所有输入动作都提供帮助消除冗余的输入,用户界面设计的任务,1、用户特性分析 用户模型 了解所有用户的技能和经验,针对用户能力设计或更改界面。从以下方面分析:用户类型通常分为:外行型、初学型、熟练型、专家型。用户特性度量与用户使用模式和用户群体能力有关。包括:用户使用频度、用户用机能力、用户的知识、思维能力等。2、用户界面的任务分析 任务模型(DFD图)是对系统内部活动的分解,不仅要进行功能分解(用DFD图描述),还要包括与人相关的活动(人工操作)。每个加工即一个功能或任务。3、确定用户界面类型从用户角度出发,用户界面设计的类型主要有问题描述语言,数据表格、图形与图标、菜单、对话

9、框及窗口等。每一种类型都有不同的特点和性能。,用户界面的基本形式举例,菜单程序中功能的选择、数据的选择图象将数据可视化地展示图表显示统计数据、对比的数据仪表盘动态变化的数据、仿真的数据对话框初始数据、任意数据的输入窗口综合界面,可包含数据输入、信息显示、功能选择操作等。,菜单(menu),图3.54 混合菜单,图3.55 固定及下拉菜单,固定菜单,下拉菜单,按照显示方式正文菜单、图标菜单、正文和图标混合菜单,如:开始菜单按屏幕位置和操作风格固定位置、浮动位置(弹出)、下拉式、嵌入式,在用户界面中,加入丰富多彩的画面,将能够更加行象地为用户提供有用的信息,以达到可视化的目的。主要的处理操作有:图

10、象的隐蔽和再现、屏幕滚动和图案显示、动画等。,图象,图表,图表主要形式:折线图、直方图、饼图等图表的用途:显示时间变化数据、统计数据、对比数据等,仪表盘,仿真仪表面板,直观、动态地显示数据适合于动态数据、性能参数、比较数据的显示,对话框是在需要时,显示在屏幕上一个矩形区域内的图形和正文信息。通过对话,实现系统和用户之间的通信。对话框显示的方式与弹出式菜单类似,即瞬时弹出。同时,系统还应将对话框所覆盖的原图象进行保存,以便在对话结束后能立即恢复。有三种对话形式:,必须回答式如图3.58所示无需回答式 如图3.59所示警告式 如图4.58所示,图3.58 必须回答式对话框,图3.59 无需回答式对

11、话框,图3.60 警告式对话框,对话框,即视图区(Viewport),视为虚拟屏幕。一个实用窗口,可包含部件:菜单区(menu bar)图标区(icon bar)标题区(title bar)移动区(move bar)大小区(size bar)退出区(quit bar)用户工作区(users work bar)横向滚动区(horizontal scroll bar)纵向滚动区(vertical scroll bar),图3.61 窗口,窗口(window),用户界面实例,系统信息管理仪表盘界面设计,系统实时动态运行界面设计,6.3 过程设计的工具,6.3.1 程序流程图6.3.2 盒图(N-S图

12、)6.3.3 问题分析图(PAD图)6.3.4 判定表6.3.5 判定树6.3.6 过程设计语言(PDL),6.3.1 程序流程图,程序流程图的作用程序流程图(Progran flowchart)作为一种算法表达工具,是人们对解决问题的方法、思路或算法的一种描述。国家标准GB1525-89:信息处理-数据流程图,程序流程图,系统流程图,程序网络图和系统资源图的文件编制符号及约定国际标准化组织标准ISO5807-85:Information processing-Documentation symbols and comventions for data,program and system f

13、lowcharts,program network charts and system resources charts优点采用简单规范的符号,画法简单;结构清晰,逻辑性强;便于描述,容易理解。缺点本质上不是“自顶向下、逐步求精”的设计工具(容易引导过早关注细节)不是结构化设计工具(流向线可以随意连),程序流程图的基本符号,起始框终止框执行框判别框流线,程序流程图的符号,图6.3 程序流程图中使用的符号,程序流程图的符号(续),(a)判断(菱形)只有一个入口,但可以有一个或二个出口,在出口流线上注明判断的条件(真、假)(b)注解符(纵边线和虚线构成)用以标识注解的内容。(c)特定处理(带有双纵

14、边线的矩形)表示已命名的特定处理.该处理为在另外地方已得到详细说明,如子例行程序。(d)多重选择(多出口菱形)只有一个入口,但可以有多个可供选择的出口。在出口流线上注明满足选择条件的值。(e)端点符(扁圆形)表示转向外部环境或从外部环境转入.如程序流程的起始或结束,数据的外部使用起点或终点.(f)准备(六边形符号)它表示修改一条指令或一组指令以影响随后的活动.例如,设置开关,初始化例行程序.(g-h)循环界限(去角矩形)表示循环的开始和循环的结束.一对符号内应注明同一循环标识符。,程序流程图的符号(续),(i)虚线用于表明被注解的范围或连接被注解部分与注解正文。.(j)省略符(三点构成)若流程

15、图中有些部分无需给出符号的具体形式和数量,可用省略符。(k)并行方式(一对平行线)表示同步进行两个或两个以上并行方式的操作.。(l)处理(矩形)表示各种处理功能.例如,执行一个或一组特定的操作,矩形内可注明处理名。(m)数据(平行四边形)表示数据,其中可注明数据名,来源,用途或其它的文字说明。(n)连接符(圆形)用以表明转向流程图的它处,或从流程图它处转入.它是流线的断点,在圆形内注明断编号(符号)。(o)连接符(锥形)用以表明转向另一流程图,或从另一流程图转入.它是流线图的断点,在锥形内注明流程图编号(名称)。(p).流线(箭头直线)表示控制流的流向.,a,b,X1,X2,X7,X6,X4,

16、X3,X5,h,i,g,f,e,d,c,j,F,T,F,F,F,T,T,T,多分支选择结构,先判定型循环结构,选择结构,后判定型循环结构,程序流程图例,6.3.2 盒图(N-S图),盒图盒图(N-S图)是一种符合结构化程序设计(SP)的图形工具。其结构化具有强制性。N-S图的基本结构N-S图仅含有图6.4的5种基本成分,它们分别表示SP方法的几种标准控制结构。N-S图的数据盒和模块盒用NS图作为详细设计的描述手段时,常需用两个盒子:数据盒和模块盒。前者描述有关的数据,包括全程数据、局部数据和模块界面上的参数等,后者描述执行过程。N-S图的主要特点:每种结构的功能域明确不可能任意转移(go to

17、)控制很容易确定局部和全局数据作用域很容易表现结构的嵌套关系和模块的层次结构简单、易学易用NS图的缺点手工修改比较麻烦,这是有些人不用它的主要原因。,盒图,NS图基本结构,图6.4 盒图的基本符号,顺序,选择,多重选择,前置/后置条件循环,调用子程序,a,b,条 件 1,T,F,Case Xi,i=2,3,4,X2,X3,X4,当条件3成立,条 件 2,直到条件4成立,直 到 条 件 成立,c,d,e,f,g,h,i,j,顺序结构,选择结构,多分支选择结构,先判定型循环结构,后判定型循环结构,F,T,T,F,NS图举例,N-S图举例,模块的数据盒和过程盒,6.3.3 问题分析图(PAD图),P

18、ADPAD(Problem Analysis Diagram,问题分析图)是日立公司创立的一种采用二维(平面)、树形结构表示程序的控制结构的结构化设计方法。PAD为多种高级程序设计语言(Fortran、Cobol、Pascal等)根据其语言结构特点都设计了一套符号。PAD的优点结构化:采用结构化的PAD设计出的程序必定是结构化的。程序结构清晰:垂直(竖线)方向表明了结构的顺序,水平方向(结构)表明了结构嵌套的层次及深度(竖线的数目)。程序逻辑清晰:很好地表现程序逻辑,易读、易懂、易记。自上而下、从左向右执行,可遍历程序的所有节点(图论中的“广度优先”遍历)。易于转换成高级程序设计语言的源程序:

19、PAD规范,易于自动转换,有利于提高软件可靠性和生产率。表达能力强:既可容易地表达程序逻辑,也可表达数据结构。支持“自顶向下、逐步求精”的设计方法:在上层进行抽象,使用“def”符号在下层逐步细化。PAD的不足水平嵌套层次太深时,表达显得有点凌乱。,PAD图的基本控制结构,(a)顺序结构(b)选择结构(c)多分枝选族结构(d)前置条件循环结构(e)后置条件循环结构(f)语句标号(g)定义,图6.5 PAD图的基本符号,PAD使用“def”逐步求精示例,图6.6 使用PAD图提供的定义功能来逐步求精的例子,PAD示例,BEGIN FIRST:=K1;SECOND:=0;FOR I:=2 TO N

20、 DO BEGIN IF KISECOND THEN BEGIN IF KIFIRST THEN BEGIN SECOND:=FIRST;FIRST:=KI END ELSE SECOND:=KI END ENDEND.,FIRST=KISECOND=0,SECOND=FIRSTFIRST=KI,SECOND=KI,PASCAL源程序段,对应PAD图,PAD应用示例,算法功能:在数组K1.N中(所有元素不小于0),找出最大(FIRST)和次大(SECOND)的数。,6.3.4 判定表,判定表表达复杂的条件组合与需执行的动作之间的对应关系的一种关系表。判定表由四部分组成:基本条件条件组合矩阵(规

21、则,或条件表达式)基本动作动作组合矩阵(条件组合对应要执行的动作)判定表特点可准确地表达“规则-操作”条件表达式(规则)可简化只适用于此,作为其他设计工具的补充,规则,动作,判定表:示例1,假设某航空公司规定,乘客可以免费托运重量不超过30kg的行李。当行李重量超过30kg时,对头等舱的国内乘客超重部分每公斤收费4元,对其他舱的国内乘客超重部分每公斤收费6元,对外国乘客超重部分每公斤收费比国内乘客多一倍,对残疾乘客超重部分每公斤收费比正常乘客少一半。,判定表:示例2,假设某大学要从学生中挑选男子篮球队队员,基本条件是:各门课程的平均分在70分以上,身高超过180米,体重超过75千克。需要从学生

22、登记表中挑选出符合上述条件的男同学,并列出他们的姓名和住址,以便进一步选拔。,6.3.5 判定树,判定树用树型结构表示条件组合与应做的动作之间的关系。是判定表的变种。判定树的特点与判定表相比,能更清晰地表达复杂的条件组合关系。形式简单,易于使用,易于理解所表达的条件-动作关系的含义。,判定树例,图6.6 用判定树表示计算行李费的算法,6.3.6 过程设计语言(PDL),PDL(Procedure Design Language)过程设计语言PDL也称为“伪码”或“伪语言”,是一种介于自然语言和程序设计语言之间的软件设计语言。PDL是非形式化比较灵活结构化的语言,用于描述模块内部过程的具体算法,

23、以便在开发人员之间比较精确的进行交流。PDL的语法PDL的语法是开放式的,其外层语法是确定的,采用类似于一般程序设计语言控制结构和关键字。为了区别关键字,关键字一律大写,其它单词一律小写。而内层语法则不确定,一般使用自然语言(或半形式化语言)来描述处理特性。内语法比较灵活,只要写清楚就可以,不必考虑语法错,以利于人们可把主要精力放在描述算法的逻辑上。这种语法一般称为“类-程序设计语言”,如Like-C,Like-JAVA,Like-Pascal等。,PDL特点、优点和缺点,PDL特点结构描述:固定的关键字词法;固定的程序结构语法;结构化的控制结构;模块化。处理描述:采用自然语言或半形式化语言描

24、述操作、处理。数据描述:规范的数据说明(定义),包括简单数据结构(如标量、数组)和复杂数据结构的定义(如记录、链表)。PDL优点PDL程序易于编写和编辑,使设计人员关注程序的逻辑而不是程序的语法。PDL程序转化成程序设计语言程序时,可用作很好的注释,提高了程序的可读性、可维护性。存在将PDL转化成程序代码的自动化工具。PDL缺点描述有些算法不如图形化工具形象直观。描述复杂的条件组合与动作间的对应关系时,不如判定表清晰简单。,PDL控制结构语法例,顺序结构p1;P2;pn,多分支选择结构DO CASE OF c c1:p1 c2:p2 cn:pn otherewise:pn+1ENDCASE,前

25、置循环结构WHILE c DO pENDDO,选择结构IF c THEN p1;ELSE p2;ENDIF,后置循环结构REPEAT p UNTIL c,示例:拼词检查程序,PROCEDURE spellcheckBEGIN-*split document into single words LOOP get next word add word to word list in sortorder EXIT WHEN all words processed END LOOP-*look up words in dictionary LOOP get word from word list IF

26、 word not in dictionary THEN-*display words not in dictionary display word prompt on user terminal IF user response says word OK THEN add word to good word list ELSE add word to bad word list ENDIF ENDIF EXIT WHEN all words processedEND LOOP-*create a new words dictionary dictionary:merge dictionary

27、 and good word listEND spellcheck,6.4 HIPO法,HIPO HIPO法(Hierarchy plus Input-Process-Output)即按功能层次的结构分析法,是1976年由 IBM 公司推出的软件分析及设计方法,又称HIPO图。基本思想结构化方法是以数据流,数据封闭性准则来分解的,HIPO法则是以功能、功能完备性准则逐层分解的。,层次图(H图),层次图(H图)表明各个功能的隶属关系。它是自顶向下逐层分解得到的。最高一层是整个系统的名称和系统的概括功能说明;第二层把系统功能展开,分成几个框;第二层功能进一步分解,就得到了第三层、第四层,直到最后一

28、层。每个框内都应有一个名字,用以标识它的功能。还应有一个编号,以记录它所在的层次及在该层次的位置。,软件工程,IPO图,IPO图为层次图中每一功能框详细地指明输入(I)、处理(P)及输出(O)。通常,IPO图有固定格式,处理操作部分总是列在中间,输入和输出部分分别在其左边和右边。由于某些细节很难在一张IPO图中表达清楚,常常把IPO图又分为两部分:概括的称为概要图(overview diagram)具体的称为详细图(detail diagram)。,概要IPO图 vs 详细IPO 图,概要IPO图用于表达对一个系统,或对其中某一子系统功能的概略表达,指明完成某一功能框规定的功能时需要哪些输入,

29、哪些操作和哪些输出。概要IPO在总体设计中处理。详细IPO 图详细表明输入、处理、输出三者之间的关系。输入和输出应是确定的文件和记录,或是文件和记录中的字段,以及具体介质和设备类型,处理框中的操作也应是具体的而不是含糊的,调用子程序时应标明子程序名。详细IPO在详细设计中处理。,层次图(H图),层次图(H图)表明各个功能的隶属关系。它是自顶向下逐层分解得到的。最高一层是整个系统的名称和系统的概括功能说明;第二层把系统功能展开,分成几个框;第二层功能进一步分解,就得到了第三层、第四层,直到最后一层。每个框内都应有一个名字,用以标识它的功能。还应有一个编号,以记录它所在的层次及在该层次的位置。,例

30、:盘存/销售系统的层次图,根据需求分析,系统应具备有以下功能:1)计算买主订单 2)准备销售报表 3)产生买主文件和应收帐发票4)运行更新的盘存文件 5)产生托运单和包装单 6)保证库存及时订货,例:盘存/销售系统的层次图说明,对应H图上1.1.0框的概要IPO图,输入 Input,输出 Output,处理 Process,从1.1.1框来,到 1.1.3框去,对应于H图1.1.2框的详细IPO图,HIPO法的特点,优点:简单易行,资料易于查找,不仅适于信息软件的开发,也可用于逻辑关系较复杂的应用软件缺点:无验证功能,功能完备性很难验证。未能反映系统性能要求。资料量大,不宜规模大的系统。,6.

31、4 面向数据结构的设计方法(Jackson方法),6.4.1 Jackson图6.4.2 改进的Jackson图6.4.3 Jackson方法,JSD系统方法简介,Jackson系统开发(JSD)方法是一种典型的面向数据结构的分析与设计方法。其分析的重点放在构造与系统相关的现实世界,并建立现实世界的信息域的模型上。其最终目标是生产软件的过程性描述。前面介绍的结构化开发方法是一种面向数据流的开发方法,而Jackson系统开发方法则是面向数据结构的开发方法。其基本思想实现建立输入输出的数据结构,再将其转换为软件结构。Jackson方法由英国的M.Jackson提出,该方法特别适合于数据处理类问题。

32、如企事业管理一类的软件系统。,6.4.1 Jackson图,数据元素彼此间的基本逻辑关系只有顺序、选择和重复3类,因此,逻辑数据结构也只有这3类。1.顺序结构顺序结构的数据:由一个或多个数据元素组成,每个元素按确定次序出现一次。2.选择结构选择结构的数据:包含两个或多个数据元素,每次使用这个数据时按一定条件从这些数据元素中选择一个。3.重复结构重复结构的数据:根据使用时的条件由一个数据元素出现零次或多次构成。,Jackson图的三种结构,图6.8 顺序结构A由B、C、D 3个元素顺序组成,图6.9 选择结构根据条件A是B或C或D中的某一个,图6.10 重复结构A由B出现N次(N0)组成,6.4

33、.2 改进的Jackson图,上一小节介绍的Jackson图的缺点是:表示选择或重复结构时,选择条件或循环结束条件不能直接在图上表示出来;框间连线为斜线,层次结构不严谨。(旧理由:不易在行式打印机上输出。)改进Jackson图 上、下层之间的连线改成组织结构层次连线。在重复结构的连线上标注循环条件。在选择结构的连线上标注选择条件。增加单分支选择结构,即在无操作的选择臂上使用“无关”结点框。,6.4.2 改进的Jackson图,(a)顺序结构(b)多重选择结构,带选择条件(c)单臂选择结构,带选择条件(d)重复结构,带重复选择条件,图6.11 改进的Jackson图,Jackson图和软件结构层

34、次图不同,Jackson图和描绘软件结构的层次图形式类似,但是含义却很不相同。方框中内容不同层次图中的一个方框通常代表一个模块;Jackson图的一个方框只代表几个语句。上下方框之间的关系不同 层次图表现的是调用关系,通常一个模块除了调用下级模块外,还完成其他操作;Jackson图表现的是组成关系,一个方框中包括的操作仅仅由它下层框中的那些操作组成。,6.4.3 Jackson方法,JACKSON方法SD法是一种面向数据流的设计方法,JACKSON方法是一种面向数据结构的设计方法。强调程序结构与问题结构相对应。JACKSON方法的构成JACKSON方法由JSP(Jackson Structur

35、ed Programming)和JSD(Jackson System Development)方法构成。JSP法主要体现程序结构的设计,不严格区分软件概要设计和详细设计。可以根据JSP的规则直接导出程序结构。一般用于规模不大的数据处理系统,而且I/O数据结构容易描述的情况。JSD法是对JSP法的扩充,针对JSP法的缺陷而提出的解决方案。其主要特点是:用“分而治之”的策略控制系统的复杂性,解决I/O结构的冲突问题。,JSD方法的步骤如下,1、实体动作分析2、实体结构分析3、定义初始模型4、功能描述:详细说明与已定义的动作相对应的功能。5、绝对系统时间特性:对进程调度特性进行评价和说明。6、实现:

36、设计组成系统的硬件和软件。JSD方法的前三步属于需求分析阶段,后三步属于软件设计阶段。,例:文本输入输出数据结构的Jackson图,图6.12 表示输入输出数据结构的Jackson图,例:描绘统计空格程序结构的Jackson图,图6.13 描绘统计空格程序结构的Jackson图,把操作和条件分配到程序结构图的适当位置,图6.14 把操作和条件分配到程序结构图的适当位置,实体结构分析,1、建立数据结构:JACKSON方法中数据结构表示为树型结构,有顺序、选择和循环三种基本结构。2、以数据结构为基础,建立相应的程序结构图,也称为JACKSON图。当没有结构冲突时,转换过程是简单的。,JACKSON

37、方法的设计过程,例:合并文件,考虑输入和输出之间的对应关系:输入、输出数据结构在内容、数量、次序上是对应的。1、数据结构2、设计程序图,Jackson方法的技术构成,根据报文的中间结构,将输入数据结构转换为与输入的数据结构相对应,消除了结构冲突,图中将报文分析的数据结构转换为结构图。显然,中间结构的选取依赖于设计者对问题的理解及其设计者的设计风格。,回溯结构设计,以上回溯结构由三种构件组成:、Posit(假定):用于表示条件成立时的处理过程,进入Posit构件时程序状态就被保存起来。2、Quit(退出):当假定调解不成立,控制转向另一认可。3、Admit(认可):Admit构件提供了另一条处理

38、路径,在Admit的入口处程序无条件恢复到原有状态。,JACKSON方法的优点和缺点,优点:结构清晰、易理解、易修改。不会过多依赖于设计者的经验。缺点:当系统规模及复杂度大时,确定数据结构困难。,6.4 程序复杂程度的定量度量,程序的复杂程度定量度量的意义:把程序的复杂程度乘以适当常数即可估算出软件中错误的数量以及软件开发需要用的工作量,定量度量的结果可以用来比较两个不同的设计或两个不同算法的优劣;程序的定量的复杂程度可以作为模块规模的精确限度。介绍定量度量的二个著名方法6.4.1 McCabe方法6.4.2 Halstead方法McCabe和Halstead在70年代中期提出的度量方法是非常

39、著名的度量方法,直到今天还被激烈讨论。McCabe根据图论定义了“循环数”来得到一种软件复杂性度量方法,即著名的McCabe循环复杂度(Cyclomatic Complexity)。Halstead度是基于程序源代码。Halstead指出估计工作量,或者程序员工作时间,可以用运算符,运算元或语法数的函数来表示。,6.4.1 McCabe方法,McCabe方法概要McCabe方法根据程序控制流的复杂程度定量地度量程序的复杂程度,这样度量出的结果称为程序的“环形复杂度”。主要内容流图概念及变换计算环形复杂度的方法环形复杂度的用途,1.流图,流图“流图”是McCabe方法所基于的表示程序控制流的一种

40、图,也称为“程序图”。流图是退化的程度流程图,仅仅描述了程序的“控制流”,完全不表示程序中的具体操作和分支或循环的具体判定条件。流图的构成结点:流图中的圆点,表示一个元判定(最简单的条件),程序中连续的操作和接着的一个判定可映射成一个结点。边:流图中的箭头线,表示控制流,每条比边必须终止于某个结点。区域:由流图的边所围成的封闭区域,所有区域以外的开区域(这样的区域只有一个)也是流图的一个区域。,程序流程图映射成流图,图6.15 把程序流程图映射成流图,从程序(或程序段)的入口开始,按程序流程顺序处理;每个判定设置一个结点(如图1、3、6);将两个判定之间的所有连续操作忽略不计,或合并到后续的第

41、一个判定结点(如图2&3);后续没有判定的操作(或连续操作合并)各设置一个结点(如图7、8、4&5);每个结构的出口汇合点各设置一个结点(如图9、10);按照程序流程图的逻辑关系用边(箭头线)连接起来。,PDL翻译成流图,图6.16 由PDL翻译成的流图,包含复合条件的的流图,复合条件指含有布尔运算符的条件:and、or、nand、nor等复合条件的变换当程序中包含复合条件时,将其拆分成若干个简单条件(元条件),每个简单条件对应一个结点(如图a、b)。同一个复合条件中简单条件结点串联起来,且连接到同一操作结点。,图6.17 由包含复合条件的PDL映射成的流图,2.计算环形复杂度的方法,可采用下

42、面任何一种方法“流图G的环形复杂度”:使用区域数计算V(G)=D 其中D为区域数使用边与结点数计算:V(G)=E-N+2其中:E为边数,N为结点数使用判定结点数计算:V(G)=P+1其中:p为判定结点数例:如图4个区域:R1,R2,R3,R4V(G)=E-N+2=11-9+2=4V(G)=P+1=3+1=4,3.环形复杂度的用途,预测程序的复杂度程序的“环形复杂度”取决于程序控制流的复杂程度,即反映了程序控制结构(选择结构、循环结构)的复杂程度(选择结构、循环结构多少和条件的复杂程度)。因此,环形复杂度可用于预测程序的测试难度和预测软件可靠性。帮助控制程序模块的规模V(G)高的程序结构复杂,难

43、于实现,容易出错。因此,环形复杂度V(G)可用于帮组控制模块规模,参考的模块规模为V(G)10。,6.4.2 Halstead方法,Halstead方法概要根据程序中运算符和操作数的总数来度量程序的复杂程度。程序的总长度N的定义令N1程序中运算符出现的总次数N2程序中操作数出现的总次数则程序的总长度N定义为N=N1+N2程序的总长度H的预测令n1 程序中不同运算符(包括关键字)出现的总次数n2 程序中不同操作数(包括变量和常量)出现的总次数则程序的预测总长度H为H=n1 log2 n1+n2 long2 n2程序中错误数E的预测E=N log2(n1+n2)/3000,Halstead方法的评

44、价,可操作性强Halstead度量方法以程序中出现的操作符(Operator)和操作数(Operand)为计数对象,以它们的出现次数作为计数目标来测算程序容量和工作量。该方法可操作性强,易于使用、易于计算。应用性强(软件规模、开发、测试、错误度量)Halstead度量方法不仅仅度量了程序长度,还描述了程序的最小实现和实际实现之间的关系,并据此阐释程序语言的等级高低。还可预测程序中的错误数。计算结果与实测贴近根据试验统计,Halstead度量方法的计算结果(程序长度、错误数)与实际非常接近!,6.6小结,详细设计的关键任务在总体设计的基础上,进一步确定软件怎样具体实现。主要任务包括人机界面设计、

45、模块过程设计。人机界面设计(指导原则)重视4个人机界面设计问题:系统响应时间、用户帮助设施、出错信息处理、命令交互方式。领会3类人机界面设计指南:一般交互、信息显示、数据输入。过程设计(工具)掌握结构化设计工具(图形、表格、语言):程序流程图、盒图、PAD图、判定表、判定树、PDL、Jackson方法。程序复杂性度量(方法)McCabe方法:基于程序流中“循环数”的环形复杂度。Halstead方法:基于程序中运算符和运算数的程序长度。,习题6,1.假设只有SEQUENCE和DO-WHILE两种控制结构,怎样利用它们完成IF-THEN-ELSE操作?2.假设只允许使用SEQUENCE和IF-TH

46、EN-ELSE两种控制结构,怎样利用它们完成DO-WHILE操作?3.画出下列伪码程序的程序流程图和盒图:,习题6(续),4.图6.18给出的程序流程图代表一个非结构化的程序,问:(1)为什么说它是非结构化的?(2)设计一个等价的结构化程序。(3)在(2)题的设计中使用附加的标志变量flag了吗?若没用,再设计一个使用flag的程序;若用了,再设计一个不用flag的程序。,图6.18 一个非结构化程序,习题6(续),5.研究下图所示的伪码程序,要求:(1)画出程序流程图。(2)程序是结构化的吗?说明理由。(3)若程序是非结构化的,设计一个等价的结构化程序并画出程序流程图。(4)此程序的功能是什

47、么?它完成预定功能有什么隐含的前提条件吗?,习题6(续),6.用Ashcroft_Manna技术可以将非结构化的程序转换为结构化程序,图6.19是一个转换的例子。(a)非结构化设计;(b)转换成的等价的结构化设计(1)能否从这个例子总结出Ashcroft-Manna技术的一些基本方法?(2)进一步简化图6.19(b)给出的结构化设计。,图6.19 用Ashcroft-Manna技术的例子,习题6(续),7.某交易所规定给经纪人的手续费计算方法如下:总手续费等于基本手续费加上与交易中的每股价格和股数有关的附加手续费。如果交易总金额少于1000元,则基本手续费为交易金额的8.4%;如果交易总金额在

48、1000元到10000元之间,则基本手续费为交易金额的5%,再加34元;如果交易总金额超过10000元,则基本手续费为交易金额的4%加上134元。当每股售价低于14元时,附加手续费为基本手续费的5%,除非买进、卖出的股数不是100的倍数,在这种情况下附加手续费为基本手续费的9%。当每股售价在14元到25元之间时,附加手续费为基本手续费的2%,除非交易的股数不是100的倍数,在这种情况下附加手续费为基本手续费的6%。当每股售价超过25元时,如果交易的股数零散(即,不是100的倍数),则附加手续费为基本手续费的4%,否则附加手续费为基本手续费的1%。要求:(1)用判定表表示手续费的计算方法。(2)用判定树表示手续费的计算方法。,习题6(续),8.画出下列伪码程序的流图,计算它的环形复杂度。这个程序的逻辑有什么问题吗?,习题6(续),9.把统计空格程序的Jackson图(图6.13)改画为等价的程序流程图和盒图。,图6.13 描绘统计空格程序结构的Jackson图,习题6(续),10.人机对话由操作员信息和系统信息交替组成。假设一段对话总是由操作员信息开始,以系统信息结束,用Jackson图描绘这样的人机对话过程。,

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号