`
wangheid
  • 浏览: 36931 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

业务的设计与分解

 
阅读更多

   复杂业务行为通常看作是复杂规则与流程的集合。解决的基本方法依赖基本的思考方式:分解结构。
        分解的第一要素是:面向对象——内聚。通常面向对象理论会告诉我们设计的设计原则是:这个对象是什么。这样的做法对于Domain Model或者比较适合,但对应于Service或者Application层的对象并不合适。这一类对象在需求的上的描述最典型是过程式!过程式描述的最大特点是告诉我们怎么做,当我们应用面向对象设计时,相对于怎么做,我们要关心的是需求做什么。
        1.1 分解行为的是所有工作的第一步:
        分解的过程(手段),可以简单说有两个层次:
        第一层:把逻辑分解到不同继承体系的对象上;
        第二层:把逻辑分解到同一继承体系的对象的不同抽象层次上。
        两个层次(手段)的内在的理论是:做什么其实是一种行为抽象,而正如我们所知的,抽象是有层次和排列的。第一层分解在于解决顶层抽象,而第二层就解决其下层的抽象,如此反复,就可以完成整个逻辑抽象的排列。
        不过,有时我宁愿用另外一种更实战的说法来解释这样的做法:利用面向对象方法,关注于做什么来确定抽象模型,而把怎么做分解为抽象模型的派生类型。
        无论是做什么,还是怎么做,需要注意的一点是:在知识级上隐式概念的印射,在操作级上有其投影。
接下来我们面临其它一些技术问题。
        1.2 确定逻辑的组合操作关系
        在分解行为的过程中,我们先分解出了不同的对象体系,在知识级别(分析层次)上看,工作已经完成,不过在操作级别(设计层次)上看,我们还需要解决一个问题。
        不同的对象体系在系统中,根据场景,表现为两种角色:调用者和被调用者。由于被调用者的派生体系(不同的怎么做),调用者面临着一个选择,选择一个或者一组合适的被调用对象。
        如何选择有两种方式:设计时(部署时)和运行时确定。
        设计时(部署时)很简单,在程序中写上特定派生类型,基本算是hardcode。通常发生在调用方其对象体系的叶子节点直接调用被调用方的叶子节点。此时,调用者是被动选择,交给所有的被调用者(通常是叶子节点),每个被调用者采取合适逻辑操作组合。
        另一种是运行时,是调用者主动选择(通过一个工厂),根据一定规则,判断选取合适的一个或者一组action执行。通常利用外部如数据库,或者工厂+反射,利用对应被调用者的Specification来确定。
        主动选择可以是简单的if…else…来完成,当选择的影响因素多后可以采用的方式是决策表。
        两者比较如下: 

 

矩阵/决策表

面向对象方式

优点:

直接了当,信息获取明确;

随相关因素的增长,维护的复杂度曲线平缓升高,低于矩阵,决策表;在与,或,非计算上相对明确;层次化结构有助于学习;

缺点:

随相关因素的增长,维护的复杂度曲线快速升高;但在与,或,非计算上不明确;

相关信息获取不十分明确;

本质:

排列组合的平面化结构。这是其优缺点的根源;

排列组合的层次化结构;

开发:

运行时确定,变更相关因素对于开发有重大影响;

转化为部署时确定,运行时结构明确

        在维护成本考虑,应该考虑多态,系统设计上不一定用面向对象编程实现,但在流程和计算设计上至少要模拟面向对象的方式;
        1.3 行为下的规则
        分解后的行为,除了处理怎么做的流程,还有各种各样的规则:包括了Selection的Specification外,还包括Validation的Specification,Build的Specification以及Calculation的Specification。
        除了后两种是行为外(不包括它们参数的来源),其它两种业务规则本身来说,其有三种实现方式:
        a) 多态(面向对象方式)。
        b) 简单决策表(映射表),用显示的行表(and关系)保存路由选择(运行时确定)。
        c) 树形决策表(映射表),用显示的树表(and/or关系)保存路由选择(运行时确定)。
        1.4. 行为的异步分解
        大部分行为的分解,都是同步的!然而在复杂系统中还是存在行为的异步分解,这样设计看起来更像是Data Flow Pattern,存在的理由不一,有的是出于性能原因,有的出于业务原因(在金融系统中可以看到这样的例子,例如:为了保证关键业务数据的存在,通常是一些价格或者利率,白天提请的交易行为,分为两步,第一步即使完成,而第二步动作必须在晚上进行)。

分享到:
评论

相关推荐

    业务架构设计与DDD领域驱动设计

    业务架构设计与DDD领域驱动设计 业务架构设计是指对企业的业务进行整体规划和设计,以确保业务的连续性和发展。领域驱动设计(Domain-Driven Design,DDD)是指一种基于领域模型的软件开发方法,它强调业务领域的...

    百万业务4A架构师实战设计与分解-视频教程网盘链接提取码下载 .txt

     首先,互联网架构师需要具备深厚的技术功底和丰富的实践经验,能够对业务需求进行分析和设计,以确保系统的高效性和可扩展性。其次,互联网架构师需要拥有敏锐的商业嗅觉和创新意识,能够将最新的技术趋势应用于...

    电子政务业务流程设计方法通用指南.pptx

    《电子政务业务流程设计方法通用指南》是指导如何有效设计和实施电子政务系统的关键参考资料,旨在提高政府服务效率和透明度。本指南涵盖了一系列关键步骤和文档,以确保全面且一体化的建模过程。 首先,建模的主要...

    华为企业架构之业务架构设计方法.pptx

    业务架构设计是企业架构的重要组成部分,旨在描述企业的治理结构、业务能力与价值链的正式蓝图。业务架构明确定义企业的治理结构、业务能力、业务活动、业务数据。 业务架构设计的目的在于确保企业所有人员对业务有...

    丝蒂玛公司目标制定与分解.pptx

    例如,公司可能设定在特定日期前开设一定数量的店铺,实现财务平衡等目标,这些目标将分解为拓展、销售、生产、采购、设计等多个子目标,并与人力资源和财务等部门的计划相协调。 在目标分解过程中,方向统一至关...

    设计模式对于复杂业务的拆分应用示例:MyExample.zip

    在本示例“设计模式对于复杂业务的拆分应用示例:MyExample.zip”中,我们可以看到如何利用设计模式来有效地分解和管理复杂的业务逻辑。 1. **设计模式的理解**: 设计模式是对在特定上下文中反复出现的问题及其...

    大型设备运维管理平台系统的设计与实现分解.pdf

    大型设备运维管理平台系统的设计与实现分解 本文主要介绍了基于 web 的大型设备运维管理平台系统的设计与实现步骤,该系统通过 web 与数据库的链接使得大型设备的运维管理更加便于管理。本系统是一个典型的信息管理...

    日志分析并行分解设计与实现

    ### 日志分析并行分解设计与实现 #### 背景与挑战 随着现代互联网服务的不断增长,系统产生的日志数量也随之激增。这些日志不仅包含了丰富的运行时信息,还是进行问题诊断、安全审计及业务分析的重要依据。然而,...

    业务流程手册,涵盖业务流程规划与建设方法

    1. 业务逻辑分析基本方法:该方法将业务流程分解成多个逻辑单元,旨在帮助企业设计和优化业务流程。 2. 识别流程客户:该方法旨在帮助企业识别业务流程中的客户需求。 3. 设定流程目的:该方法旨在帮助企业设定业务...

    ERP信息化系统:XX SAP _战略方向澄清_业务目标分解模板_v2.0.pptx

    例如,对于自有品牌的文件夹业务,强调了提高使用便捷性、环保和时尚设计的需求,以及与竞争对手如得力的竞争分析。文件夹业务设定了明确的财务目标,包括销售收入、销售利润、毛利率、库存周转率和缺货率的逐年增长...

    企业级业务架构设计方法论9.pdf

    通过价值链分析,可以将业务活动分解为可管理的任务,并进一步归类到特定的业务组件和主题域中。例如,人力资源部门的请假流程可以被拆分为多个环节和任务,每个环节和任务都有其特定的属性,这些属性反映了业务的...

    从业务架构到微服务

    微服务架构是一种设计思路,旨在将一个大型的应用分解成一系列小型、独立的服务,每个服务都围绕着特定的业务能力构建,并且可以独立地部署、扩展和维护。这种架构方式不仅提高了系统的可维护性,还增强了团队的开发...

    银行业务的面向对象设计实例.rar

    面向对象设计是软件工程中的一个重要概念,特别是在银行业务系统中,这种设计方法的应用能够帮助构建出灵活、可扩展且易于维护的系统。本实例聚焦于如何利用面向对象设计(OOD)来处理银行业务的复杂性。 首先,"N...

    电子政务业务流程设计方法通用指南(标准草案).pptx

    《电子政务业务流程设计方法通用指南》是一份指导电子政务系统设计的重要标准草案,它涵盖了从业务调查到软件实现的全过程。以下是对其中关键知识点的详细解析: 1. **建模文档**:建模是电子政务系统设计的核心...

    数字化转型企业架构设计一体化方法

    业务活动也是 IT 设计师分析与设计应用服务中承载业务规则和数据规格的最小单元,业务活动根据处理的业务对象可以跨业务场景地合并到应用服务中。 业务对象是可以独立存在的数据实体,可以分解为逻辑数据实体,进而...

    银行个人储蓄管理系统任务分解图

    《银行个人储蓄管理系统》是一个旨在优化银行个人储蓄业务流程的软件系统,它的设计与开发涉及到多个层面的技术和管理任务。任务分解图(Work Breakdown Structure,简称WBS)是项目管理中的一个重要工具,用于将...

    数据结构课程设计c语言版飞机订票系统分解.doc

    数据结构课程设计 C 语言版飞机订票系统分解 本文档是关于数据结构课程设计的飞机订票系统的分解报告,采用 C 语言编写。下面是该系统的详细设计和实现细节: 一、系统需求分析 在设计飞机订票系统时,我们需要...

    毕业设计-仓库管理信息系统设计与实现(论文+源码+ppt答辩+开题报告+任务书)

    2.4.3仓库管理信息系统数据流程图分解 14 2.4.4渔阳建业库存管理信息系统数据字典 17 第三章 系统设计 24 3.1系统总体设计描述 24 3.1.1系统总体功能模块图 25 3.2 开发环境 26 3.2.1 软件环境 26 3.2.2 硬件环境 26...

    DDD是一种处理高度复杂领域的设计思想,是一种架构设计方法论,通过边界划分将复杂业务领域简单化,帮我们设计出清晰的领域和应用边界,更容易的实现架构演进。

    总的来说,DDD通过定义清晰的领域模型和边界,促进了业务与技术之间的协作,帮助我们设计出符合业务逻辑的架构,而微服务架构则提供了实现这些设计的手段。在实践中,理解和掌握DDD的关键概念,如领域、子域、核心域...

Global site tag (gtag.js) - Google Analytics