├── README.md ├── img ├── c1 │ ├── Rational统一过程.png │ ├── 喷泉模型.png │ ├── 增量模型.png │ ├── 客户机_服务器_三层.png │ ├── 客户机_服务器_二层.png │ ├── 带反馈环的瀑布模型.png │ ├── 微软过程.png │ ├── 快速原型模型.png │ ├── 浏览器_服务器.png │ ├── 瀑布模型.png │ ├── 螺旋模型.png │ ├── 递进式的微软过程.png │ ├── 集中主机.png │ └── 风险更大的增量模型.png ├── c2 │ ├── 仓库管理系统E-R图.png │ ├── 分层数据流图示意图.png │ ├── 分层法-编号设置.png │ ├── 处理的描述.png │ ├── 实体-关系图.png │ ├── 实体-关系图实例.png │ ├── 工资计算系统-功能级数据流图.png │ ├── 工资计算系统-细化功能级数据流图.png │ ├── 工资计算系统-细化功能级数据流图2.png │ ├── 工资计算系统-顶层数据流图.png │ ├── 建模.png │ ├── 数据元素的描述.png │ ├── 数据字典-定义符号.png │ ├── 数据字典定义符号1.png │ ├── 数据字典定义符号2.png │ ├── 数据存储的描述.png │ ├── 数据流图符号-圆角矩形.png │ ├── 数据流图符号-开口矩形.png │ ├── 数据流图符号-正方形.png │ ├── 数据流图符号-箭头.png │ ├── 数据流图附加符号.png │ ├── 数据流的描述.png │ ├── 状态.png │ ├── 状态图.png │ ├── 电话系统状态转换图.png │ ├── 简单的数据流图.png │ ├── 自动化边界划分方案一.png │ ├── 自动化边界划分方案二.png │ ├── 范例-主要功能进一步细化.png │ ├── 范例-数据流图的基本系统模型.png │ └── 范例-数据流图的系统模型细化.png ├── c3 │ ├── Jackson图描述数据结构.png │ ├── McCabe基本图形符号.png │ ├── N-S图.png │ ├── N-S图2.png │ ├── PAD图.png │ ├── PAD图逐步求精.png │ ├── 不可预测模块.png │ ├── 两种公共环境耦合.png │ ├── 事务分析实例.png │ ├── 事务分析实例2.png │ ├── 事务流.png │ ├── 事物分析映射方法.png │ ├── 作用域改善方案一.png │ ├── 作用域改善方案二.png │ ├── 信息隐蔽.png │ ├── 偶然内聚.png │ ├── 公共环境耦合.png │ ├── 具有边界的数据流图.png │ ├── 内容耦合.png │ ├── 判定树.png │ ├── 变换分析实例.png │ ├── 变换流.png │ ├── 复合条件下流图映射.png │ ├── 多情况选择型.png │ ├── 完成一级分解.png │ ├── 对初步软件结构精化.png │ ├── 当型循环型.png │ ├── 扇入.png │ ├── 扇入扇出改善.png │ ├── 扇出.png │ ├── 控制耦合.png │ ├── 改善作用域实例.png │ ├── 改善后的软件结构.png │ ├── 改善软件结构示意图.png │ ├── 改进的Jackson的图.png │ ├── 改进的Jackson的图2.png │ ├── 数字仪表板的第一级分解.png │ ├── 数字仪表板的第二级分解——变换结构.png │ ├── 数字仪表板的第二级分解——输入结构.png │ ├── 数字仪表板的第二级分解——输出结构.png │ ├── 数字仪表板系统数据流图.png │ ├── 数据耦合.png │ ├── 模块化复杂度.png │ ├── 模块化设计.png │ ├── 模块接口.png │ ├── 流程图映射成流图.png │ ├── 环形复杂度实例.png │ ├── 直到型循环.png │ ├── 程序设计流程图标准化图符.png │ ├── 第二级分解.png │ ├── 结构化设计与分析关系图.png │ ├── 耦合示意图.png │ ├── 行李托运算法的判定表.png │ ├── 计算N阶乘的PAD图.png │ ├── 计算N阶乘的程序流程图.png │ ├── 计算n阶乘的N-S图.png │ ├── 计算环形复杂度.png │ ├── 调用关系.png │ ├── 软件开发工作量-模块数.png │ ├── 软件结构参数示意图.png │ ├── 过分受限模块.png │ ├── 过程内聚.png │ ├── 过程设计示意图.png │ ├── 选择型.png │ ├── 通信内聚.png │ ├── 逻辑内聚.png │ ├── 面向数据流设计过程.png │ ├── 顺序型.png │ └── 高扇出的模块结构举例.png ├── c4 │ ├── 估算平均无故障时间.png │ ├── 分别测试法.png │ ├── 判定-条件覆盖.png │ ├── 判定覆盖.png │ ├── 单元测试.png │ ├── 基本假定.png │ ├── 基本路径测试实例.png │ ├── 循环测试.png │ ├── 条件组合覆盖.png │ ├── 条件覆盖.png │ ├── 植入错误法.png │ ├── 汇编指令.png │ ├── 测试步骤.png │ ├── 演绎法排错.png │ ├── 独立路径.png │ ├── 环形复杂度的计算.png │ ├── 确定用例案例1.png │ ├── 确定用例案例2.png │ ├── 确定用例案例3.png │ ├── 程序设计语言分类.png │ ├── 符号.png │ ├── 等价类表.png │ ├── 等价类规定范围.png │ ├── 系统测试.png │ ├── 自底向上集成.png │ ├── 自顶向下集成.png │ ├── 计算机测试.png │ ├── 语句覆盖.png │ ├── 语句覆盖2.png │ ├── 调试.png │ ├── 调试2.png │ ├── 调试步骤.png │ ├── 软件可靠性.png │ ├── 软件可靠性2.png │ ├── 集成测试.png │ └── 非渐增式集成.png ├── c5 │ ├── UML用例图案例.png │ ├── UML的图.png │ ├── UML的构成.png │ ├── UML视图.png │ ├── UseCase.png │ ├── actor.png │ ├── 一般关系与特殊关系.png │ ├── 与传统方法学比较.png │ ├── 与传统方法学比较2.png │ ├── 与传统方法学比较3.png │ ├── 主用例图.png │ ├── 依赖.png │ ├── 修改账户顺序图.png │ ├── 关联类.png │ ├── 删除账户顺序图.png │ ├── 判定.png │ ├── 包含关系.png │ ├── 包图.png │ ├── 协作图.png │ ├── 历史状态.png │ ├── 历史状态2.png │ ├── 同步消息.png │ ├── 子用例图.png │ ├── 实体类.png │ ├── 实例.png │ ├── 实现.png │ ├── 对象.png │ ├── 对象图.png │ ├── 导航关系.png │ ├── 建立数据模型.png │ ├── 异步消息.png │ ├── 扩展关系.png │ ├── 接口类.png │ ├── 控制类.png │ ├── 数据模型转换为物理数据库.png │ ├── 数量解释.png │ ├── 普通关系.png │ ├── 机票预定系统用例.png │ ├── 机票预订系统用例图.png │ ├── 构件图.png │ ├── 标签值.png │ ├── 泛化关系.png │ ├── 泛化关系实例.png │ ├── 泳道.png │ ├── 活动.png │ ├── 活动图.png │ ├── 版型.png │ ├── 状态.png │ ├── 状态转换.png │ ├── 班级管理类图.png │ ├── 用例图案例1.png │ ├── 用户观点非系统观点.png │ ├── 用户观点非系统观点2.png │ ├── 简单消息.png │ ├── 类图.png │ ├── 类操作的语法.png │ ├── 约束.png │ ├── 约束2.png │ ├── 组合.png │ ├── 组合状态.png │ ├── 继承.png │ ├── 聚合.png │ ├── 课程管理子用例图.png │ ├── 课程管理类图.png │ ├── 账户管理协作图.png │ ├── 账户管理子用例图.png │ ├── 账户管理类图.png │ ├── 账户管理顺序图.png │ ├── 配置图.png │ ├── 限定关联.png │ └── 顺序图.png ├── c6 │ ├── 确定边界类.png │ ├── 识别实体类.png │ └── 识别控制类.png └── c7 │ ├── 图片1.png │ ├── 客户—供应商关系.png │ ├── 平等伙伴关系.png │ ├── 测试策略.emf │ ├── 系统分解.png │ ├── 范式.png │ ├── 设计问题域子系统.png │ └── 面向对象设计.png ├── notes_of_books └── 第一章:软件工程学概述.md ├── notes_of_videos ├── 第一章:软件工程简介.md ├── 第七章:面向对象设计.md ├── 第三章:结构化设计.md ├── 第二章:结构化分析概述.md ├── 第五章:面向对象方法学.md ├── 第八章:面向对象程序设计风格.md ├── 第六章:面向对象分析.md └── 第四章:结构化系统实现.md └── ppt ├── 1.1.ppt ├── 1.2.ppt ├── 1.3.ppt ├── 1.4.ppt ├── 2.1.ppt ├── 2.2.ppt ├── 2.3.ppt ├── 2.4.ppt ├── 2.5.ppt ├── 3.1.ppt ├── 3.2.ppt ├── 3.3.ppt ├── 3.4.ppt ├── 3.5.ppt ├── 3.6.ppt ├── 3.7.ppt ├── 4.1.ppt ├── 4.2.ppt ├── 4.3.ppt ├── 4.4.ppt ├── 4.5.ppt ├── 4.6.ppt ├── 4.7.ppt ├── 4.8.ppt ├── 5.1.ppt ├── 5.2.ppt ├── 5.3.ppt ├── 5.4.ppt ├── 5.5.ppt ├── 5.6.ppt ├── 5.7.ppt ├── 5.8.ppt ├── 5.9.ppt ├── 6.1.ppt ├── 6.2.ppt ├── 6.3.ppt ├── 6.4.ppt ├── 7.1.ppt ├── 7.2.ppt ├── 7.3.ppt ├── 7.4.ppt ├── 7.5.ppt ├── 7.6.ppt ├── 8.1.ppt ├── 8.2.ppt ├── 9.1.ppt ├── 9.2.ppt ├── 9.3.ppt ├── 9.4.ppt ├── 9.5.ppt ├── 9.6.ppt └── 9.7.ppt /README.md: -------------------------------------------------------------------------------- 1 | # The-Study-of-Software-Engineering 2 | 3 | - 参考书籍:《软件工程导论》(第六版) 张海藩编著 4 | - 学习视频:大连工业大学 唐晓君等老师出品的课程 5 | - (视频链接:https://www.bilibili.com/video/av25329421) 6 | 7 | -------------------------------------------------------------------------------- /img/c1/Rational统一过程.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c1/Rational统一过程.png -------------------------------------------------------------------------------- /img/c1/喷泉模型.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c1/喷泉模型.png -------------------------------------------------------------------------------- /img/c1/增量模型.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c1/增量模型.png -------------------------------------------------------------------------------- /img/c1/客户机_服务器_三层.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c1/客户机_服务器_三层.png -------------------------------------------------------------------------------- /img/c1/客户机_服务器_二层.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c1/客户机_服务器_二层.png -------------------------------------------------------------------------------- /img/c1/带反馈环的瀑布模型.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c1/带反馈环的瀑布模型.png -------------------------------------------------------------------------------- /img/c1/微软过程.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c1/微软过程.png -------------------------------------------------------------------------------- /img/c1/快速原型模型.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c1/快速原型模型.png -------------------------------------------------------------------------------- /img/c1/浏览器_服务器.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c1/浏览器_服务器.png -------------------------------------------------------------------------------- /img/c1/瀑布模型.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c1/瀑布模型.png -------------------------------------------------------------------------------- /img/c1/螺旋模型.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c1/螺旋模型.png -------------------------------------------------------------------------------- /img/c1/递进式的微软过程.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c1/递进式的微软过程.png -------------------------------------------------------------------------------- /img/c1/集中主机.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c1/集中主机.png -------------------------------------------------------------------------------- /img/c1/风险更大的增量模型.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c1/风险更大的增量模型.png -------------------------------------------------------------------------------- /img/c2/仓库管理系统E-R图.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c2/仓库管理系统E-R图.png -------------------------------------------------------------------------------- /img/c2/分层数据流图示意图.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c2/分层数据流图示意图.png -------------------------------------------------------------------------------- /img/c2/分层法-编号设置.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c2/分层法-编号设置.png -------------------------------------------------------------------------------- /img/c2/处理的描述.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c2/处理的描述.png -------------------------------------------------------------------------------- /img/c2/实体-关系图.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c2/实体-关系图.png -------------------------------------------------------------------------------- /img/c2/实体-关系图实例.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c2/实体-关系图实例.png -------------------------------------------------------------------------------- /img/c2/工资计算系统-功能级数据流图.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c2/工资计算系统-功能级数据流图.png -------------------------------------------------------------------------------- /img/c2/工资计算系统-细化功能级数据流图.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c2/工资计算系统-细化功能级数据流图.png -------------------------------------------------------------------------------- /img/c2/工资计算系统-细化功能级数据流图2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c2/工资计算系统-细化功能级数据流图2.png -------------------------------------------------------------------------------- /img/c2/工资计算系统-顶层数据流图.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c2/工资计算系统-顶层数据流图.png -------------------------------------------------------------------------------- /img/c2/建模.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c2/建模.png -------------------------------------------------------------------------------- /img/c2/数据元素的描述.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c2/数据元素的描述.png -------------------------------------------------------------------------------- /img/c2/数据字典-定义符号.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c2/数据字典-定义符号.png -------------------------------------------------------------------------------- /img/c2/数据字典定义符号1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c2/数据字典定义符号1.png -------------------------------------------------------------------------------- /img/c2/数据字典定义符号2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c2/数据字典定义符号2.png -------------------------------------------------------------------------------- /img/c2/数据存储的描述.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c2/数据存储的描述.png -------------------------------------------------------------------------------- /img/c2/数据流图符号-圆角矩形.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c2/数据流图符号-圆角矩形.png -------------------------------------------------------------------------------- /img/c2/数据流图符号-开口矩形.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c2/数据流图符号-开口矩形.png -------------------------------------------------------------------------------- /img/c2/数据流图符号-正方形.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c2/数据流图符号-正方形.png -------------------------------------------------------------------------------- /img/c2/数据流图符号-箭头.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c2/数据流图符号-箭头.png -------------------------------------------------------------------------------- /img/c2/数据流图附加符号.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c2/数据流图附加符号.png -------------------------------------------------------------------------------- /img/c2/数据流的描述.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c2/数据流的描述.png -------------------------------------------------------------------------------- /img/c2/状态.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c2/状态.png -------------------------------------------------------------------------------- /img/c2/状态图.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c2/状态图.png -------------------------------------------------------------------------------- /img/c2/电话系统状态转换图.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c2/电话系统状态转换图.png -------------------------------------------------------------------------------- /img/c2/简单的数据流图.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c2/简单的数据流图.png -------------------------------------------------------------------------------- /img/c2/自动化边界划分方案一.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c2/自动化边界划分方案一.png -------------------------------------------------------------------------------- /img/c2/自动化边界划分方案二.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c2/自动化边界划分方案二.png -------------------------------------------------------------------------------- /img/c2/范例-主要功能进一步细化.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c2/范例-主要功能进一步细化.png -------------------------------------------------------------------------------- /img/c2/范例-数据流图的基本系统模型.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c2/范例-数据流图的基本系统模型.png -------------------------------------------------------------------------------- /img/c2/范例-数据流图的系统模型细化.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c2/范例-数据流图的系统模型细化.png -------------------------------------------------------------------------------- /img/c3/Jackson图描述数据结构.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c3/Jackson图描述数据结构.png -------------------------------------------------------------------------------- /img/c3/McCabe基本图形符号.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c3/McCabe基本图形符号.png -------------------------------------------------------------------------------- /img/c3/N-S图.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c3/N-S图.png -------------------------------------------------------------------------------- /img/c3/N-S图2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c3/N-S图2.png -------------------------------------------------------------------------------- /img/c3/PAD图.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c3/PAD图.png -------------------------------------------------------------------------------- /img/c3/PAD图逐步求精.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c3/PAD图逐步求精.png -------------------------------------------------------------------------------- /img/c3/不可预测模块.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c3/不可预测模块.png -------------------------------------------------------------------------------- /img/c3/两种公共环境耦合.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c3/两种公共环境耦合.png -------------------------------------------------------------------------------- /img/c3/事务分析实例.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c3/事务分析实例.png -------------------------------------------------------------------------------- /img/c3/事务分析实例2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c3/事务分析实例2.png -------------------------------------------------------------------------------- /img/c3/事务流.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c3/事务流.png -------------------------------------------------------------------------------- /img/c3/事物分析映射方法.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c3/事物分析映射方法.png -------------------------------------------------------------------------------- /img/c3/作用域改善方案一.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c3/作用域改善方案一.png -------------------------------------------------------------------------------- /img/c3/作用域改善方案二.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c3/作用域改善方案二.png -------------------------------------------------------------------------------- /img/c3/信息隐蔽.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c3/信息隐蔽.png -------------------------------------------------------------------------------- /img/c3/偶然内聚.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c3/偶然内聚.png -------------------------------------------------------------------------------- /img/c3/公共环境耦合.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c3/公共环境耦合.png -------------------------------------------------------------------------------- /img/c3/具有边界的数据流图.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c3/具有边界的数据流图.png -------------------------------------------------------------------------------- /img/c3/内容耦合.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c3/内容耦合.png -------------------------------------------------------------------------------- /img/c3/判定树.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c3/判定树.png -------------------------------------------------------------------------------- /img/c3/变换分析实例.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c3/变换分析实例.png -------------------------------------------------------------------------------- /img/c3/变换流.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c3/变换流.png -------------------------------------------------------------------------------- /img/c3/复合条件下流图映射.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c3/复合条件下流图映射.png -------------------------------------------------------------------------------- /img/c3/多情况选择型.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c3/多情况选择型.png -------------------------------------------------------------------------------- /img/c3/完成一级分解.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c3/完成一级分解.png -------------------------------------------------------------------------------- /img/c3/对初步软件结构精化.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c3/对初步软件结构精化.png -------------------------------------------------------------------------------- /img/c3/当型循环型.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c3/当型循环型.png -------------------------------------------------------------------------------- /img/c3/扇入.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c3/扇入.png -------------------------------------------------------------------------------- /img/c3/扇入扇出改善.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c3/扇入扇出改善.png -------------------------------------------------------------------------------- /img/c3/扇出.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c3/扇出.png -------------------------------------------------------------------------------- /img/c3/控制耦合.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c3/控制耦合.png -------------------------------------------------------------------------------- /img/c3/改善作用域实例.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c3/改善作用域实例.png -------------------------------------------------------------------------------- /img/c3/改善后的软件结构.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c3/改善后的软件结构.png -------------------------------------------------------------------------------- /img/c3/改善软件结构示意图.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c3/改善软件结构示意图.png -------------------------------------------------------------------------------- /img/c3/改进的Jackson的图.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c3/改进的Jackson的图.png -------------------------------------------------------------------------------- /img/c3/改进的Jackson的图2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c3/改进的Jackson的图2.png -------------------------------------------------------------------------------- /img/c3/数字仪表板的第一级分解.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c3/数字仪表板的第一级分解.png -------------------------------------------------------------------------------- /img/c3/数字仪表板的第二级分解——变换结构.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c3/数字仪表板的第二级分解——变换结构.png -------------------------------------------------------------------------------- /img/c3/数字仪表板的第二级分解——输入结构.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c3/数字仪表板的第二级分解——输入结构.png -------------------------------------------------------------------------------- /img/c3/数字仪表板的第二级分解——输出结构.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c3/数字仪表板的第二级分解——输出结构.png -------------------------------------------------------------------------------- /img/c3/数字仪表板系统数据流图.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c3/数字仪表板系统数据流图.png -------------------------------------------------------------------------------- /img/c3/数据耦合.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c3/数据耦合.png -------------------------------------------------------------------------------- /img/c3/模块化复杂度.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c3/模块化复杂度.png -------------------------------------------------------------------------------- /img/c3/模块化设计.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c3/模块化设计.png -------------------------------------------------------------------------------- /img/c3/模块接口.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c3/模块接口.png -------------------------------------------------------------------------------- /img/c3/流程图映射成流图.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c3/流程图映射成流图.png -------------------------------------------------------------------------------- /img/c3/环形复杂度实例.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c3/环形复杂度实例.png -------------------------------------------------------------------------------- /img/c3/直到型循环.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c3/直到型循环.png -------------------------------------------------------------------------------- /img/c3/程序设计流程图标准化图符.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c3/程序设计流程图标准化图符.png -------------------------------------------------------------------------------- /img/c3/第二级分解.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c3/第二级分解.png -------------------------------------------------------------------------------- /img/c3/结构化设计与分析关系图.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c3/结构化设计与分析关系图.png -------------------------------------------------------------------------------- /img/c3/耦合示意图.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c3/耦合示意图.png -------------------------------------------------------------------------------- /img/c3/行李托运算法的判定表.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c3/行李托运算法的判定表.png -------------------------------------------------------------------------------- /img/c3/计算N阶乘的PAD图.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c3/计算N阶乘的PAD图.png -------------------------------------------------------------------------------- /img/c3/计算N阶乘的程序流程图.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c3/计算N阶乘的程序流程图.png -------------------------------------------------------------------------------- /img/c3/计算n阶乘的N-S图.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c3/计算n阶乘的N-S图.png -------------------------------------------------------------------------------- /img/c3/计算环形复杂度.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c3/计算环形复杂度.png -------------------------------------------------------------------------------- /img/c3/调用关系.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c3/调用关系.png -------------------------------------------------------------------------------- /img/c3/软件开发工作量-模块数.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c3/软件开发工作量-模块数.png -------------------------------------------------------------------------------- /img/c3/软件结构参数示意图.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c3/软件结构参数示意图.png -------------------------------------------------------------------------------- /img/c3/过分受限模块.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c3/过分受限模块.png -------------------------------------------------------------------------------- /img/c3/过程内聚.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c3/过程内聚.png -------------------------------------------------------------------------------- /img/c3/过程设计示意图.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c3/过程设计示意图.png -------------------------------------------------------------------------------- /img/c3/选择型.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c3/选择型.png -------------------------------------------------------------------------------- /img/c3/通信内聚.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c3/通信内聚.png -------------------------------------------------------------------------------- /img/c3/逻辑内聚.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c3/逻辑内聚.png -------------------------------------------------------------------------------- /img/c3/面向数据流设计过程.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c3/面向数据流设计过程.png -------------------------------------------------------------------------------- /img/c3/顺序型.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c3/顺序型.png -------------------------------------------------------------------------------- /img/c3/高扇出的模块结构举例.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c3/高扇出的模块结构举例.png -------------------------------------------------------------------------------- /img/c4/估算平均无故障时间.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c4/估算平均无故障时间.png -------------------------------------------------------------------------------- /img/c4/分别测试法.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c4/分别测试法.png -------------------------------------------------------------------------------- /img/c4/判定-条件覆盖.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c4/判定-条件覆盖.png -------------------------------------------------------------------------------- /img/c4/判定覆盖.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c4/判定覆盖.png -------------------------------------------------------------------------------- /img/c4/单元测试.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c4/单元测试.png -------------------------------------------------------------------------------- /img/c4/基本假定.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c4/基本假定.png -------------------------------------------------------------------------------- /img/c4/基本路径测试实例.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c4/基本路径测试实例.png -------------------------------------------------------------------------------- /img/c4/循环测试.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c4/循环测试.png -------------------------------------------------------------------------------- /img/c4/条件组合覆盖.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c4/条件组合覆盖.png -------------------------------------------------------------------------------- /img/c4/条件覆盖.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c4/条件覆盖.png -------------------------------------------------------------------------------- /img/c4/植入错误法.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c4/植入错误法.png -------------------------------------------------------------------------------- /img/c4/汇编指令.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c4/汇编指令.png -------------------------------------------------------------------------------- /img/c4/测试步骤.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c4/测试步骤.png -------------------------------------------------------------------------------- /img/c4/演绎法排错.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c4/演绎法排错.png -------------------------------------------------------------------------------- /img/c4/独立路径.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c4/独立路径.png -------------------------------------------------------------------------------- /img/c4/环形复杂度的计算.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c4/环形复杂度的计算.png -------------------------------------------------------------------------------- /img/c4/确定用例案例1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c4/确定用例案例1.png -------------------------------------------------------------------------------- /img/c4/确定用例案例2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c4/确定用例案例2.png -------------------------------------------------------------------------------- /img/c4/确定用例案例3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c4/确定用例案例3.png -------------------------------------------------------------------------------- /img/c4/程序设计语言分类.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c4/程序设计语言分类.png -------------------------------------------------------------------------------- /img/c4/符号.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c4/符号.png -------------------------------------------------------------------------------- /img/c4/等价类表.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c4/等价类表.png -------------------------------------------------------------------------------- /img/c4/等价类规定范围.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c4/等价类规定范围.png -------------------------------------------------------------------------------- /img/c4/系统测试.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c4/系统测试.png -------------------------------------------------------------------------------- /img/c4/自底向上集成.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c4/自底向上集成.png -------------------------------------------------------------------------------- /img/c4/自顶向下集成.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c4/自顶向下集成.png -------------------------------------------------------------------------------- /img/c4/计算机测试.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c4/计算机测试.png -------------------------------------------------------------------------------- /img/c4/语句覆盖.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c4/语句覆盖.png -------------------------------------------------------------------------------- /img/c4/语句覆盖2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c4/语句覆盖2.png -------------------------------------------------------------------------------- /img/c4/调试.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c4/调试.png -------------------------------------------------------------------------------- /img/c4/调试2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c4/调试2.png -------------------------------------------------------------------------------- /img/c4/调试步骤.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c4/调试步骤.png -------------------------------------------------------------------------------- /img/c4/软件可靠性.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c4/软件可靠性.png -------------------------------------------------------------------------------- /img/c4/软件可靠性2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c4/软件可靠性2.png -------------------------------------------------------------------------------- /img/c4/集成测试.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c4/集成测试.png -------------------------------------------------------------------------------- /img/c4/非渐增式集成.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c4/非渐增式集成.png -------------------------------------------------------------------------------- /img/c5/UML用例图案例.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c5/UML用例图案例.png -------------------------------------------------------------------------------- /img/c5/UML的图.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c5/UML的图.png -------------------------------------------------------------------------------- /img/c5/UML的构成.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c5/UML的构成.png -------------------------------------------------------------------------------- /img/c5/UML视图.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c5/UML视图.png -------------------------------------------------------------------------------- /img/c5/UseCase.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c5/UseCase.png -------------------------------------------------------------------------------- /img/c5/actor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c5/actor.png -------------------------------------------------------------------------------- /img/c5/一般关系与特殊关系.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c5/一般关系与特殊关系.png -------------------------------------------------------------------------------- /img/c5/与传统方法学比较.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c5/与传统方法学比较.png -------------------------------------------------------------------------------- /img/c5/与传统方法学比较2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c5/与传统方法学比较2.png -------------------------------------------------------------------------------- /img/c5/与传统方法学比较3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c5/与传统方法学比较3.png -------------------------------------------------------------------------------- /img/c5/主用例图.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c5/主用例图.png -------------------------------------------------------------------------------- /img/c5/依赖.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c5/依赖.png -------------------------------------------------------------------------------- /img/c5/修改账户顺序图.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c5/修改账户顺序图.png -------------------------------------------------------------------------------- /img/c5/关联类.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c5/关联类.png -------------------------------------------------------------------------------- /img/c5/删除账户顺序图.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c5/删除账户顺序图.png -------------------------------------------------------------------------------- /img/c5/判定.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c5/判定.png -------------------------------------------------------------------------------- /img/c5/包含关系.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c5/包含关系.png -------------------------------------------------------------------------------- /img/c5/包图.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c5/包图.png -------------------------------------------------------------------------------- /img/c5/协作图.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c5/协作图.png -------------------------------------------------------------------------------- /img/c5/历史状态.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c5/历史状态.png -------------------------------------------------------------------------------- /img/c5/历史状态2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c5/历史状态2.png -------------------------------------------------------------------------------- /img/c5/同步消息.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c5/同步消息.png -------------------------------------------------------------------------------- /img/c5/子用例图.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c5/子用例图.png -------------------------------------------------------------------------------- /img/c5/实体类.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c5/实体类.png -------------------------------------------------------------------------------- /img/c5/实例.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c5/实例.png -------------------------------------------------------------------------------- /img/c5/实现.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c5/实现.png -------------------------------------------------------------------------------- /img/c5/对象.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c5/对象.png -------------------------------------------------------------------------------- /img/c5/对象图.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c5/对象图.png -------------------------------------------------------------------------------- /img/c5/导航关系.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c5/导航关系.png -------------------------------------------------------------------------------- /img/c5/建立数据模型.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c5/建立数据模型.png -------------------------------------------------------------------------------- /img/c5/异步消息.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c5/异步消息.png -------------------------------------------------------------------------------- /img/c5/扩展关系.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c5/扩展关系.png -------------------------------------------------------------------------------- /img/c5/接口类.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c5/接口类.png -------------------------------------------------------------------------------- /img/c5/控制类.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c5/控制类.png -------------------------------------------------------------------------------- /img/c5/数据模型转换为物理数据库.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c5/数据模型转换为物理数据库.png -------------------------------------------------------------------------------- /img/c5/数量解释.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c5/数量解释.png -------------------------------------------------------------------------------- /img/c5/普通关系.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c5/普通关系.png -------------------------------------------------------------------------------- /img/c5/机票预定系统用例.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c5/机票预定系统用例.png -------------------------------------------------------------------------------- /img/c5/机票预订系统用例图.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c5/机票预订系统用例图.png -------------------------------------------------------------------------------- /img/c5/构件图.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c5/构件图.png -------------------------------------------------------------------------------- /img/c5/标签值.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c5/标签值.png -------------------------------------------------------------------------------- /img/c5/泛化关系.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c5/泛化关系.png -------------------------------------------------------------------------------- /img/c5/泛化关系实例.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c5/泛化关系实例.png -------------------------------------------------------------------------------- /img/c5/泳道.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c5/泳道.png -------------------------------------------------------------------------------- /img/c5/活动.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c5/活动.png -------------------------------------------------------------------------------- /img/c5/活动图.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c5/活动图.png -------------------------------------------------------------------------------- /img/c5/版型.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c5/版型.png -------------------------------------------------------------------------------- /img/c5/状态.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c5/状态.png -------------------------------------------------------------------------------- /img/c5/状态转换.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c5/状态转换.png -------------------------------------------------------------------------------- /img/c5/班级管理类图.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c5/班级管理类图.png -------------------------------------------------------------------------------- /img/c5/用例图案例1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c5/用例图案例1.png -------------------------------------------------------------------------------- /img/c5/用户观点非系统观点.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c5/用户观点非系统观点.png -------------------------------------------------------------------------------- /img/c5/用户观点非系统观点2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c5/用户观点非系统观点2.png -------------------------------------------------------------------------------- /img/c5/简单消息.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c5/简单消息.png -------------------------------------------------------------------------------- /img/c5/类图.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c5/类图.png -------------------------------------------------------------------------------- /img/c5/类操作的语法.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c5/类操作的语法.png -------------------------------------------------------------------------------- /img/c5/约束.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c5/约束.png -------------------------------------------------------------------------------- /img/c5/约束2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c5/约束2.png -------------------------------------------------------------------------------- /img/c5/组合.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c5/组合.png -------------------------------------------------------------------------------- /img/c5/组合状态.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c5/组合状态.png -------------------------------------------------------------------------------- /img/c5/继承.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c5/继承.png -------------------------------------------------------------------------------- /img/c5/聚合.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c5/聚合.png -------------------------------------------------------------------------------- /img/c5/课程管理子用例图.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c5/课程管理子用例图.png -------------------------------------------------------------------------------- /img/c5/课程管理类图.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c5/课程管理类图.png -------------------------------------------------------------------------------- /img/c5/账户管理协作图.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c5/账户管理协作图.png -------------------------------------------------------------------------------- /img/c5/账户管理子用例图.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c5/账户管理子用例图.png -------------------------------------------------------------------------------- /img/c5/账户管理类图.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c5/账户管理类图.png -------------------------------------------------------------------------------- /img/c5/账户管理顺序图.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c5/账户管理顺序图.png -------------------------------------------------------------------------------- /img/c5/配置图.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c5/配置图.png -------------------------------------------------------------------------------- /img/c5/限定关联.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c5/限定关联.png -------------------------------------------------------------------------------- /img/c5/顺序图.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c5/顺序图.png -------------------------------------------------------------------------------- /img/c6/确定边界类.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c6/确定边界类.png -------------------------------------------------------------------------------- /img/c6/识别实体类.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c6/识别实体类.png -------------------------------------------------------------------------------- /img/c6/识别控制类.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c6/识别控制类.png -------------------------------------------------------------------------------- /img/c7/图片1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c7/图片1.png -------------------------------------------------------------------------------- /img/c7/客户—供应商关系.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c7/客户—供应商关系.png -------------------------------------------------------------------------------- /img/c7/平等伙伴关系.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c7/平等伙伴关系.png -------------------------------------------------------------------------------- /img/c7/测试策略.emf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c7/测试策略.emf -------------------------------------------------------------------------------- /img/c7/系统分解.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c7/系统分解.png -------------------------------------------------------------------------------- /img/c7/范式.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c7/范式.png -------------------------------------------------------------------------------- /img/c7/设计问题域子系统.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c7/设计问题域子系统.png -------------------------------------------------------------------------------- /img/c7/面向对象设计.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/img/c7/面向对象设计.png -------------------------------------------------------------------------------- /notes_of_books/第一章:软件工程学概述.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lyongo/The-Study-of-Software-Engineering/9156e47b5eb8364ad4e37d3d4824abeb6630e95c/notes_of_books/第一章:软件工程学概述.md -------------------------------------------------------------------------------- /notes_of_videos/第一章:软件工程简介.md: -------------------------------------------------------------------------------- 1 | # 第一章 软件工程学概述 2 | 3 | ## 1、软件 4 | 5 | ### 1.1 软件定义 6 | 7 | - 1983年IEEE的软件定义 8 | 9 | **计算机程序、文档**、运行程序必须的**数据、方法、规则**。 10 | 11 | **方法**和**规则**在**文档**中说明,在**程序**中实现。 12 | 13 | - 简化软件定义 14 | 15 | **程序 + 文档 + 数据** 16 | 17 | ## 1.2 软件分类 18 | 19 | - 基于软件功能的划分 20 | 1. 系统软件 21 | 2. 支持软件 22 | 3. 应用软件 23 | 1. 商业数据处理软件 24 | 2. 工程与科学计算软件 25 | 3. 智能产品嵌入软件 26 | 4. 人工智能软件 27 | 5. 个人计算机软件 28 | - 基于软件规模的划分 29 | 30 | | 类别 | 参加人员数 | 开发周期 | 产品规模(LOC) | 31 | | ------ | :--------: | :------: | :-------------: | 32 | | 微型 | 1 | 1-4周 | 0.5K | 33 | | 小型 | 1 | 1-6月 | 1K-2K | 34 | | 中型 | 2-5 | 1-2年 | 5K-50K | 35 | | 大型 | 5-20 | 2-3年 | 50K-100K | 36 | | 甚大型 | 100-1000 | 4-5年 | 1M | 37 | | 极大型 | 2000-5000 | 5-10年 | 1M-10M | 38 | 39 | **** 40 | 41 | 42 | 43 | ## 2、软件工程 44 | 45 | ### 2.1 软件的发展 46 | 47 | | 程序设计 | 程序系统 | 软件工程 | 第四阶段 | 48 | | :-------------------: | :-------------------: | :-------------------: | :---------------: | 49 | | **50年代中-60年代中** | **60年代中-70年代中** | **70年代中-80年代中** | **80年代中-现在** | 50 | 51 | #### 2.1.1 程序设计阶段 52 | 53 | - 软件生产个体化 54 | 55 | 规模小,编写者和使用者同一个人 56 | 57 | - 软件是设计者头脑中隐含过程 58 | 59 | 除程序清单,无文档材料保存 60 | 61 | #### 2.1.2 程序系统阶段 62 | 63 | - 产品软件 64 | 65 | 由专门软件开发组织开发 66 | 67 | - **软件作坊** 68 | 69 | 软件开发组织,沿用早期个体化软件开发方法 70 | 71 | - 软件危机 72 | 73 | 软件维护工作耗费大量资源 74 | 75 | - 软件工程 76 | 77 | 1968年,北大西洋公约组织计算机科学家讨论软件危机,提出**软件工程** 78 | 79 | #### 2.1.3 软件工程阶段 80 | 81 | - 软件危机得到缓解 82 | 83 | 打破软件生产个体化特征 84 | 85 | 工程化的设计原则、方法和标准 86 | 87 | - 新的挑战 88 | 89 | 微处理器和个人计算机 90 | 91 | 分布式处理系统 92 | 93 | 局域网、广域网 94 | 95 | 宽带数字通讯 96 | 97 | #### 2.1.4 第四阶段 98 | 99 | - 软件架构发生变化 100 | 101 | 集中主机环境 102 | 103 | ![](../img/c1/集中主机.png) 104 | 105 | 客户机/服务器(二层) 106 | 107 | ![](../img/c1/客户机_服务器_二层.png) 108 | 109 | 客户机/服务器(三层) 110 | 111 | ![](../img/c1/客户机_服务器_三层.png) 112 | 113 | 浏览器/服务器 114 | 115 | ![](../img/c1/浏览器_服务器.png) 116 | 117 | - 新技术 118 | 119 | 专家系统、人工智能、神经网络、并行计算、网络技术、高信度计算、云计算 120 | 121 | ### 2.2 软件危机 122 | 123 | - 软件危机定义 124 | 125 | **在计算机软件开发和维护过程中遇到的一系列严重问题** 126 | 127 | - 主要表现 128 | 129 | 1. 开发成本和进度**估计不准** 130 | 131 | 延迟交付、取消项目 132 | 133 | 2. **用户**对已交付软件**不满意** 134 | 135 | 开发人员对用户信息交流不充分,产品不符合用户需求 136 | 137 | 3. 软件产品**质量靠不住** 138 | 139 | 软件产品保证技术(审查、复审、测试)未坚持不懈应用软件开发全过程 140 | 141 | 4. 软件**可维护性差** 142 | 143 | 开发时未考虑,很多错误难以改正 144 | 145 | 5. 软件**没有适当文档资料** 146 | 147 | 文档资料应在软件开发过程中产生,保证最新 148 | 149 | ### 2.3 软件工程定义 150 | 151 | - 1993年IEEE的定义 152 | 153 | 把**系统化、规范化、可度量**的途径应用于**软件开发、运行和维护**过程中;研究其实现途径。 154 | 155 | ### 2.4 软件工程内容 156 | 157 | #### 2.4.1 软件工程技术 158 | 159 | 软件开发方法学 160 | 161 | 软件开发过程 162 | 163 | 软件工具和软件工程环境 164 | 165 | #### 2.4.2 软件工程管理 166 | 167 | 软件管理学 168 | 169 | 软件经济学 170 | 171 | 软件心理学 172 | 173 | **** 174 | 175 | 176 | 177 | ## 3、软件生产周期 178 | 179 | ### 3.1 软件生产周期定义 180 | 181 | 定义:软件从**产生、发展到成熟、直到衰亡为止**。 182 | 183 | 组成:**软件定义**、**软件开发**、**软件维护**。 184 | 185 | ### 3.2 软件生存周期阶段划分 186 | 187 | 国标《计算机软件开发规范》,分8阶段: 188 | 189 | - 可行性研究与计划 190 | - 需求分析 191 | - 总体设计 192 | - 详细设计 193 | - 实现(编码和单元测试) 194 | - 集成测试 195 | - 确认测试 196 | - 使用和维护 197 | 198 | ### 3.3 各阶段完成的基本任务 199 | 200 | #### 3.3.1 可行性研究 201 | 202 | 关键任务: 203 | 204 | ​ 解决问题是什么?有行得通解决方法?粗略计划 205 | 206 | 问题定义报告: 207 | 208 | ​ 问题性质、工程目标、工程规模。 209 | 210 | 可行性研究报告: 211 | 212 | ​ 经济、技术、社会(操作)可行性。 213 | 214 | 项目开发计划: 215 | 216 | ​ 粗略 217 | 218 | #### 3.3.2 需求分析 219 | 220 | 关键任务: 221 | 222 | ​ 目标系统必须作什么? 223 | 224 | ​ 可行性研究的需求分析是粗略、不准确; 225 | 226 | ​ 需求分析是完整、准确、清晰、具体。 227 | 228 | 需求规格说明书: 229 | 230 | ​ 目标系统需求。 231 | 232 | #### 3.3.3 总体设计 233 | 234 | 关键任务: 235 | 236 | ​ 怎样实现目标系统? 237 | 238 | ​ 根据需求设计方案;分析推荐最佳方案;设计软件结构等。 239 | 240 | 总体设计说明书: 241 | 242 | ​ 记录总体设计结果。 243 | 244 | #### 3.3.4 详细设计 245 | 246 | 关键任务: 247 | 248 | ​ 该怎样具体实现系统? 249 | 250 | ​ 设计每个模块的算法和数据结构。 251 | 252 | 详细设计说明书: 253 | 254 | ​ 用恰当表达工具表达算法和数据结构。 255 | 256 | #### 3.3.5 实现(编码和单元测试) 257 | 258 | 关键任务: 259 | 260 | ​ 选择语言、工具翻译详细设计结果、测试模块。 261 | 262 | 实现阶段文档: 263 | 264 | ​ 程序清单、单元测试报告。 265 | 266 | #### 3.3.6 集成测试 267 | 268 | 关键任务: 269 | 270 | ​ 将经过单元测试模块组装起来进行测试; 271 | 272 | ​ 通过测试使软件达到预定要求。 273 | 274 | 测试报告: 275 | 276 | ​ 测试计划、测试方案、测试结果。 277 | 278 | #### 3.3.7 确认测试 279 | 280 | 关键任务: 281 | 282 | ​ 由用户按需求规格说明书规定进行测试。 283 | 284 | 测试报告: 285 | 286 | ​ 测试计划、测试方案、测试结果。 287 | 288 | #### 3.3.8 使用与维护 289 | 290 | 关键任务: 291 | 292 | ​ 通过必要维护活动使系统持久满足用户要求。 293 | 294 | 维护类型: 295 | 296 | ​ 改正性维护:软件运行过程中发现错误,进行维护。 297 | 298 | ​ 适应性维护:软件运行软硬件环境变化,进行维护。 299 | 300 | ​ 完善性维护:用户要求改进或扩充软件,进行维护。 301 | 302 | ​ 预防性维护:为将来的维护作准备。 303 | 304 | **** 305 | 306 | 307 | 308 | ## 4、软件过程模型 309 | 310 | ### 4.1 软件过程模型 311 | 312 | ​ 实际从事软件开发工作时,软件**规模、类型、开发环境及技术方法**等因素会影响到**阶段划分**,及**各阶段的执行顺序**,形成**不同生存周期模型**,又称**过程模型**。 313 | 314 | ### 4.2 常用软件过程模型 315 | 316 | - 瀑布模型 317 | - 快速原型模型 318 | - 增量模型 319 | - 螺旋模型 320 | - 喷泉模型 321 | - Rational统一过程 322 | - 微软公司软件开发过程 323 | 324 | #### 4.2.1 瀑布模型 325 | 326 | ​ 使用最早应用最广。 327 | 328 | ![](../img/c1/瀑布模型.png) 329 | 330 | 特点: 331 | 332 | 1. 阶段具有**顺序性**和**依赖性** 333 | 334 | 前一阶段结束后一阶段开始,前一阶段输出文档,后一个阶段输入文档。 335 | 336 | 2. **推迟实现**观点 337 | 338 | 瀑布模型在编码前设置系统分析、系统设计,推迟程序物理实现,保证前期工作扎实。 339 | 340 | 3. **质量保证**观点 341 | 342 | 瀑布模型每阶段坚持两个重要做法: 343 | 344 | 1. 每阶段都必须完成完整、准确的文档。该文档是软件开发时人员间通信、运行时维护的重要依据。 345 | 2. 每阶段结束前对文档评审。 346 | 347 | 传统瀑布模型过于理想化,但人在工作过程中不可能不犯错误,所以实际瀑布模型带**反馈环**。 348 | 349 | ![](../img/c1/带反馈环的瀑布模型.png) 350 | 351 | **瀑布模型的优点:** 352 | 353 | ​ 提高软件质量,降低维护成本,缓解软件危机。 354 | 355 | **瀑布模型的缺点:** 356 | 357 | ​ 模型缺乏灵活性,无法解决需求不明确问题。用户不经过实践就能提出完整准确需求是不切实际的。 358 | 359 | #### 4.2.2 快速原型模型 360 | 361 | ​ 快速建立反映用户主要需求的原型系统,反复由用户评价修正需求,开发出最终产品。 362 | 363 | ![](../img/c1/快速原型模型.png) 364 | 365 | **快速原型模型的优点:** 366 | 367 | ​ 确定需求上优于瀑布模型(通过原型与用户交互); 368 | 369 | ​ 提供学习手段,通过开发原型和演示原型对开发者和使用者了解系统都有积极作用; 370 | 371 | ​ 有的软件原型可以成为最终产品的一部分。 372 | 373 | **快速原型模型的缺点:** 374 | 375 | ​ 快速建立的系统结构加连续修改可能导致产品质量低下原型系统的内部结构可能不好。 376 | 377 | #### 4.2.3 增量模型 378 | 379 | ​ 又称渐增模型,开发软件时将软件产品作一些列增量构件设计、编码、集成和测试。 380 | 381 | ​ **区别于瀑布模型和快速原型模型:** 382 | 383 | ​ 瀑布模型和快速原型模型是一次把满足所有需求产品提交给用户。 384 | 385 | ​ 增量模型是分批向用户提交产品。 386 | 387 | ![](../img/c1/增量模型.png) 388 | 389 | **增量模型的优点:** 390 | 391 | ​ 较短时间向用户提交可完成有用工作产品; 392 | 393 | ​ 用户有充裕时间学习适用产品; 394 | 395 | ​ 软件结构必须开放,方便向现有产品加入新构件。 396 | 397 | **增量模型的缺点** 398 | 399 | ​ 做到第三个优点比较困难。 400 | 401 | **** 402 | 403 | 上述增量模型在实现构件前完成总体的需求分析、规格说明和概要设计,相对来说风险较小。 404 | 405 | 风险更大增量模型:确定用户需求后,各构件集并行构建。 406 | 407 | ![](../img/c1/风险更大的增量模型.png) 408 | 409 | **** 410 | 411 | 412 | 413 | #### 4.2.4 螺旋模型 414 | 415 | ​ 1988年B.Boehem提出,加入风险分析,常指导大型软件项目。 416 | 417 | - 软件风险: 418 | 419 | 超期、超预算、行业竞争等。 420 | 421 | 笛卡尔坐标四象限表达四方面活动: 422 | 423 | - 制定计划:确定目标、选定方案、设定约束条件。 424 | - 风险分析:评估方案,识别和消除风险。 425 | - 实施工程:软件开发。 426 | - 客户评估:评价开发工作,计划下一阶段工作。 427 | 428 | 沿螺线自内向外每旋转一圈开发出更完善新版本。 429 | 430 | ![](../img/c1/螺旋模型.png) 431 | 432 | **螺旋模型的优点:** 433 | 434 | ​ 大型软件开发项目有较好的风险控制; 435 | 436 | **螺旋模型的缺点:** 437 | 438 | ​ 需要风险评估的经验; 439 | 440 | ​ 契约开发通常需要事先指定过程模型和发布产品; 441 | 442 | ​ 普及度不如前述模型。 443 | 444 | #### 4.2.5 喷泉模型 445 | 446 | ​ 面向对象生命周期模型,体现迭代和无缝特性。 447 | 448 | ​ 迭代:求精,系统某部分常被重复工作多次,相关功能在每次迭代中逐渐加入演进系统。 449 | 450 | ​ 无缝:分析、设计、编码各阶段间不存在明显边界。 451 | 452 | ![](../img/c1/喷泉模型.png) 453 | 454 | **喷泉模型的优点:** 455 | 456 | ​ 无缝,可同步开发,提高开发效率,节省开发时间,适应面向对象软件。 457 | 458 | **喷泉模型的缺点:** 459 | 460 | ​ 可能随时加各种信息、需求与资料,需严格管理文档,审核的难度加大。 461 | 462 | #### 4.2.6 Rational统一过程 463 | 464 | ​ 由Rational软件公司推出的一种软件过程,该过程强调以迭代和渐增方式开发软件。 465 | 466 | ​ Rational统一过程是一个二维生命周期模型。 467 | 468 | ![](../img/c1/Rational统一过程.png) 469 | 470 | RUP有9个核心工作流,包括6个核心过程工作流和3个核心支持工作流。 471 | 472 | RUP有4个连续阶段,每个阶段有明确目标,通过一次或多次迭代完成。 473 | 474 | **Rational统一过程优点:** 475 | 476 | ​ 不断的版本发布成为一种团队日常工作的真正驱动力; 477 | 478 | ​ 将发现问题、制定方案和解决过程集成到下一代迭代; 479 | 480 | ​ 迭代开发,降低风险; 481 | 482 | ​ 更好地安排产品开发的辅助过程。 483 | 484 | #### 4.2.7 微软过程 485 | 486 | ![](../img/c1/微软过程.png) 487 | 488 | - 规划阶段 489 | 490 | 开展市场调查研究,结合公司战略形成产品的远景目标。 491 | 492 | - 设计阶段 493 | 494 | 根据产品远景目标,完成软件功能规格说明和总体设计,确定产品开发的主要进度。 495 | 496 | - 开发阶段 497 | 498 | 完成产品中所有构件的开发工作。 499 | 500 | - 稳定阶段 501 | 502 | 实行全面的内部和外部测试,最终形成可发布的RTM版本 503 | 504 | - 发布阶段 505 | 506 | 确认产品质量符合发布标准后,发布产品及相关消息 507 | 508 | 递进式的开发策略: 509 | 510 | ​ 解决问题的及时性、不确定和变更因素可控性、缩短产品上市周期 511 | 512 | ![](../img/c1/递进式的微软过程.png) 513 | 514 | 515 | 516 | ​ 517 | 518 | -------------------------------------------------------------------------------- /notes_of_videos/第七章:面向对象设计.md: -------------------------------------------------------------------------------- 1 | # 第七章 面向对象设计 2 | 3 | 分析:提取、整理用户需求,建立问题域精确模型。 4 | 5 | 设计:转变需求为系统实现方案,建立求解域模型。 6 | 7 | ![](../img/c7/面向对象设计.png) 8 | 9 | ## 一、面向对象设计准则及启发规则 10 | 11 | ### 1.1 面向对象设计准则 12 | 13 | 在实际的软件开发过程中分析和设计的界限是模糊的。 14 | 15 | 分析和设计活动是一个多次反复迭代的过程。 16 | 17 | 面向对象方法学在概念和表示方法上的一致性,保证了在各项开发活动之间的平滑(无缝)过渡,领域专家和开发人员能够比较容易地跟踪整个系统开发过程,这是面向对象方法与传统方法比较起来所具有的一大优势。 18 | 19 | 1. 抽象 20 | 21 | 通过像**类**抽象机制实现 22 | 23 | 提高可重用性 24 | 25 | 2. 信息隐蔽 26 | 27 | 通过封装性实现 28 | 29 | 提高独立性 30 | 31 | 3. 弱耦合 32 | 33 | 对象间耦合:交互耦合、继承耦合 34 | 35 | **交互耦合:**对象间通过消息连接实现(**松散**) 36 | 37 | - 降低消息连接复杂度(减少参数个数,降低参数复杂度) 38 | 39 | - 减少信息数 40 | 41 | **继承耦合:**一般类和特殊类之间耦合。(**紧密**) 42 | 43 | 有继承关系基类和派生类是系统中粒度更大模块。 44 | 45 | 4. 强内聚 46 | 47 | **服务内聚:**只完成一个功能。 48 | 49 | **类内聚:**一个类只有一个用途,否则分解。 50 | 51 | **一般特殊内聚:**设计合理,是对领域知识正确抽取。 52 | 53 | 5. 可重性 54 | 55 | - 尽量利用已有类(类库、已创建类) 56 | 57 | - 创建新类考虑以后可重用性 58 | 59 | ### 1.2 面向对象设计启发规则 60 | 61 | 1. 设计结果清晰易懂 62 | 63 | - 用词一致 64 | - 使用已有协议 65 | - 减少消息模式的数目 66 | - 避免模糊的定义 67 | 68 | 2. 一般-特殊结构深度适当 69 | 70 | 约100个classes,则设计7+-2层 71 | 72 | 3. 设计简单class 73 | 74 | - 避免过多attributes 75 | - 分配给每个类任务应简单 76 | - objects间合作关系简单 77 | - 避免过多methods 78 | 79 | 4. 使用简单的协议 80 | 81 | 5. 使用简单的服务 82 | 83 | ## 二、系统分解 84 | 85 | 面向对象设计模型:四部分组成 86 | 87 | 有些领域目标系统可只由3个或更少子系统组成。 88 | 89 | ![](../img/c7/系统分解.png) 90 | 91 | 问题域:直接负责实现客户需求子系统。 92 | 93 | 人机交互:实现用户界面子系统包括可复用的GUI子系统。 94 | 95 | 任务管理:确定各类任务,把任务分配给适当的硬件或软件去执行。 96 | 97 | 数据管理:负责对象的存储和检索的子系统。 98 | 99 | 子系统间交互方式: 100 | 101 | 客户—供应商关系:“客户”子系统了解“供应商”子系统接口 102 | 103 | ![](../img/c7/客户—供应商关系.png) 104 | 105 | 平等伙伴关系:各子系统都有可能调用其他子系统,或为其他子系统提供服务。 106 | 107 | 交互方式复杂,各子系统需要了解彼此接口。 108 | 109 | ![](../img/c7/平等伙伴关系.png) 110 | 111 | ## 三、设计问题域子系统 112 | 113 | 设计基础:分析阶段精确问题域模型。 114 | 115 | 设计任务:从实现角度补充、修改问题域模型。 116 | 117 | ![](../img/c7/设计问题域子系统.png) 118 | 119 | 1. 调整需求 120 | 121 | 用户需求或外部环境变化; 122 | 123 | 分析模型不完整、准确。 124 | 125 | 2. 重用已有类 126 | 127 | 根据问题解决的需要,把从类库或其他来源得到既存类增加到问题解决方案中去。 128 | 129 | ATM系统分析模型,没把开发工具提供类包括在设计模型,增加了一个或几个主要的类 130 | 131 | 3. 把问题域类组合在一起 132 | 133 | 设计时,从类库中引进一个根类,作为包容类,把所有与问题域有关的类关联到一起,建立类的层次。 134 | 135 | 4. 增加一般化类 136 | 137 | 某些特殊类要求一组类似的服务,应加入一般化的类,定义为所有特殊类共用的一组服务名,服务都是虚函数;在特殊类中定义其实现。 138 | 139 | 5. 调整继承关系 140 | 141 | 在OOA阶段建立的对象模型中可能包括多继承关系,但实现时使用程序设计语言可能只有单继承,需对分析结果修改。 142 | 143 | ## 四、设计人—机交互子系统 144 | 145 | 分析阶段:用户界面需求 146 | 147 | 设计阶段:确定人机交互细节,窗口报表形式,命令层次等。 148 | 149 | 在有关界面设计的著作中,Theo Mandel创造三条黄金原则: 150 | 151 | 1. 置用户于控制之下 152 | 2. 减少用户的记忆负担 153 | 3. 保持界面一致 154 | 155 | 允许用户操作控制的原则: 156 | 157 | 1. 交互模式的定义不能强迫用户进入不必要的或不希望的动作的方式 158 | 2. 提供灵活的交互 159 | 3. 允许用户交互可以被中断和撤销 160 | 4. 当技能级别增长时可以使交互流水化并允许定制交互 161 | 5. 使用户隔离内部技术细节 162 | 163 | 能够减少用户记忆负担: 164 | 165 | 1. 减少对短期记忆的要求 166 | 2. 建立有意义的缺省 167 | 3. 定义直觉性的捷径 168 | 4. 界面的视觉布局应该基于真实世界的隐喻 169 | 5. 以不断进展的方式揭示信息 170 | 171 | 用户应以一致的方式展示和获取信息: 172 | 173 | 1. 所有可视信息的组织均按照贯穿所有屏幕显示所保持的设计标准 174 | 2. 输入机制被约束到有限的集合,在整个应用中被一致地使用 175 | 3. 从任务到任务的导航机制被一致地定义和实现 176 | 177 | Web界面设计 178 | 179 | 简洁性 180 | 181 | - 避免使用许多复杂的图片和动画造成用户操作的分心 182 | - 界面布局应当适合清晰地表达信息 183 | - 具有与之匹配的导航性 184 | 185 | 一致性 186 | 187 | - 诸如同样的按钮在所有窗口中保持一致的位置,始终使用一致的配色方案等 188 | 189 | 使用颜色的指导原则 190 | 191 | - 避免使用太多的颜色(通常一个窗口内不要多于三种颜色) 192 | - 使用颜色的变化显示系统状态的变化 193 | - 注意在低分辩率情况下的颜色显示 194 | - 主要颜色的搭配 195 | 196 | ## 五、设计任务管理子系统 197 | 198 | 在实际系统中,许多对象之间往往存在相互依赖关系。 199 | 200 | 设计工作的一项重要内容就是,确定哪些是必须同时动作的对象,哪些是相互排斥的对象。进一步设计任务管理子系统。 201 | 202 | 系统总有许多并发行为,需按照各自行为的协调和通信关系,划分各种任务(进程),简化并发行为的设计和编码。 203 | 204 | 确定各类任务,把任务分配给适当的硬件和软件去执行。 205 | 206 | 根据动态模型分析、定义并发行。 207 | 208 | 1. 分析并发性 209 | 210 | 并发对象: 211 | 212 | 1. 无交互行为的对象 213 | 2. 同时接受事件的对象 214 | 215 | 定义任务: 216 | 217 | 检查各个对象的状态图,找没并发对象的路径(任何时候路径中只有单个对象是活跃的),称**控制线**。 218 | 219 | 通过分离出控制线**设计任务**。 220 | 221 | 并发任务的分配方案: 222 | 223 | 1. 每个任务分配到独立的处理器 224 | 2. 分配到相同处理器,通过操作系统提供并发支持 225 | 226 | 2. 设计任务子系统 227 | 228 | 1. 事件驱动型 229 | 230 | 指睡眠任务(不占用CPU),某个事件发生,任务被触发,醒来做相应处理,又回到睡眠状态。 231 | 232 | 2. 时钟驱动型任务 233 | 234 | 按特定时间间隔去触发任务进行处理。 235 | 236 | 如某些设备需要周期性的采集数据。 237 | 238 | 3. 确定优先任务 239 | 240 | 高优先级,分离成独立任务,保证时间约束。 241 | 242 | 4. 确定关键任务 243 | 244 | 严格可靠性,分离考虑,精心设计和编码,雅阁测试。 245 | 246 | 5. 确定协调任务 247 | 248 | 三个以上任务,引入协调任务,控制封装任务间协调。 249 | 250 | 6. 尽量减少任务数 251 | 252 | 任务多,设计复杂、不易理解、难维护 253 | 254 | 7. 确定资源需求 255 | 256 | 计算系统载荷,每秒处理业务数,处理一个业务花费时间,估算所需CPU处理能力。 257 | 258 | 综合考虑,确定哪些任务硬件实现,哪些任务软件实现。 259 | 260 | 注:任务管理部件一般在信息系统中使用较少,在控制系统中应用较多。 261 | 262 | ## 六、设计数据管理子系统 263 | 264 | 一、选择数据存储管理模数 265 | 266 | 1. 文件管理系统: 267 | 268 | - 成本低,简单 269 | - 操作级别低,不同个操作系统的文件系统差别打。 270 | 271 | 2. 关系数据库管理系统 272 | 273 | 3. 面向对象数据库管理系统 274 | 275 | 扩展的关系数据库管理系统: 276 | 277 | ​ 增加抽象数据类型,继承等机制。 278 | 279 | 扩展的面向对象语言: 280 | 281 | ​ 增加数据库存储和管理对象机制。 282 | 283 | 二、设计数据管理子系统 284 | 285 | 1. 设计数据格式 286 | 287 | 与数据存储管理模式密切相关; 288 | 289 | 1. 文件系统:达到第一范式;减少文件数;编码减少文件中属性值。 290 | 2. 关系数据库管理系统:达到第三范式,满足性能和存储需求。 291 | 3. 面向对象数据库管理系统:同2 292 | 293 | 范式:对表的数据结构进行规范,规范化的模数称为范式。 294 | 295 | ![](../img/c7/范式.png) 296 | 297 | 2. 设计相应服务 298 | 299 | - 文件系统:打开文件、记录定位、检索记录、更新。 300 | - 关系数据库管理系统:哪些由数据库管理系统承担、哪些由前端开发工具承担;访问哪些库表、定位记录、更新等。 301 | - 面向对象数据库管理系统:同2 302 | 303 | -------------------------------------------------------------------------------- /notes_of_videos/第三章:结构化设计.md: -------------------------------------------------------------------------------- 1 | # 第三章 结构化设计 2 | 3 | ​ 传统软件工程方法学采用结构化设计技术(SD)。 4 | 5 | 从工程管理角度结构化设计分两步: 6 | 7 | - 概要设计:将软件需求转化为数据结构和软件系统结构。 8 | - 详细设计:过程设计,通过对结构细化,得到软件详细数据结构和算法。 9 | 10 | ![](../img/c3/结构化设计与分析关系图.png) 11 | 12 | - 数据设计:数据模型及核心数据字典转变为数据结构。 13 | - 体系结构设计:功能模型中数据流图转变成计算机模块框架。 14 | - 接口设计:功能模型中数据流图转变成软件内部、软件与协作系统间、软件与用户间通信方式。 15 | - 过程设计:行为模型及功能模型中的“处理规格说明”转换成软件构件过程描述 16 | 17 | 结构化设计的概念与原理 18 | 19 | - 模块化 20 | - 抽象 21 | - 逐步求精 22 | - 信息隐蔽 23 | - 模块独立 24 | 25 | ## 一、模块化 26 | 27 | ​ 模块(mdule)——“模块”又称“构件”一般指用一个名字调用的相邻程序元素序列。 28 | 29 | ![](../img/c3/模块化设计.png) 30 | 31 | ![](../img/c3/模块化复杂度.png) 32 | 33 | ![](../img/c3/软件开发工作量-模块数.png) 34 | 35 | ## 二、抽象 36 | 37 | ​ 抽象事物的本质特性,暂不考虑细节。 38 | 39 | 40 | 41 | ## 三、求精 42 | 43 | ​ 求精是指为了能集中精力解决主要问题,尽量推迟对细节问题的考虑,实际上是一个细化过程,与抽象是互补的概念。 44 | 45 | ​ 抽象使得设计者能够说明过程和数据,同时忽略底层细节; 46 | 47 | ​ 求精帮助设计者在设计过程中揭示底层细节。 48 | 49 | 50 | 51 | ## 四、信息隐蔽 52 | 53 | ​ 每个模块的实现细节对于其他模块来说是隐蔽的,也就是说,模块中所包含的信息是不允许其他不需要这些信息的模块访问的。 54 | 55 | ​ 每个客户只能通过接口来了解该模块,而所有的实现都隐蔽起来。 56 | 57 | ![](../img/c3/信息隐蔽.png) 58 | 59 | 60 | 61 | ## 五、模块独立 62 | 63 | 具有独立功能且和其他模块没过多作用。 64 | 65 | 1. 容易分工合作; 66 | 2. 容易测试和维护,修改工作量较小,错误传播范围小,扩充功能容易, 67 | 68 | 两个定性度量标准:耦合和内聚。 69 | 70 | ### 5.1 耦合 71 | 72 | ​ **软件结构中不同模块间互连程度度量。** 73 | 74 | ​ 取决模块间接口复杂程度,通过接口数据。追求尽可能松散耦合系统。 75 | 76 | ![](../img/c3/耦合示意图.png) 77 | 78 | - **非直接耦合** 79 | 80 | 两个模块分别能独立地工作,不需要另一模块存在。 81 | 82 | - **数据耦合** 83 | 84 | 两模块通过参数交换数据信息。 85 | 86 | ![](../img/c3/数据耦合.png) 87 | 88 | - **控制耦合** 89 | 90 | 两模块通过参数交换控制信息(包括数字形式) 91 | 92 | ![](../img/c3/控制耦合.png) 93 | 94 | - **公共环境耦合** 95 | 96 | 两个或多个模块通过一公共数据环境作用。 97 | 98 | ![](../img/c3/公共环境耦合.png) 99 | 100 | - 一模块送数据,另一模块取,等价数据耦合。 101 | 102 | - 两模块既往公共环境送又从里面取,介于数据耦合和控制耦合之间 103 | 104 | ![](../img/c3/两种公共环境耦合.png) 105 | 106 | - 内容耦合 107 | 108 | 1. 一模块访问另一模块内部数据; 109 | 2. 一模块不通过正常入口转到另一模块内部; 110 | 3. 两模块有部分程序代码重叠(汇编程序); 111 | 4. 一模块有多个入口。 112 | 113 | ![](../img/c3/内容耦合.png) 114 | 115 | 原则:尽量使用数据耦合,少用控制耦合,限制公共环境耦合,完全不用内容耦合。 116 | 117 | 118 | 119 | ### 5.2 内聚 120 | 121 | **定义:** 122 | 123 | ​ **模块内各元素彼此结合紧密程度。** 124 | 125 | - 功能内聚 126 | 127 | 一模块中各部分是完成某一功能必不可少组成部分。 128 | 129 | - 顺序内聚 130 | 131 | 模块内处理元素同某功能密切相关,顺序执行。 132 | 133 | - 通信内聚 134 | 135 | 一模块内各功能部分都使用相同输入数据,或产生相同输出数据。 136 | 137 | ![](../img/c3/通信内聚.png) 138 | 139 | - 过程内聚 140 | 141 | 模块内处理元素相关,特定次序执行,如把流程图中循环部分、判定部分、计算部分分成三个模块,这三个模块都是过程内聚模块。 142 | 143 | ![](../img/c3/过程内聚.png) 144 | 145 | - 时间内聚 146 | 147 | 多为多功能模块,要求所有功能在同一时间内执行。如初始化模块和终止模块及紧急故障处理模块。 148 | 149 | - 逻辑内聚 150 | 151 | 一模块完成功能在逻辑上属相同相似一类。 152 | 153 | ![](../img/c3/逻辑内聚.png) 154 | 155 | - 偶然内聚 156 | 157 | 模块内各部分间没有联系,即使有也很松散。 158 | 159 | ![](../img/c3/偶然内聚.png) 160 | 161 | 各个内聚评分: 162 | 163 | 1. 功能内聚:10分 164 | 2. 顺序内聚:9分 165 | 3. 通信内聚:7分 166 | 4. 过程内聚:5分 167 | 5. 时间内聚:3分 168 | 6. 逻辑内聚:1分 169 | 7. 偶然内聚:0分 170 | 171 | ## 六、启发规则 172 | 173 | 1. 改进软件结构提高模块独立性 174 | 175 | 初步结构分解或合并,降低耦合提高内聚 176 | 177 | ![](../img/c3/改善软件结构示意图.png) 178 | 179 | 2. 模块规模应该适中 180 | 181 | 过大分解不充分,但进一步分解不应降低模块独立性。过小开销大于有效操作,模块数目过多系统接口复杂。通常语句行数在50-100,最多不超过500行。 182 | 183 | 3. 深度、宽度、扇出和扇入应适当 184 | 185 | 深度:软件结构控制层数,标识一系统大小和复杂程度。 186 | 187 | 宽度:软件结构同一层次模块数最大值,越大系统越复杂。 188 | 189 | ![](../img/c3/软件结构参数示意图.png) 190 | 191 | 扇出:一模块直接控制(调用)模块数,过大,模块复杂,过小也不好。一般在3-9 192 | 193 | ![](../img/c3/扇出.png) 194 | 195 | 扇入:有多少上级模块直接调用它,越大共享该模块上级模块越多。 196 | 197 | ![](../img/c3/扇入.png) 198 | 199 | 扇入扇出不合适的改善: 200 | 201 | ![](../img/c3/扇入扇出改善.png) 202 | 203 | 改善示例: 204 | 205 | ![](../img/c3/高扇出的模块结构举例.png) 206 | 207 | ![](../img/c3/改善后的软件结构.png) 208 | 209 | 4. 模块作用域应在控制域内 210 | 211 | 作用域:受该模块内判定影响的所有模块集合。 212 | 213 | 控制域:模块本身及所有直接或间接从属它的模块集合。 214 | 215 | 若模块作用域不再控制域内,会增大模块间控制耦合。 216 | 217 | ![](../img/c3/改善作用域实例.png) 218 | 219 | 改善方案一: 220 | 221 | ![](../img/c3/作用域改善方案一.png) 222 | 223 | 改善方案二: 224 | 225 | ![](../img/c3/作用域改善方案二.png) 226 | 227 | 5. 降低模块接口复杂程度 228 | 229 | 模块接口复杂是软件发生错误一主要原因。应使信息传递简单且和模块功能一致。 230 | 231 | 6. 设计单入口、单出口模块 232 | 233 | 避免内容耦合 234 | 235 | 7. 模块功能可预测 236 | 237 | 输入数据相同,产生同样输出。模块功能防止过分受限。 238 | 239 | 不可预测模块: 240 | 241 | ![](../img/c3/不可预测模块.png) 242 | 243 | 过分受限模块: 244 | 245 | ![](../img/c3/过分受限模块.png) 246 | 247 | 248 | 249 | ### 七、面向数据流设计方法 250 | 251 | ​ 面向数据流的设计要解决的任务,就是将软件需求分析阶段生成的额逻辑模型数据流图映射(Mapping)表达软件系统结构的软件结构图。 252 | 253 | ​ 结构化设计属于面向数据流的设计方法。 254 | 255 | ### 7.1 软件结构图 256 | 257 | 1. 模块一在SC图中用矩形框表示,并用名字来标记它 258 | 2. 模块的调用关系和接口 259 | 260 | ![](../img/c3/模块接口.png) 261 | 262 | ![](../img/c3/调用关系.png) 263 | 264 | ### 7.2 信息流类型 265 | 266 | 1. 变换流 267 | 268 | 信息沿输入通路进入系统,由外部形式变换成内部形式,通过变换中心加工处理后再沿输出通路变换成外部形式离开软件系统。 269 | 270 | ![](../img/c3/变换流.png) 271 | 272 | 2. 事务流 273 | 274 | 信息沿输入通路到处理,由处理根据输入信息类型在若干动作序列中选一个执行。 275 | 276 | 处理称**事务中心**,完成任务: 277 | 278 | 1. 接收输入信息(又称事务); 279 | 2. 分析每个事务确定类型; 280 | 3. 根据事务类型选取一活动通路。 281 | 282 | ![](../img/c3/事务流.png) 283 | 284 | ### 7.3 面向数据设计过程 285 | 286 | ![](../img/c3/面向数据流设计过程.png) 287 | 288 | ### 7.4 变换分析 289 | 290 | 将具有变换流特点的数据流图映射成软件结构。 291 | 292 | ![](../img/c3/变换分析实例.png) 293 | 294 | 1. 复查基本系统模型 295 | 296 | 确保系统输入和输出数据符合实际 297 | 298 | 2. 复查并精化数据流图 299 | 300 | 正确、处理项完成相对独立功能。 301 | 302 | ![](../img/c3/数字仪表板系统数据流图.png) 303 | 304 | 3. 确定数据流图具有变换特性还是事务特性 305 | 306 | 没有明确事务中心,为变换型。 307 | 308 | 4. 找出变换中心 309 | 310 | 确定数据流边界。 311 | 312 | ![](../img/c3/具有边界的数据流图.png) 313 | 314 | 5. 完成一级分解 315 | 316 | ![](../img/c3/完成一级分解.png) 317 | 318 | ![](../img/c3/数字仪表板的第一级分解.png) 319 | 320 | 6. 完成第二级分解 321 | 322 | ![](../img/c3/第二级分解.png) 323 | 324 | 数字仪表板的第二级分解——输入结构 325 | 326 | ![](../img/c3/数字仪表板的第二级分解——输入结构.png) 327 | 328 | 数字仪表板的第二级分解——变换结构 329 | 330 | ![](../img/c3/数字仪表板的第二级分解——变换结构.png) 331 | 332 | 数字仪表板的第二级分解——输出结构 333 | 334 | ![](../img/c3/数字仪表板的第二级分解——输出结构.png) 335 | 336 | 7. 对初步软件结构精华 337 | 338 | ![](../img/c3/对初步软件结构精化.png) 339 | 340 | ### 7.5 事务分析 341 | 342 | ​ 信息流有明显事务特点(事务中心),采用事务分析方法。 343 | 344 | ​ 软件结构:一接受分支和一发送分支 345 | 346 | 事务分析映射方法: 347 | 348 | ![](../img/c3/事物分析映射方法.png) 349 | 350 | 事务分析实例: 351 | 352 | ![](../img/c3/事务分析实例.png) 353 | 354 | ![](../img/c3/事务分析实例2.png) 355 | 356 | 357 | 358 | ## 八、人机界面设计 359 | 360 | ### 8.1 人机界面设计问题 361 | 362 | 1. 系统响应时间 363 | 364 | 从用户完成某控制动作,到软件给出预期响应。 365 | 366 | 两个重要属性:**长度**和**易变性**。 367 | 368 | **长度:** 369 | 370 | ​ 过长,用户感到不安、沮丧。 371 | 372 | ​ 过短,迫使用户加快操作节奏,易导致出错。 373 | 374 | **易变性:** 375 | 376 | ​ 易变性指响应时间相对平均响应时间偏差,越低越好,否则会让用户误认为系统工作异常。 377 | 378 | 2. 用户帮助措施 379 | 380 | **手册**和**联机帮助**。 381 | 382 | 联机帮助:集成帮助和附加帮助。 383 | 384 | 集成帮助设计在软件里面,附加帮助系统建成后加到软件中,前者可用性更强。 385 | 386 | 请求帮助:帮助菜单,特殊功能键(F1),HELP命令。 387 | 388 | 显示帮助信息:独立窗口、参考某个文档、屏幕固定位置作简短提示。 389 | 390 | 组织帮助信息: 391 | 392 | - 平面结构,通过关键字访问 393 | - 层次结构,查更详细信息 394 | - 超文本结构 395 | 396 | 3. 出错信息处理 397 | 398 | - 以用户可用理解术语; 399 | - 提供清楚、易理解报错信息(出错位置、原因); 400 | - 从错误中恢复的建设性意见; 401 | - 信息用颜色等在视觉上引人注目; 402 | - 可能造成负面后果。 403 | 404 | 4. 命令交互 405 | 406 | 建议保留命令交互方式: 407 | 408 | - 控制序列:ctrl + c (拷贝)、ctrl + h (帮助)、ctrl + p (打印) 409 | - 功能键:F1(帮助) 410 | - 键入命令 411 | - 命令宏机制:用户定义名字代表一个常用命令序列。 412 | 413 | ### 8.2 人机界面设计指南 414 | 415 | 1. 一般交互 416 | - 保持人机界面菜单选择、命令输入、数据显示风格一致; 417 | - 提供有意义信息反馈:双向通信; 418 | - 破坏性动作前要确认:删除、覆盖; 419 | - 允许取消大多数操作; 420 | - 减少两次操作之间必须的记忆量; 421 | - 提高对话、移动和思考的效率; 422 | - 允许犯错误:保护不受致命错误破坏; 423 | - 按功能对动作分类,设计屏幕布局; 424 | - 提供帮助措施; 425 | - 用简单的动词或动词短语作为命令名。 426 | 2. 信息显示 427 | - 显示与当前工作有关信息; 428 | - 简单移动方式表示数据:图形、图表; 429 | - 使用一致标记、标准缩写和可预知颜色; 430 | - 产生有意义出错信息; 431 | - 使用模拟的方式显示信息等。 432 | 3. 数据输入 433 | - 减少用户输入动作:鼠标选择、滑动标尺等; 434 | - 使当前不适用命令不起作用; 435 | - 交互灵活:保留各种输入方式; 436 | - 让用户控制交流; 437 | - 对所有输入都提供帮助; 438 | - 消除冗余输入:数据单位、整钱后键入.00、提供缺省值等。 439 | 440 | ## 九、过程设计 441 | 442 | ### 9.1 过程设计任务 443 | 444 | - 确定模块算法 445 | 446 | - 确定模块使用数据结构 447 | 448 | - 确定模块接口(系统外部接口、用户界面、内部模块间接口细节、输入数据和输出数据) 449 | 450 | ![](../img/c3/过程设计示意图.png) 451 | 452 | ### 9.2 结构化程序设计 453 | 454 | 结构化程序设计技术是过程设计的关键技术 455 | 456 | - 经典定义:程序代码通过顺序、选择、循环三种控制结构连接,单入口单出口。 457 | - 扩展定义:可限制使用GOTO语句、DO_UNTIL和DO_CASE 458 | - 修正定义:LEAVE和BREAK,可从循环中转移出来。 459 | 460 | ### 9.3 结构化程序设计工具 461 | 462 | #### 9.3.1 程序流程图 463 | 464 | ​ 历史最悠久、使用最广泛的过程设计工具。 465 | 466 | 1. 顺序型:几个连续的加工依次序排列 467 | 468 | ![](../img/c3/%E9%A1%BA%E5%BA%8F%E5%9E%8B.png) 469 | 470 | 2. 选择型:由某个判定的取值决定选择两个加工中一个。 471 | 472 | ![](../img/c3/%E9%80%89%E6%8B%A9%E5%9E%8B.png) 473 | 474 | 3. 当型循环型:当循环控制条件成立时,重复执行特定的加工。 475 | 476 | ![](../img/c3/%E5%BD%93%E5%9E%8B%E5%BE%AA%E7%8E%AF%E5%9E%8B.png) 477 | 478 | 4. 直到型循环型:重复执行特定的加工,直到循环控制条件成立时。 479 | 480 | ![](../img/c3/%E7%9B%B4%E5%88%B0%E5%9E%8B%E5%BE%AA%E7%8E%AF.png) 481 | 482 | 5. 多情况选择型:列出多种加工情况根据控制变量的取值,选择执行其一。 483 | 484 | ![](../img/c3/%E5%A4%9A%E6%83%85%E5%86%B5%E9%80%89%E6%8B%A9%E5%9E%8B.png) 485 | 486 | 程序设计流图标准化图符 487 | 488 | ![](../img/c3/%E7%A8%8B%E5%BA%8F%E8%AE%BE%E8%AE%A1%E6%B5%81%E7%A8%8B%E5%9B%BE%E6%A0%87%E5%87%86%E5%8C%96%E5%9B%BE%E7%AC%A6.png) 489 | 490 | ![](../img/c3/%E8%AE%A1%E7%AE%97N%E9%98%B6%E4%B9%98%E7%9A%84%E7%A8%8B%E5%BA%8F%E6%B5%81%E7%A8%8B%E5%9B%BE.png) 491 | 492 | 优点: 493 | 494 | ​ 对控制流程描绘直观,便于初学者掌握。 495 | 496 | 缺点: 497 | 498 | 1. 不是逐步求精的好工具,过早考虑控制流程,非整体结构; 499 | 2. 用箭头代表控制流,程序员随意转移控制; 500 | 3. 不易表示数据结构和调用关系。 501 | 502 | #### 9.3.2 N-S图 503 | 504 | ![](../img/c3/N-S%E5%9B%BE.png) 505 | 506 | ![](../img/c3/N-S%E5%9B%BE2.png) 507 | 508 | ![](../img/c3/%E8%AE%A1%E7%AE%97n%E9%98%B6%E4%B9%98%E7%9A%84N-S%E5%9B%BE.png) 509 | 510 | 特点: 511 | 512 | 1. 功能域(特定控制结构的作用域)明确; 513 | 2. 不可能任意转移控制; 514 | 3. 容易确定局部和全程数据的作用域; 515 | 4. 容易表现嵌套关系,也可表示模块的层次结构。 516 | 517 | #### 9.3.3 PAD图 518 | 519 | ![](../img/c3/PAD%E5%9B%BE.png) 520 | 521 | ![](../img/c3/%E8%AE%A1%E7%AE%97N%E9%98%B6%E4%B9%98%E7%9A%84PAD%E5%9B%BE.png) 522 | 523 | 优点: 524 | 525 | 1. 使用PAD图设计的程序必然是结构化程序; 526 | 2. PAD图描绘的程序结构十分清晰; 527 | 3. 用PAD图表现程序逻辑,易读、易懂、易记; 528 | 4. 容易将PAD图转换成高级语言源程序; 529 | 5. 支持自顶向下逐步求精 530 | 531 | ![](../img/c3/PAD%E5%9B%BE%E9%80%90%E6%AD%A5%E6%B1%82%E7%B2%BE.png) 532 | 533 | 534 | 535 | #### 9.3.4 判定表 536 | 537 | 能清晰表示复杂的条件组合与应做动作间对应关系。 538 | 539 | 四部分: 540 | 541 | - 左上部列出所有条件; 542 | - 左下部所有可能做的动作; 543 | - 右上部表示各种条件组合的矩阵; 544 | - 右下部是和每种条件组合相对应的动作。 545 | 546 | ![](../img/c3/%E8%A1%8C%E6%9D%8E%E6%89%98%E8%BF%90%E7%AE%97%E6%B3%95%E7%9A%84%E5%88%A4%E5%AE%9A%E8%A1%A8.png) 547 | 548 | #### 9.3.5 判定树 549 | 550 | 判定表变种,表示复杂条件组合与应做动作间对应关系。 551 | 552 | ![](../img/c3/%E5%88%A4%E5%AE%9A%E6%A0%91.png) 553 | 554 | 优点:形式简单,易看出含义,易于掌握和使用。 555 | 556 | 缺点:简洁性不如判定表,相同数据元素重复写多遍,越接近叶端重复次数越多。 557 | 558 | #### 9.3.6 过程设计语言 559 | 560 | ​ 伪码,用正文形式表示数据和处理过程设计工具 561 | 562 | ​ PDL具有严格关键字外部语法,定义控制结构和数据结构; 563 | 564 | ​ PDL表示实际操作和条件的内部语法灵活自由。适应各种工程项目需要。 565 | 566 | ### 9.4 程序复杂度 567 | 568 | ​ McCabe方法 569 | 570 | 1. 根据过程设计结果画出相应流图 571 | 572 | 流图描述程序控制流,基本图形符号如下图所示。 573 | 574 | ![](../img/c3/McCabe基本图形符号.png) 575 | 576 | 流程图映射成流图 577 | 578 | ![](../img/c3/流程图映射成流图.png) 579 | 580 | 符合条件下流图映射 581 | 582 | ![](../img/c3/复合条件下流图映射.png) 583 | 584 | 2. 计算流图的环形复杂度 585 | 586 | ![](../img/c3/计算环形复杂度.png) 587 | 588 | ![](../img/c3/环形复杂度实例.png) 589 | 590 | ## 十、面向数据结构设计方法 591 | 592 | ​ 数据结构既影响程序的结构也影响程序的处理过程,可从数据结构导出程序的处理过程,适合详细设计。 593 | 594 | ​ 面向数据结构设计方法两种:**Jacksom**和Warnier方法。 595 | 596 | ## 10.1 Jackson图 597 | 598 | 描述数据结构:顺序、选择、重复。 599 | 600 | ![](../img/c3/Jackson图描述数据结构.png) 601 | 602 | 改进:直线,选择和循环结束条件。 603 | 604 | ![](../img/c3/改进的Jackson的图.png) 605 | 606 | ![](../img/c3/改进的Jackson的图2.png) 607 | 608 | ## 10.2 Jackson方法步骤 609 | 610 | 1. 确定输入数据和输出数据逻辑结构,用Jackson图表达; 611 | 2. 确定输入结构和输出结构中有对应关系(因果)的单元; 612 | 3. 描绘数据结构的Jackson图导出描绘程序结构Jackson图; 613 | 4. 列出所有操作和条件,分配到Jackson图中; 614 | 5. 用伪码表示。 615 | 616 | -------------------------------------------------------------------------------- /notes_of_videos/第二章:结构化分析概述.md: -------------------------------------------------------------------------------- 1 | # 第二章 结构化分析概述 2 | 3 | ## 一、需求分析重要性 4 | 5 | ​ 对软件需求深入理解是开发成功的前提和关键。 6 | 7 | ​ 开发软件系统最困难的部分就是准确说明开发什么,最困难的概念性工作是编写出详细需求,包括所有面向用户、面向机器和其他软件系统的接口 8 | 9 | ​ 此工作一旦做错,将会给系统带来极大损害,并且以后对它修改也极为困难。 10 | 11 | ## 二、结构化分析核心思想 12 | 13 | - 分解化简问题 14 | - 物理与逻辑表示分开 15 | - 进行数据与逻辑抽象 16 | 17 | ## 三、结构化分析具体步骤 18 | 19 | 1. 发现需求 20 | 21 | - 与用户交谈,向用户提问题; 22 | - 参观用户的工作流程,观察用户的操作; 23 | - 向用户群体发调查问卷; 24 | - 与同行、专家交谈,听取他们的意见; 25 | - 分析已经存在的同类软件产品,提取需求; 26 | - 从行业标准、规则中提取需求; 27 | - 从Internet上搜查相关资料等。 28 | 29 | 2. 求精 30 | 31 | - 对初步需求反复求精多次细化。 32 | 33 | 3. 建模 34 | 35 | - 建立模型,用图形符号和组织规则书面描述事物。 36 | 37 | ![](../img/c2/建模.png) 38 | 39 | **模型核心:数据字典** 40 | 41 | ​ 描述软件使用和产生的**所有数据对象** 42 | 43 | **数据模型:实体关系图(E-R图)表达** 44 | 45 | ​ 描述**数据对象间**关系 46 | 47 | ​ 图中数据对象属性用“**数据对象描述**”表达 48 | 49 | **功能模型:DFD表达** 50 | 51 | ​ 描绘数据在软件中**移动,变换**及相应功能 52 | 53 | ​ 图中功能用“**处理规格说明**”表达 54 | 55 | **行为模型:状态转换图** 56 | 57 | ​ 描绘系统状态和在**不同状态**间转换方式 58 | 59 | ​ 图中软件控制附加信息用“**控制规格说明**”表达 60 | 61 | 4. 规格说明 62 | 63 | - 书写软件需求规格说明,作为分析阶段最终成果 64 | 65 | 5. 复审 66 | 67 | **** 68 | 69 | 70 | 71 | ### 3.1 数据模型 72 | 73 | - 数据模型组成 74 | 75 | - 数据对象 76 | 77 | 软件必须理解的复合信息表示,复合信息是具有一系列不同性质或属性的事物。 78 | 79 | 事务(报表)、地点(仓库)、角色(教师、学生)、单位(会计科)、行为(打电话)等 80 | 81 | - 数据对象间关系 82 | 83 | 对象彼此间相互连接方式,也称联系。 84 | 85 | 分三类: 1:1 1:N M:N 86 | 87 | - 属性 88 | 89 | 定义数据对象性质。 90 | 91 | 数据对象学生的属性可为学号、姓名、班级等。 92 | 93 | - 实体关系图 94 | 95 | ​ ![](../img/c2/实体-关系图.png) 96 | 97 | ![](../img/c2/实体-关系图实例.png) 98 | 99 | - 实例 100 | 101 | 请为某仓库的管理设计一个ER模型,该仓库主要**管理零件的订购**和**供应**等事项。**仓库向工程项目供应零件**,并且根据需要**向供应商订购零件**。 102 | “零件”的主要属性是:零件编号,零件名称,颜色,重量。 103 | 104 | “工程项目”的属性主要是:项目编号,项目名称,开工日期。 105 | 106 | “供应商”的属性主要有:供应商编号,供应商名称,地址。 107 | 108 | ![](../img/c2/仓库管理系统E-R图.png) 109 | 110 | **** 111 | 112 | 113 | 114 | ### 3.2 数据流图 115 | 116 | ​ 数据流图(DFD)描绘系统逻辑模型,图中没具体的物理元素,只描绘信息在系统中流动处理情况。 117 | 118 | ​ 是非常好通信工具和软件设计出发点。 119 | 120 | #### 3.2.1 数据流图符号 121 | 122 | - 四种基本符号: 123 | 124 | - 正方形(或立方体):表示数据的源点或终点 125 | 126 | ![](../img/c2/数据流图符号-正方形.png) 127 | 128 | - 圆角矩形(或圆形):代表变换数据的处理 129 | 130 | ![](../img/c2/数据流图符号-圆角矩形.png) 131 | 132 | - 开口矩形(两条平行横线):代表数据存储 133 | 134 | ![](../img/c2/数据流图符号-开口矩形.png) 135 | 136 | - 箭头:表示**数据流**、即**特定数据的流动方向** 137 | 138 | ![](../img/c2/数据流图符号-箭头.png) 139 | 140 | ![](../img/c2/简单的数据流图.png) 141 | 142 | - 数据流图附加符号 143 | 144 | ![](../img/c2/数据流图附加符号.png) 145 | 146 | #### 3.2.2 数据流图范例 147 | 148 | - 范例 149 | 150 | 工厂采购部**采购员**每天需一张**定货报表**,按零件编号排序列出所需定货零件。 151 | 152 | ​ 对定货零件列下述数据:零件编号、名称、定货数量、目前价格,主次要供应者等。 153 | 154 | ​ 零件入库或出库称**事务**,通过仓库终端把事务报告**定货系统**。零件库存量少于库存临界 值需订货。 155 | 156 | 157 | 158 | - 解法: 159 | 160 | 1. 从问题描述提取数据流图四种成分 161 | 162 | - 先考虑源点和终点 163 | 164 | 源点:仓库管理员 165 | 166 | 终点:采购员 167 | 168 | - 再考虑处理 169 | 170 | 处理:处理事务、产生报表等 171 | 172 | - 最后考虑数据流和数据存存储 173 | 174 | 数据流:事务、订货信息、订货报表 175 | 176 | 数据存储:订货信息、库存信息 177 | 178 | 2. 着手画数据流图的基本系统模型 179 | 180 | ![](../img/c2/范例-数据流图的基本系统模型.png) 181 | 182 | 3. 把基本系统模型细化,描绘系统主要功能 183 | 184 | ![](../img/c2/范例-数据流图的系统模型细化.png) 185 | 186 | 4. 主要功能进一步细化 187 | 188 | ![](../img/c2/范例-主要功能进一步细化.png) 189 | 190 | 5. 结束、进一步分解涉及如何具体实现功能时,不应再分解 191 | 192 | #### 3.2.3 分层数据流图 193 | 194 | ​ 为表达数据加工情况,需采用层次结构数据流图。 195 | 196 | ​ 顶层数据流图包含一个加工项; 197 | 198 | ​ 底层数据流图指加工项不再分解的数据流图; 199 | 200 | ​ 中间层流图只在顶层和底层之间,对其上层父图的细化。 201 | 202 | ![](../img/c2/分层数据流图示意图.png) 203 | 204 | - 分层法绘制流程图的几个问题 205 | 206 | 1. 编号的设置 207 | 208 | 子图的编号是父图相应的处理逻辑的编号。 209 | 210 | 子图中处理逻辑编号由子图号、小数点与局部号组成。 211 | 212 | ![](../img/c2/分层法-编号设置.png) 213 | 214 | 2. 父图与子图的平衡 215 | 216 | 子图详细地描述父图中处理逻辑 217 | 218 | 子图的输入、输出数据流应同父图处理逻辑的输入、输出数据流相一致。 219 | 220 | 3. 局部数据存储 221 | 222 | 在子图中出现的数据存储,可以不出现在父图中,画父图时只需画出处理逻辑之间的联系,不必画出各个处理逻辑内部的细节。 223 | 224 | #### 3.2.4 数据流图命名规则 225 | 226 | 1. 数据流(数据存储)命名 227 | 228 | 1. 用名词,区别于控制流 229 | 2. 代表整个数据流(数据存储)内容,不仅仅反映某些成分 230 | 3. 不要用缺乏具体含义名字,如“数据”、“信息” 231 | 232 | 2. 处理命名 233 | 234 | 1. 用动宾词组,避免使用“加工”,“处理”等 235 | 2. 应反映整个处理的功能,不是一部分功能 236 | 3. 通常仅包括一个动词,否则分解 237 | 238 | 3. 数据源点/终点 239 | 240 | 不属于数据流图的核心内容 241 | 242 | #### 3.2.5 数据流图用途 243 | 244 | 1. 作为**交流信息**的工具 245 | 246 | 2. 作为**分析和设计**的工具 247 | 248 | 用数据流图辅助物理系统设计时,可在数据流图上画出许多组**自动化边界**,每组自动化边界可能意味着不同的物理系统。 249 | 250 | ![](../img/c2/自动化边界划分方案一.png) 251 | 252 | ![](../img/c2/自动化边界划分方案二.png) 253 | 254 | #### 3.2.6 数据流图习题 255 | 256 | 工资计算系统包含如下功能: 257 | **计算工资** 258 | 根据**人事部门**给出的***出勤表***和***业绩表***计算**奖金和缺勤扣款**,通过***生成的奖金发放表***及***工资基本信息库的信息***计算**应发工资**,根据***应发工资表***计算**所得税**,根据**后勤部门**给出的***水电扣款***及***缺勤扣款表***和***所得税款***计算出**实发工资**,生成实发**工资表**和**工资清单**。 259 | 260 | **打印工资清单** 261 | 262 | 根据**工资清单**完成**工资条**的**打印**,给**职工** 263 | 264 | **工资转存** 265 | 266 | 根据**实发工资表**生成职工工资**存款清单**并将其发送到**银行** 267 | 268 | **请用数据流图描绘该系统。** 269 | 270 | ![](../img/c2/工资计算系统-顶层数据流图.png) 271 | 272 | ![](../img/c2/工资计算系统-功能级数据流图.png) 273 | 274 | ![](../img/c2/工资计算系统-细化功能级数据流图.png) 275 | 276 | ![](../img/c2/工资计算系统-细化功能级数据流图2.png) 277 | 278 | ### 3.3 状态转换图 279 | 280 | 软件的行为模型:状态、事件、行为。 281 | 282 | 状态:被观察到的系统行为模式。 283 | 284 | ![](../img/c2/状态.png) 285 | 286 | 事件:引起状态转换的外界事件抽象。 287 | 288 | ​ 箭头表示,箭头上标事件名。后跟[条件] 、表状态转换条件。 289 | 290 | 行为:进入某状态所作动作。 291 | 292 | ​ 状态框内do:行为名 293 | 294 | ![](../img/c2/状态图.png) 295 | 296 | ![](../img/c2/电话系统状态转换图.png) 297 | 298 | ### 3.4 数据字典 299 | 300 | 对系统使用的所有数据元素定义的集合,半形式化方法表达。 301 | 302 | - 数据字典定义方法 303 | 304 | 1. 数据流 305 | 306 | ![](../img/c2/数据流的描述.png) 307 | 308 | 2. 数据元素 309 | 310 | ![](../img/c2/数据元素的描述.png) 311 | 312 | 3. 数据存储 313 | 314 | ![](../img/c2/数据存储的描述.png) 315 | 316 | 4. 处理 317 | 318 | ![](../img/c2/处理的描述.png) 319 | 320 | - 数据字典定义符号 321 | 322 | 定义数据的方法:对数据自顶向下分解。 323 | 324 | 由数据元素组成数据的方式: 325 | 326 | 1. 顺序:以确定次序连接两个或多个数据元素; 327 | 2. 选择:从两个或多个可能元素中选一个; 328 | 3. 重复:把指定数据元素重复零次或多次; 329 | 4. 可选:一个数据元素可有可无。 330 | 331 | ![](../img/c2/数据字典-定义符号.png) 332 | 333 | 334 | 335 | ![](../img/c2/数据字典定义符号1.png) 336 | 337 | ![](../img/c2/数据字典定义符号2.png) -------------------------------------------------------------------------------- /notes_of_videos/第五章:面向对象方法学.md: -------------------------------------------------------------------------------- 1 | # 第五章 UML 2 | 3 | ## 一、面向对象方法学 4 | 5 | 传统软件工程方法学适用于中小型软件产品开发; 6 | 7 | 面向对象软件工程方法学适用于大型软件产品开发。 8 | 9 | 面向对象方法学方程式: 10 | 11 | ​ OO = 对象 + 类 + 继承 + 传递消息实现通信 12 | 13 | ### 5.1 面向对象方法学概念 14 | 15 | 1. 对象:具有相同状态的一组操作的集合,对状态和操作的封装。 16 | 17 | 形象表示: 18 | 19 | ![](../img/c5/对象.png) 20 | 21 | 2. 类 22 | 23 | 对具有相同状态和相同操作的一组相似对象的定义。 24 | 25 | 类是一个抽象数据类型。 26 | 27 | 3. 实例 28 | 29 | 实例是由某个特定类所描述的一个具体对象。 30 | 31 | ![](../img/c5/实例.png) 32 | 33 | 4. 消息 34 | 35 | 要求某对象执行某个操作的规格说明。 36 | 37 | 三部分: 38 | 39 | - 接受消息的对象 40 | - 消息名 41 | - 0或多个变元 42 | 43 | 5. 方法和属性 44 | 45 | - 方法:对象执行的操作,即类中定义的服务。 46 | - 属性:类中所定义数据,对客观世界实体具体性质的抽象。 47 | 48 | 6. 继承 49 | 50 | 子类自动共享基类中定义的属性和方法的机制。 51 | 52 | ![](../img/c5/继承.png) 53 | 54 | 7. 多态性 55 | 56 | 在类等级不同层次可共享一个方法名,不同层次每个类按各自需要实现这个方法。 57 | 58 | A是基类,B和C是A的派生类,多态函数Test参数是A的指针,Test函数可以引用A、B、C的对象 59 | 60 | - 优点: 61 | - 提高程序可复用性(接口设计的复用,不是代码实现的复用) 62 | - 派生类的功能可被基类指针引用,提高程序可扩充性和可维护性。 63 | 64 | 8. 重载 65 | 66 | 1. 函数重载 67 | 68 | 在同一作用域内,参数特征不同的函数可使用相同的名字。 69 | 70 | - 优点 71 | 72 | 调用者不需记住功能雷同函数名,方便用户; 73 | 74 | 程序易于阅读和理解。 75 | 76 | 2. 运算符重载 77 | 78 | 同一运算符可施加于不同类型操作数上面。 79 | 80 | ### 5.2 与传统方法学比较 81 | 82 | ![](../img/c5/与传统方法学比较.png) 83 | 84 | ![](../img/c5/与传统方法学比较2.png) 85 | 86 | ![](../img/c5/与传统方法学比较3.png) 87 | 88 | ### 5.3 面向对象方法学优点 89 | 90 | 1. 与人类习惯思维方法一致 91 | 92 | 对象是对现实世界正确抽象,问题空间和解空间结构一致。 93 | 94 | 2. 稳定性好 95 | 96 | 软件系统结构根据问题领域模型建立,功能需求变化不会引起软件结构整体变化,作局部性修改。 97 | 98 | 如从已有类派生新子类实现功能扩充或修改。 99 | 100 | 3. 可重用性好 101 | 102 | 传统软件重用技术:标准函数库。 103 | 104 | 面向对象重用技术:类,派生类和创建类的实例 105 | 106 | 4. 易开发大型软件产品 107 | 108 | 封装性好,易于分解,易于合作开发。 109 | 110 | 5. 可维护性好 111 | 112 | 稳定性好、容易修改、容易理解、易于测试和调试。 113 | 114 | ## 二、UML简介 115 | 116 | UML全称为Unified Modeling Language,目前最流行的面向对象建模语言。 117 | 118 | ### 2.1 建模必要性 119 | 120 | “建模是捕获系统本质的过程” 121 | 122 | - 捕获商业流程 123 | - 促进沟通 124 | - 管理复杂性 125 | - 定义软件构架 126 | - 促进软件复用 127 | 128 | ### 2.2 UML发展 129 | 130 | UML全称为Unified Modeling Language 131 | 132 | UML是图示化、说明、构造一个软件系统并生成其文档的标准语言。 133 | 134 | UML独立于开发过程,可与大多数面向对象开发过程配合使用 135 | 136 | UML独立于程序设计语言,可用C++、Java等任何一种面向对象程序语言实现。 137 | 138 | ### 2.3 UML构成 139 | 140 | ![](../img/c5/UML的构成.png) 141 | 142 | ![](../img/c5/UML的图.png) 143 | 144 | ### 2.4 UML视图 145 | 146 | ![](../img/c5/UML视图.png) 147 | 148 | 不同的视图突出特定的参与群体所关心的系统的不同方面,通过合并所有五个视图中得到的信息就可以形成系统的完整描述。 149 | 150 | 1. 用例视图 151 | 152 | 定义了系统的外部行为,是最终用户、分析人员和测试人员所关心。该视图定义了系统的需求,因此约束了描述系统设计和构造的某些方面的所有其他视图。 153 | 154 | 2. 设计视图 155 | 156 | 描述的是支持用例视图中规定的功能需求的逻辑结构。它由程序组件的定义,主要是类、类所包含的数据、类的行为以及类之间交互的说明组成。 157 | 158 | 3. 实现视图 159 | 160 | 描述构造系统的物理组件,这些组件包括如可执行文件、代码库和数据库等内容。这个视图中包含的信息与配置管理和系统集成这类活动有关。 161 | 162 | 4. 进程视图 163 | 164 | 进程视图包括形成并发和同步机制的进程和线程。 165 | 166 | 5. 部署视图 167 | 168 | 部署视图描述物理组件如何在系统运行的实际环境中分布。 169 | 170 | ## 三、UML静态建模——用例图 171 | 172 | 用例图描述外部执行者(actor)与系统的交互,表达系统功能,即系统提供服务。 173 | 174 | ![](../img/c5/UseCase.png) 175 | 176 | ![](../img/c5/actor.png) 177 | 178 | ![](../img/c5/UML用例图案例.png) 179 | 180 | 181 | 182 | 主要元素:**用例**和**执行者**。 183 | 184 | 用例:执行者与计算机一次典型交互,代表系统某一完整功能。 185 | 186 | 执行者:描述与系统交互的人或物,代表外部实体。 187 | 188 | ### 3.1 UML用例图案例 189 | 190 | 案例:建立一航空公司的机票预定系统,让客户通过电 191 | 话或网络买票、改变订票、取消订票、预定旅馆、租 192 | 车等等。 193 | 194 | 建立用例模型: 195 | 196 | 1. 发现执行者 197 | 198 | - 谁使用该系统; 199 | 200 | - 谁改变系统的数据; 201 | 202 | - 谁从系统获取信息; 203 | 204 | - 谁需要系统的支持以完成日常工作任务; 205 | 206 | - 谁负责维护、管理并保持系统正常运行; 207 | 208 | - 系统需要应付那些硬件设备; 209 | 210 | - 系统需要和那些外部系统交互; 211 | 212 | - 谁对系统运行产生的结果感兴趣。 213 | 214 | ![](../img/c5/用例图案例1.png) 215 | 216 | 2. 获取用例 217 | 218 | 向执行者提出问题获取用例: 219 | 220 | - 执行者需获取何种功能,需要作什么; 221 | - 执行者需读取、产生、删除、修改或存储系统中某种信息; 222 | - 系统发生事件和执行者间是否需要通信。 223 | 224 | 用户观点非系统观点 225 | 226 | ![](../img/c5/用户观点非系统观点.png) 227 | 228 | ![](../img/c5/用户观点非系统观点2.png) 229 | 230 | ![](../img/c5/机票预定系统用例.png) 231 | 232 | 3. 执行者间关联 233 | 234 | 泛化关系 235 | 236 | ![](../img/c5/泛化关系.png) 237 | 238 | 4. 用例间关系 239 | 240 | **泛化关系:** 241 | 242 | 一般关系与特殊关系 243 | 244 | ![](../img/c5/一般关系与特殊关系.png) 245 | 246 | 有父用例的行为,可出现在父用例出现的任何地方。添加自己行为。 247 | 248 | **扩展关系:** 249 | 250 | 允许一个用例扩展另一用例提供的功能,与泛化关联类似,有更多规则限制: 251 | 252 | 基本UseCase必须声明若干“扩展点”,扩展UseCase只能在扩展点上增加新行为。 253 | 254 | ![](../img/c5/扩展关系.png) 255 | 256 | **包含关系:** 257 | 258 | 一个基本UseCase行为包含另一个UseCase行为。 259 | 260 | ![](../img/c5/包含关系.png) 261 | 262 | Check Credit检查输入的信用卡号是否有效,有足够资金。处理Purchase Ticket用例,总运行Check Credit用例。 263 | 264 | ![](../img/c5/机票预订系统用例图.png) 265 | 266 | 267 | 268 | ## 四、状态转换图 269 | 270 | ### 4.1 UML状态转换图图形元素 271 | 272 | 表示一个对象生存史,显示触发状态转移的事件和因状态改变导致的动作 273 | 274 | 1. 状态 275 | 276 | ![](../img/c5/状态.png) 277 | 278 | 活动:活动名/动作表达式 279 | 280 | entry入口活动、exit出口活动、do内部执行活动 281 | 282 | ![](../img/c5/活动.png) 283 | 284 | 组合状态:包含嵌套的子状态 285 | 286 | ![](../img/c5/组合状态.png) 287 | 288 | 2. 状态转换 289 | 290 | 时间说明[ 守卫条件 ] / 动作表达式^发送子句 291 | 292 | 事件说明:事件名(参数表) 293 | 294 | 守卫条件:事件发生且守卫条件为真状态转换 295 | 296 | 动作表达式:状态转换开始,执行的表达式 297 | 298 | 发送子句:动作特例,在状态转换期间发送消息 299 | 300 | ![](../img/c5/状态转换.png) 301 | 302 | 3. 判定 303 | 304 | 工作流按保安条件取值发生分支。 305 | 306 | ![](../img/c5/判定.png) 307 | 308 | 4. 历史状态 309 | 310 | 转移到组合状态的历史状态,对象恢复上次离开组合状态的最后一个子状态。 311 | 312 | ![](../img/c5/历史状态.png) 313 | 314 | 315 | 316 | ### 4.2 UML状态转换图示例 317 | 318 | ![](../img/c5/历史状态2.png) 319 | 320 | ## 五、顺序图、协作图、活动图 321 | 322 | ### 5.1 消息 323 | 324 | 对象间交互通过消息。 325 | 326 | 1. 简单消息:没有描述通信的细节 327 | 328 | ![](../img/c5/简单消息.png) 329 | 330 | 2. 同步消息:调用者发出消息后等待消息返回后再继续执行。 331 | 332 | ![](../img/c5/同步消息.png) 333 | 334 | 3. 异步消息:调用者发出消息后不等待消息返回就继续执行 335 | 336 | ![](../img/c5/异步消息.png) 337 | 338 | 4. 返回消息:代表从过程调用的返回。 339 | 340 | 过程控制流:可省,隐含每个调用有配对返回。 341 | 342 | 非过程控制流(异步):不可省 343 | 344 | ### 5.2 顺序图(sequence diagram) 345 | 346 | 顺序图描述对象间交互关系。 347 | 348 | 对象用矩形表示,框内标对象名; 349 | 350 | 矩形框下的竖线代表对象的生命线; 351 | 352 | 对象生命线上的细长矩形框表示对象被激活; 353 | 354 | 对象间通信用对象间水平消息线表示,箭头形状表明消息类型(同步、异步或简单) 355 | 356 | ![](../img/c5/顺序图.png) 357 | 358 | ### 5.3 协作图(Collaboration diagram) 359 | 360 | 协作图描述相互协作对象间交互关系和链接关系。 361 | 362 | 顺序图着重表现交互时间顺序; 363 | 364 | 协作图着重表现交互对象的静态链接消息; 365 | 366 | 协作图显示对象间处理过程的分布。 367 | 368 | ![](../img/c5/协作图.png) 369 | 370 | ### 5.4 活动图(Activity diagram) 371 | 372 | 活动图描述为完成某一个用例需要做的活动以及这些活动的执行顺序。 373 | 374 | 活动图由状态图变化而来,各自用于不同目的。状态图着重描述对象的状态变化以及触发状态变化的事件活动图着重描述各种活动的执行顺序。 375 | 376 | 业务活动流的分劈和接合用粗短线(同步杆)表示。 377 | 378 | 一入多出为分劈; 379 | 380 | 多入单出为接合。 381 | 382 | ![](../img/c5/活动图.png) 383 | 384 | 泳道:对象对活动的责任。泳道把活动分成若干组,把组指定给对象,对象履行该组活动。 385 | 386 | ![](../img/c5/泳道.png) 387 | 388 | ## 六、 UML物理框架机制 389 | 390 | 系统架构:逻辑架构;物理架构。 391 | 392 | 逻辑架构:描述系统功能。用例图、类图、对象图、状态图、活动图、协作图、顺序图。 393 | 394 | 物理架构:关系的是实现。类和对象物理上分布在那个程序或进程中;程序进程在哪台计算机上运行;系统有哪些硬件设备,如何连接。**构建图**和**配置图**。 395 | 396 | ### 6.1 构件图 397 | 398 | 构件图(Component Diagrams)展现了一组构件的类型、内部结构和它们之间的依赖关系。 399 | 400 | 构件代表系统一物理实现块,一般作为一独立文件存在。 401 | 402 | 构件种类:**部署构件** **工作产品构件** **执行构件** 403 | 404 | - 部署构件 405 | 406 | 是构成一可执行系统必要构件,如操作系统,Java虚拟机。 407 | 408 | - 工作产品构件 409 | 410 | 开发过程产物,包括源代码文件及数据文件。构件不直接参与可执行系统,用来产生可执行系统的中间工作产品。 411 | 412 | - 执行构件 413 | 414 | 构件一可执行系统必要构件,动态链接库、exe文件、CORBA构件、.net构件等。 415 | 416 | ![](../img/c5/构件图.png) 417 | 418 | ### 6.2 配置图 419 | 420 | 配置图(Deployment diagram)描述了系统硬件和软件物理配置情况和系统体系结构,显示系统运行时刻的结构。 421 | 422 | 配置图包含结点和连接两个元素,配置图中的结点代表实际的物理设备以及在该设备上运行的构件和对象,结点的图符是一个立方体。 423 | 424 | 配置图各结点之间进行交互的通信路径称为连接,用结点间的连线表示。 425 | 426 | ![](../img/c5/配置图.png) 427 | 428 | 429 | 430 | ## 七、UML扩展机制 431 | 432 | 利用扩展机制,用户可定义使用自己的模型元素。 433 | 434 | ### 7.1 标签值 435 | 436 | 标签值是存储元素相关信息字符串,可附加在任何独立元素(图形元素、视图元素)。 437 | 438 | 标签是建模人员需要记录某些特性的名称; 439 | 440 | 值是给定特性的值。 441 | 442 | 标签值对项目管理特别有用,如元素创建日期、开发状态、完成日期和测试状态。 443 | 444 | 标签值用{}括起。 445 | 446 | ![](../img/c5/标签值.png) 447 | 448 | ### 7.2 约束 449 | 450 | 约束是用文字表达式表达的语义限制,对声明全局的或影响大量元素的条件特别适用。 451 | 452 | 约束表示为括号中的表达式字符串,附加在类、对象、关系上和注释上等。 453 | 454 | ![](../img/c5/约束.png) 455 | 456 | ![](../img/c5/约束2.png) 457 | 458 | ### 7.3 版类 459 | 460 | 版类(版型)在模型本身中定义的一种模型元素,UML元素具有通用语义,利用版类进行专有化和扩展,在已有元素上增加新语义。 461 | 462 | 版类用放置在基本模型元素符号中或附近的被《》括起 463 | 464 | 的文字串显示,还可为特殊版型创建图标,替换基本元素符号。 465 | 466 | ![](../img/c5/版型.png) 467 | 468 | 469 | 470 | ## 八、UML实例 471 | 472 | 拟开发一软件,完成学校管理中的教务部分功能,包括班级管理、课程管理、账户管理等。 473 | 474 | ### 8.1 用例图设计 475 | 476 | 主用例图: 477 | 478 | ![](../img/c5/主用例图.png) 479 | 480 | 班级管理子用例图 481 | 482 | ![](../img/c5/子用例图.png) 483 | 484 | 课程管理子用例图: 485 | 486 | ![](../img/c5/课程管理子用例图.png) 487 | 488 | 账户管理子用例图: 489 | 490 | ![](../img/c5/账户管理子用例图.png) 491 | 492 | 493 | 494 | ### 8.2 创建顺序图 495 | 496 | 账户管理顺序图: 497 | 498 | ![](../img/c5/账户管理顺序图.png) 499 | 500 | 501 | 502 | 账户管理协作图: 503 | 504 | ![](../img/c5/账户管理协作图.png) 505 | 506 | 删除账户顺序图: 507 | 508 | ![](../img/c5/删除账户顺序图.png) 509 | 510 | 修改账户顺序图: 511 | 512 | ![](../img/c5/修改账户顺序图.png) 513 | 514 | ### 8.3 创建类图 515 | 516 | 账户管理类图: 517 | 518 | ![](../img/c5/账户管理类图.png) 519 | 520 | 课程管理类图: 521 | 522 | ![](../img/c5/课程管理类图.png) 523 | 524 | 班级管理类图: 525 | 526 | ![](../img/c5/班级管理类图.png) 527 | 528 | ### 8.4 生成核心代码 529 | 530 | 详细功能代码可在实现软件时再补充,也可实现由代码到类图的逆向工程。 531 | 532 | 533 | 534 | ### 8.5 建立数据模型 535 | 536 | ![](../img/c5/建立数据模型.png) 537 | 538 | 数据模型转换为物理数据库: 539 | 540 | ![](../img/c5/数据模型转换为物理数据库.png) -------------------------------------------------------------------------------- /notes_of_videos/第八章:面向对象程序设计风格.md: -------------------------------------------------------------------------------- 1 | # 第八章 面向对象程序设计风格 2 | 3 | ## 8.1 面向对象实现 4 | 5 | - 把面向对象设计结果翻译成面向对象程序 6 | - 测试并调试面向对象的程序 7 | 8 | ## 8.2 程序设计语言 9 | 10 | 所有语言都可完成面向对象实现,但效果不同 11 | 12 | - 使用非面向对象语言编写面向对象程序,则必须由程序员自己把面向对象概念映射到目标程序中。 13 | - 选用面向对象语言的优点: 14 | - 将来能够占主导地位,产品有生命力 15 | - 可重用性 16 | - 类库和开发环境,考虑类库中提供有价值类,开发环境中提供基本软件工具和类库编辑工具及浏览工具。 17 | 18 | ## 8.3 程序设计风格 19 | 20 | - 提高可重用性 21 | - 提高方法的内聚 22 | - 减小方法的规模 23 | - 保持方法的一致性 24 | - 把策略与实现分开 25 | - 全面覆盖 26 | - 尽量不用全局信息 27 | - 利用继承机制 28 | - 提高可扩充性 29 | - 封装实现策略 30 | - 不要用一个方法遍历多条关联链 31 | - 避免使用分支语句 32 | - 精心确定公有方法 33 | - 提高健壮性 34 | - 预防用户操作错误 35 | - 检查参数合法性 36 | - 不预先确定限制条件 37 | - 先测试后优化 38 | 39 | ## 8.4 面向对象程序测试 40 | 41 | - 测试策略 42 | 43 | - ![](../img/c7/图片1.png) 44 | 45 | **单元测试** 46 | 47 | 单元:封装的类和对象 48 | 49 | 对程序内部具体单一功能模块测试,如程序用C++实现,主要对类成员函数测试。 50 | 51 | 传统的测试方法都可使用,等价类划分、边值分析、逻辑覆盖法、基本路径法。 52 | 53 | **集成测试** 54 | 55 | 在面向对象的软件中不存在层次的控制结构,传统的自顶向下或自底向上的集成测试就没有意义了。 56 | 57 | 此外,由于构成类的各个成分彼此间存在直接或间接的交互,一次集成一个操作到类中(传统的渐增式集成方法)通常是不现实的。 58 | 59 | 面向对象软件的集成测试主要有下述两种不同策略。 60 | 61 | **基于线程的集成测试:**把响应系统的一个输入或一个事件所需类集成起来。 62 | 63 | **基于使用的集成测试:**先测独立类,测完后测独立类下一层类(依赖类),到测完。 64 | 65 | **确认测试** 66 | 67 | 测用户可见动作,可识别系统输出。 68 | 69 | 根据动态模型和描述系统行为的脚本设计确认测试用例。黑盒法 70 | 71 | - 测试用例设计 72 | 73 | - 测试类的方法 74 | 75 | 1. 随机测试 76 | 2. 划分测试 77 | 1. 基于状态的划分 78 | 2. 基于属性的划分 79 | 3. 基于功能的划分 80 | 3. 基于故障的测试 81 | 1. 错误推测法 82 | 83 | - 集成测试方法 84 | 85 | 1. 多类测试 86 | 87 | 随机测试和划分测试 -------------------------------------------------------------------------------- /notes_of_videos/第六章:面向对象分析.md: -------------------------------------------------------------------------------- 1 | # 第六章 面向对象分析 2 | 3 | 面向对象分析过程 4 | 5 | - 获取需求 6 | 7 | - 与用户交谈,向用户提问题; 8 | - 参观用户的工作流程,观察用户的操作; 9 | - 向用户群体发调查问卷; 10 | - 与同行、专家交谈,听取他们的意见; 11 | - 分析已经存在的同类软件产品,提取需求; 12 | - 从行业标准、规则中提取需求; 13 | - 从Internet上搜查相关资料等。 14 | 15 | - 整理需求 16 | 17 | - 书写需求陈述:需求陈述内容包括问题范围,功能需求,性能需求,应用环境及假设条件。 18 | 19 | - 建立模型 20 | 21 | - 抽取整理用户需求建立问题域精确模型。 22 | 23 | 面向对象分析模型由三个独立模型组成: 24 | 25 | - 功能模型:用例图 26 | 27 | 1. 识别外部执行者; 28 | 2. 识别用例; 29 | 3. 建立用例图; 30 | 4. 补充用例描述:为建立对象模型和动态模型打基础。 31 | 32 | - 对象模型:类图和对象图 33 | 34 | 1. 确定分析类; 35 | 36 | 1. 找出候选分析类:边界类、控制类、实体类 37 | 38 | **确定边界类:**通常,一参与者与一用例间交互或通信关联对应一边界类。 39 | 40 | ![](../img/c6/确定边界类.png) 41 | 42 | **识别控制类:**控制类负责协调边界类和实体类,通常在现实世界没有对应的事物。一般来说,一个用例对应一个控制类。 43 | 44 | ![](../img/c6/识别控制类.png) 45 | 46 | **识别实体类:**实体类通常是用例中的参与对象,对应这现实世界中”事物“ 47 | 48 | ![](../img/c6/识别实体类.png) 49 | 50 | 2. 确定类的关联; 51 | 52 | 1. 初步确定关联 53 | 54 | 动词或动词词组; 55 | 56 | 隐含关联; 57 | 58 | 与用户及领域专家讨论补充 59 | 60 | 2. 筛选 61 | 62 | 已删去类之间关联 63 | 64 | 删掉某候选类,与这个类有关的关联也删去,或重新表达。 65 | 66 | 3. 进一步完善 67 | 68 | 3. 划分主题; 69 | 70 | 4. 确定属性; 71 | 72 | 1. 误把类当属性 73 | 2. 误把链属性作为属性 74 | 3. 误把限定当属性 75 | 4. 误把内部状态当属性 76 | 5. 过于细化 77 | 6. 存在不一致属性 78 | 79 | 5. 识别继承; 80 | 81 | 6. 反复修改。 82 | 83 | - 动态模型:状态图和顺序图。 84 | 85 | 1. 编写脚本:脚本描述用户与目标系统间的一个或多个典型交互过程。 86 | 1. 正常情况脚本 87 | 2. 异常情况脚本 88 | 3. 错误情况脚本 89 | 2. 画顺序图:从脚本提取所有外部事件,确定每类事件发送和接受对象。针对系统中的典型功能,画出顺序图。 90 | 3. 画状态图:用一张状态图描述类的行为,集中考虑具有交互行为类。 91 | 92 | - 书写需求规格说明书 93 | 94 | - 复审 95 | 96 | -------------------------------------------------------------------------------- /notes_of_videos/第四章:结构化系统实现.md: -------------------------------------------------------------------------------- 1 | # 第四章 结构化系统实现 2 | 3 | ## 一、编码 4 | 5 | 编码的目的 6 | 7 | - 把模块的过程性描述翻译为用选定的程序设计语言书写的源程序 8 | 9 | 依据 10 | 11 | - 编码的主要依据是概要设计和详细设计说明文档 12 | 13 | 任务 14 | 15 | - 理解概要设计和详细设计说明书 16 | - 遵循编码原则和风格进行翻译,形成源代码 17 | 18 | 程序设计语言分类 19 | 20 | ![](../img/c4/程序设计语言分类.png) 21 | 22 | 1. 机器语言 23 | 24 | 1011011000000000:加法 25 | 26 | 1011010100000000:减法 27 | 28 | - 优点:计算机直接识别 29 | - 缺点:效率低,重用性差 30 | 31 | 2. 汇编语言 32 | 33 | 机器指令助记符 34 | 35 | - 机器指令:10000100111011000 36 | 37 | - 汇编指令:MOV AX,BX 38 | 39 | ![](../img/c4/汇编指令.png) 40 | 41 | - 优点 42 | 43 | - 比机器语言易读写、易调试和修改 44 | - 执行速度块、占内存少 45 | - 针对硬件编制 46 | 47 | - 缺点 48 | 49 | - 不能编写复杂程序 50 | - 依赖于机型、不通用、不可移植 51 | 52 | 3. 高级语言 53 | 54 | 与自然语言相近,面向用户的语言 55 | 56 | - 优点 57 | - 编码效率高 58 | - 通用性强,兼容性好,便于移植 59 | - 缺点 60 | - 运行效率低 61 | - 对硬件操作不如汇编 62 | 63 | 4. 语言选择标准 64 | 65 | - 系统用户要求 66 | 67 | 如果开发系统由用户维护,通常要求用熟悉的语言书写 68 | 69 | - 可以使用的编译程序 70 | 71 | 运行目标系统环境可提供编译程序限制可选用语言的范围 72 | 73 | - 可以得到的软件工具 74 | 75 | 有支持程序开发的软件工具可以利 76 | 77 | - 工程规模 78 | 79 | 规模庞大,现有语言不适用,设计实现供该工程项目使用程序设计语言 80 | 81 | - 程序员知识 82 | 83 | 如果和其他标准不矛盾,应选择程序员熟悉的语言 84 | 85 | - 软件可移植性要求 86 | 87 | 若目标系统在不同计算机上运行,选择可移植性好的语言 88 | 89 | - 软件的应用领域 90 | 91 | 选择语言时应充分考虑目标系统的应用范围 92 | 93 | 5. 编码风格 94 | 95 | 逻辑简明清晰、易读易懂是重要标准 96 | 97 | 可遵循一下五方面规则 98 | 99 | 1. 程序内部的文档 100 | 2. 数据说明 101 | 3. 语句构造(简单) 102 | 4. 输入输出 103 | 5. 效率(和存储容量) 104 | 105 | **** 106 | 107 | ## 二、软件测试基础 108 | 109 | 软件测试的目标: 110 | 111 | 1. 测试是为了**发现程序中的错误**而执行程序的过程; 112 | 2. 好的测试方案是极有可能发现迄今尚未**发现的尽可能多的错误**的测试; 113 | 3. 成功的测试是发现了迄今**尚未发现的错误**的测试。 114 | 115 | 黑盒测试和白盒测试 116 | 117 | - 黑盒测试:如果知道产品应具有**功能**,可通过测试来检验是否每个功能都能正常使用。 118 | - 白盒测试:如果知道产品**内部工作过程**可通过测试来检验产品内部动作是否按照规格说明书的规定正常进行。 119 | 120 | 测试准则 121 | 122 | 1. 所有测试应能追溯到用户需求,测试的目的是发现错误,其中最严重的是不能满足用户需求的错误。 123 | 124 | 2. 应尽早地和不断地进行软件测试。 125 | 126 | 不应把软件测试看作是软件开发一独立阶段,应把它贯穿到软件开发各阶段中。 127 | 128 | 3. 充分注意测试中群集现象 129 | 130 | 测试后程序中残存错误数与程序中已发现错误数目成正比,80%错误与20%模块有关。 131 | 132 | 4. 测试应从小规模开始,逐步进行大规模测试。 133 | 134 | 耽搁模块,逐步集成。 135 | 136 | 5. 不能做到穷举测试 137 | 138 | 穷举测试:程序所有可能执行路径都检查遍。 139 | 140 | 6. 第三方测试原则 141 | 142 | 从心理学角度考虑。 143 | 144 | ## 三、逻辑覆盖 145 | 146 | 1. 语句覆盖 147 | 148 | 选择测试数据,使被测程序中每个**语句**至少执行一次。 149 | 150 | ![](../img/c4/语句覆盖.png) 151 | 152 | ![](../img/c4/语句覆盖2.png) 153 | 154 | 2. 判定覆盖 155 | 156 | 每个语句至少执行一次,每个判定的**真假分支**至少执行一次。 157 | 158 | ![](../img/c4/判定覆盖.png) 159 | 160 | 3. 条件覆盖 161 | 162 | 每个语句至少执行一次,判定表达式每个**条件**取各种可能结果。 163 | 164 | ![](../img/c4/条件覆盖.png) 165 | 166 | 4. 判定/条件覆盖 167 | 168 | 取足够多测试数据,使判定表达式每个**条件**都取各种可能值,且每个**判定**表达式也都取到各种可能结果。 169 | 170 | ![](../img/c4/判定-条件覆盖.png) 171 | 172 | 5. 条件组合覆盖 173 | 174 | 选足够多的数据,是每个判定表达式中条件的**各种组合**都至少执行一次 175 | 176 | ![](../img/c4/条件组合覆盖.png) 177 | 178 | 179 | 180 | ## 四、控制结构测试 181 | 182 | ### 4.1 基本路径测试 183 | 184 | Tom McCabe提出的一种白盒测试技术 185 | 186 | 1. 根据过程设计结果画出相应流图 187 | 188 | 2. 计算流图的环形复杂度 189 | 190 | ![](../img/c4/环形复杂度的计算.png) 191 | 192 | 193 | 194 | ![](../img/c4/基本路径测试实例.png) 195 | 196 | 3. 确定线性独立路径的基本集合 197 | 198 | - 独立路径:至少包含一条在定义改路径之前不曾用过的边。 199 | 200 | ![](../img/c4/独立路径.png) 201 | 202 | - 环形复杂度为独立路径基本集的上界 203 | 204 | 4. 设计测试用例覆盖基本集合的路径 205 | 206 | ### 4.2 循环测试 207 | 208 | ![](../img/c4/循环测试.png) 209 | 210 | 1. 简单循环 211 | 212 | 1. 零次循环:从循环入口直接跳到循环出口。 213 | 2. 一次循环:查找循环初始值方面的错误。 214 | 3. 二次循环:检查在多次循环时才能暴露的错误。 215 | 4. m次循环:此时的m