软件工程复习大纲-整理

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

软件工程复习大纲
题型:
选择题
判断题
简答题
应用题(60分)
①数据流图
②用例图
③程序流程+白盒测试
④顺序图
⑤黑盒测试(等价类划分和边界值分析)
⑥计算题(第八章软件度量)
选择,判断,简答:重心会适当往第六章之后压
一.概述(无大题、简答题,主要是选择和判断)1.软件的概念和特点(三个要素)
概念:
软件= 程序+数据+文档
●程序:按事先设计的功能和性能需求执行的指令序列
●数据:是程序能正常操纵信息的数据结构
●文档:与程序开发、维护和使用有关的图文材料
特点(选择或判断)
三个要素:
工具
方法:完成软件工程项目的技术手段(分为结构化方法和面向对象方法)
过程:贯穿软件开发所有环节
2.软件危机和现状(不协调现象软硬件矛盾)
软件危机定义:
在计算机软件的开发和维护过程中所遇到的一系列严重问题。

(效率下降,质量下降)现状:
●软件成本日益增加
●软件技术进步落后于需求增长
7个原则:
3.软件工程的定义和发展过程
软件工程定义:
应用系统化的、学科化的、定量的方法,来开发、运行和维护软件,即,将工程应用到软件。

发展过程:
第一软件工程传统的软件工程
第二代软件工程对象工程
第三代软件工程过程工程
第四代软件工程构件工程
软件工程知识体系
二.过程模型(无大题)
1.软件的生命周期、软件过程概念
软件过程:(软件开发中所遵循的路线图)
软件过程可以定义软件生产的一系列活动,这些活动贯穿于软件开发的整个过程。

软件过程模型:(软件生存周期模型、软件开发模型)
软件过程模型是软件开发全部过程、活动和任务的结构框架。

它能直观表达软件开发全过程,明确规定要完成的主要活动、任务和开发策略。

(定义了若干小的框架活动,为完整的软件开发过程建立了基础。

每一个活动由一组软件工程动作组成
每一个动作都包括一系列相互关联的可考核的任务,并产生一个关键的工作产品。

每一个任务完成一个动作定义的一部分工作。


过程具有的共同活动:
沟通计划建模构建部署
2.常见的几种软件过程模型
重点三个:瀑布模型、增量模型、原型,优点缺点,应用场合,要会举例子
另外两个,螺旋和敏捷
瀑布模型:
特点:
1. 阶段间具有顺序性和依赖性。

2. 推迟实现的观点。

3. 为了保证质量:①每个阶段必须完成规定的文档; ②每个阶段结束前完成文档审查,及早改正错误
优点:
①提供了一个模板,使得分析、设计、编码、测试与维护工作可以在该模板的指导下有序
地展开,避免了软件开发、维护过程中的随意状态。

②对于需求确定、变更相对较少的项目,线性顺序模型仍然是一种可以考虑采取的过程模
型。

采用这种模型,曾经成功地进行过许多大型软件工程的开发。

缺点:
①线性过程太理想化,不适应需求经常发生变更的环境
②经常不能接受项目开始阶段自然存在的不确定性
③线性顺序模型每一步的工作都必须以前一阶段的输出为输入,这种特征会导致工作中发
生“阻塞”状态。

适用场景:
系统需求明确、技术成熟、工程管理较严格的场合。

增量过程模型:
特点:
①在前面增量的基础上开发后面的增量
②每个增量的开发可用瀑布或快速原型模型
③迭代的思路
优点:
①增量包概念的引入,以及它不需要提供完整的需求。

只要有一个增量包出现,开发
就可以进行。

②在项目的初始阶段不需要投入太多的人力资源。

③增量可以有效地管理技术风险。

缺点:
每个增量必须提供一些系统功能,这使得开发者很难根据客户需求给出大小适合的增量。

原型模型:
适用情况:见上(客户定义……选择。

)缺点:
①设计者在质量和原型间有所折中
②客户意识不到一些质量问题

螺旋模型:
适用场景:
内部的大规模软件的开发,不太适合合同软件。

一般只适用于大规模软件的开发
优点:
①支持用户需求的动态变化
②原型可看作形式的可执行的需求规格说明,易于为用户和开发人员共同理解,还可
作为继续开发的基础,并为用户参与所有关键决策提供了方便。

③螺旋模型特别强调原型的可扩充性和可修改性,原型的进化贯穿整个软件生存周期,
这将有助于目标软件的适应能力。

④螺旋模型为项目管理人员及时调整管理决策提供了方便,进而可降低开发风险。

缺点:
①如果每次迭代的效率不高,致使迭代次数过多,将会增加成本并推迟提交时间;
②使用该模型需要有相当丰富的风险评估经验和专门知识,要求开发队伍水平较高。

敏捷模型:
三.需求分析(有大题)
1.需求分析的概念和过程
需求分析概念:
确定系统必须具有的功能和性能,系统要求的运行环境,并且预测系统发展的前景。

需求分析过程:
2.面向过程结构化分析方法,数据流图(详情见ppt)dfd图,问画二层的话,一定要花多层。

把过程写出来。

0层开始。

结构化分析模型:
其基本思想是用系统工程的思想和工程化的方法,根据用户至上的原则,自始自终按照结构化、模块化,自顶向下地对系统进行分析与设计。

面向对象分析模型:
由5个层次(主题层、对象类层、结构层、属性层和服务层)和5个活动(标识对象类、标识结构、定义主题、定义属性和定义服务)组成。

数据流图:
数据流图中的主要图形元素:
(画图方式参照ppt 03需求分析-2)
3.面向对象的分析方法,用例图(详情见ppt)
UML(统一建模语言):UML是面向对象的系统分析与设计的建模语言,不要将它理解为一种方法论或是一种开发过程
功能模型:用例图
4.需求规格文档编制
四.系统设计(有大题)
1.软件设计过程、软件设计的概念和原则 7个架构
软件设计概念:
软件系统或组件的架构、构件、接口和其他特性的定义过程及该过程的结果。

软件设计原则:
软件设计过程:
设计相关概念:
●抽象
现实世界中一定实物、状态或过程之间总存在某些相似的方面(共性),把这些相似的方面集中和概括起来,忽略其差异性
●体系结构
软件的整体结构和这种结构为系统提供概念完整性的方式
⏹体系结构设计的7种模型:
●设计模式
在给定上下文环境中一类共同问题的共同解决方案
●模块化
软件被划分为命名和功能相对独立的多个组件(通常称为模块),通过这些组件的集成来满足问题的需求
软件的模块性:程序可被智能管理的单一属性
●信息隐藏
模块应该具有彼此相互隐藏的特性,模块定义和设计时应当保证模块内的信息(过程和数据)不可以被不需要这些信息的其他模块访问(私有变量和方法)
●求精(细化)
逐步求精的过程
●功能独立
每个模块只解决了需求中特定的子功能,并从程序结构的其他部分看该模块具有简单的接口
衡量标准:(高内聚低耦合!!不要弄混!)
⏹内聚性(块内联系):模块的功能相对强度
⏹耦合性(块间联系):模块之间的相互依赖程度
●重构
不改变组件功能和行为条件下,简化组件设计(或代码)的一种重组技术
几个模型需要去看:
概念数据模型物理数据模型中心数据架构数据流体形架构调用和返回的架构面向对象的架构层次架构(7个架构图必须掌握)
2.传统的系统设计方法,程序流程图(会和后面的测试里的xxx结合起来考)程序流程图讲解见04 系统设计-2.ppt
3.面向对象的系统设计方法,顺序图结合时序图(重点)
五、程序实现(没有大题和简答)
1.编程规范(了解,能排除即可)
2.版本管理(了解,能判断掉就可)
3.CMMI模型(选择掉,判断掉)
六、质量保证(有大题)
1.质量保证相关概念
软件质量:
明确表示是否符合功能和性能要求,明确地记载开发标准和所有专业开发软件的期望的隐性特点。

软件质量管理:
用来衡量软件设计(设计品质),以及如何做好符合该设计(符合质量)的软件
质量控制:
是审查产品相关的各个方面质量的过程
质量保证:
系统地监测和评估一个工程的各个方面,以最大限度地提高正在由生产过程中实现的质量的最低标准。

软件质量保证(SQA)
一个监控的软件工程以确保软件质量的过程
软件评审:
指“一个过程或会议期间进行的软件产品的审核,是由项目人员、管理人员,用户、客户、用户代表或其他有关各方对一个软件产品进行评论或批准”
软件可靠性:
是指在给定时间内,特定环境下软件无错运行的概率
可靠性就是指运行的稳定性,可用性就是操作的便利性。

比如一辆汽车,可靠性好应该归功于机械部分,可用性好则是内饰和中控系统的功劳。

A系统每年因故障中断十次,每次恢复平均要20分钟,B系统每年因故障中断2次,每次需5小时恢复。

则A系统可用性比B系统高,但可靠性比B系统差。

可靠性的量化指标是周期内系统平均无故障运行时间,可用性的量化指标是周期内系统无故障运行的总时间。

一般提高可靠性的同时,也同时提高了可用性。

2.软件测试的策略软件测试
V模型
1、单元测试的主要目的是验证软件模块是否按详细设计的规格说明正确运行。

2、集成测试主要目的是检查多个模块间是否按概要设计说明的方式协同工作。

3、系统测试的主要目的是验证整个系统是否满足需求规格说明。

4、验收测试从用户的角度检查系统是否满足合同中定义的需求,以及以确认产品是否
能符合业务上的需要。

具体的单元测试,集成测试,系统测试,验收测试,α测试,β测试
使用条件,
集成测试(ppt 06 质量保证1 P39-45 重点看看)
⏹自顶向下的集成方法
⏹自底向上的集成方法
⏹SMOKE方法
3.软件测试的技术,白盒盒测试的逻辑覆盖、黑盒测试的等价类划分和边界值分析模块测试等多个测试,集成测试
大题:
①程序流程+白盒测试
②黑盒测试(等价类划分和边界值分析)
白盒测试:
L1(a->c->e); L2(a->b->d); L3(a->b->e); L4(a->c->d)
逻辑覆盖:
①语句覆盖:使得程序中每个语句至少都能被执行一次。

选择L1即可
②分支覆盖(判定覆盖):使得程序中每个判断的TRUE分支和FALSE分支至少
经历一次。

L1和L2 或者L3和L4
③条件覆盖:使得程序中每个判断的每个条件的可能取值至少执行一次。

④条件组合覆盖:使得每个判断的所有可能的条件取值组合至少执行一次。

黑盒测试:
这种方法是把测试对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。

①等价类划分
等价类划分方法把所有可能的输入数据,即程序的输入域划分成若干部分,然后从每一部分中选取少数有代表性的数据做为测试用例。

1.划分等价类
有效等价类无效等价类
2.选取测试用例
②边界值分析
首先应确定边界情况。

应当选取正好等于,刚刚大于,或刚刚小于边界的值做为测试数据,而不是选取等价类中的典型值或任意值做为测试数据。

七、软件维护(无大题)
1.软件维护的概念和分类
概念:
软件维护是指由于软件产品出现问题或需要改进而对代码及相关文档的修改,其目的是对现有软件产品进行修改的同时保持其完整性。

类型:
①纠错性维护
②适应性维护
③完善性维护
④预防性维护
2.软件维护应注意的问题
•技术方面
o程序的理解
o测试
o影响分析
o可维护性
•管理方面
o契合组织的目标
o人力资源
o过程
o如何组织维护活动
o外包
•维护费用估算
o参数模型
M = P + K × exp (c‐d)
•M是维护用的总工作量,P是生产性工作量,K是经验常数,
•c是复杂程度,d是维护人员对软件的熟悉程度
o基于经验
•专家判断、类推、工作分解结构
3.软件维护过程模型
4.软件维护技术
•程序的理解
•软件再工程
•软件逆向工程
八、项目管理(计算题)带计算器围绕上机的东西来考
1.软件项目管理相关概念4p
2.软件度量(重点),能掌握生产率与工作量的度量方法
生产率估算:
直接测量(LOC):
生产率= 代码行数(KLOC)/工作量(PM)
平均成本= 成本(¥)/ 代码行数(KLOC)
错误数= 总错误数/ 代码行数(KLOC)
缺陷数= 总缺陷数/ 代码行数(KLOC)
文档率= 总文档数(页)/ 代码行数(KLOC)
间接测量(功能点FP):
1.先算总计数total_counts
2.再算功能点FP
工作量度量:
COCOMO(构造性成本模型):
进度表示预计开发时长
•组织型(organic):相对较小、较简单的软件项目。

开发人员对开发目标理解比较充分,与软件系统相关的工作经验丰富,对软件的使用环境很熟悉,受硬件的约束较小,程序的规模不是很大(<50000行)。

•嵌入型(embedded):要求在紧密联系的硬件、软件和操作的限制条件下运行,通常与某种复杂的硬件设备紧密结合在一起。

对接口、数据结构、算法的要求很
高,软件规模任意。

如大而复杂的事务处理系统,大型/超大型操作系统,航天用
控制系统,大型指挥系统等。

•半独立型(semidetached):介于上述两种软件之间。

规模和复杂度都属于中等或更高。

最大可达30万行。

KDSI 预期代码规模
3.项目计划
决定因素
Klo直接度量
直接测量、间接测量怎么算Loc是什么意思
间接测量的公式
跟死算有关的知识点
上机时用到的,可能性就很大计算量大,可以带计算器COCOMO要考。

相关文档
最新文档