设计策略

自上而下策略

自上而下策略使用模块化方法来开发系统设计。之所以这样称呼,是因为它从顶部或最高级别的模块开始,然后向最低级别的模块移动。

在这种技术中,确定了用于开发软件的最高级别模块或主模块。根据每个模块执行的任务,将主模块划分为几个更小、更简单的子模块或段。然后,每个子模块进一步细分为下一个较低级别的几个子模块。将每个模块划分为几个子模块的过程一直持续到无法进一步细分的最低级别模块无法确定为止。

自上而下

自下而上策略

自下而上策略遵循模块化方法来开发系统设计。之所以这样称呼,是因为它从最底层或最基本的模块开始,然后向最高级别的模块移动。

在这种技术中,

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

  • 然后根据每个模块执行的功能将这些模块分组在一起,以形成下一个更高级别的模块。

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

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

Bottom-Up

结构化设计

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

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

结构化设计

模块化

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

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

优点

  • 首先测试关键接口。
  • 它提供抽象。
  • 它允许多个程序员同时工作。
  • 它允许代码重用。
  • 它提供控制并提高士气。
  • 它使识别结构更容易。

结构化图表

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

它由代表模块的矩形框、连接箭头或线条组成的图表组成。

  • 控制模块 − 它是一个高级模块,用于指导较低级别的模块,称为下属模块

  • 库模块 − 它是一个可重复使用的模块,可以从图表中的多个点调用。

Charts

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

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

  • 以交易为中心的结构化图表 −它们用于当所有事务不遵循相同路径时。

使用结构流程图的目标

  • 鼓励自上而下的设计。

  • 支持模块概念并识别适当的模块。

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

  • 识别每个功能中易于识别的功能和模块的数量。

  • 描述每个可识别功能是否是可管理实体或应分解为更小的组件。

影响系统复杂性的因素

要开发出高质量的系统软件,必须开发出良好的设计。因此,在开发系统设计时主要关注的是软件设计的质量。高质量的软件设计可以最大限度地降低软件开发的复杂性和成本支出。

与系统开发相关的两个重要概念有助于确定系统的复杂性,它们是耦合内聚

耦合

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

每个模块都应与其他模块具有简单、干净的接口,并且模块之间应共享最少数量的数据元素。

高耦合

这些类型的系统具有相互依赖的程序单元互连。对一个子系统的更改会对另一个子系统产生很大影响。

高耦合

低耦合

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

低耦合

耦合措施

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

  • 常见耦合 −通过组织系统设计,使数据可以从公共数据存储中访问,从而减少耦合量。

  • 控制耦合 − 一个组件传递参数来控制另一个组件的活动。

  • 标记耦合 − 使用数据结构将信息从一个组件传递到另一个组件。

  • 数据耦合 − 仅传递数据时,组件通过此耦合连接。

内聚性

内聚性是组件之间关系紧密程度的衡量标准。它定义了模块组件之间的相互依赖程度。在实践中,这意味着系统设计人员必须确保 −

  • 它们不会将基本流程拆分为零散的模块。

  • 它们不会将 DFD 上表示为流程的无关流程聚集到无意义的模块中。

最好的模块是那些功能上具有凝聚力的模块。最差的模块是那些巧合地具有凝聚力的模块。

最差的凝聚力程度

巧合凝聚力存在于其部分与另一个部分不相关的组件中。

  • 逻辑凝聚力 − 它是将几个逻辑上相关的功能或数据元素放置在同一个组件中。

  • 时间凝聚力 −当用于初始化系统或设置变量的组件按顺序执行多个功能时,但这些功能在时间上是相关的。

  • 程序内聚 − 当功能在组件中组合在一起以确保此顺序时。

  • 顺序内聚 − 当组件的一部分的输出是其下一部分的输入时。