软件的设计工程
概要设计
设计原则
- 抽象、逐步求精
- 模块化
- 信息隐蔽与局部化
- 复用性
模块独立性衡量标准
耦合:模块之间相对独立性
- 非直接耦合:模块之间没有联系
- 数据耦合:不同模块之间传递简单参数(数值型)
- 标记耦合:不同模块之间穿的的参数是某个复杂数据结构的一部分
- 控制耦合:不同模块之间传递的参数包含的控制信息
- 外部耦合:不同模块能访问简单的全局变量(数值型)
- 公共耦合:不同模块能访问复杂的公共的区域(数组、结构体、类...)
- 紧密公共耦合:不同模块对公共区域,同时具有读写权限
- 松散公共耦合:不同模块对公共区域,只有读或写权限
- 内容耦合:访问其他模块内部数据,非正常入口进入模块内部,模块间有代码重叠,模块有多个入口
内聚:模块内部元素的紧密成度
- 功能内聚:一个模块完成一个功能
- 信息内聚:多个功能,对同一个操作对象进行操作,且入口唯一
- 通信内聚:内部多个功能使用相同输入数据,产生不同的输出结果;或使用不同的输入数据,产生相同的输出结果
- 过程内聚:模块内部多个功能都要执行,时间上串行执行按照一定顺序要求,且无数据传递(同一操作对象)
- 时间内聚:模块内部多个功能都要执行,时间上串行执行无顺序要求,(同一操作对象)
- 逻辑内聚:根据参数的控制信息反应出不同的功能,(同一操作对象)
- 巧合(偶然)内聚:模块内部元素没有联系,(不同操作对象)
软件体系结构图
模块调用
- 一般调用:调用模块箭头指向被调用模块
- 条件调用:菱形
- 循环调用:弧形
数据通信
- 数据信息:尾部空心箭头
- 控制信息:尾部实心箭头
结构图的相关概念
好的体系结构:顶层高扇出,中层和底层高扇入
- 结构的深度:层数
- 结构的宽度:最大宽度层的宽度
- 扇出:一个模块直接调用的模块数量
- 扇入:一个模块直接被调用的模块数量
体系结构设计方法
结构化设计方法(SD数据流图转换为体系结构图)
变换分析策略
多条输入经过变换中心输出一条输出
事务分析策略
一条输入经过事务中心输出多条输出
面向对象设计方法
详细设计
代码设计(编号)
- 顺序码
- 分段码
- 字母码:首字母缩写
- 组合码:顺序、分段、字母编码方式组合
- 混合码:字符、数字混合
- 特征组合码:人为规定的标记码
数据库设计(物理数据库)
步骤
- 数据需求分析:在系统分析阶段以数据流图和数据字典为依据
- 数据概念模型设计:ER图
- 将概念模型转换为数据模型
- 结构规范化
- 物理设计
ER图
- 实体:矩形
- 关系:菱形
- 关系的类型
- 一对一:实体各自对应一张表,任意一段存外键,该外键是另一端的主键
- 一对多:实体各自对应一张表,多的一端存外键,该外键是少的一端的主键
- 多对多:实体各对应一张表,将实体中的主键拿到关系表中充当联合主键
- 关系的元或度
- 自关联:一张表,增加一个自关联外键参照该表主键
- 二元关系
- 多元关系:每个实体对应一张表,将每个实体中的主键拿到关系表中充当联合主键
- 关系的类型
- 属性:椭圆
- 主键属性:下划线
- 外码属性:波浪线
- 域:属性的取值范围
人机界面设计
- 置用户于控制之下
- 减少用户的记忆负担
- 保持界面一致
交互设计
菜单方式:合理分类,合理分级
会话方式:提示和警告确认
错误消息:简洁,礼貌,明了
输入输出设计
输出类型:外部输出,内部输出
输入类型:外部输入、计算机输入
输入格式注意顺序
处理过程设计
目的:为编程和测试提供依据
方式:
- 程序流程图
- 盒图
- 问题分析图(PAD图)
Comments NOTHING