软件设计师考试 | 第六章 结构化开发方法 | 系统分析与设计概
结构化方法由结构化分析、结构化设计、结构化程序设计构成,它是一种面向数据流的开发方法。
结构化分析是根据分解与抽象的原则,按照系统中数据处理的流程,用数据流图来建立系统的功能模型,从而完成需求分析工作。
结构化设计是根据模块独立性准则、软件结构优化准则将数据流图转换为软件的体系结构,用软件结构图来建立系统的物理模型,实现系统的概要设计。
结构化程序设计使用三种基本控制结构构造程序,任何程序都可以由顺序、选择和重复三种基本控制结构构造。
(一)系统分析概述
系统分析是一种问题求解技术,它将一个系统分解成各个组成部分,目的是研究各个部分如何工作、交互,以实现其系统目标。
1.系统分析的目的和任务
目的: 为项目团队提供对触发项目的问题和需求的更全面的理解
主要任务:
- 对现行系统进一步详细调查
- 将调查中所得到的文档资料集中
- 对组装内部整体管理状况和信息处理过程进行分析
- 为系统开发提供所需的资料
- 提交系统方案说明书
2.系统分析的主要步骤
- 对当前系统进行详细调查,收集数据;
- 建立当前系统的逻辑模型;
- 对现状进行分析,提出改进意见和新系统应达到的目标;
- 建立新系统的逻辑模型;
- 编写系统方案说明书。
(二)系统设计的基本原理
1.抽象
抽象是一种设计技术,重点说明一个实体的本质方面,而忽略或者隐藏不太重要或非本质的方面。
2.模块化
模块是在程序中是数据说明、可执行语句等程序对象的集合,或者是单独命名和编址的元素,例如高级语言中的过程、函数和子程序等。
模块化是指将一个待开发的软件分解成若干个小的简单部分——模块,每个模块可独立地开发、测试、最后组装成完整的程序。
3.信息隐蔽
信息隐蔽是开发整体程序结构时使用的法则,即将每个程序的成分隐蔽或封装在一个单一的设计模块中,在定义每一个模块时尽可能少地显露其内部的处理。
信息隐蔽原则对提高软件的可修改性、可测试性和可移植性都有重要的作用。
4.模块独立
模块独立是指每个模块完成一个相对独立的特定子功能,并且与其他模块之间的联系简单。
衡量模块独立程度的标准有两个:耦合性后内聚性。
(1)耦合
耦合是模块之间的相对独立性(互相连接的紧密程度)的度量。
一般模块之间可能的耦合方式有七种类型:
- 无直接耦合(两个模块之间没有直接的关系)
- 数据耦合(两个模块之间传递的是简单的数据值)
- 标记耦合(两个模块之间传递的是数据结构)
- 控制耦合(一个模块调用另一个模块时,传递的是控制变量)
- 外部耦合(模块间通过软件之外的环境联结)
- 公共耦合(通过一个公共数据环境相互作用的那些模块间的耦合)
- 内容耦合(当一个模块直接使用另一个模块的内部数据,或通过非正常入口转入另一个模块内部时)
(2)内聚
内聚是对一个模块内部各个元素彼此结合的紧密程度的度量。
一般模块的内聚性分为七种类型:
- 偶然内聚[也叫巧合内聚](指一个模块内的各处理元素之间没有任何联系)
- 逻辑内聚(指模块内执行若干个逻辑上相似的功能,通过参数确定该模块完成哪一个功能)
- 时间内聚(把需要同时执行的动作组合在一起的模块)
- 过程内聚(指一个模块完成多个任务,这些任务必须按指定的过程执行)
- 通信内聚(指模块内的所有处理元素都在同一个数据结构上操作,或者各处理使用相同的输入数据或产生相同的输出数据)
- 顺序内聚(指一个模块中的各个处理元素都密切相关于同一功能且必须顺序执行,前一功能元素的输出就是下一功能元素的输入)
- 功能内聚(是最强的内聚,指模块内所有元素共同完成一个功能)
在软件系统划分模块时,应尽量做到高内聚,低耦合,提高模块的独立性。
(三)系统总体结构设计
1.系统结构设计原则
应遵循的原则:
- 分解-协调原则
- 自顶向下的原则
- 信息遮蔽、抽象 原则
- 一致性原则
- 明确性原则
- 模块之间的耦合尽可能小,模块内的内聚度尽可能高
- 模块的扇入系数和扇出系数要合理
- 模块的规模适当
2.子系统划分
(1)子系统划分的原则
子系统的划分应遵循的原则:
- 子系统要具有相对独立性
- 子系统之间数据的依赖性尽量小
- 子系统划分的结果应使数据冗余较小
- 子系统的设置应考虑今后管理发展的需要
- 子系统的划分应便于系统分阶段实现
- 子系统的划分应考虑到各类资源的充分利用
(2)子系统结构设计
子系统设计过程中应考虑的问题:
- 每个子系统如何划分成多个模块
- 如何确定子系统之间、模块之间传送的数据及调用关系
- 如何评价并改进模块结构的质量
- 如何从数据流图导出模块结构图
3.系统模块结构设计
(1)模块的概念
模块是组成系统的基本单位,它的特点是可以组合、分解和更换。
系统中的任何一个处理功能都可以看成是一个模块。
根据功能具体化程度的不同,模块可以分为逻辑模块、物理模块。
一个模块应该以下四个要素:
- 输入和输出
- 处理功能
- 内部数据
- 程序代码
(2)模块结构图
结构设计应遵循的原则:
- 所划分的模块其内部的凝聚性要强,模块之间的联系要少,即模块具有较强的独立性
- 模块之间的连接只能存在上下级之间的调用关系,不能有同级之间的横向联系
- 整个系统呈树状结构,不允许网状结构或交叉调用关系
- 所有模块都必须严格地分类编码并建立归档文件
模块结构图由模块、调用、数据、控制信息和转接符号五种基本符号组成。
模块结构图的基本符号4.数据存储设计
根据数据的不同用途、使用要求、统计渠道和安全保密性等来设计数据结构组织和数据库或文件。
(四)系统文档
信息系统等文档是系统建设过程的“痕迹”,是系统维护人员的指南,是开发人员与用户交流的工具。
文档的划分分为以下几种:
- 用户与系统分析人员在系统规划和系统分析阶段形成的文档
- 可行性研究报告
- 总体规划报告
- 系统开发合同
- 系统方案说明书
- 系统开发人员与项目管理人员在项目期内进行沟通形成的文档
- 系统开发计划
- 系统开发月报
- 系统开发总结报告
- 系统测试人员与系统开发人员之间交流形成的文档
- 系统方案说明书
- 系统开发合同
- 系统设计说明书
- 测试计划
- 系统测试报告
- 系统开发人员与用户在系统运行期间进行沟通形成的文档
- 用户手册
- 操作指南
- 系统开发人员与系统维护人员之间沟通形成的文档
- 系统设计说明书
- 系统开发总结报告
- 用户与维修人员在运行维护期间沟通形成的文档
- 系统运行报告
- 维护修改建议