系统设计
概要设计与详细设计
概要设计:总体结构设计、数据结构与数据库设计、文档、评审
详细设计:模块内算法,模块内数据结构,数据库物理设计,代码,用户界面,文档,评审
系统设计原则
- 分解-协调
- 自顶向下
- 信息隐蔽和抽象
- 一致性
- 明确性
- 模块高内聚低耦合
- 模块扇入扇出系数合理
- 模块规模适当
WebAPP设计
多数采用敏捷开发(应用级别)
WebAPP需求模型
- 内容模型:web界面包含的内容
- 交互模型:用户与webApp采用的交互方式,用例,顺序(流程),状态,原型(布局)
- 功能模型:计算与操作功能
- 导航模型:超链接
- 配置模型:描述WebApp所在环境与基础设施
WebApp设计
- 架构设计:框架设计,用户,界面,数据的交互,常用设计构架—MVC(模型视图控制器)
- 构件设计:单模块设计,是内容与功能的聚合包
- 内容设计:内容对象的表现与导航的组织
- 导航设计:定义导航路径
数据流图
结构化分析简称SA,自顶向下,逐步分解,是面向数据的,需建立数据流图(功能分析),状态转换图(行为分析),E-R图(建立数据模型),数据字典(名称解释),其核心考点为数据流图
构件
元素 | 图元 |
---|---|
数据流 | |
加工 | |
数据存储 | |
外部实体 |
原则
- 数据流必须经过加工,即输入源和输出源,必定有一方是加工
- 父图与子图的输入输出流必须一致
- 同一个加工,输入与输出的名字必须不同
- 数据的来源,必须是输入数据加工后能产生的,或者就是输入数据的部分
测试
测试类型
- 动态测试
- 黑盒测试:功能性测试,根据功能设计用例,测试软件
- 白盒测试:结构性测试,根据代码逻辑设计用例,进行用例覆盖
- 静态测试
- 桌前自测:程序员自测
- 代码审查:评审小组审查
- 代码走查:测试提供输入条件,程序员对代码逐行调试,是否符合原设计逻辑
测试策略
- 自底向上:需编写驱动程序,逐一合并模块
- 自顶向下:需编写桩程序,逐步向下测试
- 三明治:都做,但工作量大
测试阶段
- 单元测试
- 集成测试
- 确认测试
- 内部确认测试:内部根据SRS设计文档,测试
- Alpha测试:用户开发环境测试
- Beta测试:用户实际使用环境测试
- 验收测试
- 系统测试:测试是否满足设计需求与合同要求
- 配置项测试:
- 回归测试:测试软件变更后,变更部分的正确性,原有功能的不损害性
测试用例
黑盒测试用例
- 等价类划分:同类取一,一次只能设置一个错误条件,控制变量
- 边界值划分:边界值也要测一下
- 错误推测:凭经验判断,可能出错的点,进行测试
- 因果图:结构反推原因,无固定方法
白盒测试用例
- 语句覆盖SC:所有语句都要执行一遍
- 判断覆盖DC:每个判定条件的真和假都要被覆盖
- 条件覆盖CC:单个判断条件内的每个独立子条件都要执行一遍真和假
- 条件判定组合覆盖CDC:同时满足判断覆盖与条件覆盖
- 多条件覆盖MCC:n个子条件的测试用例为2^n
- 修正判定条件覆盖MCDC:控制变量
- 路径覆盖:所有可行路径均覆盖
系统转换
直接转换:风险大,有点节约成本
并行转换:新系统试运行,优点:风险小,可对新旧系统性能进行比较,缺点:成本高,数据转换难
分段转换:拆分子系统,依次试用运行每个子系统。缺点:耗时,需协调数据接口
数据转换与迁移:
- 系统切换前工具迁移
- 系统切换前手动录入
- 系统切换后通过新系统生成
- 转换过程ETL:抽取,转换,装载