软件工程考研资料全.docx

上传人:b****6 文档编号:7772740 上传时间:2023-01-26 格式:DOCX 页数:41 大小:1.09MB
下载 相关 举报
软件工程考研资料全.docx_第1页
第1页 / 共41页
软件工程考研资料全.docx_第2页
第2页 / 共41页
软件工程考研资料全.docx_第3页
第3页 / 共41页
软件工程考研资料全.docx_第4页
第4页 / 共41页
软件工程考研资料全.docx_第5页
第5页 / 共41页
点击查看更多>>
下载资源
资源描述

软件工程考研资料全.docx

《软件工程考研资料全.docx》由会员分享,可在线阅读,更多相关《软件工程考研资料全.docx(41页珍藏版)》请在冰豆网上搜索。

软件工程考研资料全.docx

软件工程考研资料全

软件工程复习提纲

第一章软件工程基本概念

1、软件危机的概念:

指在计算机软件的开发和维护过程中所遇到的一系列严重问题。

2、软件危机包含两方面的问题:

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

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

3、软件危机的原因:

1)与软件本身的特点有关;2)和软件开发与维护的方法不正确有关。

4、软件危机的消除途径:

解决软件危机,既要有技术措施(方法和工具),

又要有必要的组织管理措施。

5、软件工程的概念:

软件工程就是为了经济地获得可靠的且能在实际机器上有效地运行的软件,而

建立和使用完善的工程原理。

6、软件工程的基本原理:

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

2)坚持进行阶段评审

3)实行严格的产品控制

4)采用现代程度设计技术

5)结果应能清楚地审查

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

7)承认不断改进软件实践的必要性

7、软件工程方法学(3个要素):

通常把在软件生命周期全过程中使用的一整套技术方法的集合称为

方法学,也称为型。

三要素:

方法、工具和过程。

8、软件生命周期:

从软件定义、软件开发和运行维护,直到最终被废弃,要经历一个漫长的时期,

通常把软件经历的这个漫长的时期称为生命周期。

1)软件定义:

问题定义、可行性研究和需求分析;

2)软件开发:

总体设计、详细设计、编码和单元测试、综合测试;

(前两个称系统设计,后两个称系统实现)

3)运行维护:

软件维护;

9、软件过程及其特点:

为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任

务的工作步骤。

1)瀑布模型:

a.阶段间具有顺序性和依赖性;①前一阶段的工作完成后,才

能开始后一阶段的工作;②前一阶段的输出文档是后一阶段的

输入文档,前一阶段的输出文档正确,后一阶段的工作才能获

得正确的结果。

b.推迟实现的观点;对于规模较大的软件项目来说,往往编码

开始得越早最终完成开发工作所需要的时间反而越长。

c.质量保证的观点;①每个阶段都必须完成规定的文档。

②每个阶段结束前都要对所完成的文档进行评审,以便尽早发

现问题,改正错误。

优点:

文档驱动。

缺点:

①需求模糊的系统可能不满足用户需求。

②线性模型太理想化太单纯,不再适合现代的软件开发模式,几乎被

淘汰。

但是“线性”是人们最容易掌握并能熟练应用的思想方法。

2)快速原型模型:

a.快速开发工具b.循环c.低成本。

优点:

关注满足客户需求。

缺点:

快速原型部结构并不重要,重要的是迅速构建原型,并迅速修改,

以反应客户需求。

可能导致系统设计差,效率低,难于维护。

一旦需

求确定,往往快速原型将被抛弃。

3)增量模型(渐增模型):

优点:

开发早期反馈及时(分批逐步的向用户提交产品,用户可完成部分工

作),易于维护。

缺点:

需要非常好的体系结构,如果体系结构不够强壮可能导致设计差,效

率低。

4)螺旋模型:

瀑布模型+快速原型+风险分析;迭代过程

优点:

由风险驱动,支持现有软件的重用。

缺点:

软件开发人员应该擅长寻找可能的风险,准确地分析风险,否则将会

带来更大的风险。

适用围:

只适用于大规模软件项目,特别是部项目。

5)喷泉模型:

a.主要用于支持面向对象开发过程,支持软件复用和生存期中多

项开发活动的集成。

b.体现了软件创建所固有的迭代和无间隙的特征,在各项开发活

动,即分析、设计和编码之间不存在明显的边界。

优点:

减少了不一致性,降低了出错的可能性。

第二章可行性研究

1、可行性研究的任务:

可行性研究的目的不是解决问题,而是用最小的代价在尽可能短的时间确

定问题是否能够解决,是否值得去解决。

从四方面研究每种解法的可行性:

(1)技术可行性:

(2)经济可行性:

(3)操作可行性:

(4)法律、社会效益可行性。

2、可行性研究的过程:

(1)复查系统规模和目标

(2)研究目前正在使用的系统(3)导出新系统的高层逻

辑模型(4)进一步定义问题(5)导出和评价供选择的解法(6)推荐行动方针(7)

草拟开发计划(8)书写文档提交审查。

3、系统的流程图:

(1)定义:

是概括地描绘物理系统的传统工具。

(2)基本思想:

用图形符号以黑盒子形式描绘组成系统的每个部件。

###【【【系统流程图表达的是数据在系统各部件之间流动的情况,而不是对数据进行加工处理

的控制过程,是物理数据流图而不是程序流程图。

】】】###

(3)系统流程图常用符号:

 

4、系统的数据流图:

(1)定义:

是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中

所经受的变换。

###【【【数据流图是系统逻辑功能的图形表示,即使不是专业的计算机技术人员也容易理解它,

因此是分析员与用户之间极好的通信工具。

】】】###

(2)数据流图的常用符号:

或数据源点/终点

或数据加工处理

或数据存储(文件)

(静态数据)

数据流(动态数据)

*********例子:

处理事务的功能进一步分解后的数据流图*********

 

(3)作数据流图的目的和用途:

a.画数据流图的基本目的是利用它作为交流信息的

工具。

b.数据流图的另一个主要用途是作为分析和设计

的工具。

5、数据字典的容:

是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合。

数据字典由下列4类元素的定义组成:

(1)数据流

(2)数据流分量(即数据元素)(3)数据存储(4)处理。

###【【【数据流图和数据字典共同构成系统的逻辑模型,没有数据字典数据流图就不严格,

没有数据流图数据字典也难于发挥作用。

】】】###

6、定义数据的方法:

一般由3+1种关系算符:

=被定义为

+与(顺序结构)x=a+b,表示x由a和b组成;

[,]或(选择结构)x=[a,b],x=[a|b],表示x由a或由b组成[|];

{}重复(循环结构)x={a},表示x由0个或多个a组成;

###限制重复次数:

m{...}n###

()可选x=(a),表示a可在x中出现,也可不出现;

7、数据字典的用途:

数据字典最重要的用途就是作为分析阶段的工具。

8、数据字典的实现过程:

数据字典几乎总是作为CASE“结构化分析与设计工具”的一部分实现的。

###大型软件系统:

人工维护数据字典几乎不可能;小型软件系统:

建议采用卡

片形式书写数据字典(包含的信息:

名字、别名、描述、定义、位置)###

9、成本/效益分析:

1)成本估计:

a.代码行技术:

软件的成本=每行代码的平均成本*行数;

b.任务分解技术:

最常用的办法是按开发阶段划分任务(各部分求和);

c.自动估计成本技术:

采用自动估计成本的软件工具可以减轻人的劳

动,并且使得估计的结果更客观。

2)成本/效益分析的方法:

a.货币的时间价值:

F=P(1+i)^n

b.投资回收期:

使累计的经济效益等于最初的投资所需要

的时间。

(投资回收期越短,获得利润越快)

c.纯收入:

在整个生存期之系统的累计经济效益(折合

成现在值)与投资之差。

d.投资回收率:

衡量投资效益的大小。

P=F1/(1+j)+F2/(1+j)2+……+Fn/(1+j)n

第三章需求分析

1、需求分析的任务:

1)确定对系统的综合要求2)分析系统的数据要求(通常采用建立数据模型的方法);

即:

准确地回答:

“系统必须做什么?

2、获得需求的主要方法:

1)访谈:

访谈是使用最早的、迄今仍然最广泛的一种需求分析技术;

2)面向数据流自顶向下求精:

结构化分析方法就是面向数据流自顶向下逐步

求精进行需求分析的方法;

3)简易的应用规格说明技术:

又称面向团队的需求收集法;

优点:

开发者和用户不分彼此,齐心协力,密切合作;即时讨论并求精;

4)快速建立软件原型:

a.方法和工具:

(1)第四代技术(4GT);

(2)可重用的软

件构件;(3)形式化规格说明和原型环境。

b.特点:

(1)快速;

(2)容易修改。

c.优点:

关注满足客户需求。

d.缺点:

可能导致系统设计差,效率低,难于维护。

3、

分析建模:

根据结构化分析准则,需求分析过程应该建立3种模型数据模型(实体-联系图E-R)

功能模型(数据流图DFD)

行为模型(状态转换图STD)

4、实体—联系图:

1)描绘数据对象及数据对象之间的关系,用于建立数据模型。

数据对象:

可以由一组属性来定义的实体。

2)数据模型包括数据对象的属性:

定义了数据对象的性质。

一对一

数据对象的联系:

数据对象彼此之间相互连接的方式。

一对多

多对多

3)例子:

 

5、状态转换图:

1)通过描绘系统的状态及引起系统状态转换的事件,来表示系统的行为。

2)状态转换图的3部分:

a.状态:

(1)状态:

任何可以被观察到的系统行为模式,一个状态代表系统的一种

行为模式。

(2)状态图中定义的状态主要有:

初态(初始状态)、终态(最终状态)和

中间状态。

在一状态图中只能有一个初态,而终态则可以有0至多个。

b.事件:

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

c.符号:

(1)初态:

用实心圆表示;

(2)终态:

用一对同心圆表示;(3)中间状态:

用圆角矩形表示。

(必选)

(可选)

 

(可选)

层次方框图(重要)

6、其他图形工具:

IPO图(重要)

Warnier图(不重要)

1)层次方框图:

用树形结构的一系列多层次的矩形框描绘数据的层次结构。

2)IPO图:

是输入、处理、输出图的简称,能够方便地描绘输入数据、对数据的处理和

输出数据之间的关系。

算法的初级描述。

 

改进

 

IPO图改进的IPO图

验证需求的一致性

7、验证软件需求的方法:

验证需求的现实性

验证需求的完整性和有效性

8、验证软件需求分析的工具:

PSL/PSA(问题述语言/问题述分析程序)系统。

优点:

改进了文档质量,能保证文档具有完整性、一致性和无二义性,从而可

以减少管理和维护的费用;数据存放在数据库中,便于增加、删除和更改。

第四章总体设计

1、总体设计/概要设计/初步设计的目的:

“概括地说,系统应该如何实现?

”Howtodo?

2、总体设计过程:

1)通常由两个主要阶段组成:

a.系统设计阶段,确定系统的具体实现方案;

b.结构设计阶段,确定软件结构;

2)典型的总体设计过程包括9个步骤:

1.设想供选择的方案

2.选取合理的方案

3.推荐最佳方案

4.功能分解:

先进行结构设计(总体设计阶

段),然后过程设计(详细设计阶段);

5.设计软件结构:

可以用层次图或结构图

来描绘;

6.设计数据库

7.制定测试计划

8.书写文档

9.审查和复审

3、总体设计原理:

1)模块化:

把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,

这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求。

(1)优点:

使软件结构清晰;使软件容易测试和调试;能够提高软件的可修改性。

【【【模块是构成程序的基本构件。

】】】

2)抽象:

抽出事物的本质特性而暂时不考虑细节(忽略差异,集中相似在一起)。

3)逐步求精:

是人类解决复杂问题时采用的基本方法,是一种自顶向下的设计策略。

4)信息隐藏和局部化:

局部化有助于实现信息隐藏。

5)模块独立:

是模块化、抽象、信息隐藏和局部化概念的直接结果。

(1)度量模块独立程度的两个定性标准:

聚和耦合。

(2)为什么模块的独立性很重要?

a.有效的模块化(即具有独立的模块)的软件比较容易开发出来。

b.独立的模块比较容易测试和维护。

(3)耦合:

对一个软件结构不同模块之间互连程度的度量。

a.设计目标:

软件设计中追求尽可能松散耦合的系统。

b.模块间耦合的类型:

c.①数据耦合:

两个模块彼此间通过参数交换信息,而且交换的信息

仅仅是数据;属松散耦合。

【【【系统中至少存在这种耦合】】】

②控制耦合:

一个模块通过传送开关、标志、名字等控制信息,明显地

控制选择另一个模块的功能。

【【【控制耦合增加了系统的复杂程度,通常是把它分解然后用数据耦

合代替它】】】

③特征耦合:

把整个数据结构作为参数传递而被调用的模块只需要使用

其中一部分数据元素。

④公共环境耦合:

两个或多个模块通过一个公共数据环境相互作用。

⑤容耦合:

它是最高程度的耦合。

d.模块化设计的原则:

尽量使用数据耦合,少用控制耦合和特征耦合,

限制公共环境耦合的围,完全不用容耦合。

(4)聚:

标志一个模块各个元素彼此结合的紧密程度,它是信息隐藏和局部

化概念的自然扩展。

a.设计目标:

高聚。

b.模块的聚类型:

.

c.①偶然聚:

一个模块完成一组任务,这些任务彼此间即使有关系,关

系也很松散。

【【【缺点:

可理解性差,可修改性差】】】

②逻辑聚:

一个模块完成的任务在逻辑上属于相同或相似的一类。

【【【缺点:

增强了耦合程度(控制耦合)不易修改,效率低】】】

③时间聚④过程聚⑤通信聚⑥顺序聚

⑦功能聚:

模块所有处理元素属于一个整体,完成一个单一的功能。

【【【功能聚是最高程度的聚】】】

d.设计目标:

强聚、弱耦合,获得较高的模块独立性。

4、启发规则:

利用长期实践中积累的丰富经验来改进软件设计,提高软件质量。

1)几条启发式规则:

(1)改进软件结构提高模块独立性;

(2)模块规模应该适中;

(3)深度、宽度、扇出和扇入都应适当;

a.深度:

表示软件结构中控制的层数。

b.宽度:

是软件结构同一个层次上的模块总数的最大值。

c.扇出:

一个模块直接控制(调用)的模块数目。

d.扇入:

表明有多少个上级模块直接调用它。

【【【设计得很好的软件结构通常:

顶层扇出比较高,中层扇出较低,底层扇入

到公共的实用模块中去(底层模块有高扇入)】】】

(4)模块的作用域应该在控制域之;

(5)力争降低模块接口的复杂程度;

(6)设计单入口单出口的模块;

(7)模块功能应该可以预测;

5、描绘软件结构的图形工具:

1)层次图(H图):

(1)用来描绘软件的层次结构;

(2)一个矩形框代表一个模块,方框间的连线表示调用关系;

(3)适于在自顶向下设计软件的过程中使用。

 

H图在H图基础上的修改HIPO图

2)HIPO图:

(1)是美国IBM公司发明的“层次图+输入/处理/输出图”的英文缩写。

3)结构图(SC):

(1)Yourdon提出的描绘软件结构的图形工具,和层次图类似;

(2)箭头(或直线)表示模块的调用关系。

(3)带注释的箭头表示模块调用过程中来回传递的信息:

a.尾部是空心圆表示传递的是数据;

b.实心圆表示传递的是控制信息。

(4)附加符号:

a.选择调用b.循环调用

 

判定为真时调用A,为假时调用B模块M循环调用模块A、B、C

6、面向数据流的设计方法:

目标:

给出设计软件结构的一个系统化的途径。

结构化设计方法(简称SD方法):

即基于数据流的设计方法。

1)概念:

把信息流(数据流)映射成软件结构。

(1)变换流:

信息沿输入通路进入系统,同时由外部形式变换成部形式,进入

系统的信息通过变换中心,经加工处理以后再沿输出通路变换成外

部形式离开软件系统。

(2)事务流:

数据沿输入通路到达一个处理T,这个处理根据输入数据的类型在

若干个动作序列中选出一个来执行。

 

变换流事务流

2)变换分析:

经过一系列设计步骤把具有变换流特点的数据流图按预先确定的

模式映射成软件结构。

交换流

输入流

输出流

 

3)事务分析:

数据流具有明显的事务特点(事务中心)时,采用事务分析方法。

4)设计优化:

先使它能工作,然后再使它快起来。

5)软件开发方法主要有:

面向数据流的结构化方法传统开发方法

面向数据结构的Jackson方法(见第6章)

面向对象方法(见第9-12章)

 

第五章详细设计

1、详细设计阶段的根本目标:

确定应该怎样具体地实现所要求的系统。

2、结构程序设计:

1)如果一个程序的代码块仅仅通过顺序、选择和循环这3种基本控制结构进行连接,并且每

个代码块只有一个入口和一个出口,则称这个程序是结构化的。

2)三种基本的控制结构:

 

3、人机界面设计:

1)在设计人机界面的过程中,有下述4个问题:

系统响应时间:

从用户完成某个控制动作到软件给出预期的响应之间的这段时间。

用户帮助设施:

常见的帮助设施可分为集成的和附加的两类。

出错信息处理:

(无)

命令交互:

菜单+键盘输入。

4、过程设计工具:

1)程序流程图:

优点:

直观、容易掌握,且历史“久”,使用广泛。

缺点:

本质上不具备逐步求精的特点;用箭头代表控制流,转移控制太方便;

不易表示数据结构。

2)盒图(N-S图):

概念:

是一种符合结构化程序设计原则的图形描述工具,用方框图代替传统的流程图。

特点:

(1)功能域明确,可以从盒图上一眼就看出来。

(2)不可能任意转移控制。

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

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

3)PAD图(问题分析图):

概念:

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

优点:

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

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

(3)用PAD图表现程序逻辑,易读、易懂、易记。

(4)容易将PAD图转换成高级语言源程序。

(5)即可用于表示程序逻辑,也可用于描绘数据结构。

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

4)判定表:

概念:

当算法中包含多重嵌套的条件选择时,判定表能够清晰地表示复杂的条件组合与

应做的动作之间的对应关系。

5)判定树:

它是判定表的变种。

判定树和判定表的优缺点:

注:

判定表与判定树并不适用于作为一种通用的设计工具,通常用于辅助测试。

5、面向数据结构的设计方法:

1)定义:

根据数据结构设计程序处理过程的方法。

目标:

得出对程序处理过程的描述。

步骤:

使用面向数据流的方法设计软件结构——使用面向数据结构的方法来设计每个模块

的处理过程。

代表:

Jackson方法和Warnier方法是最著名的两个面向数据结构的设计方法。

2)Jackson图:

(1)优点:

a.便于表示层次结构,而且是对结构进行自顶向下分解的有力工具。

b.形象直观可读性好。

c.既能表示数据结构也能表示程序结构。

(2)三种类型:

(3)Jackson方法的步骤:

①分析并确定输入数据和输出数据的逻辑结构,并用Jackson图描绘这些数据结构。

②找出输入数据结构和输出数据结构中有对应关系的数据单元。

③从描绘数据结构的Jackson图导出描绘程序结构的Jackson图。

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

⑤用伪码表示程序。

3)程序复杂程度的定量度量:

(1)概念:

程序的复杂性主要指模块程序的复杂性。

(2)McCabe方法:

根据程序控制流的复杂程度定量度量程序的复杂程度。

其结果称为程序

的环形复杂度。

①方法:

先画出流图,然后用该图的环路数作为程序复杂性的度量值。

②流图组成:

圆:

结点(一个圆代表一条或多条语句)。

箭头线:

边。

③计算环形复杂度的方法:

a.环形复杂度=流图中的区域数。

b.环形复杂度V(G)=E-N+2,其中E是边数,N是结点数。

c.环形复杂度V(G)=P+1,其中P是判定结点数。

④例子:

【【【实践表明,模块规模以V(G)≤10为宜,V(G)=10是模块规模的一个更科学

更精确的上限。

】】】

3)Halstead方法:

根据程序中可执行代码行的运算符和操作数(运算对象)的个数来计

算程序的复杂性。

①n1:

程序中不同运算符的个数

n2:

程序中不同操作数(运算对象)的个数

N1:

程序中实际出现的运算符总个数

N2:

程序中实际出现的操作数(运算对象)总个数

N(程序长度)=N1+N2

H(程序预测长度)=n1log2n1+n2log2n2

E:

预测程序中包含错误的个数

E=Nlog2(n1+n2)/3000

第六章实现

1、编码风格:

1)源程序代码的逻辑简明清晰、易读易懂是好程序的一个重要标准。

2)①程序部的文档:

包括恰当的标识符、适当的注解和程序的视觉组织等(例:

次数-times)。

②数据说明:

数据说明的次序应该标准化,能够加速测试、调试和维护的过程。

③语句构造:

每个语句都应该简单而直接。

④输入输出:

对所有输入数据都进行检验;保持输入格式简单。

⑤效率:

主要指处理机时间和存储器容量两个方面。

【【【不要牺牲程序的清晰性和可读性来不必要地提高效率。

】】】

2、测试的定义和目标:

1)概念:

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

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

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

2)软件测试:

为了发现错误而执行程序的过程。

(是为了证明程序有错,而不是证明程序无错)

3、单元测试:

1)集中检测软件设计的最小单元——模块(主要使用白盒测试技术)。

2)测试重点:

4、集成测试过程及方法:

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

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

非渐增式测试方法;渐增式测试方法(被普遍采用的)。

3)渐增式测试方法:

①自顶向下集成策略(被普遍采用):

可以使用深度优先或宽度优先策略。

②自底向上集成策略:

③不同集成测试策略的比较:

5、白盒、黑盒测试技术:

1)白盒测试(结构测试)

①两种:

逻辑覆盖、控制结构测试。

a.逻辑覆盖:

是对一系列测试过程的总称,这组测试过程逐渐进行越来越完整的通

路测试。

(语句判定条件判定条件组合点边路径)覆盖

b.控制结构测试:

⑴基本路径测试:

⑵条件测试:

着重测试程序中的每个条件。

(BRO测试:

优点:

㈠容易度量条件的测试覆盖率;

㈡程序条件的测试覆盖率可指导附加测试的设计。

BRO测试是由K.C.Tai提出的一种条件测试策略。

(3)循环测试:

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

包括:

㈠、简单循环;㈡、嵌套循环;㈢、串接循环。

2)黑盒测试(功能测试):

①3种方法等价划分

边界值分析

错误推测

【【【黑盒测试着重测试软件功能,是与白盒测试互补的测试方法。

】】】

②等价划分:

例1、某报表处理系统要求用户输入处理报表的日期,日期限制在2003

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1