📜  软件设计流程介绍|设置 2

📅  最后修改于: 2022-05-13 01:56:59.384000             🧑  作者: Mango

软件设计流程介绍|设置 2

软件设计是将用户需求转换为某种合适形式的过程,它有助于程序员进行软件编码和实现。在软件设计阶段,根据 SRS 文档中记录的客户要求生成设计文档。因此,此阶段的目标是将 SRS 文档转换为设计文档。

在设计阶段设计并记录了以下项目:

  • 需要不同的模块。
  • 控制模块之间的关系。
  • 不同模块之间的接口。
  • 不同模块之间的数据结构。
  • 在各个模块之间实现所需的算法。

软件设计的目标:

  1. 正确性:
    一个好的设计应该是正确的,即它应该正确地实现系统的所有功能。
  2. 效率:
    一个好的软件设计应该解决资源、时间和成本优化问题。
  3. 易懂:
    一个好的设计应该易于理解,它应该是模块化的,并且所有模块都分层排列。
  4. 完整性:
    设计应该包含所有组件,如数据结构、模块和外部接口等。
  5. 可维护性:
    每当客户提出更改请求时,一个好的软件设计应该很容易更改。

软件设计理念:
概念被定义为进入我们脑海或思想以理解某事的主要想法或发明。软件设计概念只是指设计背后的思想或原则。它描述了您计划如何解决设计软件的问题、逻辑或您将如何设计软件的想法。它允许软件工程师创建要开发或构建的系统或软件或产品的模型。软件设计概念为开发正确的软件提供了支持和必要的结构或模型。软件设计有很多概念,下面给出一些概念:

设计软件时应考虑以下几点:

  1. 抽象 - 隐藏不相关的数据
    抽象只是意味着隐藏细节以降低复杂性并提高效率或质量。不同级别的抽象是必要的,并且必须在设计过程的每个阶段应用,以便可以消除存在的任何错误,以提高软件解决方案的效率并改进软件解决方案。解决方案应该以广泛的方式来描述,在较高的抽象层次上涵盖广泛的不同事物,并且应该在较低的抽象层次上给出对软件解决方案的更详细的描述。
  2. 模块化——细分系统
    模块化只是意味着将系统或项目分成更小的部分,以降低系统或项目的复杂性。同样,设计中的模块化意味着将系统细分为更小的部分,以便这些部分可以独立创建,然后在不同的系统中使用这些部分来执行不同的功能。有必要将软件划分为称为模块的组件,因为现在有不同的软件可用,例如软件工程师难以掌握的单体软件。因此,设计中的模块化现在已成为一种趋势,也很重要。如果系统包含的组件较少,那么这意味着系统很复杂,需要大量的工作(成本),但是如果我们能够将系统分成组件,那么成本就会很小。
  3. 架构——设计某物的结构
    建筑只是意味着一种设计某物结构的技术。设计软件中的架构是一个关注各种元素和结构数据的概念。这些组件相互交互并使用架构中结构的数据。
  4. 精炼——去除杂质
    精炼只是意味着精炼某些东西以去除任何杂质(如果存在)并提高质量。软件设计的细化概念实际上是对软件或系统进行详细开发或呈现的过程,即对系统或软件进行精细化的过程。细化对于找出任何错误(如果存在)然后减少它是非常必要的。
  5. 模式 - 重复的形式
    图案只是指重复的形式或设计,其中相同的形状重复多次以形成图案。设计过程中的模式意味着在特定上下文中重复解决常见重复问题的方法。
  6. 信息隐藏-隐藏信息
    信息隐藏只是意味着隐藏信息,以便不受欢迎的一方无法访问它。在软件设计中,信息隐藏是通过以一种方式设计模块来实现的,即一个模块中收集或包含的信息是隐藏的,并且不能被任何其他模块访问。
  7. 重构——重构一些东西
    重构只是意味着以不影响任何其他功能的行为的方式重构某些东西。软件设计中的重构意味着重构设计以降低复杂性并简化它而不影响行为或其功能。 Fowler 将重构定义为“以不影响设计行为并改进内部结构的方式更改软件系统的过程”。

不同级别的软件设计:
软件设计分为三个不同层次。他们是:

  1. 建筑设计:
    系统的架构可以被视为系统的整体结构以及结构提供系统概念完整性的方式。架构设计将软件识别为具有许多相互交互的组件的系统。在这个级别上,设计人员了解了提议的解决方案域的想法。
  2. 初步或高级设计:
    这里将问题分解为一组模块,识别出各个模块之间的控制关系,识别出各个模块之间的接口。这个阶段的结果称为程序架构。这个阶段使用的设计表示技术是结构图和UML。
  3. 详细设计:
    完成高级设计后,将进行详细设计。在详细设计中,每个模块都经过仔细检查以设计数据结构和算法。阶段结果以模块规范文档的形式记录。