文档库 最新最全的文档下载
当前位置:文档库 › 软件工程导论复习重点总结 很全(第六版)

软件工程导论复习重点总结 很全(第六版)

软件工程导论复习重点总结  很全(第六版)
软件工程导论复习重点总结  很全(第六版)

第1章软件工程学概述

1.1 软件危机

1.1.1 软件危机的介绍

软件危机(软件萧条、软件困扰):是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。

软件危机包含下述两方面的问题:

如何开发软件,满足对软件日益增长的需求;

如何维护数量不断膨胀的已有软件。

软件危机的典型表现:

(1)对软件开发成本和进度的估计常常很不准确;

(2)用户对“已完成的”软件系统不满意的现象经常发生;

(3)软件产品的质量往往靠不住;

(4)软件常常是不可维护的;

(5)软件通常没有适当的文档资料;

(6)软件成本在计算机系统总成本中所占的比例逐年上升;

(7)软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。

1.1.2 产生软件危机的原因

(1)与软件本身的特点有关

(2)与软件开发与维护的方法不正确有关

1.1.3 消除软件危机的途径

对计算机软件有正确的认识。

认识到软件开发是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。应该推广使用在实践中总结出来的开发软件的成功技术和方法,并继续研究探索。

应该开发和使用更好的软件工具。

总之,为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。

1.2

1.2.1 软件工程的介绍

软件工程:是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。(期中考)

软件工程的本质特性:

软件工程关注于大型程序的构造

软件工程的中心课题是控制复杂性

软件经常变化

开发软件的效率非常重要

和谐地合作是开发软件的关键

软件必须有效地支持它的用户

在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人创造产品

1.2.2 软件工程的基本原理

用分阶段的生命周期计划严格管理

坚持进行阶段评审

实行严格的产品控制

采用现代程序设计技术

结果应能清楚地审查

开发小组的人员应该少而精

承认不断改进软件工程实践的必要性

1.2.3 软件工程方法学

软件工程包括技术和管理两方面的内容。

软件工程方法学3要素:方法、工具、过程

1.传统方法学(生命周期方法学或结构化范型)——强调自顶向下

2.面向对象方法学——强调主动地多次反复迭代

面向对象方法学4个要点:对象、类、继承、消息

1.3 软件生命周期(必考)

三个时期八个阶段:软件生命周期由软件定义、软件开发和运行维护(也称为软件维护)三个时期组成,每个时期又进一步划分成若干个阶段。

三个时期:八个阶段:

软件生命周期软件定义

软件开发

软件维护

问题定义

可行性研究

需求分析

概要设计

详细设计

编码和单元测试

综合测试

运行维护

系统设计

系统实现

1.4 软件过程

1.4.1 瀑布模型

1.4.2 快速原型模型

1.4.3 增量模型

1.4.4 螺旋模型

1.4.5 喷泉模型

第2章可行性研究

2.1可行性研究的任务

可行性研究的目的:

不是解决问题,而是确定问题是否值得去解决。

可行性研究的实质:

进行一次大大压缩简化了的系统分析和设计的过程,也就是在较高层次上以较抽象的方式进行的系统分析和设计的过程。

可行性研究的内容:

首先进一步分析和澄清问题定义,导出系统的逻辑模型;

然后从系统逻辑模型出发,探索若干种可供选择的主要解法(即系统实现方案);

对每种解法都研究它的可行性,至少应该从三方面研究每种解法的可行性。

主要方面:

技术可行性,经济可行性,操作可行性,

其他方面:

运行可行性,法律可行性,

2.2 可行性研究过程

1.复查系统规模和目标

2. 研究目前正在使用的系统

3. 导出新系统的高层逻辑模型

4. 进一步定义问题

5. 导出和评价供选择的解法

6. 推荐行动方针

7. 草拟开发计划

8. 书写文档提交审查

2.3 系统流程图

系统流程图:是概括地描绘物理系统的传统工具。表达的是数据在系统各部件之间流动的情况,而不是对数据进行加工处理的控制过程。

2.4数据流图

2.4.1符号

基本符号:

数据存储:数据存储是处于静止状态的数据;

数据流:数据流是处于运动中的数据。

附加符号:

星号(*):表示“与”关系

加号(+):表示“或”关系

异或(⊕):表示互斥关系

2.5数据字典

数据流图和数据字典共同构成系统的逻辑模型。

2.5.1 数据字典的内容

数据字典的组成:数据流数据流分量(即数据元素) 数据存储处理

2.5.2定义数据的方法

方法:对数据自顶向下分解。

数据组成方式(三种基本类型):顺序选择重复附加类型:可选

符号:

=意思是等价于(或定义为);

+意思是和(即,连接两个分量);

[]意思是或(即,从方括弧内列出的若干个分量中选择一个),通常用“|”号隔开供选择的分量;

{ }意思是重复(即,重复花括弧内的分量);常常使用上限和下限进一步注释表示重复的花括弧。

( )意思是可选(即,圆括弧里的分量可有可无)。

2.5.3数据字典的实现

计算机实现人工实现

2.6成本/效益分析

2.6.1 成本估计:1. 代码行技术 2. 任务分解技术

3. 自动估计成本技术

2.6.2 成本/效益分析的方法

成本/效益分析涉及的4个概念:

1. 货币的时间价值

2. 投资回收期

3. 纯收入

4. 投资回收率:P = F1/( 1 + j ) + F2/( 1 + j )2 + …+ Fn( 1 + j )n

第3章需求分析

需求分析的任务:

需求分析是软件定义时期的最后一个阶段,它的基本任务是准确地回答“系统必须做什么?”这个问题。

确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求。

系统分析员应该写出软件需求规格说明书,以书面形式准确地描述软件需求

3.1需求分析的任务

确定对系统的综合要求

分析系统的数据要求

导出系统的逻辑模型

修正系统开发计划

3.1.1确定对系统的综合要求

1.功能需求

2. 性能需求

3. 可靠性和可用性需求

4. 出错处理需求

5. 接口需求

6. 约束

7. 逆向需求

8. 将来可能提出的要求

3.1.2 分析系统的数据要求

建立数据模型——ER图

描绘数据结构——层次方框图和Warnier图

数据结构规范化

3.2 与用户沟通获取需求的方法

访谈:1. 正式访谈 2. 非正式访谈 3. 调查表 4. 情景分析技术

面向数据流自顶向下求精

简易的应用规格说明技术

快速建立软件原型:(1) 第四代技术(4GL)(2) 可重用的软件构件 (3) 形式化规格说明和原型环境

3.3分析建模与规格说明

3.3.1 分析建模

需求分析过程应该建立3种模型:数据模型功能模型行为模型

数据字典是分析模型的核心

实体-联系图用于建立数据模型的图形

数据流图是建立功能模型的基础

状态转换图是行为建模的基础

3.4实体-联系图

数据模型中包含3种相互关联的信息:数据对象、数据对象的属性、数据对象彼此间相互连接的关系

3.4状态转换图

3.6.1状态

状态图分类:

表示系统循环运行过程,通常不关心循环是怎样启动的。

表示系统单程生命期,需要标明初始状态和最终状态。

3.6.2事件

事件就是引起系统做动作或(和)转换状态的控制信息。

3.6.3符号

3.7其他图形工具

3.7.1 层次方框图

3.7.2Warnier图

3.7.3IPO图

3.8验证软件需求(重点)

3.8.1 从哪些方面验证软件需求的正确性

一致性完整性现实性有效性

第五章总体设计

5.1设计过程

由两个主要阶段组成:

系统设计阶段,确定系统的具体实现方案:设想供选择的方案选取合理的方案推荐最佳方案

结构设计阶段,确定软件结构:功能分解设计软件结构设计数据库制定测试文档书写文档审查和复查

5.2设计原理

5.2.1 模块化

模块化的作用:

采用模块化原理可以使软件结构清晰,不仅容易设计也容易阅读和理解。

模块化使软件容易测试和调试,因而有助于提高软件的可靠性。

模块化能够提高软件的可修改性。

模块化也有助于软件开发工程的组织管理。

5.2.2抽象

5.2.3逐步求精

5.2.4信息隐藏和局部化

5.2.5 模块独立

尽量使用数据耦合,

少用控制耦合和特征耦合,

限制公共环境耦合的范围,

完全不用内容耦合。

七种内聚的优劣评分结果:

高内聚:功能内聚

顺序内聚

中内聚:通信内聚

过程内聚

低内聚:时间内聚

逻辑内聚

偶然内聚

5.3启发规则

1.改进软件结构提高模块独立性

2.模块规模应该适中

3.深度、宽度、扇出和扇入都应适当

4.

5.模块的作用域应该在控制域之内

6.

7.力争降低模块接口的复杂程度

6. 设计单入口单出口的模块

7. 模块功能应该可以预测

5.4 描绘软件结构的图形工具

5.4.1 层次图和HIPO图

1. 层次图(H图)

层次图用来描绘软件的层次结构。很适于在自顶向下设计软件的过程中使用。

2.HIPO图

7.4.2结构图

7.5面向数据流的设计方法

结构化设计方法(简称SD方法),也就是基于数据流的设计方法。

5.5.1概念

面向数据流的设计方法把信息流映射成软件结构,信息流的类型决定了映射的方法。信息流有两种类型:变换流事务流

第6章详细设计

6.1 结构程序设计

经典的结构程序设计:

只允许使用顺序、IF-THEN-ELSE型分支和DO-WHILE型循环这3种基本控制结构;

扩展的结构程序设计:

如果除了上述3种基本控制结构之外,还允许使用DO-CASE型多分支结构和DO-UNTIL型循环结构;

修正的结构程序设计:

再加上允许使用LEAVE(或BREAK)结构。

6.2人机界面设计

6.2.1设计问题

设计人机界面过程中会遇到的4个问题:

系统响应时间:长度易变性

用户帮助设施:集成的帮助设施附加的帮助设施

出错信息处理

命令交互

6.2.3 人机界面设计指南

一般交互指南

信息显示指南

数据输入指南

6.3过程设计的工具

6.3.1 程序流程图(程序框图)

程序流程图的主要缺点:

程序流程图本质上不是逐步求精的好工具,它诱使程序员过早地考虑程序的控制流程,而不去考虑程序的全局结构。

程序流程图中用箭头代表控制流,因此程序员不受任何约束,可以完全不顾结构程序设计的精神,随意转移控制。

程序流程图不易表示数据结构。

6.3.2盒图(N-S图)

盒图具有下述特点:

功能域明确。

不可能任意转移控制。

很容易确定局部和全程数据的作用域。

很容易表现嵌套关系,也可以表示模块的层次结构。

6.3.3 PAD图

它用二维树形结构的图来表示程序的控制流,将这种图翻译成程序代码比较容易。

PAD图的主要优点如下:

使用表示结构化控制结构的PAD符号设计出来的程序必然是结构化程序。

PAD图所描绘的程序结构十分清晰。

PAD图表现程序逻辑易读、易懂、易记。

容易将PAD图转换成高级语言源程序,这种转换可用软件工具自动完成。

即可表示程序逻辑,也可描绘数据结构。

PAD图的符号支持自顶向下、逐步求精方法的使用。

6.3.4 判定表

判定表却能够清晰地表示复杂的条件组合与应做的动作之间的对应关系。

判定表的缺点:

判定表的含义不是一眼就能看出来的,初次接触这种工具的人理解它需要有一个简短的学习过程。

当数据元素的值多于两个时,判定表的简洁程度也将下降。

6.3.5 判定树

判定树的优点:

它的形式简单,一眼就可以看出其含义,因此易于掌握和使用。

判定树的缺点:

简洁性不如判定表,数据元素的同一个值往往要重复写多遍,而且越接近树的叶端重复次数越多。

画判定树时分枝的次序可能对最终画出的判定树的简洁程度有较大影响。

6.3.6 过程设计语言(伪码)

伪代码的基本控制结构:

简单陈述句结构:避免复合语句。

判定结构:IF_THEN_ELSE或CASE_OF结构。

选择结构:WHILE_DO或REPEAT_UNTIL结构。

PDL的优点:

可以作为注释直接插在源程序中间。有助于保持文档和程序的一致性,提高了文档的质量。可以使用普通的正文编辑程序或文字处理系统,很方便地完成PDL的书写和编辑工作。

已经有自动处理程序存在,而且可以自动由PDL生成程序代码。

PDL的缺点:

不如图形工具形象直观,描述复杂的条件组合与动作间的对应关系时,不如判定表清晰简单。

6.4 面向数据结构的设计方法

面向数据结构的设计方法的最终目标是得出对程序处理过程的描述。

6.4.1Jackson

A由B、C、D 3个元素顺序组成根据条件A是B或C或D中的某一个 A由B出现N次(N ≥0)组成

6.4.2 改进的Jackson图

6.4.3 Jackson方法

6.5 程序复杂程度的定量度量

6.5.1 McCabe方法

1. 流图(程序图)

2. 计算环形复杂度的方法

V(G)=流图中的区域数

V(G)=E-N+2

其中E是流图中的边数,N是结点数

V(G)=P+1

其中P是流图中判定结点的数目

6.5.2 Halstead方法

令N1为程序中运算符出现的总次数,N2为操作数出现的总次数,程序长度N定义为:

N=N1+N2

程序中使用的不同运算符(包括关键字)的个数n1,以及不同操作数(变量和常数)的个数n2。预测程序长度的公式如下:

H = n1 log2n1 + n2 log2n2

预测程序中包含错误的个数的公式如下:

E = N log2 (n1+n2)/3000

第7章实现

编码和测试统称为实现。

7.1编码

7.1.1 选择程序设计语言

主要的实用标准:

系统用户的要求

可以使用的编译程序

可以得到的软件工具

工程规模

程序员的知识

软件可移植性要求

软件的应用领域

7.1.2 编码风格

1. 程序内部的文档:恰当的标识符适当的注解程序的视觉组织

2. 数据说明

3. 语句构造

4. 输入输出

5. 效率:程序运行时间存储器效率输入输出的效率

7.2软件测试基础

7.2.1 软件测试的目标

测试是为了发现程序中的错误而执行程序的过程;

好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案;

成功的测试是发现了至今为止尚未发现的错误的测试。

7.2.3 测试方法

黑盒测试(功能测试):

把程序看作一个黑盒子;

完全不考虑程序的内部结构和处理过程;

是在程序接口进行的测试。

白盒测试(结构测试):

把程序看成装在一个透明的盒子里;

测试者完全知道程序的结构和处理算法;

按照程序内部的逻辑测试程序,检测程序中的主要执行通路是否都能按预定要求正确工作。

7.2.4 测试步骤

1. 模块测试(单元测试)

保证每个模块作为一个单元能正确运行;

发现的往往是编码和详细设计的错误。

2. 子系统测试

把经过单元测试的模块放在一起形成一个子系统来测试;

着重测试模块的接口。

3. 系统测试

把经过测试的子系统装配成一个完整的系统来测试;

发现的往往是软件设计中的错误,也可能发现需求说明中的错误;

不论是子系统测试还是系统测试,都兼有检测和组装两重含义,通常称为集成测试。

4. 验收测试(确认测试)

把软件系统作为单一的实体进行测试;

它是在用户积极参与下进行的,而且可能主要使用实际数据(系统将来要处理的信息)进行测试;

发现的往往是系统需求说明书中的错误。

5. 平行运行

7.2.5 测试阶段的信息流

输入信息有两类:

软件配置,包括需求说明书、设计说明书和源程序清单等;

测试配置,包括测试计划和测试方案。

7.3 单元测试

单元测试集中检测模块;

单元测试和编码属于软件过程的同一个阶段;

可以应用人工测试和计算机测试这样两种不同类型的测试方法;

单元测试主要使用白盒测试技术,对多个模块的测试可以并行地进行。

7.3.1 测试重点

模块接口

局部数据结构

重要的执行通路

出错处理通路

边界条件

7.3.2 代码审查

由审查小组正式进行测试称为代码审查;

一次审查会上可以发现许多错误,可以减少系统验证的总工作量。

7.3.3 计算机测试

驱动程序是一个“主程序”,它接收测试数据,传送给被测试的模块,并且印出有关的结果。存根程序代替被测试的模块所调用的模块。它使用被它代替的模块的接口,可能做最少量的数据操作,印出对入口的检验或操作结果,并且把控制归还给调用它的模块。

7.4 集成测试

集成测试是测试和组装软件的系统化技术,主要目标是发现与接口有关的问题。

由模块组装成程序时有两种方法:

7.4.3 不同集成测试策略的比较

混合策略:

改进的自顶向下测试方法

混合法

7.4.4 回归测试

7.5 确认测试

确认测试也称为验收测试,它的目标是验证软件的有效性。

7.5.3 Alpha和Beta测试

Alpha测试是在受控的环境中进行的。

Beta测试是软件在开发者不能控制的环境中的“真实”应用。

1.接口测试

2.路径测试

3.功能测试

4. 健壮性测试

5. 性能测试

6. 用户界面测试

7. 信息安全测试

8. 压力测试

9. 可靠性测试

10. 安装/反安装测试确认测试也称为验收测试,它的目标是验证软件的有效性。Alpha测试是在受控的环境中进行的。

Beta测试是软件在开发者不能控制的环境中的“真实”应用。

4.接口测试

5.路径测试

6.功能测试

4. 健壮性测试

5. 性能测试

6. 用户界面测试

7. 信息安全测试

8. 压力测试

9. 可靠性测试

10. 安装/反安装测试

7.6 白盒测试技术

7.6.1 逻辑覆盖

语句覆盖

判定覆盖:比语句覆盖强,但对程序逻辑的覆盖程度仍不高。

条件覆盖:判定覆盖不一定包含条件覆盖,条件覆盖也不一定包含判定覆盖。

判定/条件覆盖:有时判定/条件覆盖也并不比条件覆盖更强。

条件组合覆盖:条件组合覆盖标准的测试数据并不一定能使程序中的每条路径都执行到。

6. 点覆盖(语句覆盖标准相同)

7. 边覆盖(判定覆盖一致)

8. 路径覆盖

7.6.2 控制结构测试覆盖

1. 基本路径测试

基本路径测试是Tom McCabe提出的一种白盒测试技术。

首先计算程序的环形复杂度;

以该复杂度为指南定义执行路径的基本集合;

2.条件测试

从该基本集合导出的测试用例可保证程序中的每条语句至少执行一次,而且每个条件在执行时都将分别取真、假两种值。

3. 循环测试

循环测试是一种白盒测试技术,它专注于测试循环结构的有效性。

在结构化的程序中通常只有3种循环,即简单循环、串接循环和嵌套循环。

7.7 黑盒测试技术

7.7.1 等价划分

7.7.2 边界值分析

7.7.3 错误推测

7.9 软降可靠性

7.9.1 基本概念

软件可靠性:

程序在给定的时间间隔内,按照规格说明书的规定成功地运行的概率。

软件的可用性:

程序在给定的时间点,按照规格说明书的规定,成功地运行的概率。

第8章维护

软件工程的目的是要提高软件的可维护性,减少软件维护所需要的工作量,降低软件系统的总成本。

8.1 软件维护的定义

软件维护:在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程。可分为4项活动:

改正性维护

适应性维护

完善性维护

预防性维护

8.2软件维护的特点

8.2.1 结构化维护与非结构化维护差别巨大

8.2.2 维护的代价高昂

8.2.3 维护的问题很多

8.3软件维护过程

1.维护组织

2.维护报告

3.维护的事件流

4.保存维护记录

5.评价维护活动

8.4 软件的可维护性

决定软件可维护性的因素主要有7个:

可理解性

可测试性

可修改性

可靠性

可移植性

可使用性

效率

第9章面向对象方法学引论

9.1面向对象方法学概述

9.1.1面向对象方法学要点

(1)认为客观世界是由各种对象组成的,任何事物都是对象

(2)把所有对象都划分成各种类对象,每个对象类都定义了一组数据和一组方法

(3)按照子类和父类的关系,把若干个对象类组成一个层次结构的系统

(4)对象彼此之间仅能通过传递消息相互联系

9.1.2 面向对象开发方法

面向对象=对象+类 +继承+通信

9.1.4 面向对象方法组成

面向对象的分析

面向对象的设计

面向对象的程序设计

9.1.6 面向对象方法的优点

1.与人类习惯的思维方式一致

2.稳定性好

3.可重用性好

4.可维护性好

5.较易开发大型软件产品

9.2 面向对象的概念

9.2.1 对象

是客观事物或概念的抽象表述,即对客观存在的事物的描述统称为对象,对象可以是事、物、或抽象概念,是将一组数据和使用该数据的一组基本操作或过程封装在一起的实体。

对象的特点

(1) 以数据为中心。

(2) 对象是主动的。

(3) 实现了数据封装。

(4) 本质上具有并行性。

(5) 模块独立性好。

9.2.2 类

是一组具有相同属性和相同操作的对象的集合。

9.2.3 实例

由某个特定的类所描述的一个具体的对象。

9.2.4 消息

向对象发出的服务请求(互相联系、协同工作等)。一个消息包含3个部分:接收消息的对象,消息名,消息变元

9.2.5 方法

方法就是对象所能执行的操作,也就是类中所定义的服务。

9.2.6 属性

属性就是类中所定义的数据,它是对客观世界实体所具有的性质的抽象。

9.2.7 封装

对象封装了对象的数据以及对这些数据的操作。

9.2.8 继承(I)

继承是子类自动地共享基类中定义的数据和方法的机制。

单重继承:子类仅从一个父类继承属性和方法

多重继承:子类可从多个父类继承属性和方法

9.2.9 多态性

9.2.10 重载

9.3 面向对象建模(II)

面向对象开发软件,需要建立3种形式的模型。

对象模型。描述系统数据结构—数据结构。

动态模型。描述系统控制结构—执行操作。

功能模型。描述系统功能—数值变化。

9.4 对象模型

9.4.1类图的基本符号(I)

1. 定义类

2.定义属性

可见性属性名:类型 = 缺省值 {性质串}

可见性(visibility)表示该属性对类外的元素是否可见。

分为:

public(+)公有的,即模型中的任何类都可以访问该属性。

private(-)私有的,表示不能被别的类访问。

protected(#)受保护的,表示该属性只能被该类及其子类访问。如果可见性未申明,表示其可见性不确定。

3. 定义操作

可见性操作名(参数表):返回类型{性质串}

9.4.2 表示关系的符号(I)

9.4.2.1 关联(I)

关联表示两个类的对象之间存在某种语义上的联系。

(1)普通关联

递归关联:一个类与本身有关联关系

(3)限定关联

(4)关联类

9.4.2.2 聚集(I)

(1)共享聚集

如果在聚集关系中处于部分方的对象可同时参与多个处于整体方对象的构成,则该聚集称为共享聚集。

(2)组合聚集

如果部分类完全隶属于整体类,部分与整体共存,整体不存在了部分也会随之消失,则该聚集称为组合聚集。

9.4.2.3 泛化(I)

(1)普通泛化

(2)受限泛化

预定义的约束有4种:多重、不相交、完全和不完全。

9.4.2.4 依赖

9.4.2.5 细化

9.5动态模型

9.6功能模型

9.6.1用例图

模型元素:系统、行为者、用例及用例之间的关系(扩展关系、使用关系)用例的实例是脚本

第10章面向对象分析

10.1 面向对象分析的基本过程

面向对象分析:抽取和整理用户需求并建立问题域精确模型的过程.

理解----用户、分析员和领域专家

表达----需求规格说明书(对象模型、动态模型、功能模型)

验证----二义性,完善性

对象模型最基本、最重要、最核心。

静态结构(对象模型)

3个子模型交互次序(动态模型)

数据变换(功能模型)

复杂问题的对象模型的5个层次

面向对象分析的过程

寻找类与对象

识别结构

识别主题

定义属性

建立动态模型

建立功能模型

定义服务

10.2 需求陈述

需求陈述是阐明“做什么”,而不是“怎样做”

问题范围

功能需求

性能需求

应用环境

假设条件

第11章面向对象设计

11.1 面向对象设计的准则

1.模块化

2. 抽象

3. 信息隐藏

4.弱耦合

耦合指不同对象之间相互关联的紧密程度。

对象之间的耦合分两类:

交互耦合

如果对象之间的耦合通过消息连接来实现,则这种耦合就是交互耦合。交互耦合应尽可能松散。

继承耦合

与交互耦合相反,应该提高继承耦合程度。

5. 强内聚

在面向对象设计中存在下述3种内聚:

服务内聚:一个服务应该完成一个且仅完成一个功能。

类内聚:一个类应该只有一个用途,它的属性和服务应该是高内聚的。

一般-特殊内聚:设计出的一般-特殊结构,应该符合多数人的概念

6. 可重用

11.2 启发规则

1. 设计结果应该清晰易懂

2. 一般-特殊结构的深度应适当

3. 设计简单的类

4. 使用简单的协议

5. 使用简单的服务

6. 把设计变动减至最小

第13章软件项目管理

软件工程计划

控制度量软件规模估算工作量进度计划

风险管理

质量保证

配置管理

组织

明确软件开发的目标

提供组织机构和资源配置方面的保证

保证开发目标的实现

技术

管理

13.1估算软件规模

软件工程重点整理

软件工程重点 (吐血整理——林新发) 红色的是重点中的重点 前面数字是课本页码 第一章概论 1 什么是计算机软件 计算机软件指计算机系统中的程序及其文档 3软件的特点 (1)软件是一种逻辑实体,而不是有形的系统元件,其开发成本和进度难以准确地估算 (2)软件是被开发的或被设计的,它没有明显的制造过程,一旦开发成功,只需复制即可,但其维护的工作量大 (3)软件的使用没有硬件那样的机械磨损和老化问题 4软件的分类 (1)系统软件(如操作系统、编译程序等)、 (2)支持软件(如数据库管理系统、网络软件、软件开发环境等)、 (3)应用软件(如实时软件、嵌入式软件、科学和工程计算软件、事务处理软件、人工智能软件等) 6软件工程定义 软件工程是应用计算机科学、数学及管理科学等原理,以工程化的原则和方法制作软件的工程 7生存周期 软件有一个孕育、诞生、成长、成熟、衰亡的生存过程。这个过程即为计算机软件的生存周期 软件生存周期大体可分为如下几个活动:计算机系统工程、需求分析、设计、编码、测试、运行和维护 12能力成熟度模型CMM(了解一下) 初始级、可重复级、已定义级、已管理级、优化级 18瀑布模型(重) 系统工程、需求分析与规约、设计与规约、编码与单元测试、集成测试系统测试、运行与维护 第二章系统工程 41系统工程的任务 (1)识别用户的要求,确定待开发软件的总体要求和范围,

(2)系统建模和模拟 (3)进行成本估算,做出进度安排 (4)进行可行性分析,即从经济、技术、法律等方面分析待开发的软件是否有可行的解决方案,并在若干个可行的解决方案中作出选择。 (5)生成系统规格说明书 42可行性分析 (1)经济可行性(成本、效益、货币的时间价值、投资回收期、纯收入) (2)技术可行性(风险分析、资源分析、技术分析) (3)法律可行性 第三章需求工程 48软件需求 指用户对目标软件系统在功能、行为、性能、设计约束等方面的期望。 包括:功能需求、性能需求、用户或人的需求、环境需求、界面需求、文档需求、数据需求、资源使用需求、安全保密要求、可靠性需求、软件成本消耗与开发进度需求、其他非功能需求 50需求获取方法与策略(重) 建立顺畅的通信途径、访谈与调查、观察用户操作流程、组成联合小组、用况 51 图3.2 53 创建用况模型的主要步骤 (1)确定谁会直接使用该系统,即参与者(Actor) (2)选取其中一个参与者 (3)定义该参与者希望系统做什么,参与者希望系统作的每件事将成为一个用况 (4)对每件事来说,何时参与者会使用系统,通常会发生什么,这就是用况的基本过程 (5)描述该用况的基本过程 54需求分析原则(重) 1.必须能够表示和理解问题的信息域 2.必须能够定义软件将完成的功能 3.必须能够表示软件的行为(作为外部事件的结果) 4.必须划分描述数据、功能和行为的模型,从而可以分层次地揭示细节

公共基础知识之简答题汇总

1、哲学和具体科学的关系? 答:(1)马克思主义哲学与具体科学是一般与个别的关系,二者之间存在着既相互区别又相互联系的辩证统一关系。(2)它们之间的区别表现在:具体科学以世界某一特殊领域的具体规律为自己的研究对象,因而其理论具有个别性和特殊性;马克思主义哲学以包括自然、社会和人类思维在内的整个世界的最一般规律作为自己的研究对象,因而其理论具有一般性和普遍性。(3)它们之间的联系表现在:一方面,马克思主义哲学以具体科学为基础,没有具体科学的发展,马克思主义哲学既不可能产生,也不可能发展;另一方面,具体科学以马克思主义哲学为指导,马克思主义哲学为具体科学的研究提供正确的世界观和方法论。 2、哲学基本问题及内容? 答:在哲学研究的众多问题中,有一个重大的基本问题,那就是精神和物质的关系问题。哲学基本问题包括两方面的内容:一是,精神和物质何者为第一性,即谁先谁后,谁决定谁,谁是世界的本质、本原。二是,精神和物质之间有无同一性,人们能否认识世界和改造世界。在这个问题上,哲学史上历来存在着两种根本对立的观点:一种是辩证法的观点,他把世界看作是普遍联系的整体和永恒发展的过程,一切事物都是由内部矛盾推动而不断地运动、变化和发展着;另一种是形而上学的观点,它用孤立的、静止的、片面的观点看世界,把世界的各种现象看作是各自孤立、静止不变的东西,认为世界是没有矛盾的,是不会发展的,有变化也只是事物数量的增减或场所的变更,认为这种变化纯粹是外力推动的结果。 3、“与时俱进”的科学含义是什么? 答:与时俱进是解放思想和实事求是的根本要求。与时俱进,就是人们的思想和行为要随着时间的改变而改变,随着事物的发展而发展,要体现时代性、把握规律性、富于创造性。首先,与时俱进必须体现时代性。与时俱进要求我们始终站在时代的前列,使得我们的思想理论和实践充分反映时代进步和发展的要求,体现时代特点和时代精神,要努力适应时代的需要,及时解决时代发展中的新课题。其次,与时俱进必须把握规律性。把握规律性是进行理论创新的前提。所谓创新决不是主观任意的创造,而是符合严格的科学性要求的创造性活动。就社会领域内的创新活动来说,必须把握社会发展的客观规律。今天,摆在我们面前的现实任务,就是要不断认识人类社会发展的基本规律,探索在新历史条件下资本主义的发展规律、社会主义的发展规律和执政的无产阶级政党的建设规律。再次,与时俱进必须富于创造性。弘扬与时俱进精神,实现理论和实践的创新,关键在于创造出新的东西。 4. 怎么理解实践是检验真理的标准? 答:原理:实践是检验真理的唯一标准是指:只有实践才能作为检验认识正确与否,即是否为真理的标准,除此之外再无其他标准。唯一性:实践之所以能够成为检验真理的唯一标准,是由真理的本性和实践的特点所决定的。从真理的本性来看,真理是主观认识与客观实际相符合。所谓检验真理,实质上就是判定主观认识与客观实际是否符合以及符合的程度如何。从实践的特点来看,实践是连接主观与客观的桥梁。简单地说,认识指导实践,如果实践成功,得到了预想的结果,说明指导实践的认识是正确的,是真理,否则就是谬误。辨证统一性:实践标准是绝对性与相对性的统一,确定性与不确定性的统一。实践标准的绝对性或确定性是指实践标准的唯一性和可靠性,即实践是检验真理的唯一标准,并且实践最终一定能鉴别认识是否具有真理性。实践标准的相对性或不确定性实质实践标准的过程性、局限性,即实践是具体的和历史的。 5 . 社会发展的根本动力是什么? 答:正是生产力与生产关系的矛盾与经济基础和上层建筑的矛盾之间的交互作用,引起社会形态的依次更替,推动社会不断地由低级向高级发展。社会基本矛盾是社会发展的根本动力。 6 . 什么叫实是求是?

软件工程导论期末考试试题和答案

1.软件生存周期一般可分为__问题定义__、可行性研究、_需求分析_____、设计编码、__ 测试________、运行与维护阶段。 2.按软件的功能进行划分,软件可以划分为系统软件、支撑软件 和应用软件。 3.可行性研究主要集中在以下四个方面经济可行性、技术可行 性、法律可行性和抉择。 4.用户界面的可使用性是用户界面设计最重要的也是最基本的目标。 5.常见的软件概要设计方法有3大类:以数据流图为基础构造模块结构的___结构化设计 方法_________,以数据结构为基础构造模块的__jackson方法__________,以对象、类、继承和通信为基础的__面向对象设计方法__________。 6.__数据流图________和__数据字典___共同构成系统的逻辑模型。 7.软件测试的方法有__分析方法________和___非分析方法_______(即黑盒法)。 8.单元测试一般以___白盒_____________测试为主,___黑盒______测试为辅。 9.成本估计方法主要有__自底向上估计________、_自顶向下估计_________和算法模型估 计三种类型。 1.下列哪个阶段不属于软件生存周期的三大阶段( C )。 A、计划阶段 B、开发阶段 C、编码阶段 D、维护阶段 2.需求分析是(A )。 3.A、软件开发工作的基础B、软件生存周期的开始 4.C、由系统分析员单独完成的D、由用户自己单独完成的 5.原型化方法是软件开发中一类常用的方法,它与结构化方法相比较,更需要(B )。 6.A、明确的需求定义B、完整的生命周期 7.C、较长的开发时间D、熟练的开发人员 8.软件维护时,对测试阶段未发现的错误进行测试、诊断、定位、纠错,直至修改的回归 测试过程称为( A )。 9.A、改正性维护B、适应性维护 10.C、完善性维护D、预防性维护 11.一般说来,投入运行的软件系统中有错误(A )。

软件工程导论复习知识点

一、软件: 软件定义: 软件=程序+文档+数据 软件特点: 1、具有抽象性 2、没有明显的制造过程 3、软件的维护比硬件的维护要复杂得多 4、对计算机系统有着不同程度的依赖性 5、尚未完全摆脱手工艺的开发方式 6、软件本身是复杂的 7、软件成本相当昂贵 8、相当多的软件工作涉及到社会因素软件的发展: 程序设计、程序系统、软件工程 软件危机: 软件危机指的是软件开发和维护过程中遇到的一系列严重问题。 软件危机的问题: 如何开发软件,怎样满足对软件的日益增长的需求;如何维护数量不断膨胀的已有软件。 软件危机表现: 1.开发成本难以控制,进度不可预计; 2.软件系统的质量和可靠性很差,难以满意; 3.软件文档相当缺乏,软件系统不可维护; 4.软件开发生产率很低,软件产品供不应求。 5.软件产品成本十分昂贵。

软件危机产生原因: 1、软件本身的特点 2、对软件开发与维护存在许多错误认识和做法 3、软件开发与维护的方法不正确 解决软件危机途径: 1、将软件开发看成是一种组织严密、管理严格、各类人员协同配合共同完成的工程项目。 2、研究和推广成功的软件开发技术和方法。 3、开发和使用好的软件工具。 软件生命周期: 软件所经历的定义、开发、使用和维护直到废弃所经历的时期。 程序设计环境: 源程序编辑,编译或解释,链接,调试和运行工具的集合 软件工程环境: 软件定义,设计和实现,测试和维护等各个阶段所使用的软件工具的集合 二、软件工程: 软件工程定义: 研究如何应用一些科学理论和工程上的技术来指导软件的开发,用较少的投资获得高质量的软件的一门学科。 软件工程性质: 涉及计算机科学、工程科学、管理科学、数学等领域,着重于如何建造一个软件系统。用工程科学中的观点来进行费用估算、制定进度、制定计划和方案。用管

软件工程知识点总结

软件工程(简要知识点) 一、. 软件过程五个模型对比(瀑布模型、快速原型、增量、螺旋、喷泉模型) 二、可行性研究: 1、任务:用最小的代价在尽可能短的时间内确定问题是否能够解决。 2、四个方面:技术、经济、操作可行性、法律 3、数据流图四种成分:1、源点/终点2、处理3、数据存储 4、数据流 三、需求分析: 1、任务:确定系统必须完成哪些工作,对目标系统提出完整、清晰、具体的要求。 2、结构化方法就是面向数据流自顶向下逐步求精进行需求分析的方法。 3、实体联系图:1、数据对象2、属性3、联系(1:1、1:N、M:N) 四、总体设计: 1.任务:回答“概括的说,系统应该如何实现”,用比较抽象概括的方式确定系统如何完成预定的任务,也就是说应该确定系统的物理配置方案,并且进而确定组成系统的每个程序结构。 2.系统设计阶段(确定系统具体实施方案)、结构设计阶段(确定软件结构) 3.模块独立:内聚和耦合 4. 耦合表示一个软件结构内各个模块之间的互连程度,应尽量选用松散耦合的系统

5. 内聚(Cohesion): 一个模块内各元素结合的紧密程度 6.面向数据流的设计方法:变换流和事务流 五、详细设计: 1.任务:确定应该怎样具体的实现所要求的系统,也就是说经过这个阶段的设计工作应该得出对目标系统的精确描述,从而在编码阶段可以把这个描述直接翻译成用某种程序设计语言书写的程序。 2.过程设计的工具(程序流程图、盒图、PAD图、判定表、判定树) 七、测试: 1、单元测试:又称模块测试。每个程序模块完成一个相对独立的子功能,所以可以对该模块进行单独的测试。由于每个模块都有清晰定义的功能,所以通常比较容易设计相应的测试方案,以检验每个模块的正确性。 2、集成测试: 在单元测试完成后,要考虑将模块集成为系统的过程中可能出现的问题,例如,模块之间的通信和协调问题,所以在单元测试结束之后还要进行集成测试。这个步骤着重测试模块间的接口,子功能的组合是否达到了预期要求的功能,全程数据结构是否有问题等。 3、白盒测试技术(逻辑覆盖、基本路经测试)

最新《公共基础知识》重点归纳

法理 ●法的概念:特定物质生活条件决定的统治阶级意志的体现,由国家制定认可,由国家强制力保证实施的行为规范的综合 ●法的特征:1、调整人的行为或社会关系2、国家制定或认可、并具有普遍约束力3、以国家强制力保护实施4、规定权利和义务 ●法的本质:统治阶级意志的表现 ●法的规范作用:指引、评价、预测、教育和强制 法的作用 ●法的社会作用:维护统治阶级的阶级统治;执行社会公共事务。 ●法与经济基础的关系:经济基础决定法,法又反作用于经济基础。 ●法与生产力的关系:生产力发展的水平直接影响法的发展水平。法律离开社会生产力的发展,既无存在的可能,也无存在的必要。 ●法对市场经济宏观调控的作用:引导;促进;保障;制约。 ●法对微观经济的作用:确认经济活动主体的法律地位,调节经济活动中的各种关系,解决经济活动中哦的各种纠纷,维持正常的经济秩序 ●法与政治的关系:法受政治制约(政治关系发展、整体改革、政治活动的内容),法服务于政治(调节阶级间、阶级内关系,维护社会关系、社会秩序;打击制裁违法犯罪,调整公共事务关系,维护公共秩序) ●法与党的政策的关系: 相同点(内容实质方面联系):阶级本质、指导思想、基本原则、经济基础、社会目标等 区别:意志属性、规范形式、调整范围(不尽同)、实施方式、稳定性程序化程度 ●法与党的政策相互作用: 一、法的制定:1、政策是立法的依据和指导思想 2、发将政策转为形式合理效力普遍的行为规范 二.发的实施:1、政策变法,使正统,又反之约束政治活动 2、法的实施借助政策作用 ●社会主义民主与法制是相互依存、相互作用、紧密联系、不可分割的。 ●民主是法制的前提和基础,因为:民主是法制产生的依据、力量源泉,决定了法制的性质和内容 ●法的渊源的专有含义:法律规范的形式上的来源和其外在表现形式 ●法律效力等级为:宪法-法律-行政法规-地方性法规-规章(部门和地方政府)。 ●宪法:根本大法,最高法律效力 ●法律:由全国人大或其常务委员会制定、颁布;全国范围内生效;规范性法律文件 ●行政法规:国务院为领导和管理国家各项行政事务根据为宪法、法律 国务院发布的决定、命令,凡具有规范性的也属于发的渊源 ●地方性法规:地方人大及常委会制定(省、自治区、直辖市、省政府所在市、国批的较大市),适用本地方。 ●规章:1、部门规章:指由国务院各部委+中银+审计署+具有行政管理职能的直属机构;依据为:宪法、法律、国务院的行政法规、决定、命令 2、地方规章:政府制定(省、自治区、直辖市、省自治区政府所在市、经济特区所在市、国的较大市)依据:宪法、法律、行政法规 ●自治条例和单行条例:民族自治地方人大制定,区域内生效 ●特别行政区法:在特别行政区内实行的制度由全国人大以法律规定。 ●国际条约:与民法规定不同的,适用国际条约,但声明保留的条款除外。 ●规定是规范性文件,不属于法律范畴,效力低于法律。 ●广义的法律包括法律、行政法规、地方性法规和规章。 ●法律关系三要素(法律规范在调整人们行为过程中形成的权利义务关系):主体(法律关系的参加者)、客体(权利义务指向的对象:物、精神产品、人身、行为)、内容(权利义务) ●权利能力:能够才加一定的法律关系,依法享有权利承担义务的主体能力; 行为能力:法律关系的主体能够通过自己的行为实际取得权利和承担义务的能力 行为能力必须以权利能力为前提,无权利能力就无法谈行为能力。 ●法人的权利能力:生于成立,终于解体 公民的权利能力:始于出生,终于死亡 ●自然人有权利能力,未必有行为能力,根据年龄和精神状况,分为:完全、限制、无行为能力人

2019最新软件工程导论期末考试题库及答案

2019最新软件工程导论期末考试题库及答案 1.填空题 1.一般来说,可以从__一致性__、_完整性___、_现实性____和_有效性___四个方面验证软件需求的正确性。 2.IPO图是_输入、处理和输出图_的简称,它是美国IBM 公司发展完善起来的一种图形工具。 3.系统流程图是描述__物理模型__的传统工具,用图形符 号表达了系统中各种元素之间的_____信息流动_____情况。4.数据流图中的箭头表示数据流,椭圆或圆形表示数据处理,矩形表示数据的源点/终点。5.软件测试的步骤按顺序分别是:___单元测试_____、子系统测试、系统测试(子系统和系统测试通常称为集 成测试)、__确认测试__和_____系统测试(集成测试)____ 6.软件生命周期一般可分为_问题定义_、可行性研究、_需求分析_、设计编码、_测试_、运行与维护阶段。 7.可行性研究主要集中在以下四个方面_经济可行性_、__技术可行性____、__法律可行性___和抉择。 8.在结构化设计中,HIPO图应用在总体设计阶段,由IPO图和_层次图_两部分组成。 9.复杂问题的对象模型通常由下述五个层次组成:主题层、___类与对象_层、__结构___层、_属性_层和__服务_层。 10.实施精化设计的目标是基于模块的“高内聚低耦合” 的原则,提高模块的_独立性。 11.软件生命周期一般可分为___问题定义_、可行性研究、__需求分析__、概要设计__、详细设计、编码、__软件测试_、运行与维护阶段。 12.面向对象的数据存储管理模式分为__文件__、_关系数据库__和__面向对象数据库___三种。 13.单元测试一般以_白盒_测试为主,__黑盒__测试为辅。

软件工程知识点汇总

软件工程知识点汇总 1 软件工程、软件工程方法学:三要素 1.1 软件工程:○1应用系统化的、规范化的、可度量的方法来开发、运行和维护软件,即将工 程应用到软件;○2对○1的各种方法的研究 1.2 软件工程是一门研究用工程化方法构建和维护有效的实用的和高质量的软件的学科 1.3 软件工程三要素是:方法、工具、过程 软件工程的方法:是指完成软件开发各项任务的技术方法 软件工具:是指为软件工程方法的运用提供自动半自动的软件支撑环境 软件工程过程:是指将软件工程方法和工具综合起来以达到合理、及时地进行计算机软件开发这一目的 2 软件工程的原则包括:模块化原则、信息隐蔽原则、抽象化原则、模块独立原则(内聚、耦合)、 依赖倒转原则、开闭原则等 2.1 模块化原则:指解决一个复杂问题时自顶向下逐层把软件系统划分为若干模块的过程。模 块是程序中相对独立的成分,一个独立的编程单位,应有良好的编程接口,模块的大小要 适中,模块过大会使模块内部的复杂性增加不利于模块的理解和修改,模块过小会导致整 个系统表示过于复杂,不利于控制系统的复杂性。 2.2 信息隐蔽原则:采用封装技术,将程序模块的实现细节隐藏起来,使模块接口尽量简单。 2.3 抽象化原则:抽取事物最基本的特性和行为,忽略非本质细节,采用分层次抽象,自顶向 下,逐层细化的办法控制软件开发过程的复杂性。 2.4 模块独立原则:是指每个模块只完成系统要求的独立子功能,并且与其他模块的联系最少 且接口简单。要求在一个物理模块内集中逻辑上相互关联的计算机资源,保证模块间由松 散的偶合关系,模块内部有较强的内聚性,这有助于控制系统的复杂性。(即:高内聚低 耦合) 2.5 依赖倒转原则:抽象不应该依赖于细节,细节应该依赖于抽象。 2.6 开闭原则:软件实体应该是可扩展的,但是不可以修改。即对于扩展是开放的,对于更改 是封闭的。 3 软件开发模型:瀑布模型;快速原型;喷泉模型;各种模型的工作原理、阶段、每阶段任务、 特点、示意图; 软件开发模型(也称为软件过程模型):是从软件项目需求定义开始直至软件经使用后废弃为止,跨 越整个生命周期的系统开发、运行和维护所实施的全部过程、活动和任务的结构框架 3.1 瀑布模型(又称线性模型): 3.1.1工作原理:规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。 前一阶段的工作成果是后一阶段工作开始的基础.所以,每个阶段都必须交出合格的文档,必须对前阶段的工作进行评审,前一阶段的工作完成后才可以开始后一阶段的工作 3.1.2 阶段: 计划时期:问题定义、可行性研究 开发时期:需求分析、设计、编码、测试 运行时期:运行和维护 3.1.3 各阶段任务: 1.需求分析和定义 在软件项目进行过程中,需求分析是从软件定义到软件开发的关键步骤,是今后软件,开发的基本依据,同时也是用户对软件产品进行验收的基本依据。需求分析和定义是以用

计算机二级公共基础知识高频考点归纳总结

第一章数据结构与算法 算法 1、算法:是指解题方案的准确而完整的描述。算法不等于程序,也不等计算机方法,程序的编制不可能优于算法的设计。 2、算法的基本特征:是一组严谨地定义运算顺序的规则,每一个规则都是有效的,是明确的,此顺序将在有限的次数下终止。特征包括:(1)可行性;(2)确定性(3)有穷性(4)拥有足够的情报。 3、算法的基本要素:一是对数据对象的运算和操作;二是算法的控制结构。 4、指令系统:一个计算机系统能执行的所有指令的集合。 5、基本运算包括:算术运算、逻辑运算、关系运算、数据传输。 6、算法的控制结构:顺序结构、选择结构、循环结构。 7、算法基本设计方法:列举法、归纳法、递推、递归、减斗递推技术、回溯法。 8、算法复杂度:算法时间复杂度和算法空间复杂度。 9、算法时间复杂度是指执行算法所需要的计算工作量。 10、算法空间复杂度是指执行这个算法所需要的内存空间。 数据结构的基本基本概念 1、数据结构研究的三个方面: (1)数据集合中各数据元素之间所固有的逻辑关系,即数据的逻辑结构; (2)在对数据进行处理时,各数据元素在计算机中的存储关系,即数据的存储结构;(3)对各种数据结构进行的运算。数据结构是指相互有关联的数据元素的集合。 2、数据的逻辑结构包含:(1)表示数据元素的信息;(2)表示各数据元素之间的前后件关系。数据的存储结构有顺序、链接、索引等。 3、线性结构条件:(1)有且只有一个根结点;(2)每一个结点最多有一个前件,也最多有一个后件。非线性结构:不满足线性结构条件的数据结构。 线性表及其顺序存储结构 1、线性表是由一组数据元素构成,数据元素的位置只取决于自己的序号,元素之间的相对位置是线性的。在复杂线性表中,由若干项数据元素组成的数据元素称为记录,而由多个记录构成的线性表又称为文件。 2、非空线性表的结构特征: (1)且只有一个根结点a1,它无前件;(2)有且只有一个终端结点an,它无后件; (3)除根结点与终端结点外,其他所有结点有且只有一个前件,也有且只有一个后件。结点个数n称为线性表的长度,当n=0时,称为空表。 3、线性表的顺序存储结构具有以下两个基本特点:(1)线性表中所有元素的所占的存储空间是连续的; (2)线性表中各数据元素在存储空间中是按逻辑顺序依次存放的。 4、顺序表的运算:插入、删除。 栈和队列 1、栈是限定在一端进行插入与删除的线性表,允许插入与删除的一端称为栈顶,不允许插入与删除的另一端称为栈底。栈按照“先进后出”(FILO)或“后进先出”(LIFO)组织数据,栈具有记忆作用。用top表示栈顶位置,用bottom 表示栈底。 2、栈的基本运算:(1)插入元素称为入栈运算;(2)删除元素称为退栈运算;(3)读栈顶元素是将栈顶元素赋给一个指定的变量,此时指针无变化。 3、队列是指允许在一端(队尾)进入插入,而在另一端(队头)进行删除的线性表。Rear指针指向队尾,front 指针指向队头。 4、队列是“先进行出”(FIFO)或“后进后出”(LILO)的线性表。 线性链表

软件工程导论期末考试题

一、单项选择题 1.适合于面向对象方法学的软件生存周期模型是( B ) A.瀑布模型 B.喷泉模型 C.螺旋模型 D.增量模型 2.从实用角度看,数据规范化程度在大多数场合选用第( C )范式。 A. 1 B.2 C.3 D.5 3. 可行性分析研究的目的是( A )。 A.项目值得开发否 B.争取项目 C.开发项目 D.规划项目 4. 模块的内聚性最高的是 ( D ) A.逻辑内聚 B.时间内聚 C.偶然内聚 D.功能内聚 5.开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称做 ( B ) A. 软件工程 B. 软件危机 C. 软件周期 D. 软件产生 6. 需求分析阶段的任务是确定( D ) A.软件开发方法 B.软件开发工具 C.软件开发费 D.软件系统的功能 7. 完整的软件结构通常用( B )图来表示。 A. IPO 图 B. HIPO 图 C.PAD 图 D.DFD 图 8. 在白盒法技术测试用例的设计中( A )是最弱的覆盖标准。 A.语句 B.路径 C.条件组合 D.判定 9?对象实现了数据和操作的结合,使数据和操作( C )于对象的统一体中。 A.结合 B.隐藏 C.封装 D.抽象 10. 在数据流图中,圆代表( C )。 A.源点 B.终点 C.加工 D.模块 11. 模块内聚度越高,说明模块内各成分彼此结合的程度越( B )。 A.松散 B.紧密 C.无法判断 D.相等 12. 软件测试方法中,黑盒、白盒测试法是常用的方法,其中黑盒测试主要用于测试( B )。 A.结构合理性 B.软件外部功能 C.程序正确性 D.程序内部逻辑 13. 面向对象开发方法中, ( C )是占主导地位的标准建模语言。 A.Booch 方法 B.Coad 方法 C.UML 语言 D.OMT 方法 14. 软件需求分析的主要任务是准确地定义出要开发的软件系统是( C ) A.如何做 B.怎么做 C.做什么 D.对谁做 15. 结构化程序设计的一种基本方法是( C ) A.筛选法 B.迭代法 C.逐步求精法 D.递归法 二、填空题 1. 目前使用最广泛的软件工 程学方法分别是传统方法学和(面向对象方法学 ) )和事务流。 文档 ) 。 ( 重复 )三种结构。 自顶向下 的集成测试方法,对软件结构中下层使 6. 软件维护包括 ( 改正性维护 )、适应性维护、完善性维护、预防性维护。 7. 面向对象方法学建模得到的三个基本子模型是 (对象建模 ) .动态模型、功能模型。 8. 复杂大型问题的对象模型通常由主题 2. 数据流图中信息流的类型有(变换流 3. 软件的定义是:软件 =程序+数据+ 4. 经典结构程序设计包括顺序、选择和 5. 集成测试时对软件结构中上层使用 用 ( 自底向上 ) 的集成测试方法。

软件工程导论复习考试试题库

a(1)在软件工程中,白盒测试法可用于测试程序的内部结构。此方法将程序看作是 A) 路径的集合B)循环的集合C)目标的集合D)地址的集合 c(2)在下述哪一种测试中,测试程序的设计者必须接触到源程序 I.功能测试Ⅱ. 结构测试 A)均不须B)只有ⅠC)只有ⅡD)Ⅰ和Ⅱ a(3)检查软件产品是否符合需求定义的过程称为 A)确认测试B)集成测试C)验证测试D)验收测试 c(4)下述陈述中,哪一个不是软件健壮性的度量指标? A)失败后重新启动所需的时间B)引起失败的时间所占的百分比 D)失败前的平均工作时间D)在一次失败中数据恶化的概率 b(5)对软件是否能达到用户所期望的要求的测试称为 A) 集成测试B) 有效性测试C) 系统测试D) 验收测试 a(6)在面向数据流的软件设计方法中,一般将信息流分为 A)变换流和事务流B)变换流和控制流 C)事务流和控制流D)数据流和控制流 d(7)软件需求说明书是软件需求分析阶段的重要文件,下述哪个(些)是其应包含的内容 I.数据描述Ⅲ. 模块描述 II.功能描述Ⅳ. 性能描述 A)ⅡB)Ⅲ和ⅣC)Ⅰ、Ⅱ和ⅢD)Ⅰ、Ⅱ和Ⅳ (8)软件测试一般分为三类,即 I.静态测试Ⅱ. 动态测试Ⅲ. 正确性测试 设计测试用例对程序进行测试,应属于 A)ⅠB)ⅡC)Ⅰ和ⅡD)Ⅲ (9)模块独立性是由内聚性和耦合性来度量的,其中内聚性是度量____,耦合性是度量____。 A)模块间联系程度B)模块的功能强度 C)信息隐蔽程度D)模块的复杂程度 (10)软件设计中一般将用到图形工具,下述哪种(些)工具可用作设计的图形工具 I.结构图Ⅱ. 实体关系图Ⅲ. IPO图 II.Ⅳ. 流程图Ⅴ. N-S图 A)Ⅰ和ⅡB)Ⅲ和ⅣC)Ⅰ、Ⅲ、Ⅳ和ⅤD)全部 A (2)C (3)A (4)C (5) B (6)A (7)D (8)B (10)C (11)试判断下列论述中哪个(些)是正确的 I.软件系统中所有的信息流都可以认为是变换流 II.软件系统中所有的信息流都可以认为是事务流 III.事务分析和变换分析的设计步骤基本类似 A)ⅠB)ⅡC)ⅢD)Ⅰ和Ⅲ (12)软件的有效性测试是验证软件的运行是否达到用户的期望,用户的期望应体现于A)详细设计报告B)软件需求说明书 C)总体设计报告D)有效性测试要求 (13)软件设计中的软件过程其主要描述的是 A)模块间关系B)模块操作细节 C)模块控制方法D)模块类型 (14)软件测试是软件件开发过程的重要阶段,是软件质量保证的重要手段,下列哪个(些)是软件测试的任务?

软件工程基础知识点总结

软件工程基础部分知识点总结 知识点一软件工程的基本概念 1、软件定义:是计算机系统中与硬件相互依存的另一部分,是包括程序、数据以及相关文档的完整集合。 1)程序是软件开发人员根据用户需求开发的、用程序设计语言描述的、适合计算机执行的指令(语句)序列。 2)数据是使程序能够正常操作信息的数据结构。 3)文档是与程序开发、维护和使用有关的图文资料。 国标(GB)计算机软件的定义:与计算机系统的操作相关的计算机程序、规程、规则以及可能有的文件、文档及数据。 2、软件特点: 1)软件是一种逻辑实体,而不是物理实体,具有抽象性,是计算机的无形部分; 2)软件的生产与硬件不同,它没有明显的制作过程; 3)软件在运行、使用期间不存在磨损、老化问题; 4)软件的开发、运行对计算机系统具有依赖性,受计算机系统的限制,这导致了软件移植的问题; 5)软件复杂性高,成本昂贵; 6)软件开发涉及诸多的社会因素 3、软件的分类: 按照功能可以分为:应用软件、系统软件、支撑软件(或工具软件)

1)应用软件是为解决特定领域的应用而开发的软件。 2)系统软件是计算机管理自身资源,提高计算机使用效率并为计算机用户提供各种服务的软件。 3)支撑软件是介于系统软件和应用软件之间,协助用户开发软件的工具软件。 4、软件危机:是指在软件的开发和维护过程中所遇到的一系列严重问题。软件危机主要体现在以下几个方面: ①软件开发的实际成本和进度估计不准确 ②开发出来的软件常常不能使用户满意 ③软件产品的质量不高,存在漏洞,需要经常打补丁 ④大量已有的软件难以维护 ⑤软件缺少有关的文档资料 ⑥开发和维护成本不断提高,直接威胁计算机应用的扩大 ⑦软件生产技术进步缓慢,跟不上硬件的发展和人们需求增长 5、软件工程:此概念的出现源自软件危机。软件工程是指应用计算机科学、数学及管理科学等原理,以工程化的原则和方法来开发与维护软件的学科。 1)研究软件工程的主要目的就是在规定的时间、规定的开发费用内开发出满足用户需求的高质量的软件系统(高质量是指错误率低、好用、易用、可移植、易维护等)。 2)软件工程的三个要素:方法、工具和过程。 ①方法:完成软件工程项目的技术手段;

软件工程导论》期末考试试题与答案

《软件工程导论》期末考试-试题与答案 一、填空题 1.软件工程中的结构化分析 SA 是一种面向________的分析方法。 2.软件模块独立性的两个定性度量标准是_________________。 3.软件开发是一个自顶向下逐步细化和求精的过程,而软件测试是一个________的过程。 4. ________和数据字典共同构成了系统的逻辑模型 5. ___________是一种黑盒测试技术,这种技术把程序的输入域划分为若干个数据类,据此导出测试用例。二、单选 题 1.在软件危机中表现出来的软件质量差的问题,其原因是_______。A.软件 研发人员素质太差B.用户经常干预软件系统的研发工作C.没有软件质量标 准 D.软件开发人员不遵守软件质量标准2.在软件质量因素中,软件在异常条件下仍能运 行的能力成为软件的_____。A.安全性B.健壮性C.可用性D.可靠性 3.在下列测试技术中,______不属于黑盒测试技术。A.等价 划分B.边界值分析C.错误推测D.逻辑覆盖 4.软件工程方法是在实践中不断发展着的方法,而早期的软件工程方法主要是指______。A.原型化方法B.结构化方法C.功能化方法D.面向对象方法 5. ______是把对象的属性和操作结合在一起,构成一个独立的对象,其内部信息对外界是 隐蔽的,外界只能通过有限的接口与对象发生联系。A.多态 B.继承C.封装D.消息 6. Jackson 方法是在软件开发过程中常用的方法,使用 Jackson 方法时可以实现______。A.从数据结构导出程序结构B.从数据流图导出初始结构图C.从模块结构导出数据结构D.从模块结构导出程序结构 7.软件测试时为了________而执行程序的过程。A.纠正 错误B.发现错误 C.避免错误 D.证明错误 8.在软件系统中,一个模块应具有什么样的功能,这是由_____决定的。A.总体 设计B.需求分析C.详细设计D.程序设计 9.面向对象分析是对系统进行_________的一种方法。A.需求 分析B.程序设计C.设计评审D.测试验收 10.软件文档是软件工程实施中的重要部分,它不仅是软件开发各阶段的重要依据,而 且影响软件的_______。A.可理解 性B.可维护性C.可扩展性D.可 移植

软件工程导论第五版复习重点(必考题)

(最后部分为每年必考题) 第一章 1. .软件工程的定义:软件工程是应用计算机科学、数学及管理科学等原理开发软件的工程。它借鉴传统工程的原则、方法,以提高质量,降低成本为目的. 2. 软件危机的概念:软件危机是指计算机软件的开发和维护过程中所遇到的一系列严重的问题。 3. 产生软件危机的原因:(1) 开发人员方面,对软件产品缺乏正确认识,没有真正理解软件产品是一个完整的配置组成。造成开发中制定计划盲目、编程草率,不考虑维护工作的必要性。(2) 软件本身方面,对于计算机系统来说,软件是逻辑部件,软件开发过程没有统一的、公认的方法论和规范指导,造成软件维护困难。(3) 尤其是随着软件规模越来越大,复杂程度越来越高,原有软件开发方式效率不高、质量不能保证、成本过高、研制周期不易估计、维护困难等一系列问题更为突出,技术的发展已经远远不能适应社会需求。 4. 面向对象方法学的四个要点:1.把对象作为融合了数据及在数据上的操作行为的统一的软件构件2.把所有对象都划分成类3.按照父类(或称为基类)与子类(或称为派生类)的关系,把若干个相关类组成一个层次结构的系统(也称为类等级)。4.对象彼此间仅能通过发送消息互相联系。 5. 软件生命周期:软件定义(问题定义,可行性研究,需求分析)、软件开发(总体设计,详细设计,编码,单元测试,总体测试)、运行维护(持久地满足用户的需要) 6. 瀑布模型,快速原型模型,增量模型,螺旋模型,喷泉模型,概念.方法.优缺点.区别。 7. 微软过程把软件生命周期划分为成5个阶段:规划阶段,设计阶段,开发阶段,稳定阶段,发布阶段。 第二章 1.可行性包括:技术可行性,经济可行性,操作可行性。 2. 系统流程图是概括地描绘物理系统的传统工具。它的基本思想是用图形符号以黑盒子形势描绘组成系统的每个部件(程序,文档,数据库,人工过程等)。系统流程图表达的是数据在系统各部件之间流动的情况,而不是对数据加工处理的控制过程,因此尽管系统流程图的某些符号和程序流程图的符号形式相同,但是它却是物理数据流图而不是程序流程图。4. 书库流图(DFD)是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换。在数据流图中没有任何具体的物理部件,它只描绘数据在软件中流动和被处理的逻辑过程。数据流图是系统逻辑功能的图形表示。 5. 用系统流程图描绘一个系统时,系统的功能和实现每个功能的具体方案是混在一起的。有数据元素组成的数据的方式只有下述3种基本类型:顺序(即以确定次序连接两个或多个分量)。选择即从两个或多个可能的元素中选取一个重复即把指定的分量重复零次或多次

软件工程期末复习知识点整理

复习整理 、绪论 1. 软件的定义 软件是能够完成预定功能和性能的可执行的计算机程序,包括使程序正常执行所需要的数据,以及有关描述程序操作和使用的文档。(软件=程序+文档) 2.软件工程的定义 是指导计算机软件开发和维护的一门工程学科;采用工程化的原理与方法对软件进行计划、开发和维护;把证明正 确的管理技术和最好技术综合运用到软件开发中;研究经济地开发岀高质量的软件方法和技术;研究有效维护软件 的方法和技术。 3.软件危机的概念,及出现的原因 软件开发技术的进步未能满足发展的要求。在软件开发中遇到的问题找不到解决的办法,问题积累起来,形态尖锐的矛盾,导致了软件危机。 产生原因: ⑴软件规模越来越大,结构越来越复杂 ⑵软件开发管理困难而复杂。 ⑶软件开发费用不断增加。 ⑷软件开发技术落后。 ⑸生产方式落后,仍采用手工方式。 ⑹开发工具落后,生产率提高缓慢。 4.三种编程范型的特点 (1)过程式编程范型:把程序理解为一组被动的数据和一组能动的过程所构成;程序=数据结构 +算法;着眼于程序的过程和基本控制结构,粒度最小 (2)面向对象编程范型:数据及其操作被封装在对象中;程序=对象+消息;着眼于程序中的对 象,粒度比较大 (3)基于构件技术的编程范型:构件是通用的、可复用的对象类;程序=构件+架构;眼于适合 整个领域的类对象,粒度最大 二、软件生存周期与软件过程 1、软件生存周期的定义,把生存周期划分为若干阶段的目的是什么,有哪几个主要活动 定义:一个软件从开始立项起,到废弃不用止,统称为软件的生存周期 目的:软件生存周期划分为计划、开发和运行3个时期;把整个生存周期划分为较小的阶段, 给每个阶段赋予确定而有限的任务,就能够化简每一步的工作内容,使因为软件规模而增长而大大增加了软件复杂性变得较易控制和管理。 主要活动:需求分析、软件分析、软件设计、编码、软件测试、运行维护( P19) 2、软件生命周期划分为哪几个阶段 软件生命周期分为三个时期八个阶段: 软件定义:问题定义、可行性研究; 软件开发:需求分析、概要设计、详细设计、编码、测试; 软件运行:软件维护

(完整word版)公共基础知识常考知识点汇总.,推荐文档

公共基础知识常考知识点汇总1 1.我国政权组织形式是人民代表大会制。 2.行政许可是行政机关的批准行为。 3.行政行为以受法律规范拘束的程度为标准,可以分为两类羁束行政行为与自由裁量行政行为。 4.在诉讼期间的最后六个月内,因不可抗力或者其他障碍不能行使请求权的,诉讼时效中止。 5.书写公文中的成文日期应使用汉字。 6.规定用于依照有关法律规定发布行政法规和规章。 7.以上请示事项当否,请即批复。 8.命令不属于规定性文件,属于规定性文件的有规定、条例、办法。 9.由机关领导对发文稿批注核准发出的意见并签署姓名及日期的活动,是发文处理中的签发。 10.一切唯心主义哲学认为世界的本原是意识的。 11. “静者,动之静也”的观点是认为静止是运动的特殊状态 12.运动的主体是物质 13.质变是事物根本性质的变化 14.马克思主义哲学认为否定是辩证的否定。 15. “离开革命实践的理论是空洞的理论,而不以革命理论为指南的实践是盲目的实践。”这段话强调的是要坚持理论和实践相结合的原则来源:河南京佳

16.历史唯物主义的任务在于揭示社会发展的一般规律 17.社会进步的内在根据是社会基本矛盾运动 18.在社会主义建设新时期,中国共产党完成指导思想拨乱反正的标志是党的十一届六中全会通过《关于建国以来党的若干历史问题的决议》 19.邓小平对党的思想路线的贡献在于强调解放思想 20.党的十四大把社会主义初级阶段理论作为社会主义发展阶段问题进行了新的论述,成为邓小平理论的重要基础。 21.我国企业改革的目标是建立现代企业制度 22.建立社会主义市场经济体制,就是要使市场在国家宏观调控下对生产力的配置起基础性作用 23.当社会总需求大于社会总供给时,一般不宜采取松的货币政策 24.劳动力市场是劳动力资源的交易和分配的场所 25.根据现代企业制度的基本特征,企业拥有包括国家在内的出资者投资形成资产的全部法人财产权 26.社会主义经济在资源的配置方面,最为有效的体制是社会主义市场经济体制 27.社会保障体系的核心内容是:社会保险。 28. “两手抓,两手都要硬”是社会主义精神文明建设的战略方针 29.社会主义要消灭贫穷,这是由社会主义的本质决定的。 30.我国政府职能的实施主体是各级人民政府。

软件工程导论期末试题

软件工程导论期末考试试题 一.选择(20分) 1、瀑布模型把软件生命周期划分为八个阶段:问题的定义、可行性研究、软件需求分析、系统总体设计、详细设计、编码、测试和运行、维护。八个阶段又可归纳为三个大的阶段:计划阶段、开发阶段和( C)。 A、详细计划 B、可行性分析 C、运行阶段 D、测试与排错 2、从结构化的瀑布模型看,在它的生命周期中的八个阶段中,下面的几个选项中哪个环节出错,对软件的影响最大(C )。 A、详细设计阶段 B、概要设计阶段 C、需求分析阶段 D、测试和运行阶段 3、在结构化的瀑布模型中,哪一个阶段定义的标准将成为软件测试中的系统测试阶段的目标(A )。 A、需求分析阶段 B、详细设计阶段 C、概要设计阶段 D、可行性研究阶段 4、软件工程的出现主要是由于(C )。 A.程序设计方法学的影响 B.其它工程科学的影响 C. 软件危机的出现 D.计算机的发展 5、软件工程方法学的目的是:使软件生产规范化和工程化,而软件工程方法得以实施的主要保证是(C ) A、硬件环境 B、软件开发的环境 C、软件开发工具和软件开发的环境 D、开发人员的素质 6、软件开发常使用的两种基本方法是结构化和原型化方法,在实际的应用中,它们之间的关系表现为 ( B) A、相互排斥 B、相互补充 C、独立使用 D、交替使用 7、UML是软件开发中的一个重要工具,它主要应用于哪种软件开发方法(C ) A、基于瀑布模型的结构化方法 B、基于需求动态定义的原型化方法 C、基于对象的面向对象的方法 D、基于数据的数据流开发方法

8、在下面的软件开发方法中,哪一个对软件设计和开发人员的开发要求最高(B ) A、结构化方法 B、原型化方法 C、面向对象的方法 D、控制流方法 9、结构化分析方法是一种预先严格定义需求的方法,它在实施时强调的是分析对象的(B ) A、控制流 B、数据流 C、程序流 D、指令流 10、软件开发的结构化生命周期方法将软件生命周期划分成(A ) A、计划阶段、开发阶段、运行阶段 B、计划阶段、编程阶段、测试阶段 C、总体设计、详细设计、编程调试 D、需求分析、功能定义、系统设计 二.填空(20分) 21.系统流程图是描述物理模型的传统工具,用图形符号表示系统中各个元素 表达了系统中各种元素之间的(信息流动)情况。 22.成本效益分析的目的是从(经济)角度评价开发一个项目是否可行。 23.自顶向下结合的渐增式测试法,在组合模块时有两种组合策略:深度优先 策略和(宽度优先策略) 。 24.独立路径是指包括一组以前没有处理的语句或条件的一条路径。从程序图 来看,一条独立路径是至少包含有一条(在其他独立路径中未有过)的边的路径。 25.汇编语言是面向(机器) 的,可以完成高级语言无法完成的特殊功能,如与外部设备之间的一些接口工作。 26.在JSP方法中解决结构冲突的具体办法是(中间数据结构或中间文件)。 27.详细设计的任务是确定每个模块的内部特性,即模块的算法、(使用的数据)。 28.所有软件维护申请报告要按规定方式提出,该报告也称( 软件问题)报告。 29.有两类维护技术:在开发阶段使用来减少错误、提高软件可维护性的面向 维护的技术;在维护阶段用来提高维护的效率和质量的(维护支援)技术。 30.科学工程计算需要大量的标准库函数,以便处理复杂的数值计算,可供选 择的语言有:(FORTRAN语言)、PASCAL语言、C语言和PL/1语言。三.判断(10分)

相关文档
相关文档 最新文档