本系列文章为笔记,内容根据北京大学《软件工程》MOOC
初始化模块结构图精化的启发式规则
常见的启发式规则
- 什么叫做“启发式”
- 根据设计准则,从长期的软件开发实践中,总结出来的规则
- 既不是设计目标,也不是设计时应该普遍遵循的原理
- 常见的六种启发式规则
- 改进软件结构,提高模块独立性
- 通过模块的分解和合并,力求降低耦合,提高内聚
- 模块规模适中-每页60行语句
- 最好控制在一页纸内
- 分解过大的模块
- 深度、宽度、扇入和扇出适中
- 扇入:表示有多少个上级模块直接调用它
- 扇出:一个模块控制的下级模块的数量
- 好的系统:顶层扇出高,中层扇出少,底层扇入高,系统呈“葫芦”型
- 改进软件结构,提高模块独立性
- 模块的作用域力争在控制域之内
- 作用域:受该模块内一个判定影响的所有模块的集合
- 控制域:模块本身+所有直接或者间接从属于它的模块的集合
- 降低模块接口的复杂性
- 使得信息传递简单并且和模块的功能一致
- 接口复杂或不一致容易增加耦合
- 模块功能应该可以预测
- 相同的输入有相同的输出
- 示例
输入部分的精化
sps:转速的每秒信号量
rpm:每分钟转速
mph:每小时英里数
gph:每小时燃烧的燃料数 输出部分的精化
变换部分的精化
对于变换部分的求精,是一项具有挑战性的工作。其中主要是根据设计准则,并要通过实践,不断地总结经验,才能设计出合理的模块结构
接口设计
分类
- 模块间的接口设计(内部接口)
- 软件与其他软硬件系统之间的接口设计(外部接口)
- 软件与用户之间的交互设计
系统的接口设计是由穿过系统边界的数据流定义的
在最终的系统中,数据流将成为用户界面中的表单、报表或与其它系统进行交互的文件或通信 人机交互界面
在设计阶段,必须根据需求把交互细节加入到用户界面设计中,包括人机交互所必须的实际显示和输入
用户界面应具备的特性
- 可使用性:是用户界面设计最重要的目标。包括使用简单、界面一致、充分提示、快速响应、低运行成本、健壮性等
- 灵活性:考虑到用户特点。应该使用户接口满足不同用户的要求。对不同的用户,应有不同的界面形式,但不同的界面不应该影响功能
- 可靠性:用户界面的可靠性是指无故障使用的间隔时间。用户界面应能保证用户正确、可靠地使用系统,保证程序和数据的安全性
界面设计类型
- 外行型
- 初学型:需要很多界面支持
- 熟练型:需要较少的界面支持,但不能处理意外错误
- 专家型:需要为他们提供能够修改和扩充系统能力的复杂界面
选用界面形式(表格,图形,菜单,对话,窗口等)的时候,应该考虑每种类型的优点和限制,可以从以下方面考察
- 使用的难易度
- 学习的难易度
- 操作速度
- 复杂程度
- 控制:人机交互时,由计算机还是由人发起和控制接口
- 开发的难易程度:该界面设计是否有难度,工作量多大
一个界面的设计通常使用一种以上的设计类型,每种类型与一个或一组任务相匹配
设计原则
- 一致性
- 操作步骤少
- 不要“哑播放”
- 提供Undo功能
- 减少用户记忆负担
- 提高学习效率
数据设计
在设计阶段必须对要存储的数据及其格式进行设计 文件设计
适合选择文件存储的情况:
- 数据量较大的非结构化数据(多媒体)
- 数据量大,信息松散(历史记录、档案)
- 非关系层次化数据(系统配置文件)
- 对数据的存取速度要求极高的情况
- 临时存放的数据
文件设计的主要工作就是根据使用要求、处理方式、存储的信息量、数据的活动性以及所提供的设备条件等确定文件类型,选择文件媒体,决定文件组织方法,设计文件记录格式,并估算文件的容量 数据库设计
在结构化设计中,很容易将结构化分析阶段建立的数据字典和 实体-关系 模型映射到关系数据库中
- 数据对象的映射
- 关系的映射