抽象和分解有什么区别?

Car*_*los 3 uml modeling abstraction software-design

在软件工程中,设计阶段有两个主要概念abstraction,decomposition但我无法得到它们之间的差异?

Ale*_*eks 6

这两个概念都是分析和设计基本技术.在软件开发过程中,它们是相互关联的,通常一起使用.我们使用它们即使我们并不总是意识到它.深入理解这些概念有助于在A&D中更加准确和有效.

抽象一般是有意识地忽略正在分析的主题的某些方面以便更好地理解其它方面的过程.换句话说,它是一种主题的简化.特别是在软件中,分析和设计都是关于抽象的.

  • 在为数据库建模时,忽略系统的UI和行为,并仅关注数据库结构.
  • 在为架构建模时,您将专注于高级模块及其关系,并忽略其内部结构
  • 例如,每个UML图在系统上提供了一个特殊的,有限的视图,因此专注于单个方面并忽略所有其他方面(序列抽象对象和消息,部署抽象网络和服务器,用例抽象系统用户及其与系统的交互,等等)
  • 在任何编程语言中编写源代码都需要大量的抽象 - 程序员使用有限的语言结构来抽象应用程序的功能

分解是旧的良好原则"分而治之"在软件开发中的应用.它是一种对复杂元素进行分类,结构化和分组的技术,以最终形成更多原子元素,以某种方式组织并更易于管理.在所有阶段都有很多例子:

  • 功能分解复杂的过程到较小的子过程和活动的分层结构
  • 复杂应用程序的高级结构,分为3层 - UI,逻辑和数据.
  • 复杂域的类结构
  • 命名空间是将全局范围分解为几个本地范围的常见概念
  • UML包直接在模型级别上使用分解 - 使用包来组织模型

抽象在某种程度上比分解更普遍的原则,有点"所有原则的父亲":)