您好,欢迎访问三七文档
第七章构件级设计7.1构件级设计的任务构件级设计的任务主要有两方面:其一是在软件体系结构设计的基础上,对软件结构图中的软件构件进行详细内部设计细节和控制过程的描述,即描述每一个构件确定采用的算法和块内数据结构。在描述时应有开发单位或设计人员自由选择某种规范的、具有清晰描述过程细节能力的表达工具。其二是编写软件的“构件级设计规格说明书”,这样在编码阶段,程序员就可以根据软件构件详细设计文档进行编码。构件级设计过程的工作1.确定每个构件采用的算法。选择某种适当的设计工具描述算法的过程,并写出构件的详细过程性描述;2.确定每一构件使用的数据结构;3.确定构件接口的详细信息,包括对系统外部的接口和用户界面,对系统内部其他模块的接口,以及关于构件输入数据、输出数据及局部数据的全部细节。在构件级设计阶段结束时,应该把上述工作的结果写入构件级设计规格说明书,作为下一阶段(编码阶段)工作的依据。7.2构件级设计的工具•进行软件构件设计时,应采用合适的方式来描述模块内问题解决过程的细节。•描述程序处理过程的工具称为构件级设计工具。•一般可以分为图形、表格和语言3类7.2.1常用图形描述工具1、程序流程图程序流程图又称程序框图,它是一种应用最广泛、最古老的软件设计工具。流程图的组成很简单,其中方框表示处理步骤,菱形框代表逻辑条件,而箭头则表示控制流向。它的优点主要是:表达算法简明直观,易于理解,便于初学者掌握。程序流程图的主要缺点如下:(1)图形只描述了流程,并不表示数据结构。(2)控制流由箭头表示,使得程序员可以不顾结构化设计原则,随意转移控制。(3)使程序员过早考虑程序的控制流程,不考虑程序的全局结构,本质上不支持逐步求精。(4)程序流程图的每个符号对应于源程序的一行代码,对于提高大型系统的可理解性作用甚微。为使程序流程图能描述结构化程序,应限制流程图只能由图7.2所示的顺序结构、条件结构、两种循环结构及多分支结构这几种基本结果组成。结构可以互相嵌套,形成更复杂的组合结构。图7.2程序流程图基本结构标准流程图示例2、盒图(N-S图)盒图的提出是出于要有一种不允许违背结构程序设计精神的图形工具的考虑,避免流程图在描述程序逻辑时的随意性与灵活性。盒图用图形的方法描述处理逻辑,以一种结构化的方式,严格限制一个处理到另一个处理的控制转移,也叫N-S图。盒图(N-S图)N-S图的主要优点是简单易学,描述的处理逻辑一定是结构化的,保证了程序质量;所有程序结构均用方框来表示,易于表达嵌套结构,也可以表示模块的层次结构,程序的结构清晰可见;N-S图只有一个入口和一个出口,不能随意的控制转移,保证了程序有良好的结构,而且功能域(即,一个特定控制结构的作用域)明确,形象直观,具有良好的可见度。坚持使用盒图作为详细设计的工具,可以使程序员逐步养成用结构化方式思考问题和解决问题。N-S图的主要缺点是修改比较困难。3、PAD图(问题分析图)PAD图是问题分析图(problemanalysisdiagram)的英文缩写,它是又一种主要用于描述软件详细设计的图形表示工具,现已得到一定程度的推广。PAD图用二维树型结构图表示程序的控制流,将这种图翻译成程序代码比较容易。PAD图(问题分析图)AB(a)顺序结构ABP(b)选择结构WHILEPS(c)WHILE型循环结构UNTILPS(d)UNTIL型循环结构A1A2P=An…P1P2Pn(e)多分支结构(f)语句标号(g)定义PAD图的基本符号前面图7.3实例对应的PAD图开始结束7.2.2判定表工具当算法中包含多重嵌套的条件选择时,用程序流程图、盒图、PAD图或后面即将介绍的构件级设计语言(PDL)都不易清楚地描述。然而判定表却能够清晰地表示复杂的条件组合与应做的动作之间的对应关系。一张判定表由4部分组成,左上部列出所有条件,称为条件桩,左下部是所有可能做的动作,称为动作桩,右上部是条件项,表示各种条件组合的一个矩阵,右下部是动作项,是和每种条件组合相对应的动作。判定表中任何一个条件组合的特定取值及其相应要执行动作称为规则,右半部的每一列实质上就是一条规则,判定表中列出多少组条件取值,也就有多少条规则。实例问题描述:“…某公司规定,对于大于70马力的机器或已运行15年以上的机器,应给予优先维修处理…”。用判定表可以清楚地表示与上述每种条件组合相对应的维修处理的算法,如表7.1所示。表7.1用判定表计算行李费的算法1234功率大于70马力FTTT运行超过15年FFFT优先维修处理×××作其他处理×7.2.3伪代码工具伪代码(PseudoCode)也称为伪码,它是一种用比较灵活的伪码语言(PDL)进行构件级设计的文字描述工具。它并非是真正的代码,也不能在计算机上执行,但形式上与代码相似。它比较灵活,用它来描述软件设计,工作量比画图小,又较易转换为真正的代码。伪码的结构一般分为内外两层,外层语法应符合一般程序设计语言常用的语法规则,而内层语法则用一些简单的句子、短语和通用的数学符号,来描述程序应执行的功能。IF条件1到n条语句ELSEIF条件1到n条语句┆ELSEIF条件1到n条语句ENDIFDO判断重复的条件1到n条语句ENDDO图7.8PDL描述的IF结构图图7.9PDL描述的IF结构伪码作为详细设计工具有如下一些优点:已经有自动处理程序存在,可以自由转换,由于处理的描述与自然语言接近,所以便于程序员理解。可以作为注释直接插在源程序中间,有助于保护程序和文档的一致性;可以使用普通的正文编辑程序或文字处理系统方便地完成书写和编辑;PDL的缺点是不如其他图形工具形象直观。描述复杂的条件组合与动作间的对应关系时,不如判定表清晰简单。7.3程序设计语言的特性7.3.1心理特性语言的心理特性指影响程序员心理的语言性能,许多这类特性是作为程序设计的结果而出现的,虽不能用定量的方法来度量,但可以认识到这类特性在语言中的表现形式:二义性、简洁性、局部性和顺序性、传统性。7.3程序设计语言的特性7.3.2工程特性为满足软件工程的需要,程序设计语言还应考虑:源代码的可移植性。要增强可移植性,就必须在设计时考虑模块与操作系统的特性不应有紧密的联系,同时要使用标准语言和标准的数据库操作,并且对程序中各种可变信息均应参数化,以便于修改。配套的开发工具。有效的软件开发工具可以缩短编码时间,改进源代码的质量。可维护性。源程序的可维护性对复杂的软件项目尤其重要。源程序的可读性、语言的文档化特性,对软件的可维护性具有重大的影响。可重用性。编程语言能否提供可重用的软件成分,这是程序设计语言中最重要的工程特性。将设计变换为源程序的便利程度以及编译器的有效性等,都是程序设计语言的重要工程特性。7.4程序设计语言的基本机制程序设计语言的基本机制包括:1.对象说明预先说明程序中将要使用的常量、变量的名字和类型、过程或函数以及定义将要使用的类、类的实例等,便于编译程序检查使用方式的合法性,从而帮助程序员发现错误。2.数据类型的定义数据类型定义是一种抽象机制,例如类就是一个高度抽象的概念,类将数据结构和作用在数据结构上的一组操作封装成一个整体。7.2程序设计语言的基本机制3.子程序是可独立编译的程序单元,包含自己的数据结构和控制结构。在不同的语言中,子程序称作子例程、过程或函数。子程序一般具备如下三种机制:①子程序说明,它给出子程序与其他程序单元的接口;②子程序体,它实现子程序的数据和控制结构;③调用方式。方法是类的实例对象提供给外界的接口,对象的数据结构必须由该类的方法来修改,其他的操作只有通过该接口才能进行一定权限的访问。消息是对象的方法之间进行通信的基本机制,也是唯一的机制。7.2程序设计语言的基本机制4.几乎所有现代程序设计语言都允许程序员使用顺序、分支和循环三类结构,甚至许多语言的结构编辑器直接给出它们对应的语法框架。而在面向对象程序设计语言中,最基本的机制除了类、对象之外,类之间存在继承关系,而对象之间通过消息传递以及动态链接等机制进行控制。7.5程序设计风格7.5.1命名程序设计过程要涉及到对变量、常量、函数、类、对象等编程元素进行命名。一个变量的作用域越大,它的名字所携带的信息就应该越多。所以,命名是良好程序设计风格的第一步。7.5程序设计风格7.5.2表达式和语句名字的合理选择可以帮助读者理解程序,同样,我们也应该以尽可能一目了然的形式写好表达式和语句。应该写最清晰的代码,通过给运算符两边加空格的方式来帮助阅读,用加括号的方式排除二义性,用缩行显示程序的结构,不要一行多条语句,避免复杂的判定条件,避免多重循环嵌套,以及在表达式中使用括号以提高运算次序的清晰度等。这些都是很琐碎的事情,但却又是非常有价值的。采用一种一致的风格,是使程序呈现出结构清晰的最省力的方法。7.5程序设计风格7.5.3程序注释注释是帮助阅读和理解程序的一种有效手段,用自然语言或伪码描述。注释说明了程序的功能,特别是在维护阶段,对理解程序提供了明确的指导。注释一般分为序言性注释和功能性注释。每一个程序都由一个表明程序用途的序言性注释开始。7.5程序设计风格序言性注释应置于每个模块的起始部分,主要内容有:说明每个模块的用途、功能;说明模块的接口:调用形式、参数描述及从属模块的清单;数据描述:重要数据的名称、用途、限制、约束及其他信息;开发历史:设计者、审阅者姓名及日期,修改说明及日期。7.5程序设计风格功能性注释嵌入在源程序内部,说明程序段或语句的功能,以及数据的状态。注意以下几点:注释用来说明程序段,而不是每一行程序都要加注释;使用空行、缩格或括号,以便很容易区分注释和程序;修改程序的同时要修改注释。7.5程序设计风格7.5.4输入与输出在编写输入和输出程序段时应考虑以下原则:输入操作步骤和输入格式应尽量简单;应检查输入数据的合法性、有效性,报告必要的输入状态信息及错误信息;输入一批数据时,使用数据或文件结束标志,而不要用计数来控制;在进行交互式输入时,提供可用的选择和边界值;当程序设计语言有严格的格式要求时,应保持输入格式的一致性;输出数据表格化、图形化。7.46程序设计语言的选择7.6.1程序设计语言的分类程序设计语言是人和计算机通信的基本工具,它的特点不可避免会影响人思维和解决问题的方式,影响人和计算机通信的方式和质量。分类:1.基础语言;2.结构化语言;3.面向对象语言。7.6程序设计语言的选择7.6.2程序设计语言的选择D.A.Fisher说过:“程序设计语言不是引起软件问题的原因,也不能用它来解决软件问题。但是,由于语言在一切软件活动中所处的中心地位,它们能使现存的问题变得较易解决,或者更加严重。”7.6程序设计语言的选择7.6.3程序设计支持环境一个富有吸引力的PSE应具备下列特性:通用性——适用于不同的语言、不同的应用领域和开发方法;适应性——通过开关设置,能配置出满足不同需要的PSE实例;开放性——能方便地增加新工具;支持重用——能支持可重用模块的存储、索引和查找;自控性——保证自身操作的正确和协调;自带数据库——提供数据库机制,存储、管理已开发的软件产品;保证质量——有助于提高所开发软件的质量;吸引用户——用户愿意使用;具有市场竞争力——PSE能真正提高软件生产力。
本文标题:第7章 构件设计.
链接地址:https://www.777doc.com/doc-3202104 .html