软件工程复习大纲
题型:
选择题
判断题
简答题
应用题(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)
一个监控的软件工程以确保软件质量的过程
软件评审:
指“一个过程或会议期间进行的软件产品的审核,是由项目人员、管理人员,用户、客户、用户代表或其他有关各方对一个软件产品进行评论或批准”
软件可靠性:
是指在给定时间内,特定环境下软件无错运行的概率