软件工程复习

  • 格式:doc
  • 大小:24.50 KB
  • 文档页数:3

《软件工程》复习提纲
第1章软件工程概述
1.软件危机的定义及其表现
定义:软件危机是指在软件开发和维护过程中遇到的一系列严重问题。

表现:对软件成本和进度估计不准确用户对“已完成的软件”不满意的现象经常发生软件产品的质量往往靠不软件常常是不可维护的软件通常没有适当的文档资料软件成本在计算机总成本中所占比例逐年上升软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势
*2.生命周期的概念
定义:软件从定义、开发、使用和维护,直到最终被废弃的过程。

3软件的定义
定义:软件是计算机程序及其有关的数据和文档。

4 软件工程的基本原理
(1)用分阶段的生命周期计划严格管理
(2)坚持进行阶段评审
(3)实行严格的产品控制
(4)采用现代程序设计技术
(5)结果应能清楚地审查
(6)开发小组的人员应该少而精
(7)承认不断改进软件工程实践的必要性
*5.软件工程三要素
三要素:方法、工具、过程。

*6生命周期分为哪几个时期,每个时期又分为哪几个阶段,每个阶段的主要任务是什么定义时期:问题定义、可行性研究、需求分析开发时期:总体设计、详细设计、编码和单元测试、综合测试维护时期
各个阶段主要任务:问题定义可行性研究需求分析概要设计详细设计软件实现阶段综合测试阶段软件维护
7.瀑布模型的特点、工作过程
特征:(1)阶段间具有顺序性和依赖性(2)推迟实现的观点(3)质量保证的观点
瀑布模型规定了各项软件工程活动,包括:制定开发计划,进行需求分析和说明,软件设计,程序编码,测试及运行维护,并规定它们按固定顺序自上而下、相互衔接。

8.快速原型模型的特点、工作过程
定义:快速建立起来的可以在计算机上运行的程序(原型),它所能完成的功能往往是最终产品完成的功能的一个子集。

三种类型的原型:渐增式的原型用于验证软件需求的原型用于验证设计方案的原型软件工程学的主要内容是软件开发技术和软件工程管理。

软件工程定义:软件工程是软件开发、运行、维护和引退的系统方法。

可行性研究的目的:用最小的代价在最少的时间内确定问题是否值得去解决。

可行性研究的任务:对以后的行动方针提出建议。

2.可行性研究的4个方面:经济可行性、技术可行性、操作可行性、法律、社会效益可行性
需求分析的任务:明确用户对系统的确切要求。

需求分析的具体任务:(1)明确目标系统的具体要求(2)建立目标系统的逻辑模型2.需求分析建模:数据模型:实体-关系图功能模型:数据流图行为模型:状态转换图3.第4章概要设计
1.总体设计的任务:进行系统设计(确定实现方案)、进行结构设计(模块设计)
2.掌握软件设计的基本原理的相关概念:模块、模块化、信息隐藏、局部化、耦合、内聚模块:能够单独命名,由边界元素限定的程序元素的序列,是构成程序的基本构件。

模块化:把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求。

信息隐藏:信息隐蔽是指对一个模块内包含的信息对于不需要这些信息的模块来说,是不能访问的。

其实主要是指模块的实现细节。

局部化是指把一些关系密切的软件元素物理地放得彼此靠近,它有助于实现信息隐蔽。

耦合是对一个软件结构内不同模块之间互连程序的度量,耦合的强弱取决于模块间接口的复杂程度,一般由模块之间的调用方式、传递信息的类型和数量来决定。

内聚是用来度量一个模块内部各个元素彼此结合的紧密程序的,它是信息隐藏和局部化概念的自然扩展,理想内聚的模块只完成一个功能。

3.模块独立程度衡量的两个定性标准:内聚和耦合(高内聚低耦合)
尽量使用数据耦合,少用控制耦合和特征耦合不能用内容耦合功能内聚的内聚程序最高。

4.理解启发规则,掌握其中的相关概念:深度、宽度、扇入、扇出、作用域、控制域及其关系
深度:表示软件结构中控制的层数。

宽度:软件结构内同一个层次上的模块总数的最大值扇出:是一个模块直接控制(调用)的模块数目扇入:指有多少上级模块调用它
作用域是指受该模块内一个判定影响的所有模块的集合.
控制域是这个模块本身以及所有直接或间接从属于它的模块的集合
作用域在控制域范围内。

6数据流的分类:变换流、事务流
Jackson把数据结构分为3种基本类型(1)顺序结构(2)选择结构(3循环结构*表示重复(1)JACKSON程序设计方法的设计步骤(5步)
1.分析并确定输入数据和输出数据的逻辑结构
2.找出输入数据结构和输出数据结构中有对应关系的数据单元
3.从描绘数据结构的Jackson图中导出描绘程序结构的Jackson图。

4.列出所有操作和条件,并且把它们分配到程序结构图的适当位置。

5.用伪码表示程序
第6章实现
1.掌握编码风格
标识符、注释、程序的视觉组织,能够正确为程序添加注视并编写程序
标识符的命名(1)名符其实:代表实际含义(2)名字不应太长,可采用缩写表示,缩写规则应一致注释:1)序言性注释(2)功能性注释
程序的视觉组织——适当使用空格、空行、移行使程序结构更加清晰——阶梯式布局。

2软件测试的目标
(1)测试是为了发现程序而执行程序的过程(2)好的测试方案能够发现尚未发现的错误的测试(3)成功的测试是发现了至今为止尚未发现的错误的测试
3.软件测试的准则
(1)在测试开始时,不要认为程序中没有错误。

穷尽测试是不可能的;测试只能证明程序有错误,但不能证明程序无错误。

(2)要避免测试自己编写的程序;为了尽最大可能的发现错误,应该由独立的第三方担任测试工作(3)测试数据要有输入数据和预期结果(4)要对合理的输入数据和不合理的输出数据都要测试(5)不仅要检查程序功能是否完备,还要检查程序是否做了多余的工作(6)精心设计测试方案(7)对发现错误较多的程序段,应进行更深入的测试测试集群现象(Pareto原理):80%的错误是由20%的模块造成的(8)应长期保存所有的测试用例,直至该软件被废止。

4..黑盒测试法:只知道产品的功能,不知道产品的结构,将软件看作一个黑盒子,按照规格说明书的规定,测试软件是否能够正确接收输入数据,产生正确的输出数据。

即测试程序是否正确的实现了其功能。

因此又称为“功能测试”。

白盒测试法:完全知道程序的内部结构和处理算法,因此可以将程序看作一个透明的白盒子,根据程序内部的逻辑结构测试程序内部的主要执行通路是否能够按照预定的要求正确工作。

又称“结构测试”。

通常用黑盒法设计基本测试方案,再用白盒法作补充。

5.测试步骤:单元测试、集成测试、验收测试、平行运行、每个阶段的工作、测试方法
6.驱动模块、桩模块的含义及其区别、应用场合
驱动模块:驱动程序代替主程序,用来测试子程序。

它主要用在接受测试数据后,调用被测试模块,输出测试结果,由此来检验子程序的处理是否正确。

桩模块:(存根程序)存根程序代替被测试模块所调用的模块。

测试主模块
7.了解ALPHA测试和Beta测试
(1)Alpha测试:用户在开发者的场所,在开发者指导下进行。

2)Beta测试:开发商发布Beta测试版本软件,用户在用户场所进行,遇到问题报告给开发者,开发者进行修改8.白盒测试技术:逻辑覆盖技术要能够设计各种覆盖程度的测试用例、掌握各种覆盖程度的含义、关系
了解软件调试的目的确定错误的原因和位置、分析和改正程序中的错误
了解调试与测试的区别:测试是尽可能发现程序中的错误。

1.软件维护的定义:软件产品运行/维护阶段对软件产品进行的修改。

2.软件维护的分类:改正性维护、适应性维护、完善性维护、预防性维护及其含义可维护性的度量:可理解性,可测试性,可修改性,可移植性
4.决定软件可维护性的因素
(1)系统的大小(2)系统的年龄(3)结构合理性(4)程序设计语言、使用的数据库技术、开关与标号的数量、IF语句的嵌套层次、索引或下表变量的数量(5)文档的质量
5、软件维护的副作用含义及分类
软件维护的副作用定义:指由于修改软件而导致的新的错误或其它多余的操作
分类:编码副作用,数据副作用,文档副作用
面向对象方法的要点是对象、类、继承和消息传递。

面向对象基本概念对象、类、实例、属性、方法、消息、封装性、继承性、多态性。