本文 首发于 🌱 煎茶转载 请注明 来源

软件工程复习

more important

  1. 模块独立性
  • 模块独立性,是指软件系统中每个模块只涉及软件要求的具体的子功能,而和软件系统中其他模块的接口是简单的。
  • 高内聚低耦合
  1. 类间的关系
  • 继承
  • 继承关系表示子类重用父类的属性和操作,子类对象也是父类的对象,有时也称父类是子类的泛化。
  • 聚集
  • 普通聚集关系:一个部件对象可同时参与多个整体对象
  • 构成关系:限定一个部件对象在任意时刻只能参与一个整体类的对象,部件对象与整体类对象共存亡
  • 关联
  • 表示两个类的对象之间存在着用于消息传递的稳定通道。
  • 依赖
  • 依赖类B的对象需要向被依赖类A的对象传递消息;被依赖类A可作为依赖类B操作的形参类型
  • 依赖关系表示临时性的消息传递通道,操作完成通道消失
  • 依赖关系是关联关系的弱化,它表示被依赖的类的变化会影响到依赖类。
  1. 实体类、控制类、边界类的职责
  • 边界类
  • 描述目标软件系统与外部环境的交互,主要任务有:
  • 界面控制
  • 外部接口
  • 环境隔离
  • 实体类
  • 表示目标软件系统中具有持久意义的信息项及其操作。具有内向收敛特征
  • 控制类
  • 控制类作为完成用例任务的责任承担者,协调、控制其他类共同完成用例规定的功能或行为。
  1. 面向功能度量的优缺点
  • 优点
  • 与程序设计语言无关
  • 功能点度量能用于软件项目的开发初期
  • 缺点
  • 它涉及到的主观因素比较多,如各种权函数的取值
  • 信息领域中的某些数据有时不容易采集
  • Fp的值没有直观的物理意义
  1. 风险分析、风险管理、风险识别、风险分类
  • 风险分析
  • 风险识别
  • 风险估计
  • 风险评价
  • 风险驾驭
  • 风险分类
  • 项目风险
  • 技术风险
  • 商业风险
  • 风险识别
  • 产品规模
  • 商业影响
  • 客户特性
  • 过程定义
  • 开发环境
  • 建造技术
  • 人员数量及经验
  1. CMM能力成熟度模型
  • 见下文important of eight
  1. 基线是什么,成为基线的流程,修改基线的流程
  • 基线标志软件开发过程的各个里程碑,任一SCI一旦形成文档并复审通过,即成为一个基线,它标志开发过程中的一个阶段的结束。
  • 流程:
  • 修改流程:首先将它拷贝到私有工作区并在项目数据库中锁住,不允许其他人使用;在私有工作区中完成修改控制过程并复审通过之后,再把修改后的SCI释放并回送到项目数据库,同时解锁。

应用题

  1. 需求分析
  • 用例规约(基本流、备选流、前置条件、后置条件)
  • 数据流图
  1. 时序图(基本流的,对象,类,传消息)
  2. 类图
  • 边界类
  • 控制类
  • 实体类
  1. 顶层图(会画一层图,自顶向下逐步求精)
  2. 软件测试
  • 程序流图
  • 基本路径

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

Namedescription
结构化自顶向下,逐步求精
面向对象以对象、对象关系构建软件系统
形式化以正确性为目标,用RSL描述需求规约

software process

description特征使用特征优点缺陷
瀑布模型软件开发过程的分解与软件生存周期划分绑定在一起当需求完全正确且明确时可用适用于单主机计算模式必须确定需求/软件第一版耗时漫长/易出现潜伏缺陷/开发时间长
增量过程模型上述两者独立模块式开发用户反馈可及时/体系结构良好规模不能大/顶层设计经验要求严格/常需要基础服务
专用模型包括基于构建的软件过程模型、web应用软件过程模型、面向方面AOP的软件过程模型、以形式化开发方法为基础的变换模型,,,

software dev model

基础与前提特征举例
软件需求完全确定/瀑布模型
初期仅提供基本需求渐进式原型模型/螺旋模型
形式化方法为基础/变换模型

螺旋模型

象限/活动说明优点缺点
制定计划确定目标/选定方案/弄清限制条件//
风险分析分析方案/考虑如何处理风险//
实施工程开发//
客户评估提修改建议//

Welcome to add!