第九讲详细设计_第1页
第九讲详细设计_第2页
第九讲详细设计_第3页
第九讲详细设计_第4页
第九讲详细设计_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第九讲详细设计本讲(第六章)的主要内容一、详细设计及其任务二、结构程序设计三、人机界面设计四、详细设计的工具五、

Jackson程序设计方法六、程序复杂度的定量度量一、详细设计及其任务什么是详细设计?从软件开发的工程化观点来看,在使用程序设计语言编制程序以前,需要对所采用算法的逻辑关系进行分析,设计出全部必要的过程细节,并给予清晰的表达。这就是过程设计的任务。针对一个个模块的设计,是过程设计、算法设计。详细设计仅仅是设计出程序的“蓝图”,是编码的先导,但不是编写程序。模块的属性:功能、逻辑和状态模块的内部特性和外部特性详细设计的任务每个模块内的数据结构每个模块的控制算法内部接口描述为每一模块设计出一组测试用例(testcases)。评审二、结构程序设计定义:结构化程序设计是一种设计程序的技术,它采用自顶向下逐步求精的设计方法和单入口单出口的控制结构。结构化程序设计的要点自顶向下逐步求精采用三种基本结构,消除goto语句设计单入口、单出口的模3.结构程序设计的提出1965年E.W.Dijkstra指出GOTO语句对程序质量的负面影响,建议取消它。Bohm等证明了任何单入口单出口的程序都可以用“顺序”、“选择”和“循环”三种控制结构实现。Mills基于在IBM的实践,提出程序应该只有一个入口和一个出口。Wirth通过对抽象层次的论述,对逐步求精方法进行了肯定。4.结构程序设计的类型经典的结构程序设计

Seq;if-then-else;do-While扩展的结构程序设计

增加do-case;do-until修正的结构程序设计 允许leave;break5.结构程序设计的优点符合人类解决复杂问题的规律。自顶向下逐步求精,使得相邻两次精化之间变化甚小,不难验证前后内容是否一致和有效。使得程序具有清晰的结构层次。不使用GOTO语句,避免了“病态连接”,消除“涟漪效应”,提高可理解性、可靠性、可测试性和可维护性。清晰的模块化程序利于重用和复用。利于程序的正确性证明和形式化开发。三、人机界面设计设计问题系统响应时间用户帮助设施出错信息处理命令交互设计过程(p111)人机界面设计指南(p112)1.设计问题系统响应时间(p110)用户帮助设施(p110)出错信息处理(p110)命令交互(p111)2.设计过程(p111)原型化设计与GUI工具对GUI设计模型的早期评价标准系统及其界面的规格说明书的长度和复杂程度决定了用户学习使用该系统所付出的代价。命令或动作的数量、命令的参数个数等对系统交互时间和效率的影响。命令或动作的数量、系统状态的数量对用户操作的影响(如迷航问题)。界面风格、在线帮助、出错处理协议等决定了用户是否能够顺利接受你所设计的界面。3.人机界面设计指南(p112)四、详细设计的工具(P114)程序流程图(Programflowdiagram)N-S图(Nassi和Shneiderman提出)PAD图(ProblemAnalysisDiagram)判定表(DecisionTable)过程设计语言PDL(ProgramDesignLanguage,alsocalledStructuredEnglishorPseudocode)1.程序流程图程序流程图也称为程序框图,程序流程图使用五种基本控制结构是:

示例

程序流程图的标准符号循环的标准符号注解的使用多出口判断2.N-S图N-S图,即盒图五种基本控制结构由五种图形构件表示示例N-S图的嵌套定义形式3.问题分析图(PAD)

PAD也设置了五种基本控制结构的图式,并允许递归使用。

PAD描述的示例

对应于增量型循环结构

for

i:=n1to

n2step

n3do

在PAD中有相应的循环控制结构PAD的扩充控制结构4.程序流程的判定表判定表用于表示程序的静态逻辑在判定表中的条件部分给出所有的两分支判断的列表,动作部分给出相应的处理要求将程序流程图中的多分支判断都改成两分支判断

无多分支判断结构

建立判定表的步骤列出与一个具体过程(或模块)有关的所有处理。列出过程执行期间的所有条件(或所有判断)。将特定条件取值组合与特定的处理相匹配,消去不可能发生的条件取值组合。将右部每一纵列规定为一个处理规则,即对于某一条件取值组合将有什么动作。

5.PDL(ProgramDesignLanguage)PDL是一种用于描述功能模块的算法设计和加工细节的语言。称为设计程序用语言。它是一种伪码。伪码的语法规则分为“外语法”和“内语法”。PDL具有严格的关键字外语法,用于定义控制结构和数据结构,同时它的表示实际操作和条件的内语法又是灵活自由的,可使用自然语言的词汇。示例:拼词检查程序PROCEDURE

spellcheck

IS

BEGIN

splitdocumentintosinglewords

loodupwordsindictionary

displaywordswhicharenotindictionary

createanewdictionary

END

spellcheck

PDL的特点提供全部结构化控制结构、数据说明和模块特征。能对PDL正文进行结构分割,使之变得易于理解。为了区别关键字,规定关键字一律大写,其它单词一律小写。或者规定关键字加下划线,或者规定它们为黑体字。内语法使用自然语言来描述处理特性。内语法比较灵活,只要写清楚就可以,不必考虑语法错,以利于人们可把主要精力放在描述算法的逻辑上。有数据说明机制,包括简单的(如标量和数组)与复杂的(如链表和层次结构)的数据结构。有子程序定义与调用机制,用以表达各种方式的接口说明。使用PDL语言,逐步求精:PROCEDUREspellcheckBEGIN

--*splitdocumentintosinglewords

LOOP

getnextword

addwordtowordlistinsortorder

EXITWHEN

allwordsprocessed

ENDLOOP--*lookupwordsindictionary

LOOP

getwordfromwordlist

IF

wordnotindictionary

THEN

--*displaywordsnotindictionary

displayword

promptonuserterminal

IF

userresponsesayswordOK

THEN

addwordtogoodwordlist

ELSE

addwordtobadwordlist

ENDIF

ENDIF

EXITWHEN

allwordsprocessed

ENDLOOP

--*createanewwordsdictionary

dictionary:=

mergedictionaryandgoodwordlistEND

spellcheck五、面向数据结构的设计方法面向数据结构的设计方法MJSD方法(MichaelJacksonStructuredDesignmethod),是一种面向数据结构的设计方法,既可以表达程序结构,也能表达数据结构。Jackson设计方法与SD比较面向数据结构一般用于详细设计阶段设计工具不同Jackson方法与SD比较问题结构(DFD)程序结构(SC)程序的过程性表示(PDL等)概要设计

详细设计

数据结构(Jackson图)程序结构(Jackson图)程序的过程性表示(Jackson伪代码)程序分析

程序设计

4.Jackson图与Jackson伪代码ABCABoCoAB*顺序Aseq

BCend A选择Aselectcond1B

orcond2C

end A重复Aiter

{while}cond

Bend A有关Jackson图的提示Jackson图既能表示数据结构,又能表示程序结构。表示数据结构时,用于表示数据元素彼此间的三种逻辑关系(顺序、选择和重复)。表示程序结构时,Jackson图表现的不是调用关系,一个方框中所包括的操作仅仅由它下层方框中的那些操作组成。一个方框也不能代表一个模块。改进的Jackson图(p121)实例:用Jackson图表示二维表格职工名册姓名类别津贴表示数据结构津贴教龄津贴o工龄津贴o名册表头表体行*表名行栏名行姓名类别产生津贴产生教龄津贴o产生工龄津贴o产生名册产生表头产生表体产生行*产生表名行产生栏名行产生姓名产生类别表示程序结构Jackson伪代码(过程性表示)产生表体

iter

while

小于或等于总人数 产生行end

产生表体产生行seq

产生姓名 产生类别 产生津贴end

产生行产生名册seq

产生表头 产生表体end

产生行5.Jackson程序设计步骤(P122)分析并确定输入数据和输出数据的逻辑结构,并用Jackson图描绘这些数据结构(DS)。找出输入DS和输出DS中有对应关系的数据单元。用有关规则从描绘数据结构的Jackson图导出描绘程序结构的Jackson图。列出所有操作和条件(分支条件和循环结束条件),并且把它们分配到程序结构图的适当位置。用Jackson伪代码表示程序。(参见P123实例)三条映射规则为每对有对应关系的数据单元,按照其在数据结构图中的层次在程序结构图的相应层次画一个处理框;根据输入数据结构中剩余的每个数据单元所处的层次在程序结构图的相应层次分别为它们画上对应的处理框。根据输出数据结构中剩余的每个数据单元所处的层次在在程序结构图的相应层次分别为它们画上对应的处理框。一个简单例子一个正文文件由若干个记录组成,每个记录是一个字符串。要求统计每个记录中空格字符的个数,以及文件中空格字符的总个数。要求的输出数据格式是,每复制一行输入字符串之后,另起一行印出其空格数。最后印出整个文件的空格总数。Cont.例如,作为输入数据的正文文件为:Howareyou!Testingisaprocessofexecutingaprogramwiththeintentoffindinganerror.那么,输出结果为:Howareyou!2Testingisaprocessofexecutingaprogramwiththeintentoffindinganerror.1315①分析并确定输入数据和输出数据的逻辑结构,并用Jackson图描绘这些数据结构空格数输出表格串信息*表格体空格总数字符串空格o非空格o正文文件字符串*字符*②找出输入DS和输出DS中有对应关系的数据单元。③从描绘DS的Jackson图导出描绘PS的Jackson图。首先为每对有对应关系的数据单元,按照其在DS图中的层次在PS图的相应层次画一个处理框;根据输入DS中剩余的每个数据单元所处的层次在PS图的相应层次分别为它们画上对应的处理框。根据输出DS中剩余的每个数据单元所处的层次在PS图的相应层次分别为它们画上对应的处理框。统计空格处理字符串*印空格数程序体印总数印字符串分析字符串分析字符*处理空格o处理非空格o④列出所有的操作和文件停止打开文件读入字符串初始化处理字符串*统计空格印空格数程序体印总数印字符串分析字符串分析字符*处理空格o处理非空格o关闭文件⑤伪码表示统计空格seq

打开文件 读入字符串 初始化totalsum:=0

程序体iteruntil文件结束 处理字符串seq

……

处理字符串end

程序体end

印总数seq

关闭文件 停止统计空格end基于数据结构设计的问题数据合法性检查和错误处理顺序冲突该方法具有一定的局限性和规模要求六、程序复杂度的定量度量T.McCabe方法(环域复杂度)Halstead方法M.R.Woodward方法(交叉点复杂度)Card和Glass(定义了三个软件体系结构复杂度度量:结构复杂度、数据复杂度和系统复杂度)OO度量(C&k度量、Lorenz和Kidd度量、面向操作的度量等)McCabe方法的基本概念程序图——是“退化了的”程序流动图,即把程序流动图中每个处理符号都退化成一个点,原来连接不同处理符号的箭头变成连接不同点的有向弧。程序图是一个有向图(参见P128图6.15)。入口点与出口点环形复杂度

CyclomaticComplexity——强连通有向图中线性无关的有向环的个数。环域复杂度的计算方法对于强连通的有向图G,线性无关的有向环个数V(G)的计算公式:

V(G)=m-n+pm为弧数

n为节点数

p为不连通部分的数目,由于程序图总是连通的,故

p=1。为了使程序图成为强连通的,须从出口点到入口点添加一条虚弧。74653TT2FX=X/AF1X=X+1入口出口A>1ANDB=0

A=2ORX>1PROCEXPA(A,B,X:REAL); BEGIN IF(A>1ANDB=0) THENX=X/A; IF(A=2ORX>1) THENX=X+

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论