软件工程复习点总结_软件工程复习重点总结
软件工程复习点总结由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“软件工程复习重点总结”。
软件工程
第一章
1.软件过程模型有:线性顺序模型(瀑布模型),原型实现模型,螺旋模型,快速应用开发模型RAD,并发模型,基于构件的开发模型,形式化方法模型,第四代技术。2.软件危机变现:《1》软件代价高
《2》开发进度难以控制
《3》工作量估计困难 《4》质量差
《5》修改、维护困难
3.维护类型:改正性维护,适应性维护,完善性维护,预防性维护。
4.软件是计算机系统中与硬件相互依存的另一部分,它是包括程序在,数据及其相关文档的集合。
5.软件工程是一门旨在生产无故障的,及时交付的,在预算之内的和满足用户需求的软件学科。
6.软件生命周期包括了软件定义,软件开发和运行维护3个时期组成。
7.软件生命周期模型有问题定义,可行性研究,需求分析,总体详细设计,总体编码和单元测试,综合测试软件维护组。
8.CMM是用于评价一个组织软件过程成熟度和识别增加这些过程的成熟度所需要的关键实践的一个模型,是建立软件组织所使用的进程成熟度的模型以及定义和测量过程成熟度的有效方法,在实际中被软件开发组织用于软件过程改进和评估。9.软件过程开发模型: 1)线性模型(瀑布模型):特点:自上而下,相互衔接如同瀑布流水,逐级下落,体现不可逆转性。
优点:强调开发的阶段性、强调早期计划和需求调查以及强调产品测试。
(1)为项目提供了按阶段划分的检查点
(2)当前一阶段完成后,你自需要去关注后序阶段。(3)开在迭代模型中应用瀑布模型。
缺点:(1)在项目各阶段之间极少有反馈。
(2)只用在项目生命周期的后期才能看到结果。
(3)通过过多的强制完成时期和里程碑来跟踪各个阶段。
适用性:用户的需求非常清楚全面。2)快速原型模型:(1)可以得到比较良好的需求定义,容易适应需求的变化。
(2)有利于开发与培训的同步
(3)开发费用低,开发周期短且对用户更友好
缺点:(1)客户与开发者对原型模型理解不同
(2)准确的原型设计比较困难(3)不利于开发人员开发
3)增量型优点:(1)人员分配灵活
(2)如果核心产品很受欢迎,则可增加人力实现下一个增量(3)可先发布部分功能给客户,对客户起到镇静剂的作用
缺点:(1)并行开发构件有可能遇到不能集成的风险,软件必须具备开放式的体系结构。
(2)容易退化为边做边改模型。从而使软件过程的控制失去整体性。
4)螺旋模型:(1)设计上的灵活性,可以在项目的各个阶段进行变更。
(2)以小的分段来构建大型系统,使成本计算变得简单容易。
(3)随着项目推进,客户始终掌握项目的最新消息,从而他或她能够和管理层有效交互。
缺点:(1)采用螺旋模型需要具有相当丰富的风险评估经验和专门知识,在风险较大的项目开发中,如果未能够及时标识风险,势必造成重大损失。
(3)过多的迭代次数会增加开发成本,延迟提交时间。
10.可行性分析法包括:(1)经济可行性(2)技术可行性(3)运行可行性(4)法律可行性
(5)开发方案的选择 11.需求工程分为:
(1)系统可行性研究:它指的现有的软件、硬件技术能否实现用户对新系统的需求。,从业务角度来决定系统开发是否划算以及在预算范围内能否开发出来。
(2)需求导出和分析:这是一个通过对现有系统分析与潜在用户和购买者讨论。进行任务分析等导出系统需求的过程,也可能需要一个或多个不同的系统模型和原型
(3)需求描述。需求描述就是把分析活动中收集信息以文档的形式确定下来。(4)需求有效性验证。这个活动检查需求实现、一致和完备。
(5)需求管理。需求管理是一种系统化方法,可用于获取、组织和记录系统需求并使客户和项目团队在系统变更需求上达成并保持一致。12.软件需求5个方面:(1)问题识别(2)评估与综合(3)建模
(4)规约(5)评审 13.需求获取方法:(1)建立联合分析小组
(2)客户访谈(3)问题分析与确认(4)快速原型法
14.需求分析原则:(1)必须能够表达和理解问题的数据域和功能域
(2)按按自顶向下,逐层分解。
(3)要给出系统的逻辑视图和物理视图。15.软件设计分为总体设计和详细设计。16.总体设计任务:
(1)系统分析员审查软件计划、软件需求分析、提供的文档、提出最佳推荐方案,用系统流程图,组成物理元素清单,成本效益分析,系统的进度计划,供专家审定后进入设计。(2)去顶模块结构,划分功能模块,将软件功能需求分配给所划分的最小单元模块。确定模块之间的联系,确定数据结构、文件结构、数据库模式,确定测试方法与策略。(3)编写概要设计说明书,用户手册、测试计划、选用相关的软件工具来描述软件结构,结构图是经常使用的软件的软件描述工具。选择分解功能与划分模块的设计原则,例如模块划分独立性原则,信息隐藏原则等。
17.信息隐蔽是指每个模块内部信息对于其他不需要此信息的模块来说是不可访问的,即外部模块对模块内部的实现过程的不可见性。
18.模块化就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能,以满足用户的需求。
19.模块独立性概括了把软件划分为模块时要遵守的准则,也是判断模块够着是否合理的标准。
20.衡量模块独立的两个标准是耦合性和内聚性。21.耦合性:也称块间联系,指软件系统结构中各模块间相互联系和紧密程度的一种度量。模块之间联系月紧密,其耦合性就越强,模块的独立性则越差。模块间耦合高低取决于模块间接口的复杂性,调用的方式以及传递的信息。
22.内聚性:又称为块间联系。指模块的躬耕强度的度量即一个模块内部各个元素,彼此结合的紧密程度的度量。若一个模块内各个元素联系的越紧密,则它的内聚性越高。23.模块独立原则也称为模块设计的原则:高内聚、低耦合。
24.耦合性包括:非直接耦合,数据耦合,标记耦合,控制耦合,外部耦合,公共耦合,内容耦合25.内聚性包括:巧合内聚,逻辑内聚,时间性内聚,过程内聚,通信内聚,信息内聚,功能内聚。
26.数据流程图的定义和作用:数据流程图有两个特征:抽象性和概括性。抽象性指的是数据流程图把具体的组织机构、工作场所、物质流都去掉,只剩下信息和数据存储,流动,使用以及加工情况。
概括性则是指数据流图把系统对各种业务的处理过程联系起来考虑,形成一个总体。27.数据流程图的组成:外部实体、数据流、处理、数据存储。
28.面向对象的基本概念:对象是由描述该对象属性的数据以及可以对这些数据施加的所有操作封装在一起构成的统一体。
29.对象:它是分装了数据结构及可以施加在这些数据结构上的操作的封装体。30.类:用于表示某些对象的共同特征(属性和操作),对象是类的实例。31.实例:就是由某个特定类所描述的一个具体对象。32.消息:消息传递时对象与外界相互关系的唯一途径。
33.方法:方法就是对象所能执行的操作,也就是类中所定义的服务。
34.属性:属性就是类中定义的数据,它是对客观世界实体所具有的性质的抽象。35.封装:封装也就是信息隐藏,通过封装对外界隐藏了对象的实现细节。36.继承:是现实世界中遗传关系的直接模拟。
37.多态性:指允许不同类的对象对同一信息做出响应
38.重载:函数重载是指在同一个作用域内的若干个参数特征不同的函数可以使用相同的函数名字
运算重载是指同一个运算符可以施加不同类型的操作数上面 39.UML是面向对象的方法
40.静态结构图包括类图和对象图 41.UML由九种图构成:
用例图
类图
对象图
活动图
状态图
序列图(顺序图)
协作图
构件图(组件图)
部署图(配置图)
42.UML视图大体分为三大类:
结构分类
动态行为
模型管理
43.类图有3种属性
“+”public(公共)
“#”protected(保护)
“-”private(私有)
操作一样
44.类之间的关系有用关联:泛化
聚合依赖
组合45.用例图有3种关系:communicates(通信)
extends(延伸)
uses(使用)46.程序设计语言3种结构:顺序
判断
循环
47.良好的编码风格:
缩进良好,没有过多嵌套
变量名,空间名,类名都取直接有意义的字眼
有一些必要注释
符合思维习惯使用运算符
模块化 48.软件测试定义:为了发现程序中的错误而执行程序的过程 49.测试方法
黑盒测试(功能测试)
白盒测试(结构测试)
50.黑盒测试如果已经知道了产品应该具有的功能,可以通过测试来检验是否每个功能都正常使用 白盒测试:如果知道产品内部工作过程,可以通过测试来检验产品内部动作是否按照规格说明的规定正常进行
51.软件测试:
单元测试
集成测试
确认测试
系统测试
52.单元测试也称为模块测试或结构测试,通常可放在编程序段,主要采用逻辑覆盖技术,目的是检查模块是否能实现了详细设计说明书种规定的功能和算法 53.单元测试主要发现编程和详细设计中产生的错误 54.测试一个模块是需要为该模块编写一个驱动模块和若干桩模块。顶层测试无需驱动模块,底层测试无需桩模块
55.集成测试也称为组装测试,在单元测试的基础上把所有模块组装成一个系统进行测试。主要测试设计阶段产生的错误
56.非渐增式集成测试(先测试后组装)和渐增式集成测试(测试一个组装一个)57.确认测试目标是检验软件的有效性,在需求分析阶段制定
58.白盒测试技术:语句覆盖
判定覆盖
条件覆盖
判定条件覆盖
条件组合覆盖
路径覆盖
59.黑盒测试技术:等价类划分,边值分析,错误推测和因果图等 60.按照测试过程是否在实际应用过程中来分,有静态分析与动态测试
测试方法有分析法(静态分析和白盒测试)与非分析法(黑盒法)
61.软件维护分为以下4类:改正性维护;适应性维护;完善性维护;预防性维护
62.决定软件可维护性的因素: 可理解性
可测试性
可修改性
可移植性
可重用性 63.基本路径测试:环路复杂性的3种计算方法: 将环路复杂度定义为流图种区域的数量
设E为流图的边数,N为图中的节点数,则定义环路复杂度
V(G)=E-N+2 设p为流图G中的制定节点数,则有V(G)=p+1 64.关键路径测试