软件工程
2022-02-18 16:02:55 41 举报
AI智能生成
软件工程是一门涉及计算机科学、数学、工程学等多个领域的综合性学科。它主要关注如何有效地设计、开发和维护大型软件系统。软件工程的核心理念是将软件开发过程视为一种工程实践,通过采用系统性的方法和严格的管理来提高软件质量和开发效率。这包括需求分析、设计、编码、测试、部署和维护等各个阶段。软件工程师需要具备扎实的编程技能、良好的沟通能力和团队协作精神,以确保项目的成功完成。随着信息技术的不断发展,软件工程在各行各业中发挥着越来越重要的作用,为人们的生活和工作带来了极大的便利。
作者其他创作
大纲/内容
软件工程学概述 ( 1章节 )
软件危机
软件生命周期
软件过程
结构化分析 ( 2,3章节 )
可行性分析
需求分析
数据模型
实体-关系图 E-R
数据对象描述
功能模型
数据流图 DFD
处理规格说明
行为模型
状态转换图 STD
控制规格说明
数据字典
结构化设计 ( 5,6章节 )
总体设计 (概要设计)
设计原理
模块化
抽象
逐步求精
信息隐藏和局部化
模块独立
耦合
1. 数据耦合
2. 控制耦合
3. 特征耦合
4. 公共环境耦合
5. 内容耦合
内聚
1. 功能内聚
2. 顺序内聚
3. 通信内聚
4. 过程内聚
5. 时间内聚
6. 逻辑内聚
7. 偶然内聚
启发规则
1. 改进软件结构提高模块独立性
2. 模块规模应该适中
3. 深度、宽度、扇出、扇入都应适当
4. 模块的作用域应该在控制域之内
5. 力争降低模块接口的复杂程度
6. 设计单入口单出口的模块
7. 模块功能应该可以预测
面向数据流的设计方法
软件结构图
信息流类型
变换流
事务流
变换分析
事务分析
详细设计
人机界面设计
设计问题
设计过程
过程设计
结构程序设计
经典的结构程序设计
扩展的结构程序设计
修正的结构程序设计
过程设计工具
程序流程图
盒图 (N-S图)
PAD图
判定表
判定树
过程设计语言
面向数据结构的设计方法
Jackson 方法
程序复杂度的定量度量
McCabe 方法
结构化实现 ( 7章节 )
编码
测试
软件测试准则
测试步骤
模块测试 ( 单元测试 )
人工测试
计算机测试
驱动程序
存根程序 ( 桩模块 )
子系统测试
系统测试
恢复测试
安全性测试
强度测试
性能测试
验收测试 ( 确认测试 )
Alpha 测试
Beta 测试
平行运行
测试方法
白盒测试 ( 结构测试 )
逻辑覆盖
1. 语句覆盖
2. 判定覆盖
3. 条件覆盖
4. 判定/条件覆盖
5. 条件组合覆盖
6. 点覆盖
7. 边覆盖
8. 路径覆盖
控制结构测试
1. 基本路径测试
2. 循环测试
简单循环
嵌套循环
串接循环
黑盒测试 ( 功能测试 )
1. 等价类划分
分类
有效等价类
无效等价类
划分等价类 的启发式规则
根据等价类设计测试方案
分支主题
2. 边界值分析
3. 错误推测
调试 (纠错)
蛮干法
回溯法
原因排除法
对分查找法
归纳法
演绎法
软件可靠性
可靠性
可用性
维护 ( 8章节 )
面向对象方法学引论 ( 9章节 )
OO=对象+类+继承+传递消息实现通信
概念
对象
类
实例
方法
属性
封装
继承
多态性
提高程序可复用性 (接口设计的复用,不是代码实现复用)
派生类的功能可被基类指针引用,提高程序的可扩展性和可维护性
重载
函数重载
运算符重载
与传统方法学比较
传统方法 | 面向对象方法
---- | ----
系统是过程的集合 | 系统是交互对象的集合
过程与数据实体交互 | 对象与人或其他对象交互
过程接收输入并产生输出 | 对象发送与响应消息
面向对象建模
静态建模
用例图
用例之间的关系
行为者间的关系
1. 泛化关系 (一般-特殊的关系)
用例间的关系
1. 泛化关系 (一般-特殊的关系)
2. 扩展关系
3. 使用关系 (包含关系)
用例建模
1. 寻找行为者
2. 寻找用例
3. 建立用例图
4. 对关键的用例描述:为建立对象模型和动态模型打基础
类图
类图的基本符号
类名
属性
服务
类的版型
1. 边界类 boundary
2. 控制类 control
3. 实体类 entity
4. 接口类 Interface
类之间的关系
1. 关联
1. 普通关联
2. 导航关联
分支主题
3. 限定关联
4. 关联类
1.1 聚集
1.1 共享聚集 (聚合)
1.2 组合聚集
2. 泛化 (继承)
3. 依赖
4. 实现
对象图
包
包依赖
包泛化
动态建模
消息
1. 简单消息
2. 同步消息
3. 异步消息
4. 返回消息
顺序图 (事件跟踪图)
分支主题
协作图
分支主题
活动图
分支主题
问题:1. 那么活动图中的各个活动是由谁来做的呢? 一个个的对象。
问题:2. 怎么表达哪些活动由哪些对象来负责呢? 泳道
分支主题
状态图
物理建模
构件图
种类
部署构件
工作产品构件
执行构件
配置图 (部署图)
分支主题
UML 扩展机制
标签值
分支主题
约束
分支主题
分支主题
版类 (版型)
分支主题
UML 实例设计步骤
1. 用例图设计 (功能模型)
如果某一个用例描述需要细化,则需要设计 子用例图
2. 为用例创建顺序图 (动态建模)
3. 为用例创建协作图 (动态建模)
4. 创建类图 (对象模型)
5. 通过类图生成类核心代码
6. 可建立数据模型
面向对象分析 (10章节)
分析过程
1. 获取需求
2. 整理需求
3. 建立模型
功能模型
对象模型
动态模型
4. 书写需求规格说明书
5. 复审
建立功能模型
建立对象模型
步骤
1. 确定分析类
边界类
控制类
实体类
非正式分析法
1. 从需求陈述中的名词入手, 提取出可能的实体类
2. 筛选出正确的类
2. 确定类的关联
初步确定关联
筛选
进一步完善
3. 划分主题
4. 确定属性
5. 识别继承
6. 反复修改
建立动态模型
步骤
1. 编写典型交互行为脚本
正常情况脚本
异常情况脚本
错误情况脚本
2. 从脚本中提取事件及相关对象,用顺序图 (事件跟踪图) 表示
3. 确定对象状态及状态间转换关系,用状态图表示
分支主题
分支主题
面向对象设计 (11章节)
面向对象设计的准则
1. 模块化
2. 抽象
3. 信息隐藏
4. 弱耦合
交互耦合
继承耦合
5. 强内聚
服务内聚
类内聚
一般 - 特殊内聚
6. 可重用
启发规则
1. 设计结果应该清晰易懂
2. 一般 - 特殊结构的深度应适当
3. 设计简单的类
4. 使用简单的协议
5. 使用简单的服务
6. 把设计变动减至最小
软件重用
系统分解
面向对象设计模型:由 4 部分组成
子系统间的交互方式
客户 - 供应商关系
平等伙伴关系
设计问题域子系统
设计人机交互子系统
置用户于控制之下
减少用户的记忆负担
保持界面一致
设计任务管理子系统
设计数据管理子系统
面向对象实现 (12章节)
程序设计语言
程序设计风格
提高可重用性
内部重用
外部重用
提高可扩充性
提高健壮性
测试策略
单元测试
集成测试
基于线程的测试
基于使用的测试
确认测试
设计测试用例
测试类的方法
随机测试
划分测试
基于状态的划分
基于属性的划分
基于功能的划分
基于故障的测试
集成测试方法
多类测试
随机测试
划分测试
从动态模型导出测试用例
软件项目管理 (13章节)
估算软件规模
代码行技术
功能点技术
工作量估算
静态单变量模型
动态多变量模型 ( 软件方程式 )
COCOMO2 模型
进度计划
估算开发时间
Gantt 图
工程网络
关键路径
机动时间
人员组织
民主制程序员组
主程序员组
现代程序员组
控制
风险管理
风险类别
项目风险
技术风险
商业风险
风险识别
风险分析
风险驾驭
质量保证
配置管理
0 条评论
下一页