系统分析
系统方案说明书
步骤:
- 认识理解当前现实环境,获取当前系统的物理模型
- 抽象出逻辑模型
- 分析和优化建立目标系统的逻辑模型
- 具体化、物理化,尽力目标系统的物理模型
将现有系统的物理模型转换为目标系统的物理模型
内聚
- 偶然内聚:无直接关系
- 逻辑内聚:逻辑相似、参数决定
- 时间内聚:同时执行
- 过程内聚:指定的过程顺序
- 通信内聚:相同的数据结构、相同输入输出
- 顺序内聚:顺序执行、输入为输出
- 功能内聚:共同作用、缺一不可
耦合
- 无直接耦合:无直接关系
- 数据耦合:传递数据值调用
- 标记耦合:传递数据结构
- 控制耦合:控制变量、选择之星某一功能
- 外部耦合:软件外部环境
- 公共耦合:公共数据结构
- 内容耦合:模块内部关联
系统设计
概要设计、详细设计
WebApp
结构化分析
结构化的分析方法SA:自顶向下,逐步分解,面向数据,强调分析对象的数据流,需要建立:
- 功能模型(数据流图)
- 行为模型(状态转换图)
- 数据模型(E-R图)
- 数据字典(数据元素、数据结构、数据流、数据存储、加工逻辑、外部实体)
数据流图
数据在系统中如何被传送或变换,如何对数据流进行变换的功能或子功能
基本原则:
- 数据守恒:所有输出数据流中的数据必须能从该加工的输入数据流中直接获得,或是通过该加工能产生的数据
- 守恒加工原则:对同一个加工,输入与输出的名字必须不相同,即使组成成分相同
- 对于每个加工,必须既有输入数据流,又有输出数据流
- 外部实体与外部实体之间不存在数据流
- 外部实体与数据存储之间不存在数据流
- 数据存储与数据存储之间不存在数据流
- 父图与子图平衡:子图的输入输出数据流通父图相应加工的输入输出数据流必须一致,父图与子图之间的平衡原则不存在于单张图
- 数据流与加工有关,且必须经过加工
数据字典
定义出现在数据流图中的符号或名称的含义
测试
- 今早并不断进行测试
- 避免由原开发软件的人测试
阶段
- 单元测试:单个模块,依据是软件详细说明书
- 集成测试:模块组合起来测试,分为一次性组装和增量想组装
- 确认测试:已完成的软件,分为内部确认测试、Alpha测试(用户在开发环境)、Beta测试(用户在实际环境)、验收测试()用户根据SRS)
- 系统测试:对软件进行性能测试:负载测试、强度测试、容量测试、可靠性测试等,采用黑盒测试方法
- 回归测试:软件修改错误或变更后测试
方法
- 动态测试
- 黑盒
- 白盒
- 灰盒:既有黑盒又有白盒
- 静态测试
- 桌前检查:程序员自己检查自己
- 代码审查:评审小组
- 代码走查:测试人员提供测试用例,运行用例开会测试
策略
- 自底向上:从最底层,要写驱动程序,逐一合并模块,可以较早验证底层模块
- 自顶向下:先测试整个系统,需要编写桩程序,而后逐步向下最后测试最底层模块,可以较早验证系统的主要控制和判断点
- 三明治:二者都有,工作量大
测试用例设计
黑盒
- 等价类划分:数据按照某种特性归类,每类数据选一个
- 边界值划分:每类边界值作为测试用例,边界值取分为范围两端值及此范围外的于此范围间隔最小的两个值
- 错误推断:凭经验推测可能有问题的地方
- 因果图:由结果反推原因
白盒
- 语句覆盖:所有语句
- 判定覆盖:所有判断语句的条件的真假分支
- 条件覆盖:对于一个条件可能是组合的(KaTeX parse error: Expected 'EOF', got '&' at position 7: a > 0 &̲& b < 0),针对每个独立的条件都要做真假分支的测试
- 判定/条件覆盖:判定中每个条件的所有可能取值至少出现一次,并且每个判定这本身的结果(真假)也要出现一次
- 条件组合覆盖:每个判定条件中条件的各种可能值的组合都至少出现一次
- 路径覆盖:逻辑代码中所有可行路径都覆盖
测试
- 蛮力法
- 回溯法:从出错的地方开始往回找
- 原因排除法:演绎、归纳、二分
系统转换
- 直接转换
- 并行转换
- 分段转换
数据转换与迁移
ETL
- 系统切换前通过工具迁移
- 系统切换前采用手工录入
- 系统切换后通过新系统生成