2010年软件设计师考试复习资料 (42页完美打印版)
E-R图通常用于数据库应用系统。
9.2 结构化设计
结构化设计通常可分为概要设计和详细设计,但是主要用于概要设计阶段。概要设计的任务是确定软件系统的结构,进行模块划分,确定每个模块的功能、接口以及模块间的调用关系。详细设计的任务是为每个模块设计实现的细节。
9.2.1 概要设计
经过需求分析阶段的工作,系统必须“做什么”已经清楚了,概要设计的基本目的就是回答“概括地说,系统应该如实现?”这个问题。概要设计的重要任务: 将一个复杂的系统按功能化分为模块、确定每个模块的功能、确定模块之间的调用关系、确定模块之间的接口(模块之间传递的信息)、评价模块的结构质量。 1.软件结构图形工具
结构化设计方法(SD)方法采用结构图(Structure Chart)、层次图和HIPO图描述软件结构。
结构图的主要成分有模块、调用和数据,结构图中的模块用矩形表示,在矩形框内可标上模块的名字。模块间如有箭头或直线相连,表明它们之间有调用关系。
层次图用来描绘软件的层次结构.层次图中一个矩形框代表一个模块,方框间的连线表示模块间的调用关系.
共42页 第16页
2010年软件设计师考试复习资料 (42页完美打印版)
HIPO图实际上就是层次图加输入/处理/输出图. HIPO图是美国IBM公司发明的“层次图加输入/处理/输出图”,是在层次图里出了最顶层的方框之外,每个方框都加了编号。编号规则和数据流图的编号规则一样。
2.概要设计中的信息流
变换流:信息沿着输入通道进入系统,然后通过变换中心(也称主加工)处理,再沿着输出通道离开系统.具有这一特性的信息流称为变换流.具有变换流型的数据流图可明显地分成输入、变换(主加工)、输出三大部分。
共42页 第17页
2010年软件设计师考试复习资料 (42页完美打印版)
事务流:信息流沿着输入通道到达一个事务中心,事务中心根据输入信息(即事务)的类型在若干个动作序列(称为活动流)中选择一个来执行,这种信息流称为事务流。事务流有明显的事务中心,各活动以事务中心为起点呈辐射状流出。
9.2.2 详细设计
概要设计已经确定了每个模块的功能和接口,详细设计的任务就是为每个模块设计其实现的细节。
详细设计阶段的根本目标是确定应该怎样具体地实现所要求的系统,得出对目标系统的精确描述。 1.详细设计阶段的内容
? 为每个模块进行详细的算法设计。 ? 为模块内部的数据结构进行设计。 ? 对数据库进行物理设计。 ? 其他
详细设计工具主要包括程序流程图(系统流程图)、盒图(N-S图)、PAD图和伪码(PDL)。
2.人机界面设计
人机界面的设计质量,直接影响用户对软件产品的评价。界面的美观、灵活和风格都很重要,但人机界面设计中最重要的也是最基本的目标是软件的易操作性。人机界面设计主要包括系统响应时间、用户帮助设计、出错信息处理和命令交互设计等几个方面。 9.3 Jackson方法
上面讲的结构化设计方法是面向数据流的,另外还有一种面向数据结构的设计方法, Jackson方法是最著名的面向数据结构的设计方法,而不是面向数据流的设计方法。
Jackson方法的基本步骤是:建立系统的数据结构;以数据结构为基础,对应地建立程序结构;列出程序中要用到的各种基本操作,再将这些操作分配到程序结构适当的模块中。
9.4 面向对象分析方法(00A)
OTM方法的三个模型,分别从三个不同侧面描述了所要开发的系统:功能模型指明了系统应该“做什么”;动态模型明确了什么时候做;对象模型则定义了做事情的实体。
对象模型描述了系统中对象的静态结构及对象间的联系,用对象模型图来表示。
动态模型描述了与时间和操作次序有关的系统属性。
动态模型由多张状态图组成。各个类的状态图通过共享事件组成系统的动态模型。
功能模型描述系统内数据值的变化,它由数据流图组成。数据流图说明数据流是如何从外部输入、经过操
作和内部存储而得到输出的。
十.软件工具
软件工具是指用于辅助软件开发、运行、维护、管理、支持等过程中的活动的软件。通常也称为CASE(Computer Aided Software Engineering,计算机辅助软件工程)工具。
共42页 第18页
2010年软件设计师考试复习资料 (42页完美打印版)
按软件过程的活动分为软件开发工具、软件维护工具和软件管理工具等。
十一. 软件开发环境
集成型开发环境通常可由工具集和环境集成机制两部分组成。这种环境应具有开放性和可裁减性。环境集成机制主要有数据集成机制、控制集成机制和界面集成机制。
十二. 软件质量管理基础知识 12.1 软件质量
ISO/IEC 9126软件质量模型可从软件功能性、可靠性、可用性、效率、可维护性、可移植性6个方面来衡量。 (1).功能性
与功能及其指定的性质的一组软件属性。 (2)可靠性
软件在规定的一段时间内和规定的条件下保持其性能水平有关的一组软件属性。也可以称为在规定的条件下和规定的时间间隔内,软件实现其规定功能的概率。 (3)可用性
与使用的难易程度及规定或隐含用户对使用 方式所做的评价有关的软件属性。 (4)效率
与在规定条件的性能水平与所用资源量之间的关系有关的一组软件属性。 (5)可维护性
与软件维护的难易程序有关的一组软件属性。 (6)可移植性
软件可从某一环境转移到另一环境的能力有关的一组属性。即软件从一个计算机系统转换到另一个计算机系统运行的难易程度是指软件的可移植性。为了提高可移植性,应注意提高软件的设备独立性。采用表格驱动程序有助于提高设备独立性。为了提高可移植性,还应有完备的文档资料。使用C语言开发的系统软件具有较好的可移植性。 2006年下半年:
●按照ISO/IEC 9126软件质量度量模型定义,一个软件可靠性的子特性包括 (28) :
(28)A.容错性和安全性 B.容错性和适应性 C.容错性和易恢复性 D.易恢复性和安全性
●某软件在运行初期运行在Windows NT环境中,现因某种原因,该软件需要在UNIX环境中运行,而且必须完成同样的功能。为适应这个要求,软件本身需要进行修改,而所需的工作量取决于该软件的(27) (27)A.可扩充性 B.可靠性 C.复用性 D.可移植性 2005年5月:
● 下列叙述中,与提高软件可移植性相关的是(18) A.选择时间效率高的算 B.尽可能减少注释
C.选择空间效率高的算法 D.尽量用高级语言编写系统中对效率要求不高的部分 12.2 软件质量保证
软件质量保证的主要困难表现在以下几个方面:
1) 软件开发的管理人员往往关心项目开发的成本与进度。因为成本和进度是显而易见的,而软件质量则难以度量。 1) 如果软件开发的管理人员对交付的软件含有多少隐患并不必负什么责任,他们必定没有太高的热情去控制开发的质量,更不必说保证质量并不容易且代价昂贵。
2) 开发人员的习惯一旦形成难以改变,他们的形为也难于控制,而高质量的软件产品,又主要取决于参与开发的人员。
3) 复杂的软件项目需要许多技术人员和管理人员参与,对问题的不同认识和误解如不能及时消除必然影响软件质量。 4) 软件开发人员的频繁流动,特别是骨干开发人员的流失,也会使软件质量受到一定的影响。
软件质量的保证手段:
共42页 第19页
2010年软件设计师考试复习资料 (42页完美打印版)
1) 开发初期制定质量保证计划,并在开发中坚持实行。 2) 开发前选定或制定开发标准或开发规范,并遵照实施。
3) 从开始就选择分析设计方法和工具,形成高质量的分析模型和设计模型。 4) 严格执行阶段评审,以便及时发现问题。 5) 各个开发阶段的测试。
6) 对软件的每次“变动”都要经过申请、评估、批准、实施等步骤。 7) 软件质量特性的度量化。
8) 软件生存期的各阶段都要完整的文档。 12.3 代码评审技术
常用方法有代码走查和代码审查技术。 ? 代码走查
程序员和测试员组成审查小组,通过逻辑运行程序。
第一步:小组成员提前阅读设计规格书、程序文本等相关文档;
第二步:利用测试用例,使程序逻辑运行,记录程序的踪迹,发现、讨论、解决问题 ? 代码审查
程序员和测试员组成审查小组。
第一步:小组成员提前阅读设计规格书、程序文本等相关文档;
第二步:召开程序审查会,开发人员读程序,审查小组讨论、发现、解决问题。 ? 两者的区别
代码审查是一种正式的评审活动,而代码走查的讨论过程是非正式的。 十三.成本-效益分析可用哪些指标进行度量?
? 投资回收率:通常把建立系统若干年后所取得的收益折算成现在的价值和开发系统所需的费用进行比较得出投资回收率。
? 投资回收期:就是使累计的经济效益等于最初的投资费用所需的时间。
? 纯收入:整个软件生命周期之内的累计经济效益(折成现在值)与投资之差。 十四.第四代语言(4GL)的主要特征? ? 友好的用户界面
? 兼有过程性和非过程性两种特性 ? 高效的程序代码 ? 完备的数据库 ? 应用程序生成器 十五.软件测试
软件测试的费用已经超过软件开发费用的30%左右。“高产”测试是指用少量的测试用例,发现被测试程序尽可能多的错误。
15.1 软件测试经过的步骤
单元测试->集成测试->确认测试->系统测试 15.2 测试与软件开发各阶段的关系
? 单元测试对程序中每一个程序单元进行测试,检查各个模块是否都实现规定的功能,从而发现模块在编码中或算法中的错误,该阶段涉及编码和详细设计文档。
? 集成测试是为了检查与设计相关的软件体系结构的有关问题,也就是检查概要设计是否合理有效。 ? 确认测试主要是检查已实现的软件是否满足需求规格说明书中已确定了的各种需求。
? 系统测试是把已确认的软件与其他系统元素(如硬件,其他支持软件、数据、人工等)结合在一起进行测试,以确定软件是否可以支付使用。 15.3 白盒测试
白盒测试又称为结构测试。可以把程序看成装在一个透明盒子里,测试者(一般为编程者)完全知道程序的结构和处理算法。
共42页 第20页