software engineering Final Review | 软件工程期末复习

软件工程复习

more important

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

应用题

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

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!

Tianlun-Song wechat
Welcome to pay attention to my person WeChart Public account, I am willing to work with you On the Moon, poaching tea.