📜  软件设计策略

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


软件设计是一个将软件需求概念化为软件实现的过程。软件设计以用户需求为挑战,并试图找到最佳解决方案。在对软件进行概念化时,会制定一个计划,以找到实现预期解决方案的最佳设计。

软件设计有多种变体。让我们简要地研究一下它们:

结构化设计

结构化设计是将问题概念化为组织良好的解决方案要素。它基本上与解决方案设计有关。结构化设计的好处是,它可以更好地了解如何解决问题。结构化设计还使设计师更轻松地更准确地专注于问题。

结构化设计主要基于“分而治之”的策略,其中一个问题被分解为几个小问题,每个小问题都得到单独解决,直到整个问题解决为止。

小问题可以通过解决方案模块解决。结构化设计强调必须对这些模块进行合理组织,以实现精确的解决方案。

这些模块按层次结构排列。他们彼此交流。良好的结构设计始终遵循多个模块之间进行通信的一些规则,即-

凝聚力-所有功能相关元素的分组。

耦合-不同模块之间的通信。

良好的结构设计具有高内聚力和低耦合布置。

功能导向设计

在面向功能的设计中,系统由许多称为功能的较小子系统组成。这些功能能够在系统中执行重要任务。该系统被视为所有功能的俯视图。

面向功能的设计继承了使用分而治之方法学的结构化设计的某些属性。

这种设计机制将整个系统划分为较小的功能,这些功能通过隐藏信息及其操作来提供抽象方法。这些功能模块可以通过信息传递和使用全局可用信息在彼此之间共享信息。

函数的另一个特征是,当程序调用函数,函数更改程序的状态,有时其他模块不接受该状态。在系统状态无关紧要且程序/功能在输入而不是状态下工作的情况下,面向功能的设计效果很好。

设计过程

  • 通过数据流程图,整个系统被视为数据如何在系统中流动。
  • DFD描述了功能如何更改整个系统的数据和状态。
  • 整个系统根据它们在系统中的操作在逻辑上分为较小的单元,称为功能。
  • 然后将大体描述每个函数。

面向对象设计

面向对象的设计围绕实体及其特征工作,而不是软件系统中涉及的功能。此设计策略着重于实体及其特征。软件解决方案的整个概念围绕参与实体。

让我们看看面向对象设计的重要概念:

  • 对象-解决方案设计中涉及的所有实体都称为对象。例如,个人,银行,公司和客户被视为对象。每个实体都有一些与之关联的属性,并且有一些对这些属性执行的方法。
  • 类-类是对对象的概括描述。对象是类的实例。类定义对象可以具有的所有属性,方法定义对象的功能。

    在解决方案设计中,将属性存储为变量,并通过方法或过程定义功能。

  • 封装-在OOD中,属性(数据变量)和方法(对数据的操作)捆绑在一起称为封装。封装不仅将对象的重要信息捆绑在一起,而且限制了来自外部世界的数据和方法的访问。这称为信息隐藏。
  • 继承-OOD允许类似的类以分层的方式堆叠,其中下级或子类可以从其直接超类中导入,实现和重用允许的变量和方法。 OOD的此属性称为继承。这使定义特定类和从特定类创建通用类变得更加容易。
  • 多态性-OOD语言提供了一种机制,可以为执行相似任务但参数不同的方法分配相同的名称。这称为多态,它允许单个接口执行不同类型的任务。根据函数的调用方式,执行代码的各个部分。

设计过程

软件设计过程可以看作是一系列明确定义的步骤。尽管它根据设计方法(面向函数或面向对象)而有所不同,但是可能涉及以下步骤:

  • 根据需求或先前使用的系统和/或系统顺序图创建解决方案设计。
  • 标识对象并代表属性特征的相似性将其分组为类。
  • 定义了类的层次结构及其之间的关系。
  • 定义了应用程序框架。

软件设计方法

这是软件设计的两种通用方法:

自上而下的设计

我们知道,一个系统由多个子系统组成,并且包含许多组件。此外,这些子系统和组件可以具有其子系统和组件的集合,并在系统中创建分层结构。

自上而下的设计将整个软件系统作为一个整体,然后根据某些特性将其分解以实现多个子系统或组件。然后,将每个子系统或组件视为一个系统并进一步分解。此过程一直持续运行,直到实现自上而下的层次结构中最低的系统级别。

自上而下的设计始于系统的通用模型,并继续定义系统的更具体部分。当所有组成部分都组成了整个系统。

自上而下的设计更适合需要从头开始设计软件解决方案且具体细节未知的情况。

自下而上的设计

自下而上的设计模型从最具体的基本组件开始。它通过使用基本或较低级别的组件来构成较高级别的组件。它一直在创建更高级别的组件,直到所需的系统没有演变为一个单独的组件。每提高一个级别,抽象的数量就会增加。

当需要从某些现有系统中创建系统时,自下而上策略更适合,在该系统中可以在较新的系统中使用基本原语。

自上而下和自下而上的方法都不可行。而是使用两者的良好组合。