软件详细设计课件_第1页
软件详细设计课件_第2页
软件详细设计课件_第3页
软件详细设计课件_第4页
软件详细设计课件_第5页
已阅读5页,还剩137页未读 继续免费阅读

下载本文档

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

文档简介

1、详细设计的目标,详细设计的根本目标是,软件详细设计,详细设计的基本任务,为每个模块进行详细的算法设计; 为模块内的数据结构进行设计; 对数据库进行物理设计; 其他设计: 确定程序模块间的详细接口,根据软件系统的类型,还可能要进行代码设计、输入输出格式设计、人机界面设计等设计; 编写详细设计说明书; 对详细设计进行评审,软件详细设计,第 6 章,详细设计(模块设计,软件详细设计,第6章 详细设计(模块设计,6.1 结构化程序设计(SP) 6.2 人机界面设计 6.3 过程设计工具 6.4 面向数据结构的设计方法 6.5 程序复杂程度的定量度量,软件详细设计,一. 结构化程序设计(SP)的主要思想

2、,6.1 结构化程序设计,主要思想 设计方法:自顶向下、逐步求精 结构化程序设计:指导人们用良好的思想方法开发出易理解、易验证的程序,软件详细设计,一. 结构化程序设计(SP)的主要思想,6.1 结构化程序设计,软件详细设计,二. 结构化程序设计(SP) 的三种基本控制结构,1966年,C.Bohm和G.Jacopini证明:只用三种基本控制结构就能实现任何单入口单出口的程序。 结构化程序设计的三种基本控制结构 共同特征:严格地只有一个入口和一个出口,6.1 结构化程序设计,软件详细设计,三. 结构化程序设计(SP)的设计准则,一个程序模块内的基本结构(即顺序、选择和循环)应尽量少; 将一个基

3、本结构组成一个容易识别的程序块; 程序块的入/出口都只有一个,6.1 结构化程序设计,软件详细设计,四. 如何把非结构化的程序转化成结构化的程序,1.重复编码法,6.1 结构化程序设计,软件详细设计,WHILE p DO BEGIN IF q THEN GOTO L1; A; B END; L1: 非结构化程序,四. 如何把非结构化的程序转化成结构化的程序,2.布尔标识法,6.1 结构化程序设计,bool := true; WHILE (p and bool) DO BEGIN IF q THEN bool := false ELSE BEGIN A; B END END; 结构化程序,软件详

4、细设计,图6.2 其他常用的控制结构,五、结构化程序设计,软件详细设计,经典的结构程序设计:只允许使用顺序、IF-THEN-ELSE型分支和DO-WHILE型循环这3种基本控制结构。 扩展的结构程序设计:还允许使用DO-CASE型多分支结构和DO-UNTIL型循环结构; 修正的结构程序设计:再加上允许在循环体中使用LEAVE(或BREAK)结构,五、结构化程序设计,软件详细设计,六. 结构化程序设计(SP)的优点,自顶向下、逐步求精:采用先整体后局部、先抽象后具体的方法开发出来的软件具有良好的结构,且开发出的程序易于理解; 单入口单出口:良好的结构特征,降低复杂度,增强可读性,可维护性,可验证

5、性等,从而提高软件开发工程的成功率和生产率; 有利于程序正确性的证明,6.1 结构化程序设计,软件详细设计,人机界面(Human-Computer Interface,简称HCI)又称人- 机接口或用户界面,它是用户与计算机系统交换信息的媒介,更是用户使用计算机系统的综合操作环境。 设计用户界面不仅需要计算机科学的理论和知识,而且需要认知心理学以及人-机工程学、语言学等学科的知识,人机界面概述,6.2 人机界面设计,软件详细设计,最有影响的事件和成果,1963年发明鼠标器的美国斯坦福研究所的 D.Engelbart,他预言鼠标器比其他输入设备都好,并在超文本系统、导航工具方面做了杰出的成果(A

6、ugmented Human Intellect project ),而获1997年ACM图灵奖。10年后鼠标器经不断改进,成为影响当代计算机使用的最重要成果,软件详细设计,最有影响的事件和成果,70年代Xerox研究中心的Alan Kay提出了Smalltalk面向对象程序设计等思想,并发明了重叠式多窗口系统。 1989年Tim Berners-Lee在日内瓦的CERN用HTML及HTTP开发了WWW网,随后出现了各种浏览器(网络用户界面),使互联网飞速发展起来,软件详细设计,最有影响的事件和成果,90年代美国麻省理工学院N.Negroponte领导的媒体实验室在新一代多通道用户界面方面(包

7、括语音、手势、智能体等),做了大量开创性的工作。 90年代美国Xerox公司PARC的首席科学家Mark Weiser首先提出“无所不在计算(Ubiquitous Computing)”思想,软件详细设计,人机界面的风格四代。 第一代界面命令和询问方式。 通信完全以正文形式并通过用户命令和用户对系统询问的响应来完成。例如: Drun prog1.exe /debug=on /out=pl /in=t1 /alloc=1000k RUN ALLOCATION TO BE QUEUED?yes AUTOMATIC CHECK POINTING INTERVAL?5 缺点:易出错、不友好,且不易于学

8、习,6.2 人机界面设计,人机界面概述,软件详细设计,第二代界面简单的菜单式,例如: choose program option that is desired: 1=input data manually 2=input data from existing data file 3=perform simplified analysis 4=perform detailed analysis 5=produce tabular output 6=produce graphical output 7=other options classes select option?_ 这种方式与命令行方

9、式相比不易出错,但使用起来仍然乏味,6.2 人机界面设计,人机界面概述,软件详细设计,第三代界面面向窗口的点选界面 (point and pick interface) 亦称为WIMP界面, 即:窗口(windows)、 四位一体, 图标(icons)、 形成桌面(desktop) 菜单(menus)、 指示器(pointing device,6.2 人机界面设计,人机界面概述,软件详细设计,第三代界面的优点 1能同时显示不同种类的信息,使用户可在几个工作环境中切换而不丢失几个工作之间的联系。 2用户通过下拉式菜单(pulldown menu)可方便地执行控制型和对话型任务。 3引入图标、按钮

10、和滚动条技术,可大大减少键盘输入,这对那些不精于打字的用户无疑提高了交互效率,极大地推动了计算机应用,6.2 人机界面设计,人机界面概述,软件详细设计,第四代界面: 最新一代HCI,把第三代HCI技术与超文本、多任务概念结合起来,使用户可同时执行多个任务(以用户的观点)。 第四代界面已出现在许多工作站和高性能PC机上,6.2 人机界面设计,人机界面概述,软件详细设计,人机界面技术的进展,自然、高效的多通道交互 移动手持设备的人机交互 智能用户界面,软件详细设计,1.自然、高效的多通道交互,软件详细设计,多通道用户界面,多通道交互(Multi-Modal Interaction):一种使用多种通

11、道与计算机通信的人机交互方式。采用这种方式的计算机用户界面称为“多通道用户界面”。 通道(Modality):源于心理学的概念,涵盖了用户表达意图、执行动作或感知反馈信息的各种通信方法,如言语、眼神、脸部表情、唇动、手动、手势、头动、肢体姿势、触觉、嗅觉或味觉等,软件详细设计,多通道交互,多通道交互是近年来迅速发展的一种人机交互技术,它既适应了“以人为中心”的自然交互准则,也推动了互联网时代信息产业(包括移动计算,移动通信、网络服务器等)的快速发展。 多通道交互的各类通道(界面)技术中,有不少已经实用化、产品化、商品化。其中我国科技人员做出了不少优异的工作,软件详细设计,手写汉字识别,中科院自

12、动化所开发的“汉王笔”手写汉字识别系统,经过近20年的研究和开发,已能识别27000汉字,当用非草写汉字、以每分钟12个汉字的速度书写时,识别率可达99.8%。我国现在已约有300万手写汉字识别系统的用户,软件详细设计,笔式交互技术,在笔式交互技术研究中,中国科学院软件所人机交互技术与智能信息处理实验室在笔式交互软件开发平台、面向教学的笔式办公套件(包括课件制作、笔式授课、笔式数学公式计算器、笔式简谱制作等)、面向儿童的神笔马良系统的开发应用方面均有出色的工作,其中不少已经实用化、产品化,软件详细设计,基于笔的字处理 EasyEditor,软件详细设计,手写数学公式,软件详细设计,视线跟踪(眼

13、动)技术,视线跟踪(眼动)技术由于其可能代替键盘输入、鼠标移动的功能,可能达到“所视即所得”(What You Look at is What You Get),因而对残疾人和飞行员等使用有极大的吸引力,软件详细设计,视线跟踪(眼动)技术,目前一类产品是采用头戴微型摄像头的设备,它用来获取两眼瞳孔(或角膜)中视点。其采样率、精度高,可靠,另一类是在PC机前装了两个微型摄像头的设备,精度不高,适合残疾人操作计算机使用,软件详细设计,2.移动手持设备的人机交互,软件详细设计,移动手持设备的交互,移动手持计算设备是指具有计算功能的PDA、掌上电脑、智能手机这类小型设备。将计算功能嵌入手机、通信功能加

14、入掌上电脑已成潮流,软件详细设计,移动手持设备的交互,北京大学人机交互和多媒体研究室,开发了TGH 是在手持移动设备上开发的一个导游系统,支持语音和笔的多通道交互方式。使用语音合成与文字、图片相结合的方式输出。其中引入了多种上下文辅助交互,如用户地理空间位置、用户移动方向、时间等,软件详细设计,3. 智能用户界面,软件详细设计,智能空间及智能用户界面,智能空间(Smart Space)是指一个嵌入了计算、信息设备和多通道传感器的工作空间。 由于在智能空间里,用户能方便地访问信息和获得计算机的服务,因而可高效地单独工作或与他人协同工作。 智能用户界面的最终目标是使人机交互成为和人-人交互一样自然

15、、方便,软件详细设计,智能空间及智能用户界面,国际上已开展了许多智能空间的项目,MIT Intelligent Room StanfordInteractive Workspace Georgia Tech. Aware Home Microsoft EasyLiving IBMBlue Space GMD iLand 清华大学智能教室,软件详细设计,MIT Intelligent Room,软件详细设计,清华大学智能教室,软件详细设计,设计人机界面,必须考虑四个方面: 系统的响应时间; 用户帮助设施; 出错信息处理; 命令方式。 1)系统响应时间指当用户执行了某个控制动作后(如,点击鼠标器等

16、),系统做出反应的时间(指输出信息或执行对应的动作)。 系统响应时间过长、不同命令在响应时间上的差别过于悬殊,用户将难以接受,6.2 人机界面设计,一. 设计问题,软件详细设计,2)用户都希望得到联机帮助。 联机帮助设施有两类:集成式和附加式。 集成式帮助一般都与软件设计同时考虑,上下文敏感,整个帮助过程快捷而友好; 附加式帮助一般是在软件完成后附上一个受限的联机用户手册。 此外,还要考虑诸如帮助范围(仅考虑部分还是全部功能)、用户求助的途径、帮助信息的显示、用户如何返回正常交互工作及帮助信息本身如何组织等一系列问题,6.2 人机界面设计,一.设计问题,软件详细设计,3)出错信息处理 出错信息

17、应选用用户明了、含义准确的术语描述,同时还应尽可能提供一些有关错误恢复的建议。此外,显示出错信息时,若辅以听觉(如铃声)、视觉(专用颜色)刺激,则效果更佳,6.2 人机界面设计,一.设计问题,软件详细设计,4)命令交互 键盘命令曾经一度是用户与软件系统之间最通用的交互方式,随着面向窗口的界面的出现,键盘命令虽不再是唯一的交互形式,但许多有经验的熟练的软件人员仍喜爱这一方式,更多的情形是菜单与键盘命令并存,供用户自由选用,6.2 人机界面设计,一.设计问题,软件详细设计,用户界面设计是一个迭代过程,直至与用户模型和系统假想一致为止,修改设计,创建新界面原型,用户评审界面,创建界面 原型1,初步设

18、计,设计人员分析 用户评审意见,界面设计 完毕,图12-3-1 界面设计演进过程,6.2 人机界面设计,二. 设计过程,软件详细设计,一. 过程设计工具分类,6.3 过程设计工具,图形,表格,语言,程序流程图 盒图(NS图) 问题分析图(PAD图) 判定树 判定表 过程设计语言PDL或伪码(Psudo-code,基于某种程序设计语言的源程序代码,要求:无二义性描述,软件详细设计,二. 程序流程图,历史最悠久,使用最广泛; 但使用最混乱. 程序流程图中使用的符号,6.3 过程设计工具,软件详细设计,程序流程图也称为程序框图,它使用五种基本控制结构,软件详细设计,软件详细设计,优点: 简单易用、容

19、易修改; 对控制流程直观、易于理解、易于复审,便于初学者掌握。 缺点: 诱使程序员过早考虑控制流程,而不考虑程序的全局结构;不是逐步求精的过程。 采用箭头表示控制流,随意转移控制,导致破坏结构程序设计的精神; 不易表示数据结构,数据的处理与变换不清楚,6.3 过程设计工具,二. 程序流程图,软件详细设计,三. 盒图(N-S图,不允许违背结构化程序设计精神 没有箭头,因此不允许随意转移控制。 由美国I.Nassi和B.Shneiderman,1973年提出。 功能域(即一个结构的作用域)明确 不可能任意转移控制 易于确定局部和全局数据的作用域 易于表现嵌套关系和模块的层次结构 坚持使用盒图作为详

20、细设计的工具,可以使程序员逐步养成用结构化的方式思考问题和解决问题的习惯,6.3 过程设计工具,软件详细设计,三. 盒图(N-S图,NS图的基本符号,6.3 过程设计工具,软件详细设计,三. 盒图(N-S图,例,6.3 过程设计工具,k,软件详细设计,四. 问题分析图(Problem Analysis Diagram 图,6.3 过程设计工具,PAD图 日立公司,1973年发明 采用二维树形结构来表示程序的控制流。 它即克服了传统的流程图不能清晰表现程序结构的缺点,又不像N-S图那样受到把全部程序约束在一个方框内的限制,这就是其优势所在,软件详细设计,四. 问题分析图(Problem Anal

21、ysis Diagram 图,Case分支 与分层结构 (用 def 细化处理框,P1,P2,Pn,X,L1 L2,Ln,P11,6.3 过程设计工具,def,软件详细设计,四. 问题分析图(Problem Analysis Diagram 图,开始,结束,6.3 过程设计工具,软件详细设计,四. 问题分析图(Problem Analysis Diagram 图,主要优点: (1)由该图设计出的程序必为结构化的 (2)结构非常清晰,竖线的条数即程序的层次数 (3)所表现的程序逻辑易读、易懂、易记 (4)可利用软件工具自动转换为高级语言源程序 (5)既可表示程序逻辑,也可描绘数据结构 (6)支持

22、自顶向下、逐步求精(利用def) 面向高级语言:FORTRAN,PASCAL等都有相应的图形符号,所以将PAD图转换成对应的高级语言程序比较容易,6.3 过程设计工具,软件详细设计,五. 判 定 表,判定表,6.3 过程设计工具,软件详细设计,建立判定表的步骤,五. 判 定 表,6.3 过程设计工具,软件详细设计,判定表的分析过程,五. 判 定 表,6.3 过程设计工具,软件详细设计,步骤1:求出各种判定条件可能的取值,五. 判 定 表,6.3 过程设计工具,软件详细设计,步骤2:根据条件取值数,计算条件组合数,五. 判 定 表,6.3 过程设计工具,软件详细设计,步骤3:在判定表中列出所有条

23、件组合,求出各组合的操作判定值,五. 判 定 表,6.3 过程设计工具,软件详细设计,五. 判 定 表,6.3 过程设计工具,软件详细设计,五. 判 定 表,6.3 过程设计工具,软件详细设计,五. 判 定 表,6.3 过程设计工具,软件详细设计,五. 判 定 表,6.3 过程设计工具,软件详细设计,五. 判 定 表,6.3 过程设计工具,软件详细设计,五. 判 定 表,6.3 过程设计工具,软件详细设计,五. 判 定 表,6.3 过程设计工具,软件详细设计,下面以行李托运费的算法为例说明判定表的组织方法。假设某航空公司规定,乘客可以免费托运重量不超过30kg的行李。当行李重量超过30kg时,

24、对头等舱的国内乘客超重部分每公斤收费4元,对其他舱的国内乘客超重部分每公斤收费6元,对外国乘客超重部分每公斤收费比国内乘客多一倍,对残疾乘客超重部分每公斤收费比正常乘客少一半,五. 判 定 表,6.3 过程设计工具,软件详细设计,五. 判 定 表,软件详细设计,判定表,适合描述:包含复杂的条件组合,并要根据这些条件选择动作执行的模块; 缺点: 不能表示:循环、顺序和选择。 当条件为多值条件时(如机票分为头等舱、二等舱、经济舱等多种级别),判定表的简洁程度也下降。 其含义不能一眼看出,初用者需要一个简短的学习过程,软件详细设计,六. 判 定 树,6.3 过程设计工具,判定树:判定表的变种;形式简

25、单,但简洁性不如判定表,软件详细设计,判定树,形式简单: 不用任何说明,一眼可看出含义;易学易用。 缺点: 简洁性较差: 同一个数据元素的值往往要要重复写多遍。 分支的次序:对判定树的简洁程度有较大影响,软件详细设计,七.过程设计语言PDL(伪码,6.3 过程设计工具,伪码:一种以正文形式表示数据和处理过程的设计工具,是一种混合语言。 伪码严格的关键字外部语法自然语言的词汇,用于定义控制结构和数据结构,灵活表示实际操作和条件,C、PASCAL,借用某种结构化的程序设计语言的语法控制框架,英语/汉语,某种自然语言,软件详细设计,1)、数据说明,格式: TYPE AS,其功能是定义数据的类型和作用

26、域,说明: 1. 变量名:是一个模块内部使用的变量或模块间共用 的全局变量名,2. 限定词1 :标明数据类型,3. 限定词2 :标明该变量的作用域,TYPE number AS STRING LENGTH (12,2)、程序块,PDL的过程成分是由块结构构成的,而块将作为 一个单个的实体来执行,BEGIN END,软件详细设计,3)、子程序结构,把 PDL 中的过程称为子程序,PROCEDURE INTERFACE END,4)、基本控制结构,IF THEN ; ELSE ; ENDIF,选择型结构,READ/WRITE TO,输入/输出结构,软件详细设计,DO WHILE ; ENDDO,R

27、EPEAT UNTIL ; ENDREP,重复型结构,DO LOOP ; EXIT WHEN ENDLOOP,DO FOR ; ENDFOR,重复型结构,多路选择结构,CASE OF ; WHEN SELECT ; WHEN SELECT ; DEFAULT: ; ENDCASE,软件详细设计,PDL的特性,七.过程设计语言PDL(伪码,6.3 过程设计工具,软件详细设计,示例:拼写检查程序,七.过程设计语言PDL(伪码,6.3 过程设计工具,软件详细设计,使用PDL语言逐步求精,七.过程设计语言PDL(伪码,6.3 过程设计工具,软件详细设计,使用PDL语言逐步求精,七.过程设计语言PDL(

28、伪码,6.3 过程设计工具,软件详细设计,PDL的优点,七.过程设计语言PDL(伪码,6.3 过程设计工具,软件详细设计,八. 总 结,6.3 过程设计工具,要求掌握: 程序流程图 NS图 PAD图 PDL语言(伪码) 判定树 判定表,软件详细设计,软件详细设计,面向数据结构的设计方法,原理:重复出现的数据通常由循环控制结构处理;选择数据通常由分支控制结构。 缺点:没有足够重视和体现模块独立原理 适用范围:详细设计阶段 面向数据结构的设计方法: Jackson方法:英国人M.Jackson在1973年提出 Warnier方法:法国人J.D.Warnier在1973年提出,6.4 面向数据结构设

29、计方法,软件详细设计,面向数据结构的设计方法,6.4 面向数据结构设计方法,软件详细设计,一. Jackson图,6.4 面向数据结构设计方法,Jackson图描述数据结构 小圈表示选择结构,星号表示重复结构,选择结构 根据条件, A是B或C或D中的某一个,重复结构 A由B出现N次(N0)组成,顺序结构 A由B、C、D 3个元素顺序组成 每个元素只出现一次,出现的次序依次为B、C、D,软件详细设计,Jackson图有下述优点: 1. 便于表示层次结构,而且是对结构进行自顶向下分解的有力工具; 2. 形象直观可读性好; 3. 既能表示数据结构也能表示程序结构(因为结构程序设计也只使用上述3种基本

30、控制结构,6.4 面向数据结构设计方法,一. Jackson图,软件详细设计,二. 改进的Jackson图,6.4 面向数据结构设计方法,改进: 选择条件或循环结束条件直接在图上表示出来,增强图的表达能力,容易直接把图翻译成程序 框间连线为直线而不是斜线,从而容易在行式打印机上输出,软件详细设计,二. 改进的Jackson图,6.4 面向数据结构设计方法,选择,重复,顺序,可选,在构成顺序结构的元素中不能有重复出现或选择出现的元素 即:第一个图中的不能是在右上角有小圆圈或星号的元素,软件详细设计,Jackson图、层次图和层次方框图的区别,6.4 面向数据结构设计方法,二. 改进的Jackso

31、n图,软件详细设计,三. Jackson方法,6.4 面向数据结构设计方法,软件详细设计,三. Jackson方法 1. 五个基本步骤,6.4 面向数据结构设计方法,软件详细设计,三. Jackson方法 1. 五个基本步骤,6.4 面向数据结构设计方法,软件详细设计,三. Jackson方法 1. 五个基本步骤,6.4 面向数据结构设计方法,总之,描绘程序结构的Jackson图应该综合输入数据结构和输出数据结构的层次关系而导出来。 步骤4:列出所有操作和条件(包括分支条件和循环结束条件),并分配到程序结构图的适当位置。 步骤5:用伪码表示程序。 伪码和Jackson图是完全对应的,软件详细设

32、计,顺序,A seq B C D A end,三. Jackson方法 1. 五个基本步骤,6.4 面向数据结构设计方法,3种基本结构对应的伪码,软件详细设计,选择,A select cond1 B A or cond2 C A or cond3 D A end,三. Jackson方法 1. 五个基本步骤,6.4 面向数据结构设计方法,软件详细设计,重复,A iter until cond B A end,A iter while cond B A end,三. Jackson方法 1. 五个基本步骤,6.4 面向数据结构设计方法,软件详细设计,八. 总 结,6.3 过程设计工具,要求掌握:

33、 程序流程图 NS图 PAD图 PDL语言(伪码) 判定树 判定表,软件详细设计,软件详细设计,面向数据结构的设计方法,6.4 面向数据结构设计方法,软件详细设计,二. 改进的Jackson图,6.4 面向数据结构设计方法,选择,重复,顺序,可选,在构成顺序结构的元素中不能有重复出现或选择出现的元素 即:第一个图中的不能是在右上角有小圆圈或星号的元素,软件详细设计,三. Jackson方法 1. 五个基本步骤,6.4 面向数据结构设计方法,软件详细设计,三. Jackson方法 1. 五个基本步骤,6.4 面向数据结构设计方法,软件详细设计,三. Jackson方法 1. 五个基本步骤,6.4

34、 面向数据结构设计方法,总之,描绘程序结构的Jackson图应该综合输入数据结构和输出数据结构的层次关系而导出来。 步骤4:列出所有操作和条件(包括分支条件和循环结束条件),并分配到程序结构图的适当位置。 步骤5:用伪码表示程序。 伪码和Jackson图是完全对应的,软件详细设计,6.4 面向数据结构设计方法,三. Jackson方法 2. 实例分析,软件详细设计,三. Jackson方法 2. 实例分析,6.4 面向数据结构设计方法,输入、输出的数据结构及对应关系分别为,输入数据结构 输出数据结构,6.4 面向数据结构设计方法,软件详细设计,三. Jackson方法 2. 实例分析,6.4

35、面向数据结构设计方法,3 导出程序JackSon结构图,软件详细设计,三. Jackson方法 2. 实例分析,6.4 面向数据结构设计方法,3 导出程序JackSon结构图,统计空格,程序体,处理字符串,印总数,I,处理非空格,处理空格,分析字符,S,印字符串,印空格数,分析字符串,I,软件详细设计,列出所有操作和条件,并且把它们分配到程序结构图的适当位置。 (1)停止(2)打开文件 (3)关闭文件(4)印出字符串 (5)印出空格数目(6)印出空格总数 (7)sum:=sum1 / sum是保存空格个数的变量 (8)totalsum:=totalsumsum/ totalsum保存空格总数

36、(9)读入字符串 (10) sum:=0 (11)totalsum:=0 (12)pointer:=1 /指示当前分析的字符在字符串中的位置 (13)pointer:=pointer1 I(1) 文件结束、I(2) 字符串结束 S(3) 字符是空格,三. Jackson方法 2. 实例分析,6.4 面向数据结构设计方法,软件详细设计,经过简单分析不难把这些操作和条件分配到程序结构图的适当位置,三. Jackson方法 2. 实例分析,6.4 面向数据结构设计方法,软件详细设计,5、写出伪码。 统计空格seq 打开文件 读入字符串 totalsum=0 程序体iter until文件结束 处理字

37、符串seq 印字符串seq 印出字符串 印字符串end sum=0 pointer=1 分析字符串iter until字符串结束 分析字符select字符是空格,软件详细设计,处理空格seq sum=sum+1 pointer=pointer+1 处理空格end 分析字符or字符不是空格 处理非空格seq pointer=pointer+1 处理非空格end 分析字符end 分析字符串end 印空格数seq 印出空格数目 印空格数end,软件详细设计,totalsum=totalsum+sum 读入字符串 处理字符串end 程序体end 印总数seq 印出空格总数 印总数end 关闭文件 停止

38、 统计空格end,软件详细设计,三. Jackson方法 3. Jackson方法小结,6.4 面向数据结构设计方法,软件详细设计,程序复杂度主要指模块内程序的复杂性。它直接关联到软件开发费用的多少,开发周期的长短和软件内部潜伏错误的多少。 减少程序复杂度,可提高软件的简单性和可理解性,并使软件开发费用减少,开发周期缩短,软件内部潜藏错误减少,6.5 程序复杂度定量度量,程序复杂度,软件详细设计,6.5 程序复杂度定量度量,定量度量程序复杂程度的用处: 程序的复杂程度乘以适当常数估算出软件中错误的数量以及所需的开发工作量,可用于比较两个不同的设计或两个不同算法的优劣; 可以作为模块规模的精确限

39、度,程序复杂度,软件详细设计,为了度量程序复杂性,要求复杂性度量应满足以下假设,对于不合理的程序,例如对于长度动态增长的程序,或者对于原则上无法排错的程序,不应当使用它进行复杂性计算,它可以用来计算任何一个程序的复杂性,软件详细设计,一. McCabe 方 法,6.5 程序复杂度定量度量,软件详细设计,什么是程序图,一. McCabe 方 法,6.5 程序复杂度定量度量,软件详细设计,程序图的基本元素,一. McCabe 方 法,6.5 程序复杂度定量度量,软件详细设计,一. McCabe 方 法,6.5 程序复杂度定量度量,软件详细设计,程序流程图与对应的流图,6.5 程序复杂度定量度量,软

40、件详细设计,一. McCabe 方 法,6.5 程序复杂度定量度量,流图中的结点可能具有以下的含义: 过程块:一组连续执行的无分支的语句。在过程块中,如果块中的某个语句被执行,那么块中的所有其它语句也将会被执行。 例如:结点2和3、4和5。反例:3和4不是过程块; 汇聚点:程序中控制流的结合点(如果程序流程图中这个结合点没有对应的处理框应该在流图中补上)。例如:结点9和10 判定点(谓词结点):程序中控制流的分叉点。 例如:结点3、6,软件详细设计,图 由PDL翻译成的流图,软件详细设计,一. McCabe 方 法,6.5 程序复杂度定量度量,环形复杂度V(G): 强连通图G中线性无关的有向环的个数。三种计算方法: V(G) = 图中平面区域的个数 V(G) = P(判定结点的个数)+ 1 V(G) = E(边数)N(结点数)+2,软件详细设计,环形复杂性的计算方法,6.5 程序复杂度定量度量,软件详细设计,环形复杂性的计算方法,6.5 程序复杂度定量度量,软件详细设计,环形复杂性的计算方法,6.5 程序复杂度定量度量,软件详细设计,一. McCabe 方法,6.5 程序复杂度定量度量,程序流程图,软件详细设计

温馨提示

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

最新文档

评论

0/150

提交评论