- 软件工程教程
- 软件工程首页
- 软件工程概述
- 软件开发生命周期
- 软件项目管理
- 软件需求
- 软件设计基础
- 分析与设计工具
- 软件设计策略
- 软件用户界面设计
- 软件设计复杂性
- 软件实现
- 软件测试概述
- 软件维护
- CASE工具概述
- 软件 - 考试题及答案
- 软件工程 - 考试题及答案
软件分析与设计工具
软件分析和设计包括所有有助于将需求规格转换为实现的活动。需求规格说明指定了软件的所有功能和非功能期望。这些需求规格以人类可读和可理解的文档形式出现,计算机对此一无所知。
软件分析和设计是中间阶段,它有助于将人类可读的需求转换为实际代码。
让我们看看软件设计师使用的一些分析和设计工具
数据流图
数据流图是信息系统中数据流的图形表示。它能够描绘传入数据流、传出数据流和存储数据。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
分析师使用存储在数据字典中的相同变量和数据名称,这使得编写和理解代码变得更加简单。
示例
我们以在线购物环境中的客户身份验证为例。此客户身份验证过程可以用结构化英语编写为
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; } }
决策表
决策表以结构化的表格格式表示条件以及为解决这些条件而采取的相应操作。
它是一个强大的工具,可以调试和防止错误。它有助于将相似的信息组合到一个表中,然后通过组合表,它可以提供简单方便的决策。
创建决策表
要创建决策表,开发人员必须遵循基本的四个步骤
- 确定需要解决的所有可能的条件
- 确定所有已识别条件的操作
- 创建最大可能的规则
- 为每条规则定义操作
决策表应由最终用户验证,并且可以通过消除重复规则和操作来简化。
示例
让我们以我们互联网连接的日常问题的简单示例为例。我们首先确定启动互联网时可能出现的所有问题及其各自可能的解决方案。
我们在“条件”列下列出所有可能的问题,在“操作”列下列出预期的操作。
条件/操作 | 规则 | ||||||||
---|---|---|---|---|---|---|---|---|---|
条件 | 显示已连接 | 否 | 否 | 否 | 否 | 是 | 是 | 是 | 是 |
Ping正常工作 | 否 | 否 | 是 | 是 | 否 | 否 | 是 | 是 | |
打开网站 | 是 | 否 | 是 | 否 | 是 | 否 | 是 | 否 | |
操作 | 检查网络电缆 | X | |||||||
检查互联网路由器 | X | X | X | X | |||||
重新启动Web浏览器 | X | ||||||||
联系服务提供商 | X | X | X | X | X | X | |||
不执行任何操作 |
实体关系模型
实体-关系模型是一种数据库模型,它基于现实世界实体及其之间关系的概念。我们可以将现实世界场景映射到ER数据库模型上。ER模型创建一组实体及其属性、一组约束以及它们之间的关系。
ER模型最适合用于数据库的概念设计。ER模型可以表示如下
实体 - ER模型中的实体是现实世界中的存在,它具有一些称为属性的特性。每个属性都由其对应的值集定义,称为域。
例如,考虑一个学校数据库。这里,学生是一个实体。学生具有各种属性,例如姓名、ID、年龄和班级等。
关系 - 实体之间的逻辑关联称为关系。关系以各种方式与实体映射。映射基数定义了两个实体之间的关联数量。
映射基数
- 一对一
- 一对多
- 多对一
- 多对多
数据字典
数据字典是关于数据的集中式信息集合。它存储数据的含义和来源、它与其他数据的关联、数据格式以供使用等。数据字典对所有名称都有严格的定义,以方便用户和软件设计人员。
数据字典通常被称为元数据(关于数据的数据)存储库。它与软件程序的DFD(数据流图)模型一起创建,并且在DFD更改或更新时应更新。
数据字典的需求
在设计和实现软件时,通过数据字典引用数据。数据字典消除了任何歧义的可能性。它有助于在程序中使用相同的对象引用时保持程序员和设计人员的工作同步。
数据字典提供了一种在一个地方记录整个数据库系统的方法。使用数据字典进行DFD的验证。
内容
数据字典应包含以下信息
- 数据流
- 数据结构
- 数据元素
- 数据存储
- 数据处理
数据流通过前面学习过的DFD来描述,并以描述的代数形式表示。
= | 组成 |
---|---|
{} | 重复 |
() | 可选 |
+ | 和 |
[ / ] | 或 |
示例
地址 = 门牌号 + (街道/区域) + 城市 + 省份
课程ID = 课程编号 + 课程名称 + 课程级别 + 课程成绩
数据元素
数据元素包括数据和控制项、内部或外部数据存储等的名称和描述,以及以下详细信息
- 主名称
- 辅助名称(别名)
- 用例(如何以及在何处使用)
- 内容描述(符号等)
- 补充信息(预设值、约束等)
数据存储
它存储数据从系统进入和退出系统的信息。数据存储可能包括 -
- 文件
- 软件内部。
- 软件外部但在同一台机器上。
- 软件和系统外部,位于不同的机器上。
- 表格
- 命名约定
- 索引属性
数据处理
数据处理有两种类型
- 逻辑:用户看到的
- 物理:软件看到的