软件工程学
中国科学技术大学网络学院
第4章 软件设计方法4.1 4.2 4.3 4.4 4.5 4.6 软件设计的目标和任务 软件设计基础 模块独立性 结构化设计方法 数据设计和文件设计 过程设计
4.1软件设计的目标和任务 根据用信息域表示的软件需求, 以及功能和性能需求,进行 数据设计 系统结构设计 接口设计 过程设计。
数据设计需求分析阶段创建的信息模型 转变成实现软件所需要的数据结构。 系统结构设计确定程序由哪些模块组成 以及这些模块相互间的关系。 接口设计的结果描述了软件内部、软件 与协作系统之间以及软件与使用它的人 之间的通信方式。 过程设计则是把结构成份转换成软件的 过程性描述。在编码步骤,根据这种过 程性描述,生成源程序代码,然后通过 测试最终得到完整有效的软件。
开发阶段的信息流信息域需求设计 数据设计 系统结构设计
功能与性 过程设计 能需求
编码
程序模块测试
组装好的有效的软件
软件设计是后续开发步骤及软件维 护工作的基础。如果没有设计,只 能建立一个不稳定的系统结构
软件设计任务 从工程管理的角度来看,软件设计 分两步完成。 – 概要设计,将软件需求转化为数 据结构和软件的系统结构。 – 详细设计,即过程设计。通过对 结构表示进行细化,得到软件的 详细的数据结构和算法。
软件设计过程1. 制定规范 在进入软件开发阶段之初,首先应 为软件开发组制定在设计时应该共 同遵守的标准,以便协调组内各成 员的工作。包括:
– 阅读和理解软件需求说明书,确 认用户要求能否实现,明确实现 的条件,从而确定设计的目标, 以及它们的优先顺序
– 根据目标确定最合适的设计方法
– 规定设计文档的编制标准
– 规定编码的信息形式,与硬件, 操作系统的接口规约,命名规则
2. 软件系统结构的总体设计 基于功能层次结构建立系统。 – 采用某种设计方法,将系统按功 能划分成模块的层次结构 – 确定每个模块的功能 – 建立与已确定的软件需求的对应 关系 – 确定模块间的调用关系 – 确定模块间的接口 – 评估模块划分的质量
3. 处理方式设计 确定为实现系统的功能需求所必需 的算法,评估算法的性能 确定为满足系统的性能需求所必需 的算法和模块间的控制方式 – 周转时间 – 响应时间 – 吞吐量 – 精度 确定外部信号的接收发送形式
4. 数据结构设计 确定软件涉及的文件系统的结构以 及数据库的模式、子模式,进行数 据完整性和安全性的设计 确定输入,输出文件的详细的数据 结构 结合算法
设计,确定算法所必需的 逻辑数据结构及其操作 确定对逻辑数据结构所必需的那些 操作的程序模块(软件包)
限制和确定各个数据设计决策的影 响范围 若需要与操作系统或调度程序接口 所必须的控制表等数据时,确定其 详细的数据结构和使用规则 数据的保护性设计– 防卫性设计:在软件设计中就插 入自动检错,报错和纠错的功能
一致性设计: – 保证软件运行过程中所使用的数 据的类型和取值范围不变 – 在并发处理过程中使用封锁和解 除封锁机制保持数据不被破坏 冗余性设计:针对同一问题,由两 个开发者采用不同的程序设计风格 不同的算法设计软件,当两者运行 结果之差不在允许范围内时,利用 检错系统予以纠正,或使用表决技 术决定一个正确结果。
5.可靠性设计 可靠性设计也叫做质量设计 在运行过程中,为了适应环境的变 化和用户新的要求,需经常对软件 进行改造和修正。在软件开发的一 开始就要确定软件可靠性和其它质 量指标,考虑相应措施,以使得软 件易于修改和易于维护。