软件工程的三次作业是重点

课后的选择题和判断题

软件工程概述

软件分类

  1. 微型
  2. 小型
  3. 中型
  4. 大型
  5. 超大型软件

软件危机定义

指人们再开发维护软件过程中所遇到的一系列问题,这些问题会导致软件的终止

软件三要素 #填空题

  1. 工具
  2. 过程
  3. 方法

软件工程的目的 #填空题

软件工程是借鉴传统过程的原则和方法,以提高质量降低成本为目的

软件开发方法

四种开发方法是:

  1. 结构化方法
  2. 面向数据结构方法
  3. 面向对象方法
  4. 形式化方法

结构化分析的指导思想 #填空题

结构化方法是采用自顶向下逐步求精的指导思想

面向数据结构方法 #填空题

从目标系统的输入输出数据入手

面向对象方法 #填空题

面向对象的设计和面向对象的分析

面向对象的核心 #选择题

对象模型

软件过程

软件生命周期

  1. 可行性分析
    • 确定项目的可行性
  2. 需求分析
    • 确定做什么
    • 描述详细的需求内容
  3. 总体设计
    • 怎么做
    • 设计数据说明
  4. 详细设计
    • 具体怎么做
    • 设计内部实现细节
  5. 编码
    • 具体编码,实现程序
  6. 测试
    • 可用性
    • 发现软件产品中存在的软件缺陷
  7. 运行和维护

软件过程模型

模型的分类

  1. 瀑布模型
  2. 快速原型模型
  3. 增量模型
  4. 螺旋模型
  5. 喷泉模型

瀑布模型

  1. 是一种线性的开发模型
  2. 具有不可回溯性
  3. 优点
    • 过程模型简单
    • 执行容易
  4. 缺点
    • 无法适应变更

快速原型模型

  1. 优点
    • 开发速度快
    • 客户反馈意见及时
  2. 不利于开发人员创新

增量模型

  1. 优点
    • 将每个模块作为增量组件(模块化
    • 分批次提交

螺旋模型 #填空题

结合了瀑布模型快速原型模型 的优点
增加了风险分析

用于风险较大大型软件项目开发的过程模型
优点

  • 将风险分析扩展到各个阶段
  • 大幅度降低了软件开发的风险
    缺点
  • 控制和管理比较复杂
  • 可操作性不强
  • 对管理人员要求高

喷泉模型

  1. 特点
    • 迭代性
    • 无间隙性

可行性研究与项目开发计划

软件开发计划是软件工程中的一种管理型文档

技术可行性是最关键的部分

开发效益包括经济效益与社会效益两部分

结构化分析

行为状态转换图、数据流图、ER 图 #应用题

行为状态转换图 #应用题

  1. 初始状态 实心圆
    • 一个初态
  2. 结束状态 空心园
    • 可以多个
    • 可以没有
  3. 事件 文字下面是直线箭头
  4. 状态 圆角矩形

数据流图 #应用题

  1. 外部实体 矩形
  2. 数据流 (直线箭头
  3. 数据变化:加工(泡泡
  4. 数据存储: (两道横线

ER 图实体关系图 #应用题

  1. 实体 圆形
  2. 关系 菱形
  3. 联系 无相边
    • 1:1
    • 1:n
    • M:n

两个任务 #简答题

  1. 首先是需求分析的建模阶段: 建立系统的分析模型
  2. 其次是需求分析的描述阶段 : 将需求文档化,通过软件需求规格说明书的方式表达出来

三个原则 #简答题

  1. 需求分析是一个过程,它应该贯穿系统的整个生命周期,而不仅仅属于软件生命周期早期的一项工作
  2. 需求分析应该是一个迭代的过程。需求很难一步到位,应该随着项目的深入不断变化的
  3. 对需求进行量化: 需求的表述应该具体、清晰、而且是可测量的

需求分析的步骤

  1. 需求获取
  2. 分析建模
  3. 需求描述
  4. 需求验证与评审

结构化设计

以软件需求规格说明书为基础,设计软件系统的整体结构,确定每个模块的实现算法

  • 解决了怎么做的方案

面向对象方法与 UML

UML 是什么

是一种工具,可以用于各行各业

4+1 视图 #填空题

  1. 逻辑视图
  2. 实现视图
  3. 过程视图
  4. 部署视图
  5. 用例视图

UML 建模分为几种 #填空题

  1. 动态建模
    • 状态图
    • 顺序图
    • 活动图
    • 协作图
  2. 静态建模
    • 包图
    • 类图
    • 对象图
    • 用例图
    • 构件图
    • 部署图

用例图 #应用题

  1. 参与者 小人
  2. 用例 圆形
  3. 联系 箭头
    • 包含 <<include>> 虚线箭头
    • 扩展 <<extend>> 虚线箭头
    • 泛化 实线空心箭头
  4. 边界 方框

类图 #应用题

  1. 类名 : 首字母大写
  2. 类型 +id:int
    • ~ 包
    • # 受保护的
  3. 操作 getId():int

对象图 #应用题

  1. 对象名 : 对象名:类名 首字母大写
  2. 属性 id:int=1
  3. 没有操作

包图 #应用题

面向对象分析

面向对象分析原则

  1. 定义有实际意义的对象
  2. 模型的描述要规范、准确
  3. 共享性
  4. 封装性

软件实现

编程语言的分类

  1. 机器语言
  2. 汇编语言
  3. 高级语言
    java、C++、python
  4. 超高级语言

编码风格和规范

  1. 版权和版本声明
  2. 程序板式,具有良好的可读性,易读性
  3. 注释
  4. 命名规范
  5. 数据说明
  6. 语句构造
  7. 输入输出
  8. 效率

软件测试

概念

发现软件中的错误和缺陷
但是不能发现所有的错误

测试的模型

  1. V 模型
  2. W 模型
  3. H 模型

黑盒测试

关注输入 和 输出

白盒测试

关注内部的逻辑结构

测试顺序

  1. 单元测试
  2. 集成测试
  3. 系统测试
  4. 验收测试