已阅读5页,还剩39页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软件工程,1,1Jackson图,Jackson为了表达程序中使用的数据结构,使用了与程序结构相同的三种基本结构形式,即顺序结构、选择结构和重复结构。使用这三种基本的数据结构表达方法,可以形成更复杂的数据结构。,Jackson三种基本结构类型图,软件工程,2,1Jackson图,Jackson图有以下优点:便于表示层次结构,是对结构进行自顶向下分解的有力工具。形象直观,可读性好。能表示数据结构也能表示程序结构(因为程序结构也只有上述三种基本类型)。便于结构化程序设计,因为只使用了三种基本结构。Jackson图和描绘软件结构的层次图非常相似,但两者表示的含义有本质的不同。层次图中的一个方框通常代表一个模块,模块上下级之间表示的是调用关系,通常一个模块除了调用下级模块外,还完成其他操作;而Jackson图表示的是组成关系,在描绘程序结构时,一个方框并不代表一个模块,通常一个方框只代表几个语句,上层方框中包括的操作仅仅由它下层框中的那些操作组成。,软件工程,3,2图解逻辑,Jackson为了将Jackson图表达的设计思想用语言形式准确的描述出来,使用了与Jackson图完全对应的3种基本结构相对应的图解逻辑。图解逻辑是一种描述算法过程的语言,实际上它是一种伪码。与顺序结构相对应的Jackson图解逻辑,使用seq和end关键字:AseqdoB;doC;doD;Aend,软件工程,4,2图解逻辑,与选择结构相对应的Jackson图解逻辑,使用select、or和end是关键字,其中cond1、cond2和cond3分别是执行B、C或D的条件:Aselectcond1doB;orcond2doC;orcond3doD;Aend与重复结构相对应的Jackson图解逻辑,使用iter、until、while和end是关键字,其中cond是条件:Aiteruntil(或while)conddoB;Aend,软件工程,5,3JSP方法设计步骤,JSP设计方法分为五个步骤:第1步:将数据结构化表示。第2步:找出输入数据结构与输出数据结构的对应关系。第3步:确定程序结构。以输出数据结构为基础,将描绘数据结构的Jackson图映射成描绘程序结构的Jackson图。映射遵从下面三条规则:为每对有对应关系的数据单元,按照它们在数据结构图中的层次在程序结构图的相应层次画一个处理框。如果这对数据单元在输入数据结构和输出数据结构中所处的层次不同,则和它们对应的处理框在程序结构图中所处的层次与它们之中在数据结构图中层次低的那个对应。,软件工程,6,3JSP方法设计步骤,在输入数据结构中有,但与输出数据结构没有对应关系的数据单元,在程序结构图的适当位置上画一个程序框。在输出数据结构中有,但与输入数据结构没有对应关系的数据单元,在程序结构图的适当位置上画一个程序框。第4步:列出和分配可执行操作。第5步:用Jackson图解逻辑来表示程序。例设计一个程序,要求统计一个正文文件里每个记录中空格字符的个数,以及文件中空格字符的总个数。已知正文文件是由若干个记录组成,每个记录是一个字符串,字符串是由若干字符组成,而字符可能是由空格和非空格字符组成;输出数据的表格格式是,每复制一行输入字符串之后,另起一行印出这个字符串中的空格数,最后印出文件中空格的总个数。,软件工程,7,4JSP方法小结,JSP方法的基本思想是使程序结构与问题结构相对应,即与数据结构相对应。与传统的SD方法不同,JSP方法强调对问题解的组合而不是分解,而且两种方法有不同的出发点,一个是数据结构,一个是数据流。另外两种方法有不同的最终目的,SD方法得到的是软件结构的整体描述,JSP方法最后得到的程序过程描述实际上已接近详细过程描述。因此JSP方法的优点主要表现在以下几个方面:数据结构表现的结构型式与问题的结构型式一致,因而易于理解。当问题发生局部性变化时也易于修改。数据结构是对问题环境的客观猫述,这样就不会依赖于设计者自身的经验,使软件系统的开发“有章可循”。对能导出树型数据结构一类问题的设计是行之有效的,特别适合于以数据为主,顺序文件的处理以及“计算”较简单的事务型数据处理系统。,软件工程,8,4JSP方法小结,在JSP方法中关键是要找出输入数据和输出数据之问的对应关系,但是在许多软件项目中输入数据和输出数据之问很少有或者没有结构上的对应关系,特别是较大的系统往住涉及许多输入、输出数据,其结构不相对应产生结构冲突,此时使用JSP方法比较困难。另外,在软件生存周期中数据结构往往会发生变化,一旦数据结构改变。以数据结构为基础建立的程序结构也要改变,这样就给软件维护带来很大的不便。鉴于这种原因,可将SD方法同JSP方法结合起来使用,在总体设计阶段先用SD方法建立系统的总体结构,然后在详细设计阶段局部范围内使用JSP方法,这可能是一种更为有效的设计方法。,软件工程,9,3结构化设计,3.3.1结构化设计概述结构化设计是从整个程序的总体结构出发,突出程序模块层次性和调用的一种设计方法,它利用程序结构图表达程序模块之间的关系。由于数据流程图和程序结构图之间有一定的映射关系,因此结构化设计可以和需求分析所采用的结构化分析方法很好地进行衔接。,软件工程,10,3.3.1结构化设计概述,结构化设计具有如下特征:(1)理念。(2)方法手段。(3)适用范围。(4)特点。(5)优点。(6)所采用的工具。,软件工程,11,3.3.2结构化设计描述工具,总体设计阶段:系统结构图、层次图。详细设计阶段:程序流程图、盒图(N-S图)、PAD图、判定树、判定表、过程设计语言(PDL)。总体设计阶段(1)系统结构图系统结构图是软件系统的模块层次结构,它反映了整个系统的功能实现,即将来程序的控制层次体系。系统结构往往用树状或网状结构的图形来表示。结构图的主要内容有:模块、模块的控制关系、模块间的信息传递。,已,软件工程,12,(1)系统结构图,在系统结构图中,一个方框代表了一个模块,方框内注明了模块的名字或主要功能。方框之间的箭头(或直线)表示模块间的调用关系。位于上方的方框代表的模块总是调用下方的模块。系统结构图中通常还用带注释的箭头表示模块调用过程中来回传递的信息。注释箭头尾部的形状如果是空心圆则表示传递的是数据信息,如果是实心圆则表示传递的是控制信息。此外还有一些附加的符号可以表示模块的选择调用或循环调用。一般用菱形加连接线表示条件调用,弧形箭头表示循环调用。,已,软件工程,13,(1)系统结构图,结构图有以下一些形态特征:l深度:指结构图控制的层次,也是模块的层数。l宽度:指一层中最大的模块个数。l扇出:指一个模块直接下属模块的个数。l扇入:指一个模块直接上属模块的个数。,已,软件工程,14,(2)层次图和HIPO图,层次图用树状层次结构描述系统各个组成部分之间的关系,层次图中的一个矩形框代表一个模块,方框间的连线表示调用关系。它也可描述功能的组成关系和描述用户的组织结构。HIPO最初由美国IBM公司发明并在层次图的基础上发展起来。它是“层次图加输入/处理/输出图”的英文缩写。为了能使HIPO图具有可追踪性,层次图里除了最顶层的方框之外,每个方框都加了编号。H图中的每个模块都有张IPO图来描述这个模块的处理过程或算法,IPO图的编号为图中相应的模块编号。IPO图由输入、处理和输出三个框组成,需要时还可以增加一个数据文件框。,已,软件工程,15,(2)层次图和HIPO图,改进的IPO图,层次图例,HIPO中的层次图,已,软件工程,16,2详细设计阶段,程序流程图程序流程图(ProgramFlowDiagram简称PFD图)又称为程序框图。程序流程图使用的符号分为国际标准和国内标准,其中国内GB152689标准等同采用国际标准ISO5807985。使用程序流程图的主要优点是很直观地描述了程序的控制逻辑,便于初学者掌握,而且其表现方式较为灵活,使用起来非常方便。它的缺点也非常明显,主要有:,软件工程,17,(1)程序流程图,流程图中使用箭头可随意地将控制进行转移,这是不符合结构程序设计精神的。不易表示系统中所含的数据结构,程序流程图对数据结构的表述能力非常有限。不利于逐步求精的设计。为此,在使用程序流程图时,必须严格控制箭头流向,严格按照结构化设计的3种基本控制逻辑结构进行程序设计。所谓3种基本控制逻辑结构是指顺序、选择、循环三种结构。,软件工程,18,3种基本控制逻辑结构,通常我们把由这3种基本控制结构设计的程序称为经典的结构程序设计。有时为了实际使用方便起见,常常还允许使用DO-UNTIL和DO-CASE两种控制结构。如果设计程序时使用了这两种结构,则称为扩展的结构程序设计。,软件工程,19,(2)盒图(NS图),盒图是为了满足结构化需要,特别是取消了程序流程图随意跳转规则后而提出的。,5种控制结构NS图的符号,软件工程,20,(2)盒图(NS图),与程序流程图相比较,盒图具有如下明显的优点:l在盒图中不能任意转移控制。l特定控制逻辑的作用范围明确,可以从盒图上一目了然。l很容易确定局部和全程数据的作用域。l很容易表现嵌套关系,也容易表示模块的层次结构。l所有的程序结构均用方框表示。因此程序的结构非常清晰。l程序只有一个入口、一个出口,完全能够满足单人口单出口的结构化程序设计要求。l盒图形象直观,具有良好的可视性。循环的范围、条件语句的控制范围等都是一目了然的。l盒图简单,易学易用。主要缺点是:当程序内嵌套的层数增多时,内层方框会越来越小,一方面会增加画图难度,另一方面会影响图形的清晰度。,软件工程,21,(3)PAD图,PAD图是由日本日立公司的二村良彦等人于1973年提出的设计详细算法的图式,它用二维树图表示程序流程,是一种具有很强的结构化特征的分析工具。PAD图完全支持结构化设计方法。PAD图的基本图形符号见下图。,软件工程,22,(3)PAD图,PAD图具有以下优点:lPAD图描绘的程序结构清晰、易读、易懂、易记。lPAD图的符号支持自上而下、逐步求精方法的使用。lPAD图支持对数据结构进行描述。lPAD图更容易直接翻译成程序代码。正因为PAD图有上面的许多优点,所以PAD图已被ISO认可。但是它还存在缺点,那就是不适应初学者和算法未考虑成熟情况下的设计。,软件工程,23,(4)过程设计语言(PDL),PDL是一种混杂语言,混合使用叙述性说明文和某种结构化的程序设计语言的语法形式。PDL的结构和一般的程序很相像,它们都包括注释部分、数据说明部分和过程部分。因此PDL又称为伪程序或伪码。PDL与程序是完全不同的,它仅仅是算法的一种描述语言,它具有“非纯粹”的编程语言的特点。PDL的特点:外部语法同相应程序语言一致,内部语法使用自然语言,这样可以使过程的描述容易编写,容易理解也很容易转换成源程序。,软件工程,24,(4)过程设计语言(PDL),PDL具有很强的描述功能,是一种十分灵活和有用的详细设计表达方法,它具有如下优点:用PDL写出的程序,既可以很抽象,又可以很具体。因此,符合“自上而下、逐步求精”的设计原则。PDL虽不是程序设计语言,但它非常类似于高级程序设计语言。因此它是详细设计阶段很受欢迎的表达工具。PDL描述同自然语言很接近,易于理解。PDL描述可以注释形式嵌在程序中,成为程序的内部文档。PDL描述与程序结构相似,因此比较容易自动产生各种相关开发程序,提高软件生产率。PDL的缺点:不如图形描述形象直观,很容易使人陷入程序的具体细节中去,因此人们常常将PDL描述与具体的图形描述结合起来使用。,软件工程,25,(5)判定表,在进行软件设计时如遇到复杂的条件选择,有必要使用一种描述机制来清晰地表示复杂的条件组合与动作间的对应关系,判定表就是解决这一问题的有力工具。一张判定表由4部分组成。左上部列出所有条件;左下部列出所有可能做的工作;右上部每一列表示出各种条件的一种可能组合,填入“T”表示条件成立,填入“F”表示条件不成立,空白表示条件成立与否不影响。所以所有列表示条件组合全部可能情况;右下部的每一列是和每一种条件组合相对应的工作,填入“”表示在该列上部规定的条件下做该行左边列出的那项工作,空白表示不做该项工作。,软件工程,26,判定表的实例,例某校对于各种不同职称教师,根据是本校专职教师还是外聘兼职教师决定其讲课的每课时津贴标准。本校专职教师每课时津贴费:教授50元副教授40元。讲师30元,助教20元。外聘兼职教师每课时津贴费:教授60元,副教授50元,讲师40元,助教30元。,教师课时津贴判定表,软件工程,27,(6)判定树,判定树是判定表的图形化表示,是判定表的变种。由于判定表不直观,需要仔细推敲才能看出它的含义。所以引入判定树后,可以很直观地看出各种复杂的条件组合与相应的动作之间的对应关系。,教师课时津贴判定树,软件工程,28,3.5用户界面设计,用户界面又称人机界面或人机接口。用户界面设计是软件设计的重要组成部分。3.5.1用户界面设计的一般原则用户熟悉原则一致性原则可恢复性原则用户指南原则用户差异性原则3.5.2用户界面设计过程用户界面设计是以用户为中心,反复迭代的过程。,软件工程,29,用户界面设计过程图,软件工程,30,3.5.3用户界面设计经验,人机界面主要有5种交互方式,即菜单选择、表单填写、命令语言、直接操纵和自然语言。1.菜单选择l一致性:选择用户熟悉的术语、以一致的方式使用这些术语。l简明性:l把关键词置于菜单条名称的首位:l建立逻辑上相似的条目组:同一菜单下面每个菜单条目应和其他条目有相似之处。,软件工程,31,2.表单填写,l使用有意义的标题l给出简短的可以理解的说明l在表单上使用逻辑序列对字段进行逻辑排序和分组l以视觉上有感染力的方式设计表单l使用熟悉的字段标签l使用一致的术语和缩写l在数据输入字段周围定立分界l允许光标方便地移动l允许简单的错误更正l尽可能防止错误l当输入无效值后能提供出错信息l清楚标出任何一个可选字段。l给出单个字段的解释l清楚地用信号告知数据输入完成,软件工程,32,3.命令语言,l限制命令数量l选择有意义的独特的命令名l使用缩写要一致l命令语法的结构应该一致l采用提示帮助临时用户l考虑用命令菜单帮助临时用户,软件工程,33,4.直接操纵,l使用易于理解的图标:图标的意义应该尽可能明确,一个不恰当的图标不能很好地表示它的信息。l避免令人迷惑的类比:图标应以预期的方式工作。l不违反大众习惯:不同的用户群体可能对一个图标如何工作有不同的习惯。l为特有的目的使用图标。l仔细设计图标的交互。,软件工程,34,3.6设计质量的度量,目前研究人员提出了许多软件设计质量的度量测度,由于传统的软件设计和面向对象软件设计有根本性不同,所以这些设计质量的测度都是针对这两种设计提出的。如对传统的软件设计,主要包括体系结构设计的度量和模块级设计的度量。体系结构设计的度量有Card和Glass提出的三个复杂性测度,Henry和Kafura提出的复杂性测度等。模块级设计的度量有Bieman和Ott提出的内聚度量,Dhama提出的耦合度量及McCabe最先提出的环复杂度度量等。而对面向对象软件设计系统的度量着重于类的度量和操作的度量上。对类的度量有Chidamber和Kernerer提出的CK度量套件,对操作的度量有Lorenz和Kidd提出了三个简单的度量测度等。其中有的度量方法比较成熟,有些度量方法目前还处在发展过程中。,软件工程,35,3.6.1McCabe方法,McCabe方法是根据程序流程图的结构复杂度对软件复杂度和质量进行度量。McCabe方法由T.J.McCabe于1976年提出,McCabe把程序看成是有一个入口节点和一个出口节点的有向图。图中每个节点对应一个语句或一个顺序流程的程序代码块、弧对应于程序中的转移。这种图也称为程序控制结构图。用McCabe方法度量得出的结果称为程序的环形复杂度。它等于强连通的程序控制结构图中线性无关的有向环的个数。所谓强连通图是指从图中任一个节点出发都可以到达所有其它节点。程序控制结构图通常不是强连通的,因为从图中较低的(即较靠近出口点的)节点往往不能到达较高的节点。然而,如果从出口点到入口点画一条虚弧则程序控制结构图必然成为强连通的。,软件工程,36,3.6.1McCabe方法,McCabe方法的计算步骤分如下三步:步骤1:将程序流程图退化成有向图,即将程序流程图的每个处理框看作一个节点,将流线看作连接各节点的有向弧。步骤2:在有向图中,由程序出口到入口连接一条虚有向弧。步骤3:计算V(G)=m-n1其中,V(G)是有向图G中环数,m是有向图G中的弧数,n是有向图G中的节点数。实践表明,模块规模以V(G)10为宜,也就是说,V(G)=10是模块规模的一个更科学更精确的上限。,软件工程,37,3.6.2Halstead方法,Halstead的软件科学理论是最著名的和研究最完全的一种软件复杂度的复合度量理论。它是由HalsteadM.H于1977年提出的,并能根据程序中包含的运算操作符和操作数个数对程序复杂性进行度量的行代码度量方法。利用Halstead方法可以预测出程序长度、程序量并能预测出程序中可能包含的错误个数等。设N1为程序中实际出现的运算符总个数,N2为程序中实际出现的操作数总个数,程序长度N定义为:N=N1+N2。详细设计完成之后,可以知道程序中使用的不同运算符(包括关键字)的个数n1,以及不同操作数(变量和常数)的个数n2。Halstead给出预测程序长度的公式如下:,软件工程,38,3.6.2Halstead方法,H=n1log2n1+n2log2n2多次验证都表明,预测的长度H与实际长度N非常接近。Halstead也给出了程序量的计算公式,设程序量为V,则:V=Nlog2(n1+n2)Halstead还给出了预测程序中包含错误的个数的公式如下:E=Nlog2(n1+n2)/3000在设计完成之后估算时,可以用预测的长度H近似代替N。有人曾对从300条到12000条语句范围内的程序核实了上述公式,发现预测的错误数与实际错误数相比误差在8%之内。,软件工程,39,3.7软件设计CASE工具,每一种特定的CASE工具总是和特定的软件设计方法相联系。支持结构化的CASE设计工具至少应具备如下功能:l支持多种设计方法(如SA、面向数据结构方法等)。l能够定义全局结构图。l作为采用结构化方法的需求分析工具应当支持模块结构图的编辑功能。包括图形和文字的添加、删除、修改、模块搬移、模块复制等,支持模块索引的生成。l一致性检查功能,这些一致性包括模块的命名规则、接口参数顺序、连接顺序的一致性等。l支持相关软件结构定义文档报告的生成。,软件工程,40,3.7软件设计CASE工具,支持面向对象的CASE设计工具应具备如下功能:l支持典型的多种面向对象方法(如OOA/OOD、0MT、Booch、00SE方法等)。l支持类和对象的不同层次的视图。l支持类和对象的描述,自动建立相关类图和对象图的索引。l支持用户自定义类型和“模板类”的描述。l针对不同平台(程序语言),能够生成相应的框架代码。l支持相关文档报告的生成。l工具应能让多个用户在同一个模型上协同工作。,软件工程,41,3.7软件设计CASE工具,目前市场上有许多支持设计的CASE工具,在这些CASE设计工具中比较流行的产品有:MicrosoftVisio、PowerDesigner、IBMRationalRose、ERwin和ERStudio等。上述这些产品都是国外的CASE工具,国内有一款轻量级CASE工具PlayCASE,它全面支持软件生命各个周期,兼容结构化方法和面向对象方法,支持UML语言,能自动生成业务调查表、需求分析说明书、软件设计说明书和程序框架等,是一款相当不错的免费的CASE工具。,软件工程,42,本章小结,软件设计是软件开发过程中用以保证质量的关键步骤。软件设计的主要任务是根据用户需求也即需求规格说明导出系统的实现方案。在进行软件设计时应该遵循一些基本原则,其中最主要的原则是模块独立性和可重用性原则。软件设计又分为总体设计和详细设计两个阶段。总体设计将软件需求转化为数据结构和软件系统的总体结构并建立接口。在传统
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 房屋置换产权协议书
- 房屋补偿标准协议书
- 房屋解压协议书模板
- 房屋转送合同协议书
- 房租翻新协议书范本
- 房贷合同补偿协议书
- 房顶裂缝修补协议书
- 手工外发合同协议书
- 手机售后协议书模板
- 手机规范管理协议书
- 2025至2030年中国柠檬烯行业市场竞争格局及投资前景研判报告
- 2025至2030中国有机冷冻蔬菜行业市场发展现状及发展趋势与投资方向报告
- 中国人民公安大学《数据结构(Ⅰ)》2023-2024学年第二学期期末试卷
- 关于中心医院“十五五”发展规划(2025-2030)
- DB 32-T 3699-2019江苏省城市道路照明设施养护规程
- 托育机构消防安全检查
- 《高中生职业生涯规划指导》课件
- 磁共振技术知识讲解课件
- 学校征订教辅合同协议
- 新疆准噶尔盆地西缘(克拉玛依市)历史遗留废弃矿山生态修复示范工程(白碱滩区)建设项目环境影响报告表
- 校园舆情管理制度
评论
0/150
提交评论