软件工程复习.docx
《软件工程复习.docx》由会员分享,可在线阅读,更多相关《软件工程复习.docx(15页珍藏版)》请在冰豆网上搜索。
软件工程复习
软件工程复习
1、软件危机、软件危机产生的缘故
2、软件工程
3、软件工程学的要紧内容
4、软件工程过程
5、软件生命周期
6、软件生命周期模型(SWlifecyclemodel)及各自特点
7、软件工程要达到的目标?
8、RUP开发过程有何特点?
9、软件危机的表现
10、解决软件危机的途径
11、演化模型的特点
12、快速原型模型的特点?
13、软件生存周期分为哪些时期?
各时期又有哪些差不多任务?
14、可行性研究的要紧内容
〔第一章的内容请大伙儿自己整理〕
第二章需求分析
1、可行性报告要有结论;或及时中止不可行的项目。
2、软件需求是进行软件设计、实现和质量度量的基础。
3、需求分析是发觉、逐步求精、建模、规格说明和复审的过程。
4、建立模型是描述用户需求,定义需求,用以验收产品。
5、数据模型用实体-关系图来描述数据对象及相互关系。
6、功能模型用数据流图来描述。
7、行为模型用状态转换图来描画。
8、数据字典用来描述软件使用或产生的所有数据对象、数据储备规那么和处理算法等。
9、需求分析时期还应写出软件需求规格说明,有时附上可执行的原型及初步的用户手册。
它是需求分析时期的最终成果。
10、复审:
需求分析的结果要通过严格的审查,确保软件需求的一致性、完整性、现实性和有效性。
11、软件过程改进的实际意义
一样软件组织都有它采纳的软件过程模型。
软件组织在进行具体软件项目时采纳的软件过程,称为软件过程实例。
成功的软件过程改进,不管是对模型依旧对实例的改进,都能够为软件组织提高效率、减少错误、保证进度、提高质量。
据一些连续采纳CMM进行了三年以上过程改进的软件组织报告,过程改进典型的投资回报率是7:
1。
通过过程改进,软件组织的平均年生产率递增37%,缺陷在测试前被发觉的比例年增长率18%,产品投放市场的时刻平均提早19%,现场错误年平均降低45%。
12、软件过程改进的原那么与步骤
原那么
[1]过程改进建立在过程评判和过程度量基础上;
[2]软件过程改进是一个连续的过程;
[3]过程改进活动本身应当被作为一个过程改进项目来完成;
[4]将过程度量用于对改进过程进行监控,以便及时对改进活动做必要的调整;
[5]适当地重复软件过程评判活动。
步骤
[1]制定过程改进方案
[2]评判各个改进方案
[3]对改进方案进行排序
[4]估量实施的进度表
[5]获得治理层的承诺
第三章概要设计
1、概要设计的目的与任务:
通过那个时期的工作将划分出组成系统的物理元素——程序、文件、数据库、人工过程和文档等等,
另一项重要任务是设计软件的结构,也确实是要确定系统中每个程序是由哪些模块组成的,以及这些模块相互间的关系。
概要设计的过程
由两个要紧时期组成:
系统设计时期,确定系统的具体实现方案;结构设计时期
概要设计过程包括下述9个步骤:
[1]设想供选择的方案
[2]选取合理的方案
[3]举荐最正确方案
[4]功能分解
[5]设计软件结构
[6]设计数据库
[7]制定测试打算
[8]书写文档
[9]审查和复审
2、概要设计的工具、方法和结果(重点)
[1]层次图
[2]结构图
[3]Jacksan图
3、如何选择程序设计语言实现系统
[1]语言自身的功能;
[2]系统用户的要求;
[3]编码和爱护成本:
[4]软件的兼容性:
[5]能够使用的软件工具;
[6]软件可移植性;
[7]开发系统的规模;
[8]程序设计人员的知识水平。
第四章详细设计
1、详细设计时期的全然目标是确定应该如何样具体地实现所要求的系统
2、详细设计的目标不仅仅是逻辑上正确地实现每个模块的功能,更重要的是设3、计出的处理过程应该尽可能简明易明白。
4、详细设计的要紧任务:
每个模块的内部特性、使用的数据。
5、过程设计确实是用顺序、选择和循环三种结构的有限次组合或嵌套,描述模块功能的实现算法。
6、过程设计时期的工具:
流程图、N_S图、问题分析图〔PAD图〕
7、用户界面设计
8、用户界面设计问题
[1]系统响应时刻
[2]用户关心设施
[3]出错信息处理
[4]命令交互
9、用户界面设计过程
用户界面设计是一个迭代的过程,一样步骤如下:
[1]先设计和实现用户界面原型。
[2]用户试用该原型,向设计者提出对界面的评判。
[3]设计者依照用户的意见修改设计并实现下一级原型。
[4]不断进行下去,直到用户中意为止。
10、用户界面设计的差不多原那么
〔1〕可靠性
〔2〕简单性
〔3〕易学习性和易使用性
〔4〕赶忙反馈性
11、用户界面设计指南
〔1〕一样交互
〔2〕信息显示
〔3〕数据输入
12、数据代码设计的原那么、种类、方法
[1]数据输入、输出设计
[2]数据安全设计
[3]详细设计文档与复审
13、如何进行时刻治理
[1]时刻跟踪。
时刻治理第一要跟踪时刻,即对所用的时刻进行跟踪,并储存一份完整和准确的记录。
时刻跟踪要使用工程记事本和标准的时刻记录日志。
[2]跟踪已完成的任务。
除了记录时刻,还要对时刻段内产生的结果进行跟踪和记录,如此才能运算出工作效率。
[3]活动分类。
在时刻跟踪的基础上,能够对活动分类,将重点放在那些占用大部分时刻的少数几项活动上。
在此基础上,能够分析和调整自己的时刻分配优先级,判定自己是否承诺情况太多,时刻不够用
[4]作出时刻安排。
时刻安排是如何使用时刻的打算。
能够使用时刻安排表来编制时刻安排打算。
14、算法与程序运行的效率是直截了当相关的,为了提高程序的运行效率,在进行算法设计时应遵守的原那么:
[1]在编程前,尽可能化简有关的算术表达式和逻辑表达式。
[2]认真检查算法中嵌套的循环,尽可能将某些语句或表达式移到循环别处。
[3]尽量幸免使用多维数组。
[4]尽量幸免使用指针和复杂的表达式。
[5]采纳快速的算术运算。
[6]不要混淆数据类型,幸免在表达式中显现类型混杂。
[7]尽量采纳整数算术表达式和布尔表达式。
[8]选用高效率算法。
15、模块?
什么缘故要进行模块划分?
模块〔Module〕是一组完成指定功能的语句,包括输入、输出、逻辑处理功能、内部信息、运行环境〔与功能对应但不是一对一关系〕。
一个子程序、一个函数、一个对象等差不多上模块的例子。
一个大的软件系统的所有的功能不可能都用一个模块来实现,人的处理能力也限制了模块不能太大太复杂。
将一个大的软件系统,用几个模块来协作实现,每个模块实现一部分功能,保证每个功能都用相应的模块来实现。
将系统划分成模块确实是把大的复杂的问题分解成许多容易解决的小问题,这确实是大事化小、分而治之的思想,是人类对待复杂问题时采纳的高超策略。
16、为了提高模块的独立性,模块之间最好是数据耦合。
17、各种内聚与耦合〔请大伙儿自己补充〕
18、信息流的种类
[1]变换流〔交换流〕
[2]事务流
第五章实现
1、通常把编码和测试统称为实现
2、编码确实是把软件设计结果翻译成用某种程序设计语言书写的程序。
3、软件测试基础
[1]测试时期的全然目标是在软件投入生产性运行之前尽可能多地发觉并排除软件中潜藏的错误,最终把一个高质量的软件系统交给用户使用。
[2]软件测试在软件生命周期中横跨两个时期:
单元测试、综合测试。
[3]软件测试的工作量往往占软件开发总工作量的40%以上,在极端情形,测试那种关系人的生命安全的软件所花费的成本,可能相当于软件工程其他开发步骤总成本的3倍到5倍
4、软件测试的目标
(1)测试是为了发觉程序中的错误而执行程序的过程;
(2)好的测试方案是极可能发觉迄今为止尚未发觉的错误的测试方案;
(3)成功的测试是发觉了至今为止尚未发觉的错误的测试。
5、测试原那么:
1.测试用例应由输入数据和预期的输出数据两部分组成,如此便于对比,有的放矢。
2.测试用例,不仅选用合理的输入数据,还要选择不合理的输入数据,对不合理的输入数据,程序应拒绝同意,并输出相应的提示。
3.除了应检查程序是否做了它应该做的事,还应该检查是否做了它不应该做的事。
例:
打印信息时打出了用户并不需要的余外信息。
4. 应制定测试打算并严格执行,排除随意性。
5.长期保留测试用例,因为以后还要用。
〔例修改后或以后的修理〕
6.对发觉错误较多的程序段,应进行更深入的测试。
7程序员幸免测试自己的程序,①心理状态的障碍。
②自己错误明白得,应由别人或另外机构来测试。
6、软件测试方法一样分为两大类:
动态测试方法与静态测试方法,而动态测试方法中又依照测试用例的设计方法不同,分为黑盒与白盒测试两类。
7、白盒法:
把测试对象看作一个打开的盒子,测试人员须了解程序的内部结构和处理过程,以检查处理过程的细节为基础,对程序中尽可能多的逻辑路径进行测试,检验内部操纵结构和数据结构是否有错,实际的运行状态与预期状态是否一致。
8、黑盒测试是功能测试,设计测试用例需要研究需求规格说明和概要设计说明中有关程序功能或输入输出之间的关系等信息,
9、单元测试内容
1、要紧检查数据能否正确地通过模块。
检查的要紧内容是参数的个数、属性及对应关系是否一致。
2、局部数据结构:
〔局部数据结构要紧检查一下几个方面的错误〕
说明不正确或不一致;初始化或缺省值错误;变量名未定义或拼写错误;数据类型不相容;上溢或下溢,地址错等。
3、重要的执行路路径:
〔白盒法〕4、错误处理:
①检查能否处理,外部输入错误或内部处理引起的错误;
②对错误不能正确描述,或描述内容难以明白得③在错误处理之前,系统已进行干预等。
5、边界条件的测试
10、单元测试测试方法:
每个模块逐个测试,在与被测模块有联系的模块,尚未验好或未测试时,要设计驱动模块和桩模块。
11、集成测试的方法:
要紧有两种,非渐增式测试和渐增式测试。
12、非渐增式测试:
第一对每个模块分别进行单元测试,然后再把所有模块按设计要求组装在一起进行测试。
13、渐增式测试:
逐个把未经测试的模块组装到差不多过测试的模块上去,进行集成测试每加入一个新模块进行一次集成测试,重复此过程,直至程序组装完毕。
14、非渐增式和渐增式区别:
[1]非渐增式把单元测试和集成测试分成两个不同的时期,而渐增式把两个测试合在一起,同时完成。
[2]非渐增式需要更多工作量,〔因为要做较多的驱动模块和桩模块〕而渐增式工作量较少。
[3]渐增式有利于排错,专门是模块接口错误。
[4]非渐增式开始可并行测试所有模块,能充分利用人力,对测试大型软件专门有意义。
15、逻辑覆盖
共有六种逻辑覆盖技术
[1]语句覆盖
[2]判定覆盖
[3]条件覆盖
[4]判定/条件覆盖
[5]条件组合覆盖
[6]路径覆盖
例一:
以下述程序模块为讨论基础:
procedureexample(A,B:
real;varX:
real);
begin
if(A>1)and(B=0)
thenX:
=X/A;
if(A=2)or(X>1)
thenX:
=X+1;
end;
〔一〕关于上述程序段,我们假如选用的测试用例是:
A=2B=0X=3
如此该程序段的4个语句均得到执行,估量结果是x=2.5,从而做到了语句覆盖
〔二〕如使用下述两个测试用例:
A=2B=0X=3
A=1B=0X=1
从而能够使两个判定的〝真〞、〝假〞分别得到覆盖
〔三〕上例中四个条件A>1,B=0,A=2,X>1所有可能显现的结果是:
A>1,A<=1,B=0,B!
=0,A=2,A!
=2,X>1,X<=1
只要选择下面两个测试用例就能够满足条件覆盖标准:
A=2B=0X=3
A=1B=1X=1
〔四〕使用下述用例即可满足判定/条件覆盖标准:
A=2B=0X=3
A=1B=1X=1
〔五〕上例有两个判定表达式:
表达式一:
〔A>1〕and〔B=0〕
表达式二:
〔A=2〕or〔x>1〕
可能的组合形式有:
〔1〕A>1,B=0
〔2〕A>1,B≠0
〔3〕A≤1,B=0
〔4〕A≤1,B≠0
〔5〕A=2,X>1
〔6〕A=2,X≤1
〔7〕A≠2,X>1
〔8〕A≠2,X≤1
该例的条件组合覆盖的测试用例能够是:
A=2B=0X=4
A=1B=1X=1
A=2B=1X=1
A=1B=0X=2
例二:
以下述程序模块为讨论基础:
floatfun(floata,floatb)
{
floatx=0;
if(a==3)||(b>1)
x=a*b;
if(a>2)&&(b==0)
x=a-3;
returnx;
}
语句覆盖:
测试数据
预期返回结果
a=3,b=0
0
判定覆盖:
测试数据
预期返回结果
a=3,b=0
0
a=1,b=0
0
条件覆盖:
测试数据
预期返回结果
a=3,b=0
0
a=2,b=2
4
判定/条件覆盖:
测试数据
预期返回结果
a=3,b=0
0
a=1,b=2
2
a=1,b=1
0
条件组合覆盖:
测试数据
预期返回结果
a=3,b=2
6
a=3,b=0
0
a=1,b=0
0
a=1,b=2
2
16、黑盒测试技术
黑盒测试是功能测试,设计测试用例需要研究需求规格说明和概要设计说明中有关程序功能或输入输出之间的关系等信息,黑盒测试一样有以下三种方法结合起来使用。
等价类划分
边界值分析
错误估量法
〔一〕等价类划分例如一
某都市号码由三部分组成:
地区码:
空白或3位数字
前缀:
非‘0’或‘1’开头的三位数字
后缀:
4位数字
〔二〕等价类划分例如二
某一8位微机,其八进制常数定义为:
以零开头的数是八进制整数,其值的范畴是-0177~0177,如05,0127,-065
请划分上述问题的有效等价类与无效等价类。
17、需求测试的一样方法
[1]进行需求的同行评审。
[2]通过用例设计来测试需求。
测试用例设计是从一个不同于开发的角度上对系统进行分析,因而易于暴露需求存在的问题或者测试用例设计本身的问题。
[3]需求建模测试。
需求建模包括把需求转换成图形模型或形式化语言模型,如采纳UML建模。
[4]基于原型的测试。
原型法〔PrototypeMethod〕是建立一个将开发的系统〔新产品〕的部分实现,以便猎取需求和明白得需求,也用于对系统的一些参数和技术难点、关键进行估量。
18、衡量一个软件开发成功与否的最重要的标准
[1]功能性:
最终软件产品与客户的陈述和隐含要求的一致程度。
[2]可靠性:
涉及到设备及媒体失效背景下软件的健壮性及其相对功能性。
[3]可用性:
描述了用户学会使用软件的容易程度、它的直观性以及由客户组织使用的与其他系统进行交互的能力。
[4]效率:
涉及到运算机资源的有效利用。
[5]可爱护性:
要求软件容易修改和测试且不阻碍它的稳固性。
[6]可移植性:
软件在多平台上运行的能力和对组织标准的一致程度。
19、常见的系统测试有:
[1]功能测试。
依照产品的需求规格说明书和测试需求列表,验证产品的功能实现是否符合产品的需求规格。
[2]协议测试。
对系统协议的一致性、协议的性能指标、协议互操作性和协议健壮性进行测试。
[3]性能测试和压力测试。
对程序的正常性能和应付非正常情形的能力进行测试。
[4]容量测试。
测试系统能处理的数据容量。
[5]安全测试。
测试系统的安全性。
[6]复原性测试与备份测试。
复原性测试检验系统从失败中复原过来的能力。
备份测试是复原性测试的补充。
[7]GUI测试。
测试系统的图形用户接口。
确认界面实现与设计的吻合。
确认界面处理的正确。
[8]健壮性测试。
又叫容错性测试,测试系统显现故障时,是否能够自动复原或者忽略故障连续运行。
[9]兼容性测试。
测试系统对其他系统的兼容性。
[10]可用性测试。
检测用户在明白得和使用系统方面的方便和容易程度。
[11]安装/反安装测试。
测试用户成功安装拆卸系统的方便性和可行性。
[12]文档测试。
验证系统提交给用户的文档的正确性。
[13]在线关心测试。
验证系统在线关心的可用性和正确性。
[14]数据转换测试。
验证系统升级时能否转换原有数据。
20、提高软件质量和可靠的技术大致可分为两大类:
其中一类确实是躲开错误技术,但躲开错误技术无法做到完美无缺和绝无错误,这就需要躲开错误。
21、桩模块是用来代替被测试模块所调用的模块,它的作用是返回被测模块所需的信息。
第6章软件爱护
1、软件爱护〔softwaremaintenance〕确实是在软件产品交付之后对其进行修改,2、以纠正故障,或改进性能和其它属性,或使产品适应改变了的环境。
3、软件爱护的种类
[1]改正性爱护
[2]适应性爱护、
[3]完善性爱护
[4]预防性爱护。
4、爱护的流程
〔1〕确定类型
〔2〕爱护记录的储存
〔3〕爱护的复审
5、爱护的副作用
[1]编码副作用
[2]数据副作用
[3]文档副作用
6、提高软件的可爱护性的方法
[1]明确软件工程的质量目标
[2]利用先进的软件技术和工具
[3]选择便于爱护的程序设计语言
[4]采取有效的质量保证措施
[5]完善程序的文档
7、软件爱护〔softwaremaintenance〕确实是在软件产品交付之后对其进行修改,以纠正故障,或改进性能和其它属性,或使产品适应改变了的环境。
8、软件可爱护性确实是爱护人员对该软件进行爱护的难易程度,具体包括明白得、改正、改动和改进该软件的难易程度。
9、提高软件的可爱护性是软件工程各时期追求的目标之一。
10、在开发时明确质量目标、考虑软件的爱护问题是必须的、重要的。
11、在软件开发时期提供完整、一致的文档,采纳先进的软件开发方法和软件开发工具是提高软件可爱护性的关键。
12、面向对象方法简称为OO〔ObjectedOriented〕方法
13、面向对象分析〔ObjectOrientedAnalysis,简称OOA〕
14、面向对象设计〔ObjectOrientedDesign,简称OOD〕
15、统一建模语言UML〔UnifiedModelingLanguage〕是一种直观的、通用的、可视化建模语言。
16、对象〔Object〕:
面向对象方法把客观世界中的实体抽象为问题域中的对象。
17、类(Class):
类是对具有相同数据和相同操作的一组相似对象。
18、继承〔Inheritance〕:
在层次结构中,下层的派生类具有和上层的基类相同的特性〔包括数据和方法〕,这种现象称为继承。
19、消息传递:
对象彼此之间仅能通过传递消息相互联系。
20、封装性:
对象的信息都被封装在该对象类的定义中,必须发消息要求它执行其某个操作,处理它的数据,不能从外界直截了当对它的数据进行操作。
21、OO=Objects+Classes+Inheritance+CommunicationwithMessages
面向对象=对象+类+继承+消息传