3.2结构化设计方法
考点3软件设计的基本概念
考点为重点掌握内容,读者应该识记模块独立性中的耦合性和内聚性。
误区警示:
在程序结构中,各模块的内聚性越强,则耦合性越弱。软件设计应尽量做到高内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性。
1.软件设计的基础
从技术观点上看,软件设计包括软件结构设计、数据设计、接口设计、过程设计。
(1)结构设计定义软件系统各主要部件之间的关系;
(2)数据设计将分析时创建的模型转化为数据结构的定义;
(3)接口设计是描述软件内部、软件和协作系统之间以及软件与人之间如何通信;
(4)过程设计则是把系统结构部件转换为软件的过程性描述。
从工程管理角度来看,软件设计分两步完成:概要设计和详细设计。
(1)概要设计将软件需求转化为软件体系结构、确定系统级接口、全局数据结构或数据库模式;
(2)详细设计确立每个模块的实现算法和局部数据结构,用适当方法表示算法和数据结构的细节。
2.软件设计的基本原理
(1)抽象:软件设计中考虑模块化解决方案时,可以定出多个抽象级别。抽象的层次从概要设计到详细设计逐步降低。
(2)模块化:模块是指把一个待开发的软件分解成若干小的简单的部分。模块化是指解决一个复杂问题时自顶向下逐层把软件系统划分成若干模块的过程。
(3)信息隐蔽:信息隐蔽是指在一个模块内包含的信息(过程或数据),对于不需要这些信息的其他模块来说是不能访问的。
(4)模块独立性:模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。模块的独立程度是评价设计好坏的重要度量标准。衡量软件的模块独立性使用耦合性和内聚性两个定性的度量标准。内聚性是信息隐蔽和局部化概念的自然扩展。一个模块的内聚性越强则该模块的模块独立性越强。一个模块与其他模块的耦合性越强则该模块的模块独立性越弱。
内聚性是度量一个模块功能强度的一个相对指标。内聚是从功能角度来衡量模块的联系,它描述的是模块内的功能联系。内聚有如下种类,它们之间的内聚度由弱到强排列:偶然内聚、逻辑内聚、时间内聚、过程内聚、通信内聚、顺序内聚、功能内聚。
耦合性是模块之间互相连接的紧密程度的度量。耦合性取决于各个模块之间接口的复杂度、调用方式以及哪些信息通过接口。耦合可以分为下列几种,它们之间的耦合度由高到低排列:内容耦合、公共耦合、外部耦合、控制耦合、标记耦合、数据耦合、非直接耦合。
在程序结构中,各模块的内聚性越强,则耦合性越弱。一般较优秀的软件设计,应尽量做到高内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性。
小提示:上面仅是对耦合机制进行的一个分类。可见一个模块与其他模块的耦合性越强则该模块独立性越弱。原则上讲,模块化设计总是希望模块之间的耦合表现为非直接耦合方式。但是,由于问题所固有的复杂性和结构化设计的原则,非直接耦合是不存在的。
考点4详细设计
考试链接:
考点4在笔试考试中,在笔试考试中出现的几率为30%,主要是以选择题的形式出现,分值为2分,此考点为识记内容,读者应该识记过程设计包括哪些常用工具。
详细设计的任务是为软件结构图中的每个模块确定实现算法和局部数据结构,用某种选定的表达表示工具算法和数据结构的细节。
详细过程设计的常用工具有:
(1)图形工具:程序流程图,N-S,PAD,HIPO。
(2)表格工具:判定表。
(3)语言工具:PDL(伪码)。
程序流程图的5种控制结构:顺序型、选择型、先判断重复型、后判断重复型和多分支选择型。
方框图中仅含5种基本的控制结构,即顺序型、选择型、多分支选择型、WHILE重复型和UNTIL重复型。
PAD图表示5种基本控制结构,即顺序型、选择型、多分支选择型、WHILE重复型和UNTIL重复型。
过程设计语言(PDL)也称为结构化的语言和伪码,它是一种混合语言,采用英语的词汇和结构化程序设计语言,类似编程语言。
PDL可以由编程语言转换得到,也可以是专门为过程描述而设计的。
疑难解答:程序流程图,N-S图,PAD图的控制结构的异同点是什么?
相同点是三种图都有顺序结构,选择结构和多分支选择,并且N-S图和PAD图还有相同的WHILE重复型、UNTIL重复型;不同点是程序流程图没有WHILE重复型、UNTIL重复型而有后判断重复型和先判断重复型。
3.3软件测试
考点5软件测试的目的