软件工程是软件工程师用工具和技术(方法),按照某一过程和范例来构造软件,从而增强软件产品的质量,更有效地解决问题.
2,软件危机的原因
a , 软件产品是复杂的人造系统,具有复杂性、不可预见性和易变性,难以处理。
b ,个人和小组非常有效的开发小型软件的编程技术和过程,在开发大型、复杂系统时难以发挥同样的作用。
c ,软件是知识产品,技术更新快,行业竞争激烈,难以在可以接受的成本和工期内提供高质量的产品。
3,软件工程包括的四个元素(特点)
方法(methods) 语言(languages) 工具(tools) 过程(procedures)
4,软件的生命周期(由哪几部分组成)
计划 需求分析 设计 程序编写 测试 运行维护等六个步骤
5,瀑布模型(有哪几种模型)
6,面向对象生存期模型
7,面向对象性—统一过程
8,可行性研究目的、任务(技术、经济、操作)
目的:确定问题是否值得去解
任务
进一步分析和澄清问题的定义
导出系统的逻辑模型
探索若干种解决方案,并分析各种方案的
技术可行性
经济可行性
操作可行性
对以后的行动方针提出建议
9,数据流图(*)
数据字典的定义
对数据流图中包含的所有元素的定义的集合
10,需求分析的任务,综合要求
分析系统的数据要求
导出系统的逻辑模型:
数据流图,
数据字典,
处理算法。
修正系统开发计划
开发原型系统
功能 性能 可靠性和可用性 出错处理 接口需求 约束 逆向需求
11,分析过程的基本方法
结构化分析方法(SA)
面向对象的分析方法 (OOA)
12,什么是概念模型或信息模型
按用户的观点来对数据和信息建模
13,概念模型的基本概念 E-R图
概念模型的基本概念
实体(Entity):客观存在并可相互区分的事务
属性(Attribute)
码(Key)
域(Domain)
实体型(Entity Type)
实体集(Entity Set)
联系
14,状态转换图
15,IPO图
16,知道有哪几种形式化说明技术
形式化方法:用基于数学的技术描述系统需求规格说明和设计结果。
非形式化方法:用自然语言描述系统需求规格说明和设计结果。
半形式化方法:用数据流图或E-R图描述需求规格说明和设计结果。
17,总体设计的任务
划分出组成系统的物理元素;设计软件的结构。
18,总体设计的过程
设想供选择的方案:设计各种可能的分组。
选取合理的方案。
对每个方案准备以下资料:
系统流程图
物理元素清单
成本/效益分析
进度计划
推荐最佳方案,并制定详细的实现计划。
19,模块化(*)(概念)
模块化:将程序分成若干个模块。
模块化的目的:将复杂问题简单化。
模块化程度应适当。
20,抽象的定义
抽象是抽取事务的本质特性而暂不考虑细节
21,模块
模块的性:每个模块的功能相对,与其他模块的关系简单。
模块的优势
易于分工开发;
易于测试和维护。
通过模块化、抽象、信息隐蔽和局部化,即可达到模块。
22,耦合 内聚(*)
低内聚
偶然内聚:一个模块完成的一组任务之间有松散的关系。
逻辑内聚:完成的任务在逻辑上属于相同或相似的一类。
时间内聚:完成的任务必须在同一段时间内执行。
中内聚
过程内聚:模块内的处理元素相关且须以特定次序执行。
通信内聚:模块内的所有元素都使用同一个输入数据和(或)产生同一个输出数据。
高内聚
顺序内聚:模块内的处理元素和同一个功能密切相关,且须顺序执行。
功能内聚:一个模块内的处理元素属于一个整体,完成一个单一的功能。
23,信息流的分类
24,数字仪表板(分析)(*)
25,详细设计任务和目标
(程序流程图)
任务
设计程序流程图,从而确定具体实现系统的方法。
目标
从逻辑上正确实现每个模块的功能;
设计的处理过程应尽可能简明易懂。
26,结构程序设计的定义,优点
定义
采用自顶向下逐步求精的设计方法和单入口单出口的控制结构。
结构程序设计的优点
可以提高程序的开发效率和成功率。
程序层次结构清晰,易于阅读、理解、测试和维护。
容易保证程序的正确性。
27,N-S图
28,环形复杂度
29,实现的定义(英文写的不知道...)
30,测试的定义,目标
目标:
测试是指为了发现程序中的错误而执行程序的过程,并最终修正错误(调试)。
测试不可能发现软件中所有的错误。
31,测试的方法(黑、白)
黑盒测试(功能测试):检验程序的每个功能是否正常。
白盒测试(结构测试):检验程序的逻辑结构和处理过程是否正常。
32,步骤
模块测试
子系统测试
系统测试
验收测试
平行运行(试运行)
33,单元测试的主要内容
模块接口
局部数据结构
重要的执行通路
出错处理通路
影响上述各方面特性的边界条件。
集成测试
集成测试的目标:发现模块在集成过程中与接口有关的问题。
集成测试的方法。
非渐增式测试方法:先单元测试,后集成
优点:能充分利用人力,加快工程进度。
渐增式测试方法:每集成一个模块,就进行一次测试。
优点:可以及时发现模块之间的接口问题。
缺点:需要较多的机器时间。
渐增式测试的两种方法
自顶向下结合:
深度优先:从主控制通路开始,沿通路进行组装和测试。
优点:可以较早实现软件的一个功能。
宽度优先:从顶层开始,根据软件结构一层一层进行组装测试。
优点:可以较早发现上层结构中的问题。
自底向上结合:
主要优点
能较早发现底层模块之间的接口错误;
可以充分利用人力。
34,测试方案应包括的内容、基本原则和目标
测试方案中应包括的内容
预定要测试的功能
应该输入的测试数据
预期的测试结果
基本原则:选用尽可能少的测试数据,做到尽可能完备的测试。
目标:确定一组最可能发现某个错误或某类错误的测试数据。
35,几种覆盖(条件覆盖)
逻辑覆盖—程序的通路测试
语句覆盖(或点覆盖)
判定覆盖(或边覆盖)
条件覆盖
判定/条件覆盖
路径覆盖
条件组合覆盖
36,等价划分定义,方法,步骤
等价划分法定义
将所有可能的输入数据(有效的或无效的)化分成若干个等价类。
划分等价类的方法
如上下限范围内为一组,下限以外为一组,上限以外为一组,上边界为一组,下边界为一组。等等。
根据等价类设计测试方案的步骤
设计针对有效等价类的测试方案;设计针对无效等价类的测试方案。
37,调试的任务和步骤 策略
任务:诊断和改正程序中的错误。
步骤
确定错误的准确位置。
设法改正错误。
调试技术:追踪程序的运行状态,观测变量的变化。
调试策略
试探法 、回溯法、 对分查找法
归纳法:从错误征兆出发,找出程序的故障点。
收集有关的数据
组织数据
导出假设
证明假设
演绎法:列出所有可能的假设,然后逐步排除假设。
设想可能的原因
用已有的数据排除不正确的假设
精化余下的假设
证明余下的假设
软件可靠性定义和可用性定义
软件可靠性定义:程序在给定的时间间隔内成功运行的概率。
软件可用性定义:程序在某一给定时间成功运行的概率。
38,维护的定义、分类(*) 、问题
软件维护是为了改正错误或满足新的需要而修改软件的过程。
软件维护的分类
改正性维护 适应性维护 完善性维护 预防性维护
维护的问题
阅读程序困难。文档不足。模块的性差。许多技术人员不愿意做维护工作。
39,可维护性的定义、决定因素
软件可维护性的定义:维护人员理解、改正、改动和改进这个软件的难易程度
决定软件可维护性的因素:可理解性、可测试性、可修改性
40,面向对象方法的定义
任何事物都是由对象组成;
具有相同属性和方法的对象组成了对象类;
类与类之间可以通过继承关系形成层次结构;
对象之间只能通过传递消息相互联系。
41,传统方法学存在的问题
面向对象方法学特点
存在的问题
生产率提高的幅度远不能满足需要
软件重用程度很低
软件仍然很难维护
软件往往不能真正满足用户的需要
OO方法的主要特点
强调围绕对象而不是围绕功能来构造系统。
分析方法与思维方法一致,系统易于理解。
系统稳定性好。
软件可重用性高。
系统可维护性好,易于测试、调试和修改
42,对象的定义,特点
对象的定义
对象是对问题域中某个实体的抽象,即是对实体的属性和操作的封装。
对象的特点
以数据为中心
对象是主动的,是进行处理的主体
实现了数据封装
本质上具有并行性
模块性好
面向对象建模的三种形式,关系
面向对象建模的三种形式
对象模型:描述系统的数据结构
动态模型:描述系统的控制结构
功能模型:描述系统的功能
三种模型之间的关系
功能模型定义了系统要做什么。
动态模型规定了系统在什么条件下做。
对象模型定义了谁来做。
43,类图,状态图(*) 用例图 动态模型
44,面向对象分析的基本过程
需求分析
建立模型
建立对象模型的主要活动
找出类—&—对象;
识别结构(确定关联);
识别(划分)主题(功能边界);
定义属性;
定义服务。
45,面向对象设计任务,准则
OOD的任务:将需求分析结果转变成符合成本和质量要求的抽象的系统实现方案
准则:强内聚(服务内聚、类内聚、“一般—特殊”内聚)、可重用、模块化、抽象 (规格说明象
、参数化抽象)、信息隐藏、弱交互耦合
软件重用
软件重用的类别
知识重用
方法和标准的重用
软件成分的重用:即通常所说的软件重用
实现软件重用需要创建可重用的软构件
软件成分的重用级别
代码重用
源代码剪贴
源代码包含(Include)
继承
设计结果重用
分析结果重用
软件重用技术
软件组合技术
软件生成技术
面向对象的软件重用技术—用类构件
系统分解(CS,点对点)
子系统之间的交互方式
客户—供应商关系(client-superlier)
平等伙伴关系(peer-to-peer)
46,UML定义(有哪几种图,9种)
第一类是用例图(Use case diagram),从用户角度描述系统功能,并指出各功能的操作者。
第二类是静态图(Static diagram)
类图:描述系统中类的静态结构。
对象图: 对象图是类图的实例 。
第三类是行为图(Behavior diagram) :描述系统的动态模型和组成对象间的交互关系。
状态图:描述类的对象所有可能的状态以及事件发生时状态的转移条件。
活动图:描述满足用例要求所要进行的活动以及活动间的约束关系。
第四类是交互图(Interactive diagram):描述对象间的交互关系。
顺序图:显示对象之间消息发送的顺序关系。
合作图:描述对象间的协作关系。
如果强调时间和顺序,则使用顺序图;如果强调上下级关系,则选择合作图。
第五类是实现图( Implementation diagram )
构件图:描述代码部件的物理结构及各部件之间的依赖关系。
配置图:定义系统中软硬件的物理体系结构 下载本文