📜  软件分析和设计工具

📅  最后修改于: 2021-01-07 06:24:51             🧑  作者: Mango


软件分析和设计包括所有活动,这些活动有助于将需求规范转换为实施。需求规范指定了软件的所有功能和非功能期望。这些需求规范以人类可读和可理解的文档形式出现,而计算机则与之无关。

软件分析和设计是中间阶段,可帮助将人类可读的需求转换为实际代码。

让我们看看软件设计师使用的一些分析和设计工具:

数据流程图

数据流程图是信息系统中数据流的图形表示。它能够描述输入数据流,输出数据流和存储的数据。 DFD没有提及有关数据如何流经系统的任何内容。

DFD和流程图之间存在显着差异。该流程图描述了程序模块中的控制流程。 DFD描述了系统中各个级别的数据流。 DFD不包含任何控件或分支元素。

DFD的类型

数据流程图是逻辑的或物理的。

  • 逻辑DFD-此类DFD专注于系统过程和系统中的数据流,例如在Banking软件系统中,如何在不同实体之间移动数据。
  • 物理DFD-这种类型的DFD显示了如何在系统中实际实现数据流。它更具体并且接近于实现。

DFD组件

DFD可以使用以下一组组件来表示数据的源,目标,存储和流-

DFD组件

  • 实体-实体是信息数据的源和目标。实体由带有各自名称的矩形表示。
  • 流程-对数据进行的活动和采取的动作用圆形或圆角矩形表示。
  • 数据存储数据存储有两种变体-既可以表示为没有两个较小边的矩形,也可以表示为只缺少一侧的矩形。
  • 数据流-数据移动通过尖箭头显示。数据移动从箭头的底部作为其源开始,向箭头的顶部作为目的地。

DFD水平

  • 级别0-最高抽象级别DFD被称为级别0 DFD,它将整个信息系统描述为一个隐藏所有底层细节的图表。级别0 DFD也称为上下文级别DFD。
  • 0级

  • 级别1-级别0 DFD细分为更具体的级别1 DFD。 1级DFD描述了系统中的基本模块以及各个模块之间的数据流。 1级DFD还提到了基本流程和信息来源。
  • 1级

  • 级别2-在此级别上,DFD显示数据如何在级别1中提到的模块内部流动。

    除非达到所需的规范水平,否则可以将具有更高理解水平的更高级别的DFD转换为更具体的更低级别的DFD。

结构图

结构图是从数据流图派生的图。它比DFD更详细地表示系统。它把整个系统分解为功能最底层的模块,比DFD更详细地描述了系统每个模块的功能和子功能。

结构图表示模块的层次结构。在每一层执行特定任务。

以下是用于构造结构图的符号-

  • 模块-代表过程或子例程或任务。控制模块分支到多个子模块。库模块可从任何模块重复使用和调用。SC模块
  • 条件-它由模块底部的小菱形表示。它描述了控制模块可以根据某些条件选择任何子例程。SC条件
  • 跳转-在模块内部显示的箭头表示控件将在子模块的中间跳转。SC模块跳转
  • 循环-弯曲的箭头表示模块中的循环。循环覆盖的所有子模块重复执行模块。SC回路
  • 数据流-末端带有空心圆圈的有向箭头表示数据流。SC数据流
  • 控制流-末端带有实心圆的有向箭头表示控制流。SC控制流

HIPO图

HIPO(分层输入过程输出)图是两种有组织的方法的组合,用于分析系统并提供文档编制手段。 HIPO模型由IBM在1970年开发。

HIPO图表示软件系统中模块的层次结构。分析师使用HIPO图以获取系统功能的高级视图。它以分层的方式将功能分解为子功能。它描述了系统执行的功能。

HIPO图表适合用于文档目的。它们的图形表示使设计人员和管理人员更容易获得系统结构的图形化概念。

HIPO图

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

IPO图表

HIPO图,层次结构表示和IPO图表的两个部分都用于软件程序的结构设计以及该文件的文档。

结构化英语

大多数程序员并不了解软件的整体情况,因此他们仅依赖于经理告诉他们的操作。高级软件管理人员的责任是向程序员提供准确的信息,以开发准确而又快速的代码。

使用图形或图表的其他形式的方法有时可能会由不同的人以不同的方式解释。

因此,软件的分析人员和设计人员提出了诸如结构化英语之类的工具。只是什么需要编码以及如何编码的描述。结构化英语可帮助程序员编写无错误的代码。

使用图形或图表的其他形式的方法有时可能由不同的人以不同的方式解释。在这里,结构化英语和伪代码都试图缓解这种理解差距。

结构化英语是“结构化英语”。结构化编程范例中使用简单的英语单词。它不是最终的代码,而是一种描述什么是编码以及如何编码的描述。以下是结构化编程的一些标记。

IF-THEN-ELSE,  
DO-WHILE-UNTIL

Analyst使用相同的变量和数据名称,这些变量和数据名称存储在Data Dictionary中,从而使编写和理解代码更加容易。

我们以在线购物环境中的“客户身份验证”为例。验证客户身份的过程可以用结构化英语编写为:

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;
   }
}

决策表

决策表以结构化的表格格式表示条件和要采取的应对措施。

它是调试和防止错误的强大工具。它有助于将相似的信息分组到一个表中,然后通过组合表,可以轻松便捷地进行决策。

创建决策表

要创建决策表,开发人员必须遵循以下四个基本步骤:

  • 确定所有可能要解决的条件
  • 确定所有确定条件的行动
  • 创建最大可能规则
  • 为每个规则定义动作

决策表应由最终用户验证,并且最近可以通过消除重复的规则和动作来简化。

让我们举一个简单的例子说明我们的Internet连接日常问题。我们首先确定启动互联网时可能出现的所有问题及其相应的解决方案。

我们在列条件下列出了所有可能的问题,并在“操作”列下列出了预期的操作。

Conditions/Actions Rules
Conditions Shows Connected N N N N Y Y Y Y
Ping is Working N N Y Y N N Y Y
Opens Website Y N Y N Y N Y N
Actions Check network cable X
Check internet router X X X X
Restart Web Browser X
Contact Service provider X X X X X X
Do no action

表:决策表–内部Internet故障排除

实体关系模型

实体关系模型是一种基于现实世界实体及其之间的关系的数据库模型。我们可以将真实情况映射到ER数据库模型上。 ER模型创建一组具有其属性的实体,一组约束以及它们之间的关系。

ER模型最适合用于数据库的概念设计。 ER模型可以表示为:

ER模型

  • 实体-ER模型中的实体是现实世界,具有一些称为属性的属性。每个属性都由其对应的一组值(称为domain)定义

    例如,考虑学校数据库。在这里,学生是一个实体。学生具有各种属性,例如姓名,身份证,年龄和班级等。

  • 关系-实体之间的逻辑关联称为关系。关系以各种方式映射到实体。映射基数定义两个实体之间的关联数。

    映射基数:

    • 一对一
    • 一对多
    • 多对一
    • 多对多

数据字典

数据字典是有关数据信息的集中收集。它存储数据的含义和来源,与其他数据的关系,使用的数据格式等。数据字典对所有名称进行了严格的定义,以方便用户和软件设计人员。

数据字典通常被称为元数据(有关数据的数据)存储库。它是与软件程序的DFD(数据流程图)模型一起创建的,并且每当更改或更新DFD时,预计将对其进行更新。

数据字典的要求

在设计和实现软件时,通过数据字典引用数据。数据字典消除了任何歧义。它有助于在程序中各处使用相同的对象引用时,使程序员和设计人员的工作保持同步。

数据字典可在一处为整个数据库系统提供一种文档编制方法。使用数据字典对DFD进行验证。

内容

数据字典应包含有关以下内容的信息

  • 数据流
  • 数据结构
  • 数据元素
  • 资料储存库
  • 数据处理

如前所述,数据流是通过DFD描述的,并以所述的代数形式表示。

= Composed of
{} Repetition
() Optional
+ And
[ / ] Or

地址=房屋编号+(街道/区域)+城市+州

课程编号=课程编号+课程名称+课程级别+课程成绩

数据元素

数据元素由数据和控制项,内部或外部数据存储等的名称和描述组成,并具有以下详细信息:

  • 主要名称
  • 辅助名称(别名)
  • 用例(如何以及在何处使用)
  • 内容说明(符号等)
  • 补充信息(预设值,约束条件等)

数据存储

它存储数据从那里进入系统并存在于系统之外的信息。数据存储区可能包括-

  • 档案
    • 软件内部。
    • 外部软件,但在同一台计算机上。
    • 位于软件和系统外部,位于不同的计算机上。
  • 桌子
    • 命名约定
    • 索引属性

数据处理

有两种类型的数据处理:

  • 逻辑:如用户所见
  • 物理:如软件所见