1、软件:计算机程序及其说明程序的各种文档 2、程序:是计算机任务的处理对象和处理规则的描述
3、文档:是有关计算机程序功能、设计、编制、使用的文字或图形资料 4、软件的特点: 1)软件是一种逻辑产品 2)软件产品的生产主要是研制
3)软件产品不会用坏,不存在磨损、消耗问题 4)软件产品的生产主要是脑力劳动 5)软件费用不断增加,软件成本相当昂贵 二、软件生产有几个阶段,各有何特征 1、程序设计时代
生产方式:个体手工劳动 工具:机器语言、汇编语言 开发方法:追求程序运行效率 硬件特征:价格贵、存储容量小、运行可靠性差
软件特征:只有程序、程序设计概念,不重视程序设计方法 2、程序系统时代
生产方式:作坊式的小集团合作生产 生产工具:高级语言 开发方法:个人技巧,开始提出结构法方法
硬件特征:速度、容量、工作可靠跃居第一 明显提高 软件特征:程序员数量猛增加,导致软件危机出现。
3、软件工程时代 生产方式:工程化的生产
生产工具:数据库、开发工具、开发环境、网络、分布式、面向对象技术来开发软件 硬件特征:向超高速、大容量、微型化以及网络化方向发展 三、什么是软件危机,其产生的原因是什么? 1、软件危机
软件发展到第二阶段末期,一些复杂的、大型的软件开发项目提出来了,但是,软件开发技术进步一直不能满足发展的要求。在软件开发中遇到的问题找不到解决办法,使问题积累起来,形成了尖锐的矛盾,因而导致了软件危机。 2、软件危机的表现 1)经费预算经常突破
2)开发的软件不能满足用户的要求 3)开发的软件可维护性差 4)软件的软件可靠性差 3、原因
1)软件的规模越来越大,结构越来越复杂 2)软件开发管理困难而复杂 3)软件开发费用不断增加 4)软件开发技术落后 5)生产方式落后 6)开发工具落后
四、什么是软件工程,其目标和内容是什么? 1、软件工程
用科学知识和技术原理来定义、开发、维护软件的一门学科 2、目标
建造一个大型软件系统,一般有以下几个目标 1) 付出较低的开发成本 2) 达到软件要求的功能 3) 取得较好的软件性能 4) 开发的软件易于移植 5) 需要较低的维护费用
6) 能按时完成开发任务及时交付使用 7) 开发的软件可靠性高 3、内容
软件开发技术:主要研究软件开发方法、软件开发过程、软件开发工具和环境 软件开发管理:软件管理学、软件经济学、软件必理学 4、面临的问题 1)软件的费用 2)软件的可靠性 3)软件的维护 4)软件的生产率 5)软件的重用
五、什么是软件的生存周期,它有哪几个活动 1、软件的生存周期
一个软件从提出开发要求开始直到该软件报废为止的整个日期。 2、活动
1)可行性分析和项目开发计划 2)需要求分析 3)概要设计 4)详细设计 5)编码 6)测试 7)维护
六、什么是软件生存周期模型,有哪些主要的模型 1、生存周期模型
是描述软件开发过程中各种活动如何执行的模型 2、主要的模型 1)瀑布模型
将软件生存周期各个活动规定为依线性顺序连接的若干阶段的模型。
它是一种理想的线性开发模式,缺乏灵活性,特别是不支解决软件需要不明确或不准确的问题
2)增量模型
是一种非整体开发模型。开发出一部分向用户展示一部分。
具有较大的灵活性,适合于软件需要不明确,设计方案有一定风险的软件项目 3)螺旋模型
是一种风险驱支模型。 适合于大型软件的开发。 4)喷泉模型
是一种以用户需要为动力,以对象作为驱动的模型。 适合于面向对象的开发方法 5)基于知识的模型
它把瀑布模型和专家系统结合在一起。 6)变换模型
是一种适合于形式化开发方法的模型。 七、什么是软件开发方法,有哪些方法 1、软件开发方法
是一种使用早已定义好的技术集及符号表示习惯来组织软件生产的过程 2、有如下主要的方法 1)结构化方法
结构化方法是由结构化分析、结构化设计、结构化程序设计构成。它是一种面向数据流的开发方法
数据流图建立功能模型 软件结构图建立物理模型 结构化程序设计来实施详细设计
对于特别复杂的项目不太适应 2)Jackson方法
是一种面向数据结构的开发方法 3)维也纳开发方法(VDM)
VDM是一种基于模型的方法。它的主要思想是将软件系统当作模型来描述,把软件的输入、输出看作模型对象。 4)面向对象的开发方法
基本出发点:尽可能按照人类认识世界的方法和思维来分析和解决问题 包括:面向对象分析、面向对象设计、面向对象实现。
作者:思渊 提交日期:2006-10-21 14:49:00
第二章
一、可行性研究的任务是什么? 1、技术可行性 1)开发的风险 2)资源的有效性 3)技术
4)开发人员的评估可行性 2、经济可行性 3、社会可行性
二、可行性研究有哪此步骤
1)确定项目规模和目标 2)研究正在运行的系统 3)建立新系统的高层逻辑模型 4)导出和评价各种方案 5)推荐可行性方案 6)编写可行性报告
三、可行性研究报告有哪些内容? 1、引言
2、可行性研究前提 3、对现有系统的分析 4、所建议系统的技术可行性 5、所建议系统的经济可行性分析 6、社会因素可行性分析 7、其它可供选择方案 8、结论意见
四、成本、效益分析有哪些指标 1、货币时间价值 2、投资回收期 3、纯收入
五、项目开发技术有哪些内容 1、项目概述
2、实施计划 3、人员组织及分工 4、交付期限
作者:思渊 提交日期:2006-10-21 14:50:00
第三章
一、什么是需求分析?需求分析阶段的基本任务是什么? 1、需求分析
开发人员要准确理解用户的要求,进行细致的调查分析,将用户非形式的需求陈述转化为完整的需求定义,再由需求定义转换为相应的形式功能规约的过程。 1.1需求分析的难点 1)问题的复杂性 2)交流障碍
3)不完备性和不一致性 4)需求易变性 1.2适用的基本原则
1)必须能够表达和理解问题的数据域和功能域 2)可以把子个复杂问题功能进行分解并可逐层细化 3)建模 2、基本任务 1)问题识别
这些需求包括:功能需求,性能需求,环境需求,用户界面需求 2)分析与综合,导出软件的逻辑模型 3)编写文档
主要包括:编写需求规则说明书,初步用户使用手册,确认测试计划,修改完善软件开发计划
二、什么是结构化分析方法?该方法使用什么描述工具? 1、结构化分析方法(SA)
是面向数据流进行需求分析的方法 2、策略
自顶向下逐层分解的分析策略 3、描述工具
利用图形等半形式化的描述方式表达需求 1) 数据流图
描述系统的分解即系统由哪几个部分组成,各部分之间有什么联系 2)数据字典
数据流图中每一个图形元素。
3)描述逻辑加工的结构化语言,判定表,判定数 三、结构化分析方法通过哪些步骤来实现
1、了解当前系统的工作流程,获得当前系统的物理模型 2、抽象出当前系统的逻辑模型 3、建立目标系统的逻辑模型
4、作进一步的补充和优化
四、什么是数据流图?其作用是什么?其中的基本符号各表示什么含义?
1、数据流图,简称DFD,是SA方法中用于表示系统逻辑模型的一种工具,是一种功能模型。 2、作用:
它以图形的方式描绘数据在系统中流动和处理的过程,反映系统必须完成的逻辑功能。 3、基本符号及含义 箭头:数据流 圆或椭圆:加工 双杠:数据存储 方框:数据的源点和起点 五、画数据流图的步骤
1、首先画系统的输入输出,即先画顶层数据流图
2、画系统内部,即画下层数据流图。一般将层号从0开始编号,采用自顶向下,由外向内的原则
六、画数据流图就注意的事项
1、命名:合适的命名使人们易于理解其含义。
2、画数据流而不是控制流,反映做什么,数据流名称只能是名词或名词短语。 3、一般不画物质流
4、每个加工至少有一个输入流和一个输出流 5、编号
6、父图与子图平衡:了图的输入输出数据流同父图相应加工的输入输出数据流必须一致。
7、局部数据存储
当某层数据流图中的数据存储不是父图中相应加工的外部接口,而只是本图中某些加工之间的数据接口,即为局部数据存储 8、提高数据流图的易理解性
七、什么是数据字典?其作用是什么?它有哪些条目? 1、数据字典
简称DD,用来定义数据流图中各个成分的具体含义的,它以一种准确的、无二义的说明方式为系统的分析、设计及维护提供了有关元素的一致的定义和详细的描述 2、作用
1)为系统的分析、设计及维护提供了有关元素的一致的定义和详细的描述 2)为分析人员查找数据流图中有关名字的详细定义而服务的
3)它有数据流图共同构成了系统的逻辑模型,是需求规格说明书的主要组成部分 3、条目
数据流、数据项、数据存储、基本加工 八、描述加工逻辑有哪些工具 1、结构化语言
是介于自然语言和形式语言之间的一种半形式语言。它的结构分为外层和内层 1) 外层:用来描述控制结构,采用顺序、选择、重复三种基本结构 2) 内层:采用祈使语句的自然语言短语。 2、判定表 3、判定树
九、什么是IDEF方法?IDEF0方法有什么特点? 1、IDEF方法
是在结构分析与设计技术的基础上提出来的,用于进行复杂系统分析和设计的方法。它分为三个部分:
1) IDEF0:描述系统的功能活动及其联系,建立系统的功能模型。 2) IDEF1:描述系统的信息及其联系,建立系统的信息模型 3) IDEF2:进行系统模拟,建立系统动态模型。 2、特点
1)采用方框和箭头等简单图形符号描述系统的活动和数据流,描述活动所受到的约束和实现机制
2)采用严格的自顶向下、逐层分析的方式建立系统功能模型。 十、简述SA方法的优缺点 1、优点
1)公认的、有成效的、技术成熟、使用广泛的一种方法。它比较适合于开发数据处理类型软件的需求分析
2)该方法利用图形等半形式化工具表达需求,简明、易读,也易于使用,为后一阶段的设计、测试提供了有利条件 2、缺点
1)传统的SA方法主要用于数据处理方面的问题,它仅是一个静态模型,没反映处理顺序即控制流程。因此,不适合描述实时控制系统。
2)SA方法在使用DFD在分析与描述“数据要求”方面有局限的
3)DFD不适合描述人机界面系统的要求
4)为了更精确地描述软件包需求,提高软件系统的可靠性、安全性,也便于实现自动化,SA方法可与形式方法结合起来。
作者:思渊 提交日期:2006-10-21 14:51:00
第四章
一、什么是软件概要设计?该阶段的基本任务是什么? 1、软件概要设计
在需求分析的基础上通过抽象和分析将系统分解成模块,确定系统功能的实现即把软件需求转换为软件包的过程。 2、基本任务
2.1设计软件体系结构
1)采用某种设计方案,将一个复杂的系统按功能划分成模块 2)确定每个模块的功能 3)确定模块之间的调用关系 4)确定模块之间的接口 5)评价模块结构的质量 2.2数据结构及数据库设计 1)数据结构设计
2)数据库设计:概念设计、逻辑设计、物理设计 2.3编写概要设计文档
主要有:
1) 概要设计说明书 2) 数据库设计说明书 3) 用户手册 4) 用户测试计划 2.4评审
二、软件设计的基本原理包括哪些内容 1、模块化
1)模块:是可组合、分解和更换的单元 2)基本属性
接口:指模块的输入和输出 功能:模块实现什么功能
逻辑:如何实现要求的功能及所需要的数据(内部特性) 状态:该模块的运行环境,即模块调用和被调用关系 2、抽象
是认识复杂现象过程中使用的思维工具,即抽出事物的本质的共同特性而暂不考虑它的细节,不考虑其它因素。 3、信息隐蔽
指在设计和确定模块时,使得一个模块内包含的信息,对于不需要这些信息的其它模块来说,是不能访问的。 4、模块的独立性
指每个模块只完成系统要求的独立的子功能,并且与其它模块的联系最少且接口简单。 三、模块独立性的两个标准是什么?它们各表示什么含义? 1、标准 1)耦合性 2)内聚性 2、含义 1)耦合性 也称块间联系
指软件系统结构中各模块间相互联系紧密程度的一种度量。模块之间联系越紧密,其耦合性越强,模块的独立性越差。
耦合性取决于模块接口之间的复杂性、调用的方式及传递的信息。 3) 内聚性 也称块内联系
模块功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。若一个模块内各元素联系的越紧密,则它的内聚性就越高。 四、模块间的耦合性有哪几种?它们各表示什么含义? 1、无直接耦合
两个模块之间没有直接关系。 2、数据耦合
两个模块之间有调用关系,传递的是简单的数据值。 3、标记耦合
两个模块之间传递的是数据结构 4、控制耦合
一个模块是调另一个模块时,传递的是控制变量,被调模块通过该控制变量的值有选择地执行块内某一功能。 5、公共耦合
通过一个公共数据环境相互作用的那些模块的耦合。 公共耦合随着耦合模块的个数增加而增加。 6、内容耦合
最高程度的耦合,也是最差的耦合。
一个模块直接使用另一个模块内部数据或通过非正式入口而转入另一个模块内部。 五、模块的内聚性由哪几种?各表示什么含义? 1、偶然内聚
指一个模块内的各个处理元素之间没有任何联系。 2、逻辑内聚
指模块内执行几个逻辑相似的功能,通过参数确定该模块完成哪一个功能。 3、时间内聚
把需要同时执行的动作组合在一起形成的模块。 4、通信内聚
模块块内所有处理元素都在同一个数据结构上操作。或者指各处理使用相同的输入数据或者产生相同的输入数据。 5、顺序内聚
一个模块中各个处理元素都密切相关于同一功能且必须顺序执行,前一功能元素的输出就是下一功能元素的输入。 6、功能内聚
这是最强的内聚。模块内所有元素共同完成一个功能,缺一不可。 六、什么是软件结构?简述软件结构优化准则? 1、软件结构图
是软件系统的模块层次图,反映了整个系统功能实现,即将来程序的控制层次体系。 软件结构往往用树状或网状结构的图形来表示。 2、结构图的内容 1)模块
2)模块的控制关系 3)模块间的信息传递 3、结构图的形态特征 1)深度:模块的层数 2)宽度:最大的模块个数 3)扇出:模块直接下属模块个数 4)扇入:一个模块直接上属模块个数 4、画结构图注意事项
1)、同一名字的模块在结构图中仅出现一次 2)调用关系只能从上到下 3)不严格表示模块的调用次序。
5、软件结构优化设计准则
1)划分模块时,尽量做到高内聚,低耦合保持模块相对独立。 2)一个模块的作用范围应在其控制范围之内。 3)软件结构的深度、宽度、扇入、扇出应当适当。 4)模块大小适中
5)模块的接口要简单、清晰、含义明确、便于理解、易于实现、测试和维护。 七、什么是模块的影响范围?什么是模块的控制范围?它们之间应该建立什么关系? 1、模块的影响范围
受该模块内一个判定影响的所有模块的集合。 2、模块的控制范围
模块本身以及其所有下属模块的集合。 3、它们之间应建立的关系
一个模块的影响范围应在其控制范围内,且判定所在的模块应与受其影响的模块在层上尽量靠近。 八、结构化设计
以需求分析阶段产生的数据流图为基础,按一定的步骤映射成软件结构即结构化设计(SD) 九、什么是变换流?什么是“事物流”? 1、变换流
是由输入、变换、和输出三个部分组成的DFD。 2、事物流
若某个加工将它的输入流分离成许多发散的数据流,形成许多加工路径,并根据输入的值选
择一个路径来执行。这种牲的DFD称为事物数据流图。 十、面向数据流设计法的过程 1、精化DFD 2、确定DFD类型 3、分解上层模块
4、根据优化准则对软件结构求精 5、描述模块功能 6、复杂
十一、变换分析的设计步骤
1、 确定DFD中心,逻辑输入和逻辑输出 2、 设置软件结构的顶层和第一层:变换结构
第一层一般至少要有三种功能模块:输入、输出和变换模块。 3、 设置中、下层模块
输入模块:接收数据;转换成调用模块所需信息 输出模块:将数据转换成下属模块所需的形式;发送数据 4、 变换模块下属模块的设计 5、 设计的优化
十二、事务分析设计步骤
1、 确定DFD中的事务中心和加工路径
2、 设计软件结构的顶层和第一层:事务结构。
事物型软件结构应该包括两个部分:一个接收分支和一个发送分析(包含一个高度模块)。
3、 事务结构中、下层模块的设计、优化
作者:思渊 提交日期:2006-10-21 14:52:00
第五章
一、软件详细设计的基本任务是什么?有哪几种描述方法? 1、软件详细设计的基本任务 1)为每个模块进行详细的算法设计 2)为模块内的数据结构进行设计 3)对数据库进行物理设计 4)其它设计: 代码设计
输入/输出格式设计 人机对话设计
5) 编写详细设计说明书 6) 评审 2、描述方法 1)程序流程图 2)PAD图 3)过程设计语言
二、结构化程序设计的基本要点是什么? 1、采用自顶向下、逐步求精的程序设计方法
2、使用三种基本控制结构构造程序 3、主程序员组的组织形式。 三、程序流程图 1、程序流程图
又称为程序框图,它是历史最悠久,使用最广泛的一种程序逻辑结构的工具 2、优点:直观清晰,易于使用 3、缺点
1)可以随心所欲地画流程线的流向,容易造成非结构化的程序结构。 2)流程图不易反映逐步求精的过程,往往反映的是最后的结果 3)不易表示数据结构。
四、什么是PAD图,其优点是什么? 1、PAD图
指问题分析图,是日本日立公司1979年提出的一种算法描述工具,它是一种由左往右展开的二维树型结构。
控制流程为自上而下、从左到右地执行。 2、优点
1)清晰地反映程序的层次结构 2)支持逐步求精的设计方法 3)易读易写,使用方便 4)支持结构化的程序设计原理 5)可自动生成程序
五、什么是过程设计语言?其优点是什么? 1、过程设计语言
PDL 也称程序描述语言,又称伪码。它是一种用于描述模块算法设计和处理细节的语言。 2、优点
1)提供的机制比图形全面,为保证详细设计与编码的质量创造了有利条件
2)可作为注释嵌入在源程序中一起作为程序文档并可同高级语言一样进行编辑、修改,有利于软件的维护
3)可自动生存程序代码,提高软件生产率。 六、什么是JACKSON方法
Jackson方法是面向数据结构的设计方法。
它定义了一组以数据结构为指导的映射过程,它根据输入、输出的数据结构,按一定的规则映射成软件的过程描述,即程序结构,而不是软件体系结构,因此该方法适用于详细设计阶段。
七、JACKSON结构图的优点
1、能对结构进行自顶向下分解,因此可以表示层次结构 2、结构易读,形象直观
3、即能表示数据结构也能表示程序结构,且表示的是组成关系。 八、简述JSP的设计步骤
1、分析并确定输入数据和输出数据的逻辑结构,并用Jackson结构图表示这些数据结构。 2、找出输入数据结构和输出数据结构中有对应关系的数据单元。 3、按一定的规则由输入、输出的数据结构导出程序结构。
4、列出基本操作与条件,并把它们分配到结构图的适当位置。 5、用伪码写程序。
作者:思渊 提交日期:2006-10-21 14:52:00
第六章
一、程序语言有哪些共同的特征? 1、心理特性
岐义性 简洁性 局部性和顺序性 传统性 2、工程特性
可移植性 开发工具可利用性 软件的可重用性 可维护性 4、 技术特性
二、在项目开发时,选择程序设计语言通常考虑哪些因素? 1、项目的应用领域 1)科学工程计算领域
Fortran:第一个被正式推广应用的计算机语言
Pascal:第一个体现结构化编程思想的语言,有利于培养良好的编程风格。 C PL.1等
2)数据处理和数据库应用 Cobol SQL
4GL(VF Uniface Power Builder Informix 4GL等) 3)实时处理
汇编语言 Ada等 4)系统软件
汇编语言 C Ada Pascal等 5)人工智能 Lisp 函数型语言 Prolog:逻辑型语言 2、软件开发方法
快速模型开发 :4GL语言 面向对象:C++ Java 3、软件执行环境
4、算法和数据结构的复杂性 5、软件开发人员的知识
三、第4代语言(4GL)有哪些特征? 1、友好的界面
2、兼有过程性和非过程性双重特性 3、高效的程序代码 4、完备的数据库 5、应用程序生成器
四、什么是程序设计风格?为了具有良好的设计风格,应注意哪些方面的问题? 1、程序设计风格
一个人编程序时所表现出来的特点、习惯、逻辑思路等。
2、应注意的问题 1)源程序文档化 标识符应注意取名 程序应注释 2)数据说明
3)语句构造:简单直接 4)输入和输出。 5)效率
作者:思渊 提交日期:2006-10-21 14:53:00
第七章
一、软件测试的目的是什么?在软件测试中,应注意哪些原则? 1、目的
G.J.Myers对软件测试的目的提出了以下观点: 1)、软件测试的目的是为了发现错误而执行程序的过程。 2)、一个好的测试用例能够发现至今尚未发现的错误 3)、一个成功的测试是发现了至今尚未发现的错误的测试
因此测试阶段的基本任务应该是根据软件开发各阶段的文档资料和程序的内部结构,精心设计一组“高产”的测试用例,找出软件中潜在的各种错误和缺陷。 2、软件测试的原则
1)测试用例应由输入数据和预期的输出数据两部分组成。
2)测试用例不仅选用合理的输入数据,还要选择不合理的输入数据。
3)除了检查程序是否做了它应该做的事,还应该检查程序是否做了它不应该做的事] 4)应制定测试计划并严格执行 5)长期保留测试用例
6)对发现错误较多的程序段,应进行更深入的测试。 7)程序员避免测试自己的程序。 二、测试方法 1、静态测试 1)人工检测
2)计算机辅助静态分析 2、动态测试
1)白盒法:测试产品内部结构及处理过程 2)墨盒法:测试产品功能。
三、什么是白盒测试?有哪些覆盖标准?试对质它们的检错能力进行比较? 1、白盒测试
把测试对象看作一个打开的盒子,测试人员必须了解程序的内部结构和处理过程,以检查处理过程的细节为基础,对程序中尽可能多的逻辑路径进行测试,检验内部控制结构和数据是否错误,实际运行状态与预期是否一致。 2、覆盖标准 2.1逻辑覆盖 1)语句覆盖
设计足够的测试用例,使被测试程序中每个语句至少执行一次。 2)判定覆盖
设计足够测试用例,使被测试程序中每个判定表达式至少获得一次“真”值或“假”值。 3)条件覆盖
设计足够测试用例,使得判定表达式中每个条件的各种可能的值至少出现一次。 4)判定/条件覆盖
设计足够的测试用例,使得判定表达式中的每个条件的所有可能取值至少出现一次,并使每个判定表达式所有可能的结果至少出现一次。 5)条件组合覆盖
设计足够的测试用例,使得每个判定表达式条件的各种可能的值的组合都至少出现一次。 6)路径覆盖
设计足够的测试用例,覆盖被测试程序中所有可能的路径 2.2循环覆盖 2.3基本路径覆盖
是在程序控制流程图的基础上,通过分析控制构造的环路覆杂性,导出基本路径集合,从而设计测试用例,保证这些路径至少通过一次。
四、什么是黑盒测试法?采用黑盒技术设计测试用例有哪几种方法?这些方法各有什么特点?
1、黑盒测试法
该方法把测试对象看成一个墨盒子,测试人员完全不考虑程序的内部结构和处理过程,只在软件的接口处进行测试,依据需求规格说明书,检查程序是否满足功能要求。
主要发现以下错误:是滞有不正确或遗漏的功能,在接口上能否正确接受输入数据能否产生正确的输出信息,访问外部是否有错,性能上是否满足需求等。 2、设计测试用例的方法 2.1等价类划分
从程序的功能说明找出一个个输入条件,然后为每一个输入条件划分成两个或多个等价类。 缺点:没有注意选择某些有效的,能够发现更多错误的测试用例。 2.2边界值分析
程序往往在处理边界时发生错误,边界情况指输入等价类和输出等价类的边界上的情况。按此种方法设计的测试用例比较高效,可以查出更多的错误。 2.3错误推测
人们可能根据经验或直觉推测程序中可能存在的各种错误,从而有针对性给定检查这些错误的测试用例 2.4因果图
能有效地检测输入条件和各种组合可能会引起的错误。 2.5综合策略
联合使用各种方法,形成综合策略。 五、软件测试需要的信息 1、软件配置 2、测试配置 3、测试工具
六、软件测试的步骤?这些测试与软件开发各阶段之间有什么关系?
1、软件测试的步骤
单元测试、集成测试、确认测试、系统测试 2、关系
单元测试小涉及编码与详细设计时的文档 集成测试检查与设计相关的软件体系结构有关问题
确认测试主要检查已实现的软件是滞满足需要规则说明书确定了的各种需要 七、单元测试有哪些内容?测试中采用什么方法? 1、测试内容 1)模块接口 2)局部数据结构 3)重要执行路径 4)错误处理 5)边界条件 2、方法
需要为被测试模块设计驱动模块和桩模块。
八、什么是集成测试?非渐增测试与渐增测试有什么区别?渐增测试如何组装模块? 1、集成测试
在单元测试测试的基础上,将所有模块按设计要求组装成一个完整的系统进行测试。也称组装测试或联合测试。
2、测试方法主要有两种:非渐增式测试和渐增式测试 1)非渐增式测试
首先对每个模块分别进行单元测试,然后把所有的模块按设计要求组装在一起进行测试。 2)渐增式测试
逐个把未经过测试的模块组装到已经过测试的模块上去,进行集成测试。 3、区别
1)非渐增方法把单元测试和集成测试分成两个不同的阶段,前一阶段完成模块的单元测试,后一阶段完成集成测试。而渐增式测试往往把单元测试与集成测试合在一起。 2)非渐增式需要更多的工作量。
3)渐增式可以较早地发现接口之间的错误,非渐增式最后组装时才发现。
4)渐增式有利于排错,发生错误往往和最近加进来的模块有关,而非渐增式发现接口错误推迟到最后,很难判断是哪一部分接口出错。
5)渐增式比较彻底,已测试的模块和新的模块再测试。 6)渐增式占用的时间较多
7)非渐增式开始可并行测试所有模块,能充分利用人力,对测试大型软件很有意义。 4、渐增式组装模块的方法 1)自顶向下结合。
深度优先策略:先从软件结构中选择一条主控路径,把该路径上的模块一个个结合进来测试,再结合其他需要优先考虑的路径。
宽度优先策略:逐层结合直接下属的所有模块 2)自底向上结合
仅需编写模块驱动,用不写桩模块。 九、什么是确认测试?该阶段有哪些工作?
1、确认测试
又称有效性测试。它的任务是检查软件的功能与性能是否与需要规则说明书中确定的指标相符号 2、工作 1)进行确认测试 2)软件配置审查
十、调试的目的是什么?有哪些手段? 1、调试的目的
确定错误的原因和位置,并改正错误,也称为纠错。 2、手段
2.1简单的调试方法 1)在程序中转入打印语句 2)运行部分程序 2.2归纳法调试 2.3演绎法调试 2.4回溯法调试
作者:思渊 提交日期:2006-10-21 14:54:00
第八章
一、软件维护有哪些内容? 1、校正维护
为了识别和纠正错误,修改软件性能上的缺陷,进行的确定和修改错误的过程。21% 2、适应性维护
为了使软件适应变化而修改软件的过程。25% 3、完善性维护
增加软件功能、增强软件性能、提高软件运行效率而进行的维护活动。50% 4、预防性维护
为了提高软件的可维护性和可靠性而对软件进行的修改。4% 二、软件维护的特点? 1、非结构化维护和结构化维护 1)非结构化维护
不采用软件工程的方法开发软件,软件只有程序而无文档,维护工作非常困难,这就是非结构化的维护 2)结构化维护
采用软件工程的方法开发软件,各阶段都有相应的文档,容易进行维护工作。 2、维护的困难性
1)读懂别人的程序是困难的 2)文档的不一致性
3)软件开发和软件维护在人员和时间上的差异 4)软件维护不是一项吸引人的工作。 3、软件维护的费用
软件维护费用的增加主要原因:软件维护的生产率非常低。
三、软件维护的流程 1、制定维护申请报告
维护申请报告:用户产生的文档 软件修改报告:内部产生 2、审查申请报告并批准 3、进行维护并做详细记录 4、复审。 四、维护技术 1、面向维护的技术
是在软件开发阶段用来减少错误,提高软件可维护性的技术。 2、维护支援技术
是在软件维护阶段用来提高维护作业的效率和质量的技术。 五、维护有哪些副作用 1、编码副作用 2、数据副作用 3、文档副作用
六、什么是软件的可维护性?可维护性度量特性是什么? 1、软件的可维护性
软件能够被理解、校正、适应及增强功能的容易程度。 2、度量特性
可理解性、可测试性、可修改性、可靠性、可移植性、可使用性和效率
3、可维护性度量的方法
质量检查表、质量测试、质量标准 七、提高软件可维护性的方法有哪些? 1、建立明确的软件质量目标 2、使用先进的软件开发技术和工具 3、建立明确的质量保证
为了保证可维护性,以下四类检查是非常有用的 1) 在检查点进行检查 2) 验收检查 3) 周期性维护检查 4) 对软件包检查 4、选择可维护性语言 5、 改进程序的文档
作者:思渊 提交日期:2006-10-21 14:54:00
第九章
一、瀑布模型的局限性 1、需求可变性 2、需求是模糊的
3、用户和开发者难于沟通。 二、增量模型的基本思想
1、增量模型
是在项目开发过程中以一系列的增量方式开发系统。增量方式包括:增量开发和增量提交。 增量开发:在项目开发周期内,以一定的时间间隔开发部分工作软件
增量提交:在项目开发期内,以一定的时间间隔增量方式向用户提交工作软件和文档。 2、和瀑布模型的区别
瀑布模型属于整体开发模型,它规定在开始下一阶段的工作之前,必须完成前一阶段的所有细节。而增量模型属于非整体开发模型,它推迟某些阶段中的细节,从而较早产生工作软件。 三、增量模型有几种,各有何特点? 1、增量模型的分类 1)渐增模型
增量构造模型:它在瀑布模型的基础上,对一些阶段进行整体开发,对别一些阶段进行增量开发。 演化提交模型
它在瀑布模型的基础上,所有阶段都进行增量开发。 2)原型模型
它是在开发真实系统之前,构造一个原型,在该原型的基础上,逐渐完成整个系统的开发工作。
探索型原型:这种类型的原型模型是把原理用于开发的需要分析阶段。 主要针对开发目标模型,用户和开发者都缺乏经验的情况
实验型原型:这种原型主要用于设计阶段,考核实现方案是否合适,能否实现。
演化型原型:这种原理主要用于及早向用户提交一个原型系统。它把原型的思想扩展到软件
开发的全过程。 四、渐增模型 1、增量构造模型
在该模型中,需求分析阶段和设计阶段都按瀑布模型的整体开发,但在编码和测试阶段按增量的方式开发。 2、演化提交模型
在项目开发的各个阶段都是增量方式。 五、快速原理模型 1、原理
利用原理辅助软件开发的一种思想。 2、原型运用方式 1)抛弃策略
将原型用于开发过程的某一阶段,促使该阶段的开发结果更完整、准确、一致、可靠。该阶段结束后,原型随之作废。探索型和实验快速原型就是采用此策略。 2)附加策略
将原型用于开发的全过程。原型由最基本的核心开始,逐步增加新的功能和新的需要,反复修改反复扩充,最后发展为用户满意的最终系统。演化快速原型就采用此策略。
六、快速原理的开发步骤 1、快速分析 2、构造原型 3、运行原型
4、评价原型 5、修改
七、评价快速原理的优缺点? 1、优点
1)及早为用户提供有用的产品 2)及早发现问题,随时纠正错误
3)减少技术、应用风险,缩短开发时间,减少费用,提高生产率。
4)促使用户主动参与开发活动,加强了信息反馈,适应需要地找麻烦化,能有效提高系统质量。 2、缺点
1)、缺乏丰富而强有力的软件工具和开发环境 2)缺乏有效的管理机制,还未建立起自己的开发标准 3)对设计人员水平及开发环境要求较高
4)在多次重复改变原型的过程中,程序员会感到厌倦。
5)系统的易变性对测试有一定影响,难于做到彻底测试,更新文档较为困难。
作者:思渊 提交日期:2006-10-21 14:55:00
第十章
一、说明对象、类、类结构、消息的基本概念 1、对象
1)概念:是人们要进行研究的任务事物。不仅能表示具体的事物,还能表示抽象的规则、计
划或事件。 2)对象类型 有形实体 作用 事件 性能说明
3)对象的状态和行为 状态:用数据值来描述 行为:对象及其操作 2、类 1)概念
具有相同或相似性质的对象的抽象。 2)类的属性和操作
属性:对象的状态的抽象,用数据结构来描述类的属性
操作:对象的行为的抽象,用操作名或实现该操作的方法来描述。 3)类的结构
一般——具体结构:分类结构,“或”的关系或“is a ”的关系 整体——部分结构:组装结构,“与”的关系或“has a”的关系。 上层类:父类或超类 下层类:子类 3、消息
1)消息的概念 对象之间的通信构造。 通信机制称为消息传递。 2)方法
类中操作的实现过程叫方法。 一个方法有方法名、参数、方法体。 二、面向对象的特征和要素? 1、特征 1)对象惟一性 2)分类性 3)继承性
概念:子类自动共享父类数据结构和方法的机制。
单重继承:子类只继承一个父类的数据结构和方法。可用树结构来描述。 多重继承:子类继承了多个父类的数据结构和方法。可用图的结构来描述。 4) 多态性
多态性是指:相同的操作或函数、过程可作用于多种类型对象上并获得不同的结果。 多态性增加了软件的灵活性和重用性。 2、面向对象的要素 1)抽象 2)封装性 3)共享性
面象对象技术强调对象是什么。即强调对象结构。 三、面向对象的开发方法 1、Booch方法 2、Coad方法
经典著作有:“OOA”、“OOD”,该方法比较完整系统地介绍了面向对象的分析和面向对象设计。 3、OMT方法
经典著作:面向对象的建模与设计。 4、UML语言
四、说明对象模型的特征?
对象模型表示了静态、结构化的系统数据性质,描述了系统静态结构。表现了对象的相互关系。该模型主要关心系统中对象的结构、属性和操作,使用对象图的工具来刻划。 五、说明动态模型的特征?
动态模型是与时间和变化有关的系统性质。该模型描述了系统的控制结构,它表示了瞬时、行为化的系统控制性质,它关心的是系统的控制,操作的顺序,它从对象的事件和状态出的角度出发,表现了对象的相互关系。 六、功能模型的特征
功能模型描述了系统的所有计算。表明一个计算如何从输入值到输出值,它不考虑所计算的次序。功能模型由多张数据流图组成。 七、说明三种分析模型的关系
功能模型提出发生了什么,动态模型确定什么时候发生,对象模型确定发生的客体。
八、对象模型建模过程 1、确定类 2、准备数据字典 3、确定关联 4、确定属性
5、使用继承来细化类 6、完善对象模型 九、动态模型建模过程 1、准备脚本 2、确定事件 3、准备事件跟踪表 4、构造状态图 十、功能模型建模过程 1、确定输入值、输出值 2、建立数据流图
十一、面向对象设计的准则 1、 模块化 2、 抽象 3、 信息隐蔽 4、 低耦合 5、 高内聚
1) 操作内聚 2) 类内聚
3) 一般——具体内聚 十二、面向对象设计的启发规则 1、 设计结果应该清晰易懂
2、 一般 ——具体结构的深度应适当 3、 设计简单的类 4、 使用简单的协议 5、 使用简单的操作 6、 把设计变动减至最小
作者:思渊 提交日期:2006-10-21 14:56:00
第十一章
一、软件质量和质量保证的含义 1、软件质量
1)与所确定的功能和性能需求的一致性 2)与所成文的开发标准的一致性
3)与所有专业开发的软件所期望的隐含特性的一致性。 2、软件质量保证
向用户及社会提供满意的高质量的产品,确保软件产品从诞生到消亡为止的所有阶段的质量活动。即确定、达到和维护需要的软件质量而进行的所有有计划、有系统的管理活动。
二、质量保证策略
质量保证策略大致可以分为以下三个阶段 1、 以检测为重 2、 以过程管理为重 3、 以新产品开发为重 三、影响软件质量的因素有哪些
一般地说,影响软件质量的因系可以分为两大类: 1、 可以直接度量的因素
2、 只能间接度量的因素。如可用性和可维护性。 四、软件质量保证策略的主要任务是什么? 1、正确定义用户的要求 2、技术方法的应用
3、提高软件开发的工程能力 4、软件的复用
5、发挥每个开发者的能力 6、组织外部力量协作 7、排除无效劳动
8、提高计划和管理质量。 五、McCall质量度量模型 1、面向软件产品操作
正确性、可靠性、效率、完整性、可用性
2、面向软件产品修改 可维护性 可测试性 适应性 3、 面向软件产品适应 可移植性 可重用性 可互操作性 六、ISO的软件质量评价模型
高层:软件质量需求评价准则(SQRC) 中层:软件质量设计评价准则(SQDC) 低层:软件质量度量评价准则(SQMC)
七、什么是软件的复杂性?程序复杂性的度量方法有哪些? 1、软件复杂性
软件复杂性主要表现在程序的复杂性。程序的复杂性主要是指模块内程序的复杂性。它的度量参数有:
规模、难度、结构、智能度等 2、度量方法 1)代码行度量法 2)McCabe度量法
是由McCabe提出的一种基于程序控制流的复杂性度量方法。又称环路度量。
程序图:把程序流程图中每个处理符号都退化成一个结点,原来连接不同处理符号的流线变成连接不同结点的有向弧,这样得到的有向图就叫程序图。 八、什么是软件的可靠性,它们能否定量计算? 1、软件可靠性
是指在给定时间内,在规定的环境下系统完成所指定的功能的概率。 2、软件可靠性指标
1)MTTF( 平均失效等待时间) 2)MTBF(平均失效间隔时间) 九、软件评审
是一个过滤器,它使用在软件开发的各个阶段,通过评审可以及时发现软件中存在的问题然后加以改正。
十、设质质量评审的内容
1、评价软件的规格说明是否合乎用户的要求。 2、评审可靠性
3、评审保密措施实现情况 4、评审操作特性实现情况 5、评审性能实现情况
6、评审软件是否具有可修改性、可扩充性、可互换性和可移植性 7、评审软件是否具有可测试性 8、评审软件是否具有复用性 十一、程序质量评审的内容 1、 软件的结构 1) 功能结构 2) 功能的通用性 3) 模块的层次
4) 模块的结构 5) 处理过程的结构 2、 与运行环境的接口 1) 与硬件接口 2) 与用户接口
十二、说明容错的定义及容错的一般方法? 1、 容错软件的定义
1) 规定功能的软件,在一定程度上对自身错误的作用具有屏蔽能力 2) 规定功能的软件,在一定程度上能从错误状态自动恢复到正常状态 3) 规定功能的软件,在因错误发生时,仍然能在一定程序上完成预期的功能 4) 规定功能的软件,在一定程序上具有容错能力。 2、 容错的一般方法
实现容错的主要手段是冗余。冗余是指实现系统规定功能是多余的那部分资源,包括硬件、软件、信息和时间。 1) 结构冗余
静态冗余:通过表决和比较来屏蔽系统中出现的错误。常用的有:三模冗余(TMR 和多模冗余。
动态冗余:主要方式是多模块待机准备。 混合冗余。 2) 信息冗余
为检测或纠正信息在运算或传输中的错误须外加一部信息。
3) 时间冗余
以重复执行指令或程序来消除瞬时错误带来影响。 4) 冗余附加技术
指为了实现上述冗余所需的资源和技术。
作者:思渊 提交日期:2006-10-21 14:56:00
第十二章
一、 软件工程包括哪些内容? 1、 开发人员 2、 组织机构 3、 用户
来自用户的干扰主要有:不积极配合、求快求全、功能变化。 4、 控制
包括进度控制、人员控制、经费控制和质量控制等 5、 文档资料
二、 软件项目开发计划包括哪些内容?
1、 范围:对该软件项目的综合描述,定义所要做的工作以及性限制。包括: 1) 项目目标 2) 主要功能 3) 性能限制 4) 系统接口
5) 特殊要求 6) 开发概述 2、 资源 1) 人员资源 2) 硬件资源 3) 软件资源 4) 其它 3、进度安排
主要方法有:工程网络图、Cantt图、任务资源表 4、成本估算 5、培训计划
三、软件开发成本估算方法有哪几种? 1、自顶向下估算方法 2、自底向上估算方法 3、差别估算法 4、专家估算法 5、类推估算法 6、算式估算法。
四、什么是软件配置管理?什么是基线? 1、软件配置管理
简称SCM。用于整个软件工程过程。其主要目标是:控制变更;确保变更正确地实现;报告有
关变更。SCM是一组管理整个软件生存期各阶段变更的活动。 2、基线
是软件生存期中各开发阶段的一个特定点,它的作用是把开发各阶段工作的划分更加明确化,使本来连续的工作在这些点上断开,以便于检查与肯定阶段成果。 五、软件配置项
是软件工程中产生的信息项。它是配置管理的基本单位。 六、软件工程标准化的意义
软件工程标准化,可以有一系列的统一的约束和规定来协调软件开发过程中的错综复杂的关系。进行阶段的评审和验收测试。渗透到软件生存周期的每一个环节。使各种工作者能有章可循。
七、有哪些软件工程标准?
1、EIPS135 美国国家标准局发布的《软件文档管理指南》
2、NSAC-39 美国核子安全分析中心发布的《安全参数显示系统的验证与确认》
3、ISO5807 国际标准化组织公布的《信息处理——数据流程图、程序流程图、程序网络图和系统资源图的文件编制符号及约定》 八、软件工程标准的层次 1、国际标准 2、国家标准 3、行业标准 4、企业规范 5、项目规范
九、文档的作用
文档:是指某种数据媒体和其中所记录的数据。
作用:提高软件开发过程的能见度;提高开发效率;作为开发人员阶段工作成果和结束标志;记录开发过程的有关信息便于使用与维护;提供软件运行、维护和培训有关资料;便于用户了解软件的性能、功能。
作者:思渊 提交日期:2006-10-21 14:56:00
第十三章
一、什么是软件开发环境(SDE)?
是指在计算机的基本软件的基础上,为了支持软件的开发而提供的一组工具软件系统。 二、请叙述软件开发环境的分类 1、按解决问题分类 1)程序设计环境 2)系统合成环境 3)项目管理环境
2、按软件开发环境的演变趋向分类 1)以语言为中心的环境 2)工具箱环境 3)基于方法的环境 3、按集成化程度分类
1)第一代:建立在操作系统之上
2)第二代:具有真正的数据库 3)第三代:建立在知识库系统上
三、何为软件工具?通常包含哪几个部分? 1、软件工具
是指为支持计算机软件的开发、维护、模拟、移植或管理而研制的程序系统。 软件工具的主目的:提高软件生产率和改善软件质量。
2、软件工具通常包含:工具、工具接口和工具用户接口三个部分。 四、当软件工具发展有何特点?
1、软件工具由单个工具向多个工具集成化方面发展。 2、重视用户界面设计 3、不断采用新理论和技术
4、软件工具的商业化推动了软件产业的发展。 五、什么是CASE?CASE工具有哪些分类? 1、CASE
CASE是计算机辅助软件工程的缩写。是一组工具和方法的集合,可以辅助软件开发生命周期各阶段进行软件开发。1、 2、CASE的分类
1993年,Fuggetta根据CASE系统对软件过程的支持范围,提出CASE系统分为三类: 1、支持单个过程任务的工具
2、工作台:支持某一过程所有活动或某些活动。
3、环境:支持软件过程所有活动或至少大部分活动。它们一般包括几个不同的工作台,将这
引起工作台以某种方式集成起来。 六、请叙述集成化的CASE的五级模型?
1、平台集成:工具运行在相同的硬件/操作系统平台上 2、数据集成:不同软件工程能相互交换数据 3、表示集成:工具提供相同的用户界面
4、控制集成:工具激活后能控制其它工具的操作
5、过程集成:工具在一个过程模型和“过程机”的指导下使用。 七、CASE工作台有哪些分类? 1、程序工作台
由支持程序开发过程的一组工具组成。 2、分析和设计工作台
支持软件过程的分析和设计阶段。 3、测试工作台 4、交叉开发工作台 5、配置管理工作台 6、文档工作台 7、项目管理工作台
作者:思渊 提交日期:2006-10-21 14:58:00
因篇幅问题不能全部显示,请点此查看更多更全内容