软件工程复习总结

 

1、 软件危机是指在计算机开发过程中的开发和维护过程中所遇到的一系列的严重问题。
2、 软件是程序、数据及相关文档的完整集合,程序是能够完成预定功能和性能的可执行
的程序序列;数据是是使程序能够适当的处理信息的数据结构;文档是开发、使用和
维护程序所需要的图文资料。
3、 软件工程学包含3个要素:方法、工具、过程。
4、 目前使用最广泛的软件工程方法学是传统方法学和面向对象方法学。
5、 软件工程方法学的软件过程基本上可以用瀑布模型来描述。
6、 瀑布模型、快速原型模型、增量模型、螺旋模型、喷泉模型。
7、 Rup把软件生命周期划为:初始、精化、构建、移交阶段。
8、 可行性研究的三方面:技术可行性、经济可行性、操作可行性。
9、 数据流图(DFD)是一种图形化技术,他描绘信息流和数据从输入移动到输出的过程
中所经受的变化。
10、 数据字典是关于数据信息的集合,也就是对数据流程图中所包含的所有元素的定
义的集合。
11、 数据流图和数据字典共同构成系统的逻辑模型,没有数据字典,数据如就不严格,
没有流程图,数据字典也难以发挥作用。
12、 需求分析阶段结束之前,系统分析员应该写出软件需求规格说明书,以书面形式
准确的描述软件需求。
13、 9、结构化分析方法就是面向数据流自顶向下逐步求精进行需求分析的方法。
14、 ER图中包含了实体、关系和属性,矩形代表实体,菱形表示关系,椭圆或圆角
矩形表示属性,用直线把实体和其属性连接。
15、 验证软件需求的正确性:一致性、完整性、现实性、有效性。
16、 总体设计的基本目的是回答"概括地说,系统应该如何实现?",总体设计又称
为概要设或初步设计。
17、 模块的独立程度可以有两个定性标量度量:内聚和耦合。
18、 软件测试的目标:(1)测试是为了发现程序中的错误而执行程序的过程;(2)好
的测试方案是极可能发现迄今为止尚未发现的错误的测试方案;(3)成功的测试是发
现可至今为止尚未发现的错误的测试。
19、 软件测试步骤:模块测试、子系统测试、系统测试、验收测试、平行运行。
20、 软件可靠性是程序在给定的时间点,按照规格说明书的规定,成功的运行的概率。
21、 用面向对象方法开发软件,通常需要建立3种形式的模型:描述系统数据结构的
对象模型,描述系统控制结构的动态模型和描述系统功能的功能模型。
22、 用面向对象方法开发软件,在任何情况下,对象模型始终都是最重要、最基本的、
最核心的。
23、 通常,使用UML提供的类图来建立对象模型。
24、 类与类之间通常有关联、泛化(继承)、依赖和细化等4种关系。
25、 在UML中,在一段为空心的三角形的连线表示泛化关系。
26、 复杂问题的对象模型通常由:主题层、类与对象层、结构层、属性层和服务层。
27、 广义的说,软件重用可分为知识重用、方法和标准的重用、软件成分的重用。
28、 工程网络和Gantt图同样是安排进度和管理工程进度情况的强有力的工具。        
29、 3种典型人员组织方式:民主制程序员组、住程序员组、现代程序员组。
30、 软件过程的输出信息可以分为3类计算机程序、描述计算机程序的文档、数据,
这些项组成了软件过程中产生的全部信息,人们把他们统称为软件配置,而这些项就
是软件配置项。
31、 Cmm把软件过程从无序到有序的进化过程分成5个阶段,并把这些阶段排序,
形成五个逐层提高的等级。能力的成熟度的5个等级从低到高依次是:初始级(1级)、
可重复级(2级)、已定义级(3级)已管理级(4级)和优化级(5级)。

15、编码风格:持续内部文档、数据说明、语句构造、输入输出、效率、
32、 软件危机的典型表现:对软件开发成本和进度的估计常常很不准确;用户对"已
完成"的软件系统不满意的现象经常发生;软件产品质量往往靠不住;软件常常是不
可维护的;软件通常没有适当的文档资料;软件成本在计算机总成本中所占的比例逐
年上升;软件开发生产效率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。
33、 软件不同于硬件,他是计算机系统的逻辑部件而不是物理部件。
34、 软件不同于一般程序,它的一个显著特点就是规模庞大。
简单题
1、软件工程基本原理(1)用分阶段的生存周期严格管理。(2)坚持进行阶段评审。(3)
实行严格的产品控制。(4)采用现代程序设计技术。(5)结果应能清楚地审查。(6)开
发小组人员应该少而精。(7)承认不断改进软件工程实践的必要性。
2、软件生命周期各阶段的基本任务  软件生命周期由软件定义、软件开发和运行维护3
个时期组成,每个时期又进一步划分成若干个阶段。(1)问题定义 (2)可行性研究 (3)
需求分析 (4)总体设计 (5)详细设计 (6)编码和单元测试 (7)综合测试(8)软
件维护
3、需求分析的任务一、确定对系统的综合要求(1)功能需求(2)性能需求(3)可靠
性和可用性需求(4)出错处理需求(5)接口需求(6)约束(7)逆向需求(8)将来可
能提出的需求二、分析系统的数据要求
三、导出系统的逻辑模型四、修正系统开发计划
4、改进软件设计的启发式规则(1)改进软件结构提高模块独立性(2)模块规模应该适
中(3)深度、宽度、扇出和扇入都应适当(4)模块的作用域应该在控制域之(5)力争
降低模块接口的复杂程度(6)设计单入口单出口的模块(7)模块功能应该可以预测
5、面向对象设计准则和启发式原则
(1)模块化(2)抽象(3)信息隐藏(4)弱耦合(5)强内聚(6)可重用
(1)设计结果应该清晰易懂(2)一般-特殊结构的深度应适当(3)设计简单的类(4)
使用简单的协议(5)使用简单的服务(6)把设计变动减至最小
6、软件维护的几种类型
(1)改正性维护(2)适应性维护(3)完善性维护(4)预防性维护
7、决定软件可维护性因素
(1)可理解性(2)可测试性(3)可修改性(4)可移植性(5)可重用性
8、软件配置项
软件配置的主要任务就是控制变化,同时也负责各个软件配置项和软件各种版本的标志、
软件配置审计以及软件配置发生的任何变化的报告。(1)标识软件配置中的对象(2)版
本控制(3)变化控制(4)配置审计(5)状态报告
设计题
1、等价类 有效/无效数据 边界值测试
2、UML类图的描述  3、N-S图、PAD图
论述题
(1) 软件工程(2)可行性研究 问题定义阶段必须回答的关键问题是:"要解决的问题
是什么"。如果不知道问题是什么就试图解决这个问题,显然是盲目的,只会自白
浪费时间和金钱,最终得出的结果很可能是毫无意义的。尽管确切地定义问题的
必要性是十分明显的,但是在实践中它却可能是最容易被忽视的一个步骤。(3)
需求分析这个阶段的任务仍然不是具体地解决客户的问题,而是准确地回答"目标
系统必须做什么"这个问题。(4)总体设计这个阶段的基本任务是,概括地回答"怎
样实现目标系统?"这个问题。概要设计又称为初步设计、逻辑设计、高层设计或
总体设计。(5)详细设计这个阶段的任务还不是编写程序,而是设计出程序的详
细规格说明。这种规格说明的作用很类似于其他工程领域中工程师经常使用的工
程蓝图,它们应该包含必要的细节,程序员可以根据它们写出实际的程序代码。
(6)编码实现(语言,测试)这个阶段的关键任务是写出正确的容易理解、容易
维护的程序模块。(7)维护维护阶段的关键任务是,通过各种必要的维护活动使
系统持久地满足用户的需要。(8)面向对象技术(9)项目管理

1.软件工程学:为了更有效地开发与维护软件,软件工作者早20世纪60年代后期开始认
真研究消除软件危机的途径,从而逐渐形成了一门新兴的工程学科。
2.软件危机典型变现:
  (1).对软件发开成本和进度的估计常常不准确.
  (2).用户对"已完成的"软件系统不满意的现象经常发生.
  (3).软件产品的质量往往靠不住.
  (4).软件常常是不可维护的.
  (5).软件通常没有适当的文档资料.
  (6).软件成本在计算机系统总成本中所占的比例逐年上升.
  (7).软件开发产生率提高的速度,远远跟不上计算机应用迅速普及深入的趋势.
3.产生软件危机的原因:
  (1).软件不同于硬件,它是计算机系统中的逻辑部件而不是物理部件.
  (2).软件不同于一般程序,它的一个显著特点是规模庞大,而且程序复杂性将随着程序规
模的增加而呈指数上升.
  (3).软件本身独有的特点确实给开发和维护带来一些客观困难.
  (4)与软件开发和维护有关的许多错误认识和做法形成,可以归因于在计算机系统发展的
早期阶段软件开发的个体特点.
4.消除软件危机的途径:
  (1).应该对计算机软件有一个正确的认识.
  (2).充分认识到软件开发不是某种个体劳动的神秘技巧,而应该是组织良好、管理严密、
各类人员协同配合、共同完成的工程项目.
  (3).在使用要总结出成功的技术和方法,尽快消除错误概念和做法.
  (4).开发和使用更好的软件工具
5.软件工程的本质特性:
  (1).软件工程关注于大型程序的构造.
  (2).软件工程的中心课题是控制复杂性.
  (3).软件经常变化.
  (4).开发软件的效率非常重要.
  (5).和谐地合作是开发软件的关键.
  (6).软件必须有效地支持它的用户.
  (7).在软件工程领域中通常由具有一种文化背景的人替具有另一种文化背景的人创造产
品.
6.软件工程的原理:
  (1).用分段的生命周期计划严格管理.
  (2).坚持进行阶段评审.
  (3).实行严格的产品控制.
  (4).采用现代程序设计技术.
  (5).结果应能清楚地审查.
  (6).开发小组的人员应该少而精.
  (7).承认不断改进软件工程实践的必要性.
7.软件生命周期:由软件定义、软件开发和运行维护3个时期组成,每个时期又进一步划
分成若干个阶段.
8.软件开发时期4个阶段:总体设计,详细设计,编码和单元测试,综合测试.
9.软件维护,维护阶段的关键任务是,通过各种必要的维护活动使系统持久地满足用户的
需要.
10.瀑布模型的特点:
  (1).阶段间具有顺序性和依赖性.
  (2).推迟实现的观点.
  (3).质量保证的观点.
11.快速原型模型:是快速建立起来的可以在计算机运行的程序,它所能完成的功能往往是
最终产品能完成的功能的一个子集.
12.快速模型的主要优点是不带馈环的,软件产品基本上是线性顺序进行的.
13.可行性研究的目的:用最小的代价在尽可能短的时间内确定问题是否能够解决.
14.可行性的解法:
  (1)技术可行性.(2)经济可行性.(3)操作可行性.
15.可行性研究过程步骤:
  (1).复查系统规模和目标.
  (2).研究目前正在使用的系统.
  (3).导出新系统的高层逻辑模型.
  (4).进一步定义问题.
  (5).导出和评价供选择的解法.
  (6).推荐行动方针.
  (7).草拟开发计划.
  (8).书写文档提交审查.
16.系统流程图:是概括地描绘物理系统的传统工具.它的基本思想是用图形符号以黑盒子
形式描绘组成系统的每个部件.
17.数据流图(DFD):是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所
经受的变换.
18.数据字典:是关于数据的信息的集合,就是对数据流图中包括的所有元素的定义的集合.
19.数据字典组成元素:(1)数据流.(2)数据流分量.(3)数据存储.(4)处理.
20.定义数据的方法:定义绝大多数复杂事物的方法,都是用被定义的事物的成分的某种组
合表示这个事物,这些组成成分又由更底层的成分的组合来定义.
21.数据字典最重要用途:作为分析阶段的工具。
22.为什么要进行需求分析:因为它的基本任务是准确地回答"系统必须做什么?"这个
问题。可行性研究阶段只是粗略了解用户的需求,许多细节被忽略,然而最终的系统
中却不能遗漏任何细节。所以可行性研究并不能代替需求分析。
23.软件系统综合要求:(1)功能需求.(2)性能需求.(3)可靠性和可行性需求.(4)出错处理需
求.(5) 接口需求.(6)约束.(7)逆向需求.(8)将来可能提出的要求.
24.访谈:是最早开始使用的获取用户需求的技术,是迄今为止仍然广泛使用的需求分析技
术.
25.需求分析过程3种模型:数据模型、功能模型和行为模型.
26.数据模型包含3种相互关联信息:数据对象、数据对象的属性及数据对象彼此间相互
连接的关系.
27.总体设计的目的:就是回答"概括地说,系统应该如何实现?"这个问题.
28.总体设计两个过程:系统设计阶段,确定系统的具体实现方案;结构设计阶段,确定软件
结构.
29.总体设计过程步骤: (1)设想供选择的方案.(2)选取合理的方案.(3)推荐最佳方案.(4)功能
分解.(5)设计软件结构.(6)设计数据库.(7)制定测试计划.(8)书写文档.(9)审查和复查.
30.模块化:就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把
这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求.
31.怎做到模块独立:开发具有独立功能而且和其他模块之间没有过多的相互作用的模块.
32模块独立两个定性标准度量:内聚和耦合.
33.耦合:对一个软件结构内不同模块之间互连程度的度量.
34.内聚:标志着一个模块各个元素彼此结合的紧密程度,它是信息隐藏和局部化概念的自
然扩展.
35.功能内聚10分 顺序内聚9分 通信内聚7分 过程内聚5分 时间内聚3分 逻辑内聚
1分 偶然内聚0分
36.设计时要力争做到高内聚,低耦合.
37.启发式规则介绍:
  (1).改进软件结构提高模块独立性.
  (2).模块规模应该适中.
  (3).深度、宽度、扇出和扇入都应适当.
  (4).模块的作用域应该在控制域之内.
  (5).力争降低模块接口的复杂程度.
  (6).设计单入口单出口的模块.
  (7).模块功能应该可以预测
38.交换流:信息沿输入通信路进入系统,同时由外部形式变换成内部形式,进入系统的信息
通过变换中心,经加工处理以后再沿输出路变成外部形式离开软件系统.
39.事务流:数据沿输入通路到达一个处理T,这个处理根据输入数据的类型在若干个动作
序列中选出一个来执行.
40.详细设计目标:确定应该怎样具体地实现所要求的系统.
41.结构程序设计:如果一个程序的代码块仅仅通过顺序、选择和循环这3种基本控制结构
进行连接,并且每个代码只有一个入口和一个出口.
42.实现:通常把编码和测试统称.
43.编码:就是那软件设计结果翻译成用某种程序设计语言书写的程序.
44.测试方法:黑盒测试(知产品的功能可测试)和白盒测试(知产品内部工作过程可测试)
45.测试步骤:(1)模块测试.(2)子系统测试.(3)系统测试.(4)验收测试.(5)平行运行.
46.测试重点:(1)模块接口(2)局部数据结构(3)重要的执行通路(4)出错处理通路(5)边界条件.
47.确认测试:也称验收测试,它的目标是验收软件的有效性.
48.Alpha测试:由用户在开发者的场所进行,并且在开发者对用户的"指导"下进行测试.开
发者负责记录发现的错误和使用中遇到的问题.
49.Beta测试:由软件的最终用户在一个或多个客户场所进行.与Alpha测试不同,开发者通
常不在Beta测试的现场,因此,Bate测试时软件在开发者不能控制的环境中的"真实"应
用.
50.调试:是在测试发现错误之后排除错误的过程.
51.软件维护:就是在软件已经交付使用之后,为了改正错误或满足新的需要而修改的过程.
52.改正性维护:诊断和改正错误的过程.
53.决定软件维护性的因素:(1)可理解性.(2)可测试性.(3)可修改性.(4)可移植性.(5)可重用
性.
54.用户文档:是用户了解系统的第一步,它应该能使用户获得对系统的准确的初步印象.
55.用户文档包括的内容:(1)功能描述(2)安装文档(3)使用手册(4)参考手册(5)操作员指南.
56.系统文档:指从问题定义、需求说明到验收测试计划这样一系列和系统实现有关的文
档.

你可能感兴趣的:(软件工程复习总结)