软件工程复习
more important
- 模块独立性
- 模块独立性,是指软件系统中每个模块只涉及软件要求的具体的子功能,而和软件系统中其他模块的接口是简单的。
- 高内聚低耦合
- 类间的关系
- 继承
- 继承关系表示子类重用父类的属性和操作,子类对象也是父类的对象,有时也称父类是子类的泛化。
- 聚集
- 普通聚集关系:一个部件对象可同时参与多个整体对象
- 构成关系:限定一个部件对象在任意时刻只能参与一个整体类的对象,部件对象与整体类对象共存亡
- 关联
- 表示两个类的对象之间存在着用于消息传递的稳定通道。
- 依赖
- 依赖类B的对象需要向被依赖类A的对象传递消息;被依赖类A可作为依赖类B操作的形参类型
- 依赖关系表示临时性的消息传递通道,操作完成通道消失
- 依赖关系是关联关系的弱化,它表示被依赖的类的变化会影响到依赖类。
- 实体类、控制类、边界类的职责
- 边界类
- 描述目标软件系统与外部环境的交互,主要任务有:
- 界面控制
- 外部接口
- 环境隔离
- 实体类
- 表示目标软件系统中具有持久意义的信息项及其操作。具有内向收敛特征
- 控制类
- 控制类作为完成用例任务的责任承担者,协调、控制其他类共同完成用例规定的功能或行为。
- 面向功能度量的优缺点
- 优点
- 与程序设计语言无关
- 功能点度量能用于软件项目的开发初期
- 缺点
- 它涉及到的主观因素比较多,如各种权函数的取值
- 信息领域中的某些数据有时不容易采集
- Fp的值没有直观的物理意义
风险分析、风险管理、风险识别、风险分类
- 风险分析
- 风险识别
- 风险估计
- 风险评价
- 风险驾驭
- 风险分类
- 项目风险
- 技术风险
- 商业风险
- 风险识别
- 产品规模
- 商业影响
- 客户特性
- 过程定义
- 开发环境
- 建造技术
- 人员数量及经验
CMM能力成熟度模型
- 见下文important of eight
- 基线是什么,成为基线的流程,修改基线的流程
- 基线标志软件开发过程的各个里程碑,任一SCI一旦形成文档并复审通过,即成为一个基线,它标志开发过程中的一个阶段的结束。
- 流程:
- 修改流程:首先将它拷贝到私有工作区并在项目数据库中锁住,不允许其他人使用;在私有工作区中完成修改控制过程并复审通过之后,再把修改后的SCI释放并回送到项目数据库,同时解锁。
应用题
- 需求分析
- 用例规约(基本流、备选流、前置条件、后置条件)
- 数据流图
- 时序图(基本流的,对象,类,传消息)
- 类图
- 边界类
- 控制类
- 实体类
- 顶层图(会画一层图,自顶向下逐步求精)
- 软件测试
- 程序流图
- 基本路径
important
First
- 软件危机特征
- 软件开发周期大大超过规定日期
- 软件开发成本严重超标
- 软件质量难于保证
- 软件危机产生的原因
- 用户需求描述不准确
- 开发人员对需求的理解差异
- 大型项目管理经验缺乏
- 开发人员素质与经验
- 缺乏有力的方法学与工具技术
- 软件本身的复杂性
- 软件工程过程的理解
- 软件过程定义了
- 方法使用顺序
- 提交的文档
- 为保证质量和适应变化所需的管理
- 软件开发各个阶段的里程碑
- 软件过程为了(目标)
- 付出较低成本
- 达到要求功能
- 较好的性能
- 维护成本低
- 按时交付
- 软件工程三要素
- 成本
- 质量
- 工期
- 商业风险
- CMM的分级,各个级别
软件过程模型
- 瀑布模型
- 原型模型
- 优缺点
- 适合那些项目
- 项目维护-估算模型
- 公示、参数
- 工作量计算方法
- 边界类、实体类、控制类的职责
Third
- 面向对象的需求建模
- 核心时利用面向对象的概念和方法为软件需求建造模型
- 面向对象的特点、抽象、封装(选择、判断)
- 特点
- 自然性
- 软件复用
- 可扩展
- 可管理性
- 核心概念
- 对象:属性和操作的封装
- 属性
- 操作
- 类
- 继承:类之间的内在联系及属性和操作的共享
- 聚集:部分-整体关系
- 消息:对象与外部世界关联的唯一途径5
- 基于UML、用例的需求模型,怎么理解
forth
- 模块独立性
- 是指软件系统中每个模块只涉及软件要求的具体子功能,而和软件系统中其他的模块的接口是简单的
- 耦合、内聚
- 耦合:模块之间的相互连接的紧密程度的度量
- 内聚:模块功能强度的度量
- 高内聚、低耦合
sisth
- 结构化分析模型
- 数据字典
- 实体-关系图——数据对象描述
- 状态-迁移图——控制规格说明
- 数据流图——加工规格说明
seventh
- 软件测试技术
- 黑盒测试:完全不考虑程序的内部结构和处理过程,测试仅在程序界面上进行
白盒测试:按照程序内部的逻辑测试程序、检验程序中的每条通路是否按照预定的要求正确工作。因此又称结构测试或逻辑驱动测试
技术 在哪儿里测 测什么 技术类型 举例 黑盒测试/功能测试/数据驱动测试 仅在程序界面 功能正常/输入输出/保持外界数据完整 确认技术 “我们在构造一个正确的系统吗” 白盒测试/结构测试/逻辑驱动测试 程序内部代码 基本路径/判断/循环/数据结构 验证技术 “我们在正确的构造一个系统吗”
- 单元测试
- 测试对象 —— 模块(软件设计最小单位)
- 测试方法:多采用白盒测试,多模块可并行测试
- 测试任务
- 接口
- 局部数据结构
- 边界条件
- 独立执行通路
- 错误处理通路
- 集成测试
- 测试方法:常采用黑盒测试技术
- 策略:
- 非渐增式测试
- 渐增式测试
- 自顶向下结合
- 深度优先
- 广度优先
- 自底向上结合
- 确认测试
- alpha测试:在开发者的场所由用户进行,在开发者注视和控制的环境下进行
- beta测试:最终用户在自己的场所进行
eighth
- 项目管理
- 任务
- 制定软件项目的实施计划和方案
- 对人员组织分工
- 按照计划进度,以及成本管理、风险管理、质量管理的要求进行软件开发,完成软件项目的各项要求和任务。
- 目的:为了使软件项目能够在预定成本、进度、质量的前提下顺利完成,必须对软件工程项目进行计划、组织、监控和管理。
- 面向功能的度量
见上文第4条 - 风险分析
- 活动
- 风险识别
- 风险估计
- 风险评价
- 风险驾驭
- 分类
- 项目风险:威胁到项目计划
- 技术风险:威胁开发软件质量和预计交付时间
- 商业风险:威胁到软件的生存能力
- McCall的软件质量要素图
- 修正性
- 可维护、灵活性、可测试性
- 转移性
- 可移植性、可重用性、连接性
- 运行性
- 正确性、可靠性、有效性、完整性、可用性
- 商业风险
- 市场风险
- 策略风险
- 管理风险
- 预算风险
- 风险分析内容
- 8.4.1
- 风险识别
- 产品规模
- 商业影响
- 客户特性
- 过程定义
- 开发环境
- 建造技术
- 人员数量及经验
- 风险估计
- 奉献驾驭
- CMM简单介绍
- 分级
- 初始级
- 可重复级
- 已定义级
- 已管理级
- 优化级
- 衡量软件工程
- 提高的参考基准
ninth
- 基线技术:见上文第7条
大题
- 数据流图
- 基本路径
- 用例规约、时序分析
some tables
software type
分类依据 | 软件类型 |
---|---|
功能 | 系统软件/应用软件 |
实时性 | 实时软件/非实时软件 |
运行环境 | 单机软件/网络软件 |
加工数据类型 | 事务处理软件/科学和工程计算软件 |
计算方法 | 基于传统算法的/基于符号演算和推理的人工智能软件 |
常用 | 系统软件/个人计算机软件/实时嵌入式软件/科学和工程计算/事务处理/人工智能/Web/ |
dev function
Name | description |
---|---|
结构化 | 自顶向下,逐步求精 |
面向对象 | 以对象、对象关系构建软件系统 |
形式化 | 以正确性为目标,用RSL描述需求规约 |
software process
description | 特征 | 使用特征 | 优点 | 缺陷 |
---|---|---|---|---|
瀑布模型 | 软件开发过程的分解与软件生存周期划分绑定在一起 | 当需求完全正确且明确时可用 | 适用于单主机计算模式 | 必须确定需求/软件第一版耗时漫长/易出现潜伏缺陷/开发时间长 |
增量过程模型 | 上述两者独立 | 模块式开发 | 用户反馈可及时/体系结构良好 | 规模不能大/顶层设计经验要求严格/常需要基础服务 |
专用模型 | 包括基于构建的软件过程模型、web应用软件过程模型、面向方面AOP的软件过程模型、以形式化开发方法为基础的变换模型 | , | , | , |
software dev model
基础与前提 | 特征 | 举例 |
---|---|---|
软件需求完全确定 | / | 瀑布模型 |
初期仅提供基本需求 | 渐进式 | 原型模型/螺旋模型 |
形式化方法为基础 | / | 变换模型 |
螺旋模型
象限/活动 | 说明 | 优点 | 缺点 |
---|---|---|---|
制定计划 | 确定目标/选定方案/弄清限制条件 | / | / |
风险分析 | 分析方案/考虑如何处理风险 | / | / |
实施工程 | 开发 | / | / |
客户评估 | 提修改建议 | / | / |
Welcome to add!