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

下载本文档

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

文档简介

1、详细设计一、详细设计及其任务二、结构程序设计三、人机界面设计四、详细设计的工具五、 Jackson程序设计方法六、程序复杂度的定量度量什么是详细设计?n 从软件开发的工程化观点来看,在使用程序设计语言编制程序以前,需要对所采用算法的逻辑关系进行分析,设计出全部必要的过程细节,并给予清晰的表达。这就是过程设计的任务。n 针对一个个模块的设计,是过程设计、算法设计。n 详细设计仅仅是设计出程序的“蓝图”,是编码的先导,但不是编写程序。模块的属性:功能、逻辑和状态模块的内部特性和外部特性详细设计的任务n 每个模块内的数据结构n 每个模块的控制算法n 内部接口描述n 为每一模块设计出一组测试用例(te

2、st cases) 。n 评审定义:结构化程序设计是一种设计程序的技术,它采用自顶向下逐步求精的设计方法和单入口单出口的控制结构。结构化程序设计的要点n 自顶向下逐步求精n 采用三种基本结构,消除goto语句n 设计单入口、单出口的模n1965年E. W. Dijkstra指出GO TO 语句对程序质量的负面影响,建议取消它。nBohm等证明了任何单入口单出口的程序都可以用“顺序”、“选择”和“循环”三种控制结构实现。nMills基于在IBM的实践,提出程序应该只有一个入口和一个出口。nWirth通过对抽象层次的论述,对逐步求精方法进行了肯定。n经典的结构程序设计经典的结构程序设计Seq; i

3、f-then-else; do-While n扩展的结构程序设计扩展的结构程序设计增加do-case; do-untiln修正的结构程序设计修正的结构程序设计允许leave; breakn符合人类解决复杂问题的规律。n自顶向下逐步求精,使得相邻两次精化之间变化甚小,不难验证前后内容是否一致和有效。使得程序具有清晰的结构层次。n不使用GO TO 语句,避免了“病态连接”,消除“涟漪效应”,提高可理解性、可靠性、可测试性和可维护性。n清晰的模块化程序利于重用和复用。n利于程序的正确性证明和形式化开发。设计问题系统响应时间用户帮助设施出错信息处理命令交互设计过程(p111)人机界面设计指南(p112

4、)n系统响应时间(p110)n用户帮助设施(p110)n出错信息处理(p110)n命令交互(p111)n原型化设计与GUI工具n对GUI 设计模型的早期评价标准v 系统及其界面的规格说明书的长度和复杂程度决定了用户学习使用该系统所付出的代价。v 命令或动作的数量、命令的参数个数等对系统交互时间和效率的影响。v 命令或动作的数量、系统状态的数量对用户操作的影响(如迷航问题)。1) 界面风格、在线帮助、出错处理协议等决定了用户是否能够顺利接受你所设计的界面。程序流程图(Program flow diagram)N-S图(Nassi和Shneiderman提出)PAD图(Problem Analys

5、is Diagram)判定表(Decision Table)过程设计语言PDL(Program Design Language, also called or )n程序流程图也称为程序框图,程序流程图使用五种基本控制结构是: nN-SN-S图,即盒图n五种基本控制结构由五种图形构件表示nPAD也设置了五种基本控制结构的图式,并允许递归使用。对应于增量型循环结构for i := n1 to n2 step n3 do在PAD中有相应的循环控制结构n判定表用于表示程序的静态逻辑n在判定表中的条件部分给出所有的两分支判断的列表,动作部分给出相应的处理n要求将程序流程图中的多分支判断都改成两分支判断n

6、列出与一个具体过程(或模块)有关的所有处理。n列出过程执行期间的所有条件(或所有判断)。n将特定条件取值组合与特定的处理相匹配,消去不可能发生的条件取值组合。n将右部每一纵列规定为一个处理规则,即对于某一条件取值组合将有什么动作。nPDL是一种用于描述功能模块的算法设计和加工细节的语言。称为设计程序用语言。它是一种伪码。n伪码的语法规则分为“外语法”和“内语法”。nPDL具有严格的关键字外语法,用于定义控制结构和数据结构,同时它的表示实际操作和条件的内语法又是灵活自由的,可使用自然语言的词汇。PROCEDURE spellcheck IS BEGIN split document into s

7、ingle words lood up words in dictionary display words which are not in dictionary create a new dictionary END spellcheckn提供全部结构化控制结构、数据说明和模块特征。能对PDL正文进行结构分割,使之变得易于理解。n为了区别关键字,规定关键字一律大写,其它单词一律小写。或者规定关键字加下划线,或者规定它们为黑体字。n内语法使用自然语言来描述处理特性。内语法比较灵活,只要写清楚就可以,不必考虑语法错,以利于人们可把主要精力放在描述算法的逻辑上。n有数据说明机制,包括简单的(如标量

8、和数组)与复杂的(如链表和层次结构)的数据结构。n有子程序定义与调用机制,用以表达各种方式的接口说明。PROCEDURE spellcheckBEGIN-* split document into single wordsLOOP get next word add word to word list in sortorder EXIT WHEN all words processedEND LOOP -* look up words in dictionaryLOOP get word from word list IF word not in dictionary THEN -* disp

9、lay 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 and good word listEND spellche

10、ck面向数据结构的设计方法MJSD方法(Michael Jackson Structured Design method),是一种面向数据结构的设计方法,既可以表达程序结构,也能表达数据结构。Jackson设计方法与SD比较v 面向数据结构v 一般用于详细设计阶段v 设计工具不同问题结构(DFD)程序结构(SC)程序的过程性表示(PDL等)概要设计 详细设计 数据结构(Jackson图)程序结构( Jackson图 )程序的过程性表示( Jackson 伪代码)程序分析 程序设计 ABCABoCoAB*顺序A seq B Cend A 选择A select cond1 B or cond2 C

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

12、行end 产生表体产生行 seq 产生姓名产生类别产生津贴end 产生行产生名册 seq 产生表头产生表体end 产生行n分析并确定输入数据和输出数据的逻辑结构,并用Jackson图描绘这些数据结构(DS)。n找出输入DS和输出DS中有对应关系的数据单元。n用有关规则从描绘数据结构的Jackson图导出描绘程序结构的Jackson 图。n列出所有操作和条件(分支条件和循环结束条件),并且把它们分配到程序结构图的适当位置。n用Jackson伪代码表示程序。(参见P123实例)n为每对有对应关系的数据单元,按照其在数据结构图中的层次在程序结构图的相应层次画一个处理框;n根据输入数据结构中剩余的每个

13、数据单元所处的层次在程序结构图的相应层次分别为它们画上对应的处理框。n根据输出数据结构中剩余的每个数据单元所处的层次在在程序结构图的相应层次分别为它们画上对应的处理框。n一个正文文件由若干个记录组成,每个记录是一个字符串。n要求统计每个记录中空格字符的个数,以及文件中空格字符的总个数。n要求的输出数据格式是,每复制一行输入字符串之后,另起一行印出其空格数。最后印出整个文件的空格总数。例如,作为输入数据的正文文件为:How are you!Testing is a process of executing a program with the intent of finding an error

14、.那么,输出结果为:How are you!2Testing is a process of executing a program with the intent of finding an error.1315空格数输出表格串信息*表格体空格总数字符串空格o非空格o正文文件字符串*字符*统计空格处理字符串*印空格数程序体印总数印字符串分析字符串分析字符*处理空格o处理非空格o停止打开文件读入字符串初始化处理字符串*统计空格印空格数程序体印总数印字符串分析字符串分析字符*处理空格o处理非空格o关闭文件统计空格 seq 打开文件读入字符串初始化 totalsum:=0程序体iter until

15、 文件结束处理字符串seq 处理字符串end程序体end 印总数seq关闭文件停止统计空格 endn数据合法性检查和错误处理n顺序冲突n该方法具有一定的局限性和规模要求nT. McCabe 方法(环域复杂度)nHalstead 方法nM. R. Woodward方法(交叉点复杂度)nCard和Glass(定义了三个软件体系结构复杂度度量:结构复杂度、数据复杂度和系统复杂度)nOO度量(C&k度量、Lorenz和Kidd度量、面向操作的度量等)n程序图是“退化了的”程序流动图,即把程序流动图中每个处理符号都退化成一个点,原来连接不同处理符号的箭头变成连接不同点的有向弧。n程序图是一个有向

16、图(参见P128图6.15)。n入口点与出口点n环形复杂度 Cyclomatic Complexity强连通有向图中线性无关的有向环的个数。n对于强连通的有向图G,线性无关的有向环个数V(G)的计算公式: V(G) = m - n + p n m 为弧数n n 为节点数n p 为不连通部分的数目,由于程序图总是连通的,故 p = 1。n为了使程序图成为强连通的,须从出口点到入口点添加一条虚弧。74653TT2FX=X/AF1X=X + 1入口出口A1 AND B=0 A=2 OR X1PROC EXPA(A,B,X:REAL); BEGIN IF (A1 AND B=0 ) THEN X=X/A; IF (A=2 OR X1) THEN X=X + 1; END;V(G)=3nV(G)判定结点数1nV(G)环域数nV(G)m-n+p计算它的环形复杂度计算它的环形复杂度V(G)= 判定数+1 = 3+1 = 4234576891R1R2R3R4V(G)= 环域数 = 4V(G)= m n + p = 12 9 + 1nV(G)取决于程序控制流的复杂度,代表了程序结构的复杂度。程序内分支或循环数越大,环域复杂度越高。n环域复杂度是可加的。n基于环域复杂度的度量结果,可以对测试难度和软件可靠性进行预测。n 大量实验表明,V(G) 10 为宜。n多行顺序执行的语句和一行的复杂性一样。

温馨提示

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

评论

0/150

提交评论