系统分析和设计 - 设计策略

自上而下策略

自上而下策略使用模块化方法来开发系统设计.它被称为是因为它从顶层或最高层模块开始并向最低层模块移动.

在这种技术中,最高级别的模块或主要模块用于开发软件被识别出来.主模块根据每个模块执行的任务分为几个更小更简单的子模块或段.然后,每个子模块进一步细分为下一个较低级别的几个子模块.将每个模块划分为多个子模块的过程一直持续到最低级别的模块(无法进一步细分)未被识别.

自上而下

自下而上策略

自下而上策略采用模块化方法开发系统设计.它被称为是因为它从底层或最基本的模块开始,并向最高级别的模块移动.

在这种技术中,

  • 识别最基本或最低级别的模块.

  • 这些模块随后是根据每个模块执行的功能组合在一起,形成下一个更高级别的模块.

  • 然后,这些模块进一步组合形成下一个更高级别的模块.级别模块.

  • 这个将几个更简单的模块分组以形成更高级别模块的过程一直持续到系统开发过程的主要模块实现.

Bottom-Up

结构化设计

结构化设计是一种基于数据流的方法,有助于识别开发系统的输入和输出.结构化设计的主要目标是最小化复杂性并增加程序的模块性.结构化设计还有助于描述系统的功能方面.

在结构化设计中,系统规范作为图形化表示软件中涉及的数据流和过程顺序的基础.在DFD的帮助下开发.在为软件系统开发DFD之后,下一步是开发结构图.

结构化设计

模块化

结构化设计将程序划分为小而独立的模块.这些以自上而下的方式组织,详细信息显示在底部.

因此,结构化设计使用称为模块化或分解的方法来最小化复杂性并通过将其细分为更小来管理问题细分.

优势

  • 首先测试关键界面.

  • 它提供抽象.

  • 它允许多个程序员同时工作.

  • 它允许代码重用.

  • 它提供控制并提高士气.

  • 它使识别结构更容易.

结构化图表

结构化图表是用于设计模块化自顶向下系统的推荐工具,它定义了系统开发的各个模块以及每个模块之间的关系.它显示了系统模块及其之间的关系.

它包含由矩形框组成的图表,代表模块,连接箭头或线条.

  • 控制模块 : 它是一个更高级别的模块,用于指导更低级别的模块,称为从属模块.

  • 库模块 : 它是一个可重用的模块,可以从图表中的多个点调用.

图表

我们有两种不同的方法来设计结构化图表 :

  • 以变换为中心的结构化图表 : 当所有交易遵循相同路径时使用它们.

  • 以交易为中心的结构化图表 : 当所有交易都不遵循相同的路径时使用它们.

使用结构流程图的目标

  • 鼓励自上而下的设计.

  • 支持模块的概念并确定适当的模块.

  • 显示系统的大小和复杂性.

  • 确定每个函数中易于识别的函数和模块的数量.

  • 描述每个可识别的函数是否是可管理的实体,还是应该分解为较小的组件.

影响系统复杂性的因素

为了开发高质量的系统软件,它有必要开发一个好的设计.因此,在开发系统设计时主要关注的是软件设计的质量.一个高质量的软件设计可以最大限度地降低软件开发的复杂性和成本.

与系统开发相关的两个重要概念有助于确定系统的复杂性. 耦合凝聚力.

耦合

耦合是衡量组件独立性的标准.它定义了系统开发的每个模块在另一个模块上的依赖程度.实际上,这意味着系统中模块之间的耦合越强,实现和维护系统就越困难.

每个模块应该与其他模块具有简单,干净的接口并且模块之间应该共享最小数据元素数.

高耦合

这些类型的系统与程序单元的互连依赖于彼此.对一个子系统的更改会对另一个子系统产生很大影响.

Highly Coupled

低耦合

这些类型的系统由独立或几乎独立的组件组成.一个子系统的更改不会影响任何其他子系统.

Low Coupling

耦合度量

  • 内容耦合 : 当一个组件实际修改另一个组件时,修改后的组件完全依赖于修改组件.

  • 公共耦合 : 通过组织系统设计减少耦合量,以便可以从公共数据存储中访问数据.

  • 控制耦合去;当一个组件传递参数以控制另一个组件的活动时.

  • 邮票耦合 : 当数据结构用于将信息从一个组件传递到另一个组件时.

  • 数据耦合 : 当只传递数据时,组件通过这种耦合连接.

Cohesion

Cohesion是衡量其组成部分之间关系的紧密程度.它定义了模块组件之间的依赖程度.在实践中,这意味着系统设计人员必须确保 :

  • 他们不会将基本流程拆分为碎片模块./p>

  • 它们不会将在DFD上表示为进程的不相关进程聚集到无意义的模块中.

最好的模块是功能上有凝聚力的模块.最糟糕的模块是巧合的.

最差的凝聚力

在一个零件与另一个零件无关的零件中发现了巧合的凝聚力.

  • Logical Cohesion : 这是几个逻辑相关的函数或数据元素放在同一个组件中的地方.

  • 时间凝聚力 : 当用于初始化系统或集合变量的组件按顺序执行多个函数时,这些函数与所涉及的时间相关.

  • 程序性凝聚力 : 当函数组合在一个组件中时,只是为了确保这个顺序.

  • 顺序内聚 : 当组件的一个部分的输出是它的下一部分的输入时.