软件分析和设计工具
软件分析和设计包括所有有助于将需求规范转化为实施的活动。需求规范指定了对软件的所有功能和非功能期望。这些需求规范以人类可读和可理解的文档形式出现,计算机对此毫无作用。
软件分析和设计是中间阶段,有助于将人类可读的需求转化为实际代码。
让我们看看软件设计师使用的几种分析和设计工具:
数据流图
数据流图是信息系统中数据流的图形表示。它能够描述传入数据流、传出数据流和存储数据。DFD 没有提及数据如何在系统中流动。
DFD 和流程图之间存在显着差异。流程图描述程序模块中的控制流。DFD 描述系统中各个级别的数据流。 DFD 不包含任何控制或分支元素。
DFD 的类型
数据流图分为逻辑数据流图和物理数据流图。
- 逻辑 DFD - 这种类型的 DFD 专注于系统流程和系统中的数据流。例如,在银行软件系统中,数据如何在不同实体之间移动。
- 物理 DFD - 这种类型的 DFD 显示了数据流在系统中的实际实现方式。它更具体,更接近实现。
DFD 组件
DFD 可以使用以下组件集表示数据的来源、目的地、存储和流动 -

- 实体 - 实体是信息数据的来源和目的地。实体由具有各自名称的矩形表示。
- 流程 - 对数据采取的活动和操作由圆形或圆边矩形表示。
- 数据存储 - 数据存储有两种变体 - 它可以表示为缺少两个较小边的矩形,也可以表示为仅缺少一边的开口矩形。
- 数据流 - 数据的移动由尖箭头表示。数据移动从箭头底部(源)向箭头顶部(目的地)显示。
DFD 的级别
- 0 级 - 最高抽象级别 DFD 称为 0 级 DFD,它将整个信息系统描绘成一个隐藏所有底层细节的图表。0 级 DFD 也称为上下文级 DFD。
- 1 级 - 0 级 DFD 分解为更具体的 1 级 DFD。1 级 DFD 描绘了系统中的基本模块以及各个模块之间的数据流。第 1 级 DFD 还提到了基本流程和信息来源。
第 2 级 - 在此级别,DFD 显示了数据在第 1 级中提到的模块内如何流动。
除非达到所需的规范级别,否则较高级别的 DFD 可以转换为更具体的较低级别的 DFD,具有更深层次的理解。


结构图
结构图是从数据流图派生出来的图表。它比 DFD 更详细地表示系统。它将整个系统分解为最低功能模块,比 DFD 更详细地描述系统每个模块的功能和子功能。
结构图表示模块的层次结构。在每一层都执行一项特定的任务。
以下是结构图构造中使用的符号 -
- 模块 - 它表示流程、子程序或任务。控制模块分支到多个子模块。库模块可重复使用,并可从任何模块调用。
- 条件 - 它由模块底部的小菱形表示。它表示控制模块可以根据某些条件选择任何子程序。
- 跳转 - 显示指向模块内部的箭头,表示控制将在子模块中间跳转。
- 循环 - 弯曲的箭头表示模块中的循环。循环覆盖的所有子模块重复执行模块。
- 数据流 - 末端带有空心圆圈的有向箭头表示数据流。
- 控制流 - 末端带有实心圆的有向箭头表示控制流。
HIPO 图
HIPO(分层输入过程输出)图是两种有组织方法的组合,用于分析系统并提供文档记录。HIPO 模型由 IBM 于 1970 年开发。
HIPO 图表示软件系统中模块的层次结构。分析师使用 HIPO 图来获得系统功能的高级视图。它以分层方式将功能分解为子功能。它描述了系统执行的功能。
HIPO 图适用于文档记录。它们的图形表示使设计人员和管理人员更容易获得系统结构的图形概念。

与描述模块中控制和数据流的 IPO(输入过程输出)图相比,HIPO 不提供有关数据流或控制流的任何信息。

示例
HIPO 图的两个部分、层次表示和 IPO 图表均用于软件程序的结构设计及其文档。
结构化英语
大多数程序员不了解软件的整体情况,因此他们只依赖于经理告诉他们做的事情。高级软件管理部门有责任向程序员提供准确的信息,以开发准确而快速的代码。
使用图形或图表的其他形式的方法有时可能会被不同的人以不同的方式解释。
因此,软件分析师和设计人员想出了诸如结构化英语之类的工具。它只不过是对编码所需的内容和如何编码的描述。结构化英语帮助程序员编写无错误的代码。
使用图形或图表的其他形式的方法有时可能会被不同的人以不同的方式解释。在这里,结构化英语和伪代码都试图缓解这种理解差距。
结构化英语是它在结构化编程范式中使用简单的英语单词。它不是最终的代码,而是一种对编码所需的内容和如何编码的描述。以下是结构化编程的一些标记。
IF-THEN-ELSE, DO-WHILE-UNTIL
Analyst 使用相同的变量和数据名称,它们存储在数据字典中,使编写和理解代码变得更加简单。
示例
我们以在线购物环境中的客户身份验证为例。此客户身份验证程序可以用结构化英语写成:
Enter Customer_Name SEEK Customer_Name in Customer_Name_DB file IF Customer_Name found THEN Call procedure USER_PASSWORD_AUTHENTICATE() ELSE PRINT error message Call procedure NEW_CUSTOMER_REQUEST() ENDIF
用结构化英语编写的代码更像日常口语英语。它不能直接作为软件代码实现。结构化英语独立于编程语言。
伪代码
伪代码的编写更接近编程语言。它可以被视为增强的编程语言,充满了注释和描述。
伪代码避免了变量声明,但它们是使用一些实际编程语言的构造编写的,如 C、Fortran、Pascal 等。
伪代码包含比结构化英语更多的编程细节。它提供了一种执行任务的方法,就像计算机正在执行代码一样。
示例
程序打印最多 n 个斐波那契数。
void function Fibonacci Get value of n; Set value of a to 1; Set value of b to 1; Initialize I to 0 for (i=0; i< n; i++) { if a greater than b { Increase b by a; Print b; } else if b greater than a { increase a by b; print a; } }
决策表
决策表以结构化的表格形式表示条件以及为解决这些条件而采取的相应措施。
它是调试和预防错误的强大工具。它有助于将相似的信息分组到一个表中,然后通过组合表格来实现简单方便的决策。
创建决策表
要创建决策表,开发人员必须遵循四个基本步骤:
- 确定所有可能要解决的条件
- 确定所有已识别条件的操作
- 创建最大可能的规则
- 定义每个规则的操作
决策表应由最终用户验证,并且最近可以通过消除重复的规则和操作来简化。
示例
让我们举一个简单的例子,说明我们的互联网连接日常问题。我们首先确定启动互联网时可能出现的所有问题及其各自的可能解决方案。
我们在条件栏下列出了所有可能出现的问题,在操作栏下列出了预期的操作。
条件/操作 | 规则 | ||||||||
---|---|---|---|---|---|---|---|---|---|
条件 | 显示已连接 | N | N | N | Y | Y | Y | Y | |
Ping 正在运行 | N | N | Y | N | Y | N | Y | ||
打开网站 | Y | N | Y | N | Y | N | Y | N | |
操作 | 检查网线 | X | |||||||
检查互联网路由器 | X | X | X | ||||||
重新启动 Web 浏览器 | X | ||||||||
联系服务提供者 | X | X | X | X | X | X | |||
不采取任何行动 |
实体关系模型
实体关系模型是一种基于现实世界实体及其之间关系概念的数据库模型。我们可以将现实世界场景映射到 ER 数据库模型上。ER 模型创建一组实体及其属性、一组约束和它们之间的关系。
ER 模型最适合用于数据库的概念设计。ER 模型可以表示如下:

实体 - ER 模型中的实体是现实世界的存在,它具有一些称为属性的属性。每个属性都由其对应的一组值定义,称为域。
例如,考虑一个学校数据库。在这里,学生是一个实体。学生有各种属性,如姓名、身份证、年龄和班级等。
关系 - 实体之间的逻辑关联称为关系。关系以各种方式与实体映射。映射基数定义两个实体之间的关联数。
映射基数:
- 一对一
- 一对多
- 多对一
- 多对多
数据字典
数据字典是有关数据的信息的集中集合。它存储数据的含义和来源、与其他数据的关系、使用的数据格式等。数据字典对所有名称都有严格的定义,以方便用户和软件设计人员。
数据字典通常被称为元数据(关于数据的数据)存储库。它是与软件程序的 DFD(数据流图)模型一起创建的,预计在 DFD 更改或更新时会更新。
数据字典的要求
在设计和实施软件时,通过数据字典引用数据。数据字典消除了任何歧义的可能性。它有助于在程序中各处使用相同的对象引用时保持程序员和设计人员的工作同步。
数据字典提供了一种在一个地方记录完整数据库系统的方法。使用数据字典进行 DFD 验证。
内容
数据字典应包含有关以下内容的信息
- 数据流
- 数据结构
- 数据元素
- 数据存储
- 数据处理
数据流通过前面研究过的 DFD 来描述,并以代数形式表示。
= | 组成 |
---|---|
{ | 重复 |
() | 可选 |
+ | 与 |
[ / ] | 或 |
示例
地址 = 门牌号 + (街道 / 地区) + 城市 + 州
课程 ID = 课程编号 + 课程名称 + 课程级别 + 课程成绩
数据元素
数据元素由数据和控制项、内部或外部数据存储等的名称和描述组成,详细信息如下:
- 主要名称
- 次要名称(别名)
- 用例(如何使用以及在何处使用)
- 内容描述(符号等)
- 补充信息(预设值、约束等)
数据存储
它存储数据进入系统和离开系统的信息。数据存储可能包括 -
- 文件
- 软件内部。
- 软件外部,但在同一台机器上。
- 软件和系统外部,位于不同的机器上。
- 表
- 命名约定
- 索引属性
数据处理
数据处理有两种类型:
- 逻辑:如用户所见
- 物理:如软件所见