软件工程复习_第1页
软件工程复习_第2页
软件工程复习_第3页
免费预览已结束,剩余8页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第一章 概述1、软件危机、软件危机产生的原因2、软件工程3、软件工程学的主要内容4、软件工程过程5、软件生命周期6、软件生命周期模型 (SW life cycle model)及各自特点7、软件工程要达到的目标?8、RUP 开发过程有何特点?9、软件危机的表现10、解决软件危机的途径11、演化模型的特点12、快速原型模型的特点?13、软件生存周期分为哪些阶段?各阶段又有哪些基本任务?14、可行性研究的主要内容第一章的内容请大家自己整理)第二章 需求分析1、可行性报告要有结论;或及时中止不可行的项目。2、软件需求是进行软件设计、实现和质量度量的基础。3、需求分析是发现、逐步求精、建模、规格说明和

2、复审的过程。4、建立模型是描述用户需求,定义需求,用以验收产品。5、数据模型用实体 - 关系图来描述数据对象及相互关系。6、功能模型用数据流图来描述。7、行为模型用状态转换图来描绘。8、数据字典用来描述软件使用或产生的所有数据对象、数据存储规则和处理算法等。9、需求分析阶段还应写出软件需求规格说明,有时附上可执行的原型及初步的用户手册。它是需 求分析阶段的最终成果。10、复审:需求分析的结果要经过严格的审查, 确保软件需求的一致性、 完整性、现实性和有效性。11、软件过程改进的实际意义一般软件组织都有它采用的软件过程模型。 软件组织在进行具体软件项目时采用的软件过程, 称为 软件过程实例。 成

3、功的软件过程改进, 无论是对模型还是对实例的改进, 都可以为软件组织提高效 率、减少错误、保证进度、提高质量。据一些持续采用 CMM 进行了三年以上过程改进的软件组织报告, 过程改进典型的投资回报率是 7:1。通过过程改进, 软件组织的平均年生产率递增 37%,缺陷在测试前被发现的比例年增长率 18%, 产品投放市场的时间平均提前 19%,现场错误年平均降低 45%。12、软件过程改进的原则与步骤原则1 过程改进建立在过程评价和过程度量基础上;2 软件过程改进是一个持续的过程;3 过程改进活动本身应当被作为一个过程改进项目来完成;4 将过程度量用于对改进过程进行监控,以便及时对改进活动做必要的

4、调整;5 适当地重复软件过程评价活动。第 1 页 共 11 页步骤1 制定过程改进方案2 评价各个改进方案3 对改进方案进行排序4 估计实施的进度表5 获得管理层的承诺 第三章 概要设计1、概要设计的目的与任务: 通过这个阶段的工作将划分出组成系统的物理元素程序、 文件、数据库、人工过程和文档等等, 另一项重要任务是设计软件的结构, 也就是要确定系统中每个程序是由哪些模块 组成的,以及这些模块相互间的关系。概要设计的过程 由两个主要阶段组成:系统设计阶段,确定系统的具体实现方案;结构设计阶段 概要设计过程包括下述 9 个步骤:1 设想供选择的方案2 选取合理的方案3 推荐最佳方案4 功能分解5

5、 设计软件结构6 设计数据库7 制定测试计划8 书写文档9 审查和复审2、概要设计的工具、方法和结果 ( 重点)1 层次图2 结构图3 Jacksan 图3、如何选择程序设计语言实现系统1 语言自身的功能;2 系统用户的要求;3 编码和维护成本:4 软件的兼容性:5 可以使用的软件工具;6 软件可移植性;7 开发系统的规模;8 程序设计人员的知识水平。第四章 详细设计1、详细设计阶段的根本目标是确定应该怎样具体地实现所要求的系统2、详细设计的目标不仅仅是逻辑上正确地实现每个模块的功能, 更重要的是设 3、计出的处理过程应该尽可 能简明易懂。4、详细设计的主要任务: 每个模块的内部特性、 使用的

6、数据。5、过程设计就是用顺序、选择和循环三种结构的有限次组合或嵌套,描述模块功能的实现算法7、用户界面6、过程设计阶段的工具:流程图、 N_S 图、问题分析图( PAD图) 设计8、用户界面设计问题第 2 页 共 11 页1 系统响应时间2 用户帮助设施3 出错信息处理4 命令交互9、用户界面设计过程 用户界面设计是一个迭代的过程,一般步骤如下:1 先设计和实现用户界面原型。2 用户试用该原型,向设计者提出对界面的评价。3 设计者根据用户的意见修改设计并实现下一级原型。4 不断进行下去,直到用户满意为止。10、用户界面设计的基本原则(1)可靠性(2)简单性(3)易学习性和易使用性(4)立即反馈

7、性11、用户界面设计指南(1)一般交互(2)信息显示(3)数据输入12、数据代码设计的原则、种类、方法1 数据输入、输出设计2 数据安全设计3 详细设计文档与复审13、如何进行时间管理1 时间跟踪。时间管理首先要跟踪时间,即对所用的时间进行跟踪,并保存一份完整和准确的 记录。时间跟踪要使用工程记事本和标准的时间记录日志。2 跟踪已完成的任务。除了记录时间,还要对时间段内产生的结果进行跟踪和记录,这样才能 计算出工作效率。3 活动分类。在时间跟踪的基础上,可以对活动分类,将重点放在那些占用大部分时间的少数 几项活动上。在此基础上,可以分析和调整自己的时间分配优先级,判断自己是否承诺事情 太多,时

8、间不够用4 作出时间安排。时间安排是如何使用时间的计划。 可以使用时间安排表来编制时间安排计划14、算法与程序运行的效率是直接相关的, 为了提高程序的运行效率, 在进行算法设计时应遵守的 原则:1 在编程前,尽可能化简有关的算术表达式和逻辑表达式。2 仔细检查算法中嵌套的循环,尽可能将某些语句或表达式移到循环外面。3 尽量避免使用多维数组。4 尽量避免使用指针和复杂的表达式。5 采用快速的算术运算。6 不要混淆数据类型,避免在表达式中出现类型混杂。7 尽量采用整数算术表达式和布尔表达式。8 选用高效率算法。15、模块?为什么要进行模块划分?模块( Module)是一组完成指定功能的语句,包括输

9、入、输出、逻辑处理功能、内部信息、运行 环境(与功能对应但不是一对一关系) 。一个子程序、一个函数、一个对象等都是模块的例子。第 3 页 共 11 页 一个大的软件系统的所有的功能不可能都用一个模块来实现, 人的处理能力也限制了模块不能太大 太复杂。将一个大的软件系统, 用几个模块来协作实现,每个模块实现一部分功能, 保证每个功能 都用相应的模块来实现。将系统划分成模块就是把大的复杂的问题分解成许多容易解决的小问题, 这就是大事化小、分而治之的思想,是人类对待复杂问题时采用的高明策略。16、为了提高模块的独立性,模块之间最好是数据耦合。17、各种内聚与耦合(请大家自己补充)18、信息流的种类1

10、 变换流(交换流)2 事务流第五章 实现1、通常把编码和测试统称为实现2、编码就是把软件设计结果翻译成用某种程序设计语言书写的程序。3、软件测试基础1 测试阶段的根本目标是在软件投入生产性运行之前尽可能多地发现并排除软件中潜藏的错 误,最终把一个高质量的软件系统交给用户使用。2 软件测试在软件生命周期中横跨两个阶段 : 单元测试、综合测试。3 软件测试的工作量往往占软件开发总工作量的 40%以上,在极端情况, 测试那种关系人的生 命安全的软件所花费的成本, 可能相当于软件工程其他开发步骤总成本的 3 倍到 5 倍4、软件测试的目标(1)测试是为了发现程序中的错误而执行程序的过程;(2)好的测试

11、方案是极可能发现迄今为止尚未发现的错误的测试方案;(3)成功的测试是发现了至今为止尚未发现的错误的测试。5、测试原则: 1.测试用例应由输入数据和预期的输出数据两部分组成,这样便于对照,有的放矢。2. 测试用例,不仅选用合理的输入数据,还要选择不合理的输入数据,对不合理的输入数据, 程序应拒绝接受,并输出相应的提示。3. 除了应检查程序是否做了它应该做的事,还应该检查是否做了它不应该做的事。 例:打印信息时打出了用户并不需要的多余信息。 4. 应 制定测试计划并严格执行, 排除随意性。5. 长期保留测试用例, 因为以后还要用。(例修改后或以后的维修) 6. 对发现错误较多的程序段,应进行更深入

12、的测试。7 程序员避免测试自己的程序,心理状态的障碍。自己错误理解,应由别人 或另外机构来测试。6、软件测试方法一般分为两大类:动态测试方法与静态测试方法,而动态测试方法中又根据测试 用例的设计方法不同,分为黑盒与白盒测试两类。7、白盒法:把测试对象看作一个打开的盒子,测试人员须了解程序的内部结构和处理过程,以检 查处理过程的细节为基础, 对程序中尽可能多的逻辑路径进行测试, 检验内部控制结构和数据结构 是否有错,实际的运行状态与预期状态是否一致。8、黑盒测试是功能测试,设计测试用例需要研究需求规格说明和概要设计说明中有关程序功能或 输入输出之间的关系等信息,9、单元测试内容1、主要检查数据能

13、否正确地通过模块。 检查的主要内容是参数的个数、属性及对应关系是否一致。2、局部数据结构:(局部数据结构主要检查一下几个方面的错误)说明不正确或不一致;初始化或缺省值错误;变量名未定义或拼写错误;数据类型不相容;上溢或下溢,地址错 等。3、重要的执行路路径: (白盒法) 4 、错误处理:检查能否处理, 外部输入错误或内部处理引起的错误;对错误不能正确描述,或描述内容难以理解 在错误处理之前,系统已进行干预等。 5、边界条件第 4 页 共 11 页的测试10、单元测试测试方法:每个模块逐个测试,在与被测模块有联系的模块, 尚未验好或未测试时, 要设计驱动模块和桩模块11、集成测试的方法: 主要有

14、两种,非渐增式测试和渐增式测试。12、非渐增式测试:首先对每个模块分别进行单元测试,然后再把所有模块按设计要求组装在一起进行测试。13、渐增式测试: 逐个把未经测试的模块组装到已经过测试的模块上去,进行集成测试每加入一个新模块进行一次集成测试,重复此过程,直至程序组装完毕14、非渐增式和渐增式区别:非渐增式把单元测试和集成测试分成两个不同的阶段,而渐增式把两个测试合在一起,同时完成。2 非渐增式需要更多工作量, (因为要做较多的驱动模块和桩模块) 而渐增式工作量较少。3 渐增式有利于排错,特别是模块接口错误。4 非渐增式开始可并行测试所有模块,能充分利用人力,对测试大型软件很有意义15、逻辑覆

15、盖共有六种逻辑覆盖技术1语句覆盖2判定覆盖3条件覆盖4判定/条件覆盖5条件组合覆盖6路径覆盖例一: 以下述程序模块为讨论基础: procedure example (A,B: real ; var X: real) ; beginif (A>1) and (B=0)then X := X/A;if(A=2) or (X>1)then X := X+1 ;end;一)对于上述程序段,我们如果选用的测试用例是:A=2 B=0 X=3这样该程序段的 4 个语句均得到执行,预计结果是 x=2.5, 从而做到了语句覆盖 (二)如使用下述两个测试用例:A=2 B=0 X=3A=1 B=0 X=

16、1从而可以使两个判断的 “真”、“假 ”分别得到覆盖三)上例中四个条件 A>1 ,B=0,A=2 ,X>1 所有可能出现的结果是:第 5 页 共 11 页A>1 , A<=1 , B=0, B!=0, A=2, A!=2 , X>1 ,X<=1 只要选择下面两个测试用例就可以满足条件覆盖标准:A=2 B=0 X=3A=1 B=1 X=1(四)使用下述用例即可满足判定 /条件覆盖标准:A=2 B=0 X=3A=1 B=1 X=1(五)上例有两个判定表达式:表达式一:( A>1 ) and(B=0 )表达式二:( A=2 ) or( x>1)可能的组

17、合形式有:1)A>1,B02)A>1,B03)A1,B04)A1,B05)A2,X>16)A2,X17)A2,X>18)A2,X 1该例的条件组合覆盖的测试用例可以是:A=2B=0X=4A=1B=1X=1A=2B=1X=1A=1B=0X=2例二: 以下述程序模块为讨论基础:float fun(float a,float b)float x=0;if(a=3)|(b>1)x=a*b;第 6 页 共 11 页if(a>2) &&(b=0) x=a-3;return x; 语句覆盖:测试数据预期返回结果a=3,b=00判定覆盖:测试数据预期返回结果

18、a=3,b=00a=1,b=00条件覆盖:测试数据预期返回结果a=3,b=00a=2,b=24判定/条件覆盖:测试数据预期返回结果a=3,b=00a=1,b=22a=1,b=10条件组合覆盖:测试数据预期返回结果a=3,b=26a=3,b=00a=1,b=00a=1,b=2216、黑盒测试技术黑盒测试是功能测试, 设计测试用例需要研究需求规格说明和概要设计说明中有关程序功能或输入 输出之间的关系等信息,黑盒测试一般有以下三种方法结合起来使用。等价类划分边界值分析错误推测法(一)等价类划分示例一 某城市电话号码由三部分组成: 地区码:空白或 3 位数字 前 缀:非 0或' 1开'

19、头的三位数字 后 缀: 4 位数字第 7 页 共 11 页(二)等价类划分示例二某一 8 位微机,其八进制常数定义为:以零开头的数是八进制整数,其值的范围是-01770177,如 05, 0127, -065请划分上述问题的有效等价类与无效等价类。第 8 页 共 11 页17、需求测试的一般方法1 进行需求的同行评审。2 通过用例设计来测试需求。测试用例设计是从一个不同于开发的角度上对系统进行分析,因 而易于暴露需求存在的问题或者测试用例设计本身的问题。3 需求建模测试。 需求建模包括把需求转换成图形模型或形式化语言模型, 如采用 UML 建模。4 基于原型的测试。原型法( Prototype

20、 Method )是建立一个将开发的系统(新产品)的部分 实现,以便获取需求和理解需求,也用于对系统的一些参数和技术难点、关键进行估计。18、衡量一个软件开发成功与否的最重要的标准1 功能性:最终软件产品与客户的陈述和隐含要求的一致程度。2 可靠性:涉及到设备及媒体失效背景下软件的健壮性及其相对功能性。3 可用性:描述了用户学会使用软件的容易程度、它的直观性以及由客户组织使用的与其他系 统进行交互的能力。4 效率:涉及到计算机资源的有效利用。5 可维护性:要求软件容易修改和测试且不影响它的稳定性。6 可移植性:软件在多平台上运行的能力和对组织标准的一致程度。19、常见的系统测试有:1 功能测试

21、。根据产品的需求规格说明书和测试需求列表,验证产品的功能实现是否符合产品 的需求规格。2 协议测试。对系统协议的一致性、协议的性能指标、协议互操作性和协议健壮性进行测试。3 性能测试和压力测试。 对程序的正常性能和对付非正常情形的能力进行测试。4 容量测试。测试系统能处理的数据容量。5 安全测试。测试系统的安全性。6 恢复性测试与备份测试。恢复性测试检验系统从失败中恢复过来的能力。备份测试是恢复性 测试的补充。7 GUI 测试。测试系统的图形用户接口。确认界面实现与设计的吻合。确认界面处理的正确。8 健壮性测试。又叫容错性测试,测试系统出现故障时,是否能够自动恢复或者忽略故障继续 第 9 页

22、共 11 页运行。9 兼容性测试。测试系统对其他系统的兼容性。10 可用性测试。检测用户在理解和使用系统方面的方便和容易程度。11 安装反安装测试。测试用户成功安装拆卸系统的方便性和可行性。12 文档测试。验证系统提交给用户的文档的正确性。13 在线帮助测试。验证系统在线帮助的可用性和正确性。14 数据转换测试。验证系统升级时能否转换原有数据。20、提高软件质量和可靠的技术大致可分为两大类: 其中一类就是避开错误技术, 但避开错误技术 无法做到完美无缺和绝无错误,这就需要避开错误。21、桩模块是用来代替被测试模块所调用的模块, 它的作用是返回被测模块所需的信息。第 6 章软 件维护1、软件维护( software maintenance )就是在软件产品交付之后对其进行修改, 2、以纠正故障, 或改进性能和其它属性,或使产品适应改变了的环境。3、软件维护的种类1 改正性维护2 适应性维护、3 完善性维护4 预防性维护。4、维护的流程(1) 确定类型(2) 维护记录的保存(3) 维护的复审5、维护的副作用1 编码副作用2 数据副作用3 文档副作用6、提高软件的可维护性的方法1 明确软件工程的质量目标2 利用先进的软件技术和工具3 选择便于维护的程序设计语言4 采取有效的质量保证措施5 完善程序的文档7、

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论