4.1 分层模式概述

学习4.1小节之前需要清晰区分下面概念:

1. 域

  • 定义: 在软件工程中,领域指的是特定的业务、技术或知识领域,具有自己的术语和专业知识,定义了一组相关的功能、数据和规则,共同描述了一个特定领域的问题或需求。领域角色代表着一组具有共同语义和功能的模型元素。在系统设计中,领域作为分类和组织信息的一种方式,帮助管理庞大而复杂的类结构(子系统 > 构件(组件)> 类)。
  • 焦点: 域关注于确定和组织系统的功能和数据需求。它依据业务逻辑或应用逻辑进行划分,强调对特定业务领域的理解。例如,在医疗应用中,可能会有患者管理、预约调度和治疗记录等不同的业务域。
  • 特性

    • 业务相关性: 域通常与业务需求紧密相关,它们定义了系统如何满足特定业务目标和用户需求。
    • 跨层性: 一个域的功能可能横跨多个层次,从数据存储到业务逻辑再到用户界面。

2. 层

  • 定义: 根据统功能的不同抽象级别对系统进行水平分解。每个层次都有其特定的职责和功能,通常依据其抽象程度不同进行组织。

  • 焦点: 层的关注点是如何在不同的抽象级别上组织和管理系统的结构和行为。它们帮助将系统分解为更小且更利于管理的部分,每一部分处理特定层次的问题。

  • 特性

    • 结构化组织: 层通过提供清晰的系统分层帮助管理系统的复杂性,每层都建立在下层提供的服务之上。
    • 责任分离: 每个层次负责一组特定的任务,这种责任分离促进了系统的模块化和可维护性。

3. 域与层的关系

域关注于系统的业务或技术内容,定义了系统应完成的任务和目标;

层关注于这些内容的组织和实现方式,提供了清晰、有序的架构分层。

  • 互补性

    • 域提供内容: 域定义了系统必须完成的业务任务和规则,它们是系统功能和数据的内容提供者。
    • 层提供结构: 层则定义了这些任务和规则如何被组织和实现,提供了实现域功能的结构框架。
  • 交互

    • 域的实现: 一个具体的业务域可能在不同的层中实现其功能。例如,一个处理医疗记录的域可能在数据访问层处理数据存储,在业务逻辑层处理数据的逻辑处理,在表示层处理用户界面的显示。
    • 层的支持: 同时,层次结构支持各个域的需求,为域提供必要的技术和架构支持,确保域功能的正确实现和高效运行。

域是关于“做什么”的问题(即功能和责任),而层是关于“如何做”的问题(即技术和实现)。虽然在实践中域和层的概念经常交织在一起,但在解释和学习时保持它们的区分有助于更深入、清晰地理解分层模式的结构和优势。

4. 分层模式

通过将复杂的系统划分为不同抽象层次的层,每层都有其定义明确的职责和功能。常用于领域建模和软件架构设计。

4.1 领域建模

分层模式既可以用来对单个域进行内部分层,也可以用来将不同域分层,关键在于它们是如何基于抽象程度来组织的。在许多情况下,单个域内的不同概念或组件可能会根据其抽象级别而被分层,同时,不同的域(如用户界面、业务逻辑、数据访问等)也会根据它们在整体应用中的角色和抽象程度被分层。因此,分层模式的应用可以是单独的域内分层,也可以是跨多个域的分层。

领域建模包括了对域(Domain)的识别和理解,可以使用分层模式将这些域组织成一定的组织结构。在领域建模中,以下是一些关键的概念和活动:

1. 确定域

  • 域的确定: 首先,需要识别和界定软件系统中的业务领域。这个步骤涉及对业务的深入理解,包括它的功能、数据和规则。
  • 域的边界: 定义域的边界,确定哪些功能和数据属于该域,以及域与域之间的交互。

2. 域的组织

  • 分层模式: 在领域建模中,可以采用分层模式来组织域。分层可以帮助管理复杂性,通过将不同抽象级别的功能分离开来,使系统更加模块化。
  • 层次结构: 确定如何将各个域分配到不同的层次中,例如表示层、业务逻辑层、数据访问层等。

3. 建模的目的和方法

  • 模型创建: 通过使用不同的建模语言和工具(如UML)来创建域模型。这些模型描绘了域的结构、行为和约束。
  • 持续迭代: 随着对业务理解的深入和需求的变化,域模型可能需要不断迭代和细化。

4. 领域建模的好处

  • 准确性: 提供了与业务密切相关的系统视图,有助于确保软件解决方案满足业务需求。
  • 提高沟通效率: 域模型作为业务和技术团队之间的桥梁,领域模型促进业务和技术团队之间的沟通。
  • 减少复杂性: 对问题域的组织和抽象减少系统复杂性,通过清晰的分层和模块化,提高了系统的可维护性和扩展性。
  • 指导软件设计: 提供软件设计的基础,帮助团队明确目标和约束。

领域建模确实包括对域的识别和理解,以及使用分层模式或其他组织方式来描述系统结构。它不仅仅是确定域和其内部的功能,还关注于如何将这些域有序地组织起来,形成一个结构化且符合业务需求的系统。通过领域建模,可以更好地理解和表达业务规则、功能需求以及如何在软件解决方案中实现这些需求。

4.2 软件设计

软件分层模式的核心思想是将一个大的系统划分为一系列的层次,每个层次代表了系统的不同抽象级别。在这种模式中,每一层都构建在其下一层的基础上,提供更高层次的服务和抽象。这种方式的优点是每一层都只需关注与它直接相关的问题,而不需要处理更低层或更高层的复杂性。

  1. 组织结构: 想象一个多层建筑,每一层建筑代表系统的一个层次,每层都有其独特的功能和责任。底层可能是基础设施,如数据存储和网络通讯,而顶层可能是用户界面和应用逻辑。中间的层次提供从底层到顶层的过渡服务。

  2. 抽象层次: 在每一层中,都会对下一层的复杂性进行抽象。比如,在操作系统中,文件系统为上层应用提供了对硬盘的抽象,应用程序不需要知道硬盘的读写是如何实现的,它只需要通过文件系统提供的接口进行读写操作即可。

  3. 隔离性与封装性: 分层模式通过限制直接的跨层通信,促进了层与层之间的隔离。每层只与其直接的上下层进行交互,这种隔离性使得修改和维护每一层变得更加容易,因为改动仅影响有限的邻近层。

  4. 易于理解和维护: 由于每一层都只关注特定的功能和抽象,这使得整个系统更加易于理解和维护。新的开发人员可以快速理解各层的职责,并在不影响其他层的情况下对某一层进行改进或修复。

  5. 灵活性和可重用性: 分层模式允许在不影响其他层的情况下更换或修改某一层。例如,可以更换底层的数据库系统,而不需要修改使用它的业务逻辑层或表示层的代码。这种灵活性和可重用性使得分层模式非常适合长期维护和扩展的系统。

  6. 可移植性: 应用程序应该能够在不同的环境中运行,不受具体平台限制。这意味着设计时要考虑如何让应用程序容易地适应新的硬件或软件环境。
  7. 抽象执行环境: 提供一个抽象层,让应用程序可以在这个层上运行,而不用关心底层的具体实现。这样可以减少对特定技术的依赖,提高应用的灵活性和适应能力。

总结来说,4.1节中的分层模式强调了在不同的抽象级别上组织和实现系统功能的重要性。它涉及到如何将复杂的系统划分为更易于管理的层次,每层都聚焦于特定的职责。

你可能感兴趣的:(可扩展的体系结构》,uml)