软件工程复习提纲
-
选择 10:10
-
填空 10:10
部分、、
- 需求分析的三个步骤
- 静态建模、动态建模、物理架构建模
- 物理架构建模包括部署图、构件图
- 名词解释 3:10
- 状态图
- 快速原型模型
- 简答 6:40
- 软件危机的定义、原因
- 瀑布模型的特点、存在问题、解决措施
- 结构化需求模型包括什么,各部分的含义
- 面向对象设计的任务
- 测试的层次有哪些,并解释含义
- 解释用例图和dfd
- 分析设计三个 3:30
- 画判定树
- 画类图
- 从协作图转换到时序图
复习提纲参考lyq
第一章
-
软件:定义
- 定义:软件是能够完成预定功能和性能的可执行的计算机程序和使程序正常执行所需要得数据,加上描述程序的操作和使用的文档。
-
软件危机:定义、原因、解决方法
定义:计算机软件开发和维护过程所遇到的一系列严重问题 。
原因:
-
软件维护费用急剧上升,直接威胁计算机应用的扩大。
修改程序困难,抽调大量人员,影响其他软件开发等。
越晚发现错误,改正的成本就越高(因此强调重视需求)。 -
软件生产技术进步缓慢,是加剧软件危机的重要原因。(软件开发理念和手段与客观实际存在的差异)
-
① 对软件本身的认识存在差异————
软件技术的发展过程————层次上
个人活动与整个项目的关系————规范、现代化
对软件产品的认识————软件的特点与维护② 对软件的服务对象认识不足 ————
存在问题 —— 以开发者为中心
实际应该是 —— 用户需求+专业知识+开发者深刻理解
对实际问题的理解和认识已成为软件开发成败的关键所在
(很多游戏开发者本身就是游戏人)③ 对软件开发缺乏科学管理
现代软件开发过程是一个复杂的系统工程,具有明显的工程特征和较高的技术含量。一般管理方法不适于软件开发。④ 软件开发手段落后
软件开发工具过于原始,往往只是辅助性的、单方面的。———尤其在软件的分析、设计阶段缺少有效的工具。
解决途径:
1.技术措施
使用更好的软件开发技术、开发工具。
2.组织管理措施
(1)创造良好的组织、严密的管理与协调工作的机制软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。
(2)摆脱软件危机的主要出路是,按工程化的原则和方法组织软件的开发工作。
(3)强调文档的重要性。 “口说无凭,立字为据!”是解决软件危机的格言。 -
-
软件工程学的范畴
-
软件工程的发展
-
三种编程范型
(1)过程式编程范型。
①过程式编程范型遵循“程序=数据结构+算法”的思路
②把程序理解成一组被动的数据和一组能动的过程所构成
③编程时,先设计数据结构,再编写算法
④比较大的程序,必须先进行功能分解
⑤典型过程式编程语言包括Fortran、Pascal和C等
(2)面向对象编程范型。
①在面向对象的程序设计中,数据及其操作被封装在一个个称为对象的统一体中,对象之间则通过消息相互联系
②“对象+消息”的机制取代了“数据结构+算法”的思路,因而较好地实现了解空间与问题空间的一致性
(3)基于构件技术的编程范型。
①构件可以理解为标准化的对象类。它本质上是一种通用的、可支持不同应用程序的组件。
②基于构件的编程范型:指以构件的创建,构件的管理以及复用已有的构件组装形成应用为基本活动的编程范型。
三种编程范型的比较
•过程式编程范型
程序由一组被动数据和一组能动过程组成
程序=数据结构+算法
着眼于程序的过程和基本控制结构,粒度最小
•面向对象编程范型
数据及其操作被封装在对象中
程序=对象+消息
着眼于程序中的对象,粒度比较大
•基于构件技术的编程范型
构件是通用的、可复用的标准化对象类
程序=构件+架构
着眼于适合整个领域的类对象,粒度更大 -
三代软件工程
传统软件工程(或经典软件工程)
它以结构化程序设计为基础,又可区分为瀑布模型、原型模型等,其开发阶段一般包括以下:
面向对象软件工程
以面向对象程序设计为基础,又可区分为瀑布模型、原型模型等,其开发过程一般包括以下:
基于构件的软件工程
以软件复用为目标、领域工程为基础,其开发阶段包括:
第二章
-
软工生存周期:定义、阶段各阶段工作划分
一个软件从开始立项起,到废弃不用止,统称为软件的生存周期。三个时期:计划、开发和运行
阶段:问题定义、可行性研究、需求分析、软件分析、软件设计、编码(测试)、软件测试、运行维护
阶段的工作
需求分析:以用户的视角对需求进行定义和分析。
软件分析:以开发人员的视角对需求模型进行分析。
软件设计:考虑具体实现技术和平台的软件设计模型。
编码(测试):把设计文档翻译成源程序。
软件测试:提高软件质量的重要手段。
运行维护:做好软件维护。 -
各种开发模型:定义、思想(特点)、模型的问题(优缺点)
(1)都有哪些模型:瀑布模型、快速原型模型、增量模型、螺旋模型、构件集成模型。
(2)它们的思想、特点、共性是什么
传统软件模型:
①瀑布模型:
思想:基于软件生存周期的线性开发模型。
特点:阶段间的顺序性和依赖性。
②快速原型模型:
思想:先建立一个能够反映用户主要需求的原型,让用户实际看一下未来系统的概貌,将原型反复改进,直至建立完全符合用户要求的新系统。
特点:逼真、快速。
软件演化模型:
③增量模型:
思想:把软件看作一系列相互联系的增量。增量:小而可用的软件。
特点:在开发过程的各次迭代中,每次完成其中的一个增量。有利于控制技术风险。
④螺旋模型:
思想:典型的迭代模型,每迭代一次,螺旋线就前进一周。每轮螺旋均包含计划、风险分析、建立原型、用户评审四种活动。按此顺序周而复始,直到实现最终产品。
特点:在项目的所有阶段都考虑各类风险;能在风险变成问题之前降低它的危害;过多的迭代周期,也会增加开发成本和时间;螺旋模型开发的成败,在很大程度上依赖于风险评估的准确性。
⑤构件集成模型:
思想:主要适用于面向对象的软件开发。将构件存储起来构成一个构件库,就为基于构件的软件开发模型提供了技术基础。
(3)其他模型知道大体上是干什么的
软件开发方法可分为形式化方法与非形式化方法两大分支。
形式化方法以形式化的程序变换技术为主要研究内容,多流行于学术界。
非形式化方法旨在用工程方法生产出质量高、易维护的软件产品,多流行于工业界。
①转换模型:将形式化软件开发和程序自动生成技术相结合的一种软件开发模型。
②净室模型:形式化的增量开发模型。
-
统一过程:定义、阶段划分、阶段活动
统一过程定义:
Rational Unified Process(RUP)描述了软件开发中各个环节应该做什么、怎么做、什么时候做以及为什么要做,描述了一组以某种顺序完成的活动。
阶段划分和活动过程
RUP将软件开发分为四个阶段:
初始–定义整个项目的范围
细化–制定项目计划、描述功能、建立体系架构框架
构建–构造软件产品,进行详细测试,Beta版本。
提交–将软件产品移交到最终用户手中 -
可行性研究:内容、步骤
软件可行性研究的内容
可行性研究的步骤
-
风险分析:三项活动
a)风险识别
b)风险预测
c)风险驾驭
第三章
-
结构化分析:定义
-
结构化设计:定义
-
结构化分析模型:构成(p45)的内容及其作用
数据字典(data dictionary, DD):系统涉及的各种数据对象的总和
数据模型:
•实体联系图(entity-relation diagram, E-R 图):描述对象及数据对象之间的关系。
•数据对象说明
功能模型:
•数据流图:1.指明系统中的 数据是如何流动和变换的。2. 描述使数据流图进行变换的功能
•加工规格说明:在 DFD 图中出现的每个功能可在加工规格说明中进行描述。
行为模型:
•状态变换图STD:1.描述系统化对外部事件如何相应,如何动作;2.STD用于行为建模。 -
数据流图:什么,怎么用
数据流图的类型:1.变换型结构 2.事务型结构 -
数据词典:数据流、数据文件、数据项
1)数据流(由多个相关数据项组成)2)数据文件或数据库 3)数据项(不可再分的最小数据单位) -
加工规格说明
-
结构化语言
-
判定表⭐
-
判定树⭐
-
SD模型描述工具:SC图
SC使用的6种模块:
-
结构化设计方法:方法有哪些及其特点
-
DFD到SD图转换:变换型和事务型
a)DFD图的两种类型:变换型结构和事务性结构 -
优化指导原则理解
模块划分规则、高扇入/低扇出原则 -
模块化设计原则和方法:理解
原则:
(1)清晰的第一设计风格
(2)结构化的控制结构
(3)逐步细化的实现方法
工具:
(1)流程图和N-S图
(2)伪代码和PDL语言 -
表达工具:哪几种,
第四章
- 面向对象的基本特征
- UML(选填名词解释):9类图、视图有几种
- 三种建模方式:它们各用什么图
- 静态建模:用例图、类图、包图(了解)
- 动态建模:状态图、时序图、协作图、活动图(了解)
- 掌握图的应用
第五章
- 软件需求:定义、哪两个方面理解(包含着在软件需求定义中)、三个层次
- 需求分析和建模:需求分析步骤(⭐)
- 需求模型(结构化需求模型、面向对象需求模型):内容
- 软件需求描述:需求规格说明中的内容
- 需求管理:定义
第六章
-
面向对象分析:步骤
-
面向对象分析模型:组成,辨析结构化分析模型和面向对象分析模型
-
面向对象分析建模:面向对象分析步骤(3)
(1)分析类:有哪些,什么图符
第七章 面向对象设计
- 软件设计的四个基本概念(掌握)
- 面向对象设计的任务
- 模块化设计思想(分解、模块独立性)
- 进行软件设计的目标(高内聚、低耦合)
- 内聚:几种内聚的强度、对应的模块独立性变化(偶然内聚->功能内聚,内聚越来越强)
- 耦合:区分耦合的强度、判断对应的模块独立性
- 面向对象设计的任务
第八章 测试223
- 软件测试:定义 8.4、四个特性、种类(动态(黑盒、百合 )、静态)
- 测试文档:包含内容
- 测试用例:内容
- 测试结果:内容
- 黑盒测试的几种方法
- 白盒测试的两种方法:第一种:区分盖标准的覆盖程度
- 测试的四个层次(单元、集成):
- 集成测试策略(自底向上、自顶向下、混合)