`
wangheid
  • 浏览: 36328 次
  • 性别: 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,存在的理由不一,有的是出于性能原因,有的出于业务原因(在金融系统中可以看到这样的例子,例如:为了保证关键业务数据的存在,通常是一些价格或者利率,白天提请的交易行为,分为两步,第一步即使完成,而第二步动作必须在晚上进行)。

分享到:
评论

相关推荐

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

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

    毕业设计-仓库管理信息系统设计与实现(论文+源码+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...

    企业业务集成与协同平台解决方案

    企业业务集成与协同平台解决方案 该架构以Partin/C敏捷架构平台的核心...通过科学的组织分解、工作分解、资源分解、投资科目分解、质量验评项分解、安全控制点分解与知识资料分解,搭建起智能项目管理模型,有效把控项

    城市数字化转型顶层设计指南(2021).pdf

    本文(标准)提出城市数字化转型: 1、顶层设计方法。城市数字化转型是BTE (业务、技术、环境)三位一体的全方位...实施路径规划包含任务分解和重点工程规划、重点工程实施方案设计、实施计划设计、保障措施规 划。

    数据库应用系统功能设计与实施.docx

    数据库应用系统功能设计与实施全文共2页,当前为第1页。数据库应用系统功能设计与实施全文共...原型迭代法步骤:1 初步设计 2 用户界面细节设计 3 原型设计与改进4.4.2 业务逻辑层详细设计4.5应用系统安全架构设计4.5.1

    房屋租赁管理系统 数据库系统设计

    1.系统功能模块图:改进完善业务流程图,分析用户需要系统完成哪些任务,逐层分解,画出功能层次图。功能分析是要在设计过程中明确完成设计后的“淮南师范学院房屋租赁管理系统”所能具备的功能。 淮南师范学院房屋...

    02 企业 EA -应用软件架构设计规范.docx

    基于业务流程(通常是1级或2级业务流程模型)、业务能力,定义数据从一个数据主题流向另一个 数据主题,包括外部与本系统的数据流向。确保每个外部数据实体至少包含在一个数据流定义。 应说明期间数据是如何创建和...

    软件项目设计方案.doc

    2 系统功能模块详细设计 按结构化设计方法,在系统功能逐层分解的基础上,对系统各功能模块或子系统进行 设计。此为详细设计的主要部分之一。 用层次图描述系统的总体结构、功能分解及各个模块之间的相互调用关系和...

    struts养老保险系统设计与实现

    DAO模式的作用是将底层数据访问操作与高层业务逻辑 分离,对上层提供面向对象的数据访问接口,从而实现了业务核心和具体数据源的 解耦。 通过实践证明Struts框架层次清晰,页面导航便利的特点,可以实现系统的 快速...

    什么是数据库设计数据库设计的步骤.docx

    数据库设计的特点 数据库建设是硬件、软件和干件的结合 三分技术,七分管理,十二分基础数据 技术与管理的界面称之为"干件" 数据库设计应该与应用系统设计相结合 结构(数据)设计:设计数据库框架或数据库结构 行为...

    数据库设计教案.docx

    (2)E-R模型与视图集成法(局部-集成) 将一个单位分解成若干个局部应用,先对每个局部作局部模式设计,建立各个部分的视图即分E-R图,然后以各视图为基础进行集成。集成过程需对视图作修正,然后合并成全局概念...

    智慧水利总体设计与水利网信补短行动方案.pdf

    水利业务需求分析将洪水、干旱、水利工程安全运行、水利工程建设、水资源开发利 用、城乡供水、节水、江河湖泊、水土流失和水利监督等10类业务分解为37项具体的水利 业务工作、45项业务功能,169项功能模块,19类...

    [详细完整版]软件需求工程.pdf

    (2)系统⽤例图 需求分析(系统需求规格说明书-细化需求): 需求分析是业务分析,也就是选择⼀种业务导向的线索将零散的需求串起来,形成⼀个体系完整、内容清晰的框架,以指导后续的设计、开 发⼯作。概括为分解、...

    哈工程软件架构课程设计模板

    哈工程软件架构课程设计模板 ...3. 粘贴控制(Controller)层代码截图,代码要能显示对外服务接口暴露,及与前端交换的业务对象,数据传输格式等,(10分) 4. 粘贴业务(service)层代码截图,要有

    UML与系统分析设计

    4.3.2 业务Use Case与系统Use Case 4.3.3 Use Case图 4.4 Use Case的联系 4.4.1 泛化关联 4.4.2 使用关联 4.4.3 包含关联 4.4.4 扩展关联 4.5 Use Case图的应用 4.5.1 Use Case的确定 ...

    博客管理系统 综合课程设计

    (d) 确定是否要对某些模式进行合并或者分解 47 (e) PDM逻辑结构图 49 3.4.3 物理结构设计 49 4 系统实施 54 4.1 技术标准及框架的选择 54 4.2 开发环境的搭建 54 4.3 测试目的 55 4.4 测试方法 55 4.5 测试实例 55 ...

    软件系统设计方案.pdf

    在设计与实现过程中,我们⼀般将执⾏视图转换为伪代码之后,再进⼀步转换为实现代 码 3.1 顾客 3.2 员⼯ 3.3 管理员 4、实现视图 、实现视图 实现视图是描述软件架构与源⽂件之间的映射关系。⽐如软件架构的静态结构...

    html数据库的设计-数据库设计的六个阶段是什么.pdf

    运⾏与维护设计 在数据库系统正式投⼊运⾏的过程中,必须不断地对其进⾏调整与修改。 ⾄今,数据库设计的很多⼯作仍需要⼈⼯来做,除了关系型数据库已有⼀套较完整的数据范式理论可⽤来部分地指导数据库设计之外,...

    工作和绩效管理系统功能设计说明书

    工作绩效管理业务架构、功能模块设计。本设计方案从工作计划作为起点,完成不同管理层面、不同时间阶段计划的分解,直至个人;并记录基于工作计划完成为目标的工作日志,接受直接上级的点评,其点评成绩进入绩效结果...

    系统设计方案.docx

    以上建议采用HIPO图进行功能分解与模块描述,更高的要求建议采用IDEF0方法进行功能模型设计。 详细设计应用系统的各个构成模块完成的功能及其相互之间的关系,用IPO或结构图描述各模块的组成结构、算法、模块间的...

Global site tag (gtag.js) - Google Analytics