业务行为的分析和设计
Author:Anders小明
复杂业务行为通常看作是复杂规则与流程的集合。解决的基本方法依赖基本的思考方式:分解结构。
分解的第一要素是:面向对象——内聚。通常面向对象理论会告诉我们设计的设计原则是:这个对象是什么。这样的做法对于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,存在的理由不一,有的是出于性能原因,有的出于业务原因(在金融系统中可以看到这样的例子,例如:为了保证关键业务数据的存在,通常是一些价格或者利率,白天提请的交易行为,分为两步,第一步即使完成,而第二步动作必须在晚上进行)。
分享到:
- 2006-12-23 12:35
- 浏览 2321
- 评论(2)
- 论坛回复 / 浏览 (2 / 2981)
- 查看更多
相关推荐
4.电商用户行为分析大数据平台(项目名称) 5.访问行为,购物行为,广告点击行为,对这些行为进行分析,使用大数据技术来帮助公司提升业绩。 6.主要的功能模块有用户session分析,页面单跳转化率统计,热门商品...
通过本研究提出的大数据用户行为分析引擎的设计方案,企业能够在移动互联网时代抓住新的发展机遇,从传统的话务量经营转变为流量经营,更加深入地挖掘市场和用户的真实需求,实现业务的创新和转型。此外,由于分析...
用户行为分析的核心是对用户在网站上的活动进行深度追踪和解析,包括他们的来源、他们在网站上的行为路径、他们在不同页面的停留时间、购买转化率等。 首先,用户行为分析定义了对用户购物路径日志信息的统计和分析...
"数据仓库:业务模型分析与设计" 本文将围绕数据仓库主题,讲述业务模型分析与设计的步骤。数据仓库是为提高银行卡业务分析和决策效率而建立的分析型环境,它可以将事务处理环境中的数据提取出来,进行分析和挖掘,...
特约商户分析是管理信息系统的重要组成部分,包括特约商户信息分析、特约商户行为分析等。了解特约商户分析的特点和应用,对银行业务的分析和了解非常重要。 卡业务分析 卡业务分析是管理信息系统的重要组成部分,...
### 一个用户行为分析产品的设计与实现 #### 1. 产品概述 “神策分析”是一款由曹犟设计并实现在神策数据平台上的用户行为分析产品。该产品能够支持亿级日活跃用户(DAU)的数据处理能力,具备秒级数据入库及查询...
《基于Impala构建实时用户行为分析引擎》及《开源大数据分析引擎Impala实战》这两份文档,深入探讨了Impala在大数据分析领域的应用,特别是如何利用Impala来实现实时用户行为分析。Impala,全称为Interactive Query ...
在当今大数据时代,用户行为分析系统扮演着至关重要的角色,它能够帮助企业理解用户的行为模式,优化产品设计,提升用户体验,以及进行精准营销。本系统以“人工智能”为核心,利用强大的分布式计算框架Hadoop和大...
根据平台统计出来的数据, 辅助公司中的 PM(产品经理)、数据分析师以及管理人员分析现有产品的情况, 并根据用户行为分析结果持续改进产品的设计,以及调整公司的战略和业务。最终达到用大数据技术来帮助提升公司...
基于Hadoop架构的移动用户行为分析系统不仅可以帮助电信运营商更好地理解和预测用户的行为,还能够在实际业务场景中发挥重要作用。通过不断优化技术架构和数据分析方法,运营商可以更高效地利用手中的大数据资源,...
* OOD(Object-Oriented Design):是一种面向对象的设计方法,用于设计和实现软件系统。 * Java、C++、C#等面向对象的编程语言:这些语言支持面向对象的编程,提供了丰富的类库和框架来支持软件开发。 面向对象...
1. **转化路径优化**:根据用户行为分析,发现某些环节存在较高的流失率,可以通过优化页面设计、提高加载速度等方式降低这些环节的流失率。 2. **用户活跃时段**:分析显示,特定时间段内的用户活跃度显著提高,这...
在移动用户行为分析系统中,数据挖掘技术的应用主要体现在用户行为分析模型的设计上,该模型主要由采集层、数据预处理层、分析层和应用层四个部分组成。用户行为分析模型设计的核心在于从大量用户数据中提取出有用的...
根据平台统计出来的数据, 辅助公司中的 PM(产品经理)、数据分析师以及管理人员分析现有产品的情况, 并根据用户行为分析结果持续改进产品的设计,以及调整公司的战略和业务。最终达到用大数据技术来帮助提升公司...
本毕业设计项目聚焦于利用Apache Spark构建一个高效、可扩展的行为日志分析系统,旨在帮助开发者更好地理解和挖掘海量用户行为数据。 一、Spark简介 Apache Spark是大数据处理领域中的热门框架,以其内存计算和...
它涉及数据的抽取、转换和加载(ETL),以及数据仓库的设计和维护。数据仓库能够集成来自不同来源的数据,为后续的数据分析和挖掘提供统一的数据视图。 2. **数据挖掘算法**:包括但不限于聚类分析、关联规则学习、...
《UML系统分析和设计》是软件开发中的一个重要步骤,它可以帮助开发者更好地理解业务需求,设计出满足业务需求的软件系统。本次课程设计题目是设计某医药公司进销存管理信息系统的进货、库存、销售三个组成部分。本...
特约商户分析是银行业务的一种重要形式,它可以帮助银行分析特约商户的需求和行为。 附录 附录部分包括如何成为金融IT公司内合格的业务分析师的相关知识点。业务分析师是银行业务的核心人物,它需要具备银行业务...
这份文档旨在探讨和分析规划国土委的信息化顶层设计,旨在优化业务流程,提高工作效率,确保资源的有效配置。 首先,业务现状是分析的基础。概括而言,当前业务主要涉及规划、土地管理和建设项目审批等多个方面。...