【CUMT】软件工程期末复习

1.软件工程概述

1.2 计算机软件概述

软件分类:

  • 软件规模
  • 工作方式
  • 服务对象

1.4 软件生命周期

  • 问题定义
  • 可行性研究
  • 项目计划
    • 需求分析
    • 概要设计
    • 详细设计
    • 编码
    • 测试
  • 交付与运维

1.5 软件开发模型

  • 边做边改:直接根据功能编码,忽略需求分析
  • 瀑布(线性):先逻辑设计后物理设计的线性顺序,固定起始需求
    • 需求
    • 设计
    • 编码
    • 测试
    • 交付
  • 原型:先给demo
    • 需求
    • 原型
    • 评估
    • 调整
  • 增量(迭代):多重瀑布+快速原型,迭代周期固定,专注功能实现
    • 需求
    • 设计
    • 编码
    • 测试
    • 交付
    • 需求。。。
  • 螺旋:多重瀑布+快速原型,周期长度取决于风险评估
    • 制定计划
    • 风险分析
    • 实现工程
    • 用户评估

2.项目计划

2.2 可行性研究

构造性成本模型--基础COCOMO公式:

  • 需要工作量--E=ab(KLOC)^bb,人/月
  • 开发进度--Tdev=(LOC)/E,行/人/月
  • 开发时间--D=cb*(E)^db,月
  • 需要人数--P=E/D,人

经济可行性--费用估计:

  • 开发成本=开发工作量*开发费用
  • 开发工作量=Aστ
    • A估算工作量经验值
    • σ风险系数:1-1.5
    • τ复用系数:0.25-1
  • 开发费用=(P+Q+R)ST
    • P人头费=B*1.476
    • B平均工资
    • Q办公费=B/3
    • R税收及利润=B/3
    • S管理系数:1-1.2
    • T优质系数:[1.05,1.1,1.15,1.2]

3.需求分析

3.2 数据流图DFD

3.3 数据字典DD

3.4 加工逻辑描述工具

  1. 结构化语言

  2. 判定表:条件+动作

  3. 判定树

  4. IPO图

4.面向对象方法(OOA)

4.2 统一建模语言UML

202501041710434.png

4.3 用例模型

组成: actor(角色)+usecase(动作/功能)

5.概要设计

5.1 软件开发流程概念区分

具体描述
软件开发 需求分析(DFD/数据字典)、概要-详细设计、编码实现
软件开发模型 瀑布、快速原型、增量(迭代)、螺旋
软件设计 概要设计、详细设计
软件设计模式
框架、架构模式 特定软件可复用设计的一组相互协作类

5.2 软件结构设计

  1. 模块化
  2. 软件结构风格:各模块的组织情况,最好独立性高(低耦合、高内聚)
  3. 耦合与内聚
耦合 具体描述 内聚 具体描述
非直接耦合 没有信息传递 功能内聚 各成分结合在一起完成单一功能
数据耦合 传递简单参数 顺序内聚 该成分的输出是下一成分的输入
特征耦合 传递复合参数(数据结构) 通信内聚 成分的输入/输出相同
控制耦合 传递flag(控制信息) 过程内聚 成分有先后次序
外部耦合 访问同一全局变量 时间内聚 成分在同一时刻执行
公共耦合 访问同一全局数据 逻辑内聚 成分逻辑功能相似/相同(avg/max),可能有flag控制选择
内容耦合 两模块之间代码有交互 偶然内聚 模块内成分在功能上无关

5.3 图形工具

  1. 层次图(H图)

  2. HIPO图:带编号的H图+描绘模块处理过程的IPO图

  3. 结构图(Structure chart,SC):有数据的传入传出

20250103111910

5.4 结构化设计方法(Structure Design)

  1. 概念与步骤

基于数据流的系统分析、设计方法:SA、SD(系统逻辑模型DFD->软件结构图HIPO/SC)

  1. 变换型DFD--变换映射(P69)

变换控制模块--数据随时间的推移而流动:

  • 输入边界
  • 变换中心:计算
  • 输出边界

20250102222655

20250103145153

  1. 事务型DFD--事务映射

事务控制模块--以事务中心为核心:

  • 输入
  • 事务中心:扇出不同动作
  • 调度通路
    • 事务层
    • 操作层
    • 细节层

20250103112907

20250103112644

5.5 软件结构设计优化

  1. 改进结构,提倡模块独立:翁>塔>饼,观察耦合与内聚
  2. 模块规模适中
  3. 扇出(3-4)、扇入(the more the better)
  4. 控制域(自身+扇出的闭包)、作用域
  5. 接口简单化

6.详细设计

6.1 详细设计任务与内容

根据概要设计划分出的模块编码,给出明确的算法描述

6.2 详细设计工具

有图形、表格、语言三种工具,详细介绍三种图形工具

  1. 程序流程图

20250103154027

  1. N-S图(盒图)

20250103154137

  1. PAD图(问题分析图)

20250103154527

6.3 人机界面设计

7.面向对象方法(OOD)

7.1 面向对象的结构设计OOD

  1. 类图

找完系统的对象类之后,确定对象之间的关系:

  • 关联关系(没有箭头则为双向访问,否则单向)
  • 聚合/组合关系(类图中表示为空心/实心菱形)
  • 依赖关系(表示“使用”语义,弱关系)
  • 泛化关系 (表示父子类,是继承)

对象与接口之间的关系:

  • 实现关系
  1. 静态结构模型

主题和子系统

  1. 面向对象的架构设计

架构模式种类:

  • MVC(model/view/controller)--Spring
  • MVP(presenter)
  • MTV(template)
  • ORM(object/relational/mapping)
  • CBD(core/behavior/driver)

设计模式:

  • 构建型
  • 结构型
  • 行为型
  1. 构件图

20250104171345

  1. 部署图

7.2 面向对象的详细设计

  1. 顺序图
  2. 协作图
  3. 状态图
  4. 活动图

7.3 UML双向工程

  1. 从UML模型生成代码的正向工程
  2. 从代码生成UML模型的逆向工程

9.测试

  1. 概述

软件测试对象:需求分析报告、概要设计报告、详细设计报告、源程序清单

  1. 测试方法
  • 静态测试:代码复审
  • 动态测试(机器测试):白盒(覆盖)、黑盒(等价有效类)
  1. 测试用例设计(12.10)
逻辑覆盖法(程序流程图) 路径测试法(程序图) 测试规则
语句覆盖 点覆盖 每个语句(点)至少一次
判定覆盖 边覆盖 每个分支(边)至少一次,关注判断语句的复合条件
条件覆盖 关注判断语句每个单独条件
判定/条件覆盖
条件组合覆盖
路径覆盖 每种通路都走(2*2)
posted @ 2025-01-07 19:03  W-enzy  阅读(79)  评论(0)    收藏  举报