规则解决方案深刻地改变着业务系统的生命周期

对于经常变化,或多样性很高的业务规则,直接由程序员使用开发语言编写并不明智。如使用java,c#等语言直接表达企业的规定、制度或管理办法,甚至不定时修改的计算公式,这并非合理的做法。编程语言、数据表结构、分布式部署等因素综合之后,这些业务逻辑会变得不好维护。传统的IT专家会认为只要需求做得好,分析透彻,所有的系统需求都会被定义,可以使用一定的表结构和设计来降低或解决这些频繁的修改或多样性。但如果业务的变化范围很大,多样性是天马行空的,或当前根本没有需求,而是决策者在一定时期根据形势而作出的决策,那即使不考虑金钱成本,业务系统是否又能快速响应呢?

引入规则解决方案,是一个大趋势,与传统相对,她对频繁变化和多样式的决策反应非常的快,是一个较合理的手段。引入之后,业务系统的生命周期,如软件需求采集,系统分析设计,编码,测试和维护都会发生深刻的变革。

    需求采集

在并行开发的情况下,对于新开发的系统,业务规则是作为需求采集的一部分。业务规则的采集是通过不同的需求交付物(如领域模型和业务用例)来收集。从深层次来讲,业务规则重点强调的是业务基本理由(规则背后的业务策略和动机),并不是关注被基本理由所驱动而产生的业务动作。相应地,我们需要特定的过程,角色,技巧和交付物去处理业务规则。同时,这些收集“业务规则”或“中间交付物”的过程和技巧,依赖于公司一直使用的传统需求采集技术。如公司一直是使用用例来采集功能需求的,那么业务规则的采集就应该基于这些用例所表达的决策步骤的上下文信息。对于重构系统的情况,现存的系统和文档可以作为需求采集一个重要内容,也是业务规则的来源,这种情况下,规则发现的过程和技巧是同样适用的。

在非同步开发的情况下,我们需要清晰地把业务规则与过程、角色、技巧和交付物分开。与特定的业务程序的需求采集分开的。

系统设计

系统的分析与设计,要更加关注业务并依赖规则引擎去执行业务决策,除此之外,系统的基础架构应该要尽量少地被特定的规则解决方案所影响。程序的分析和设计时,会有更多的规则或决策方面的内容。我们需求做规则分析的工作,包括将重复的业务逻辑分解为若干简单的自动化的逻辑,检测规则之间的冗余、重复或冲突,记录业务规则的决策意图。还需要根据业务需求或程序设计的需求,将规则打包成一个规则集,该规则集由测试、部署和执行等一体化的组件组成。我们还要清晰地设计和列出业务规则管理系统(BRMS)的管理部件,包含规则库的结构,规则元数据,用规则改变流程的措施等等。最后我们要设计业务程序与规则管理系统的相互调用接口。

编码

基础架构的代码编写,不受规则解决方案的影响。但是决策逻辑将会被分离出来,通过一个业务规则管理系统(BRMS)进行编写,我们需要新的流程,技术,技巧,角色和工具去编写业务规则。这样的分离的结果是这两方面的程序可以减少耦合并相对独立地推进。当项目的基础架构完成之后,不用等到第一个业务规则代码类编写出来和测试,我们就可以参与到项目中。这种情况下,客户会怀疑"为什么还在需求采集中,就已经将研发团队放回公司了",但我们在未写一个业务逻辑层代码之前,就已经完成所有的业务规则的编写,大部分规则也已经被测试。这样,规则编写问题和系统架构会相对独立。

测试

在传统的系统开发中,功能测试是在程序已经被开发出绝大部分时才会进行的。进一步讲,黑盒功能测试没有为程序业务逻辑方面的调试提供什么帮助,反之白盒测试需要我们分析和辨别复杂逻辑运行环境中的逻辑路径。而使用规则解决方案,我们可以用较少的架构代码,测试相对独立的功能。这就像通过代码执行功能的单元测试,可以辨别,跟踪,修改独立的逻辑路径。独立规则的测试能力是一个强大的验证和确认的工具。

维护

在传统的系统开发中,维护请求都走一条相似的实现路径,不分业务规则还是基础架构代码,都基本这样:管理员签发维护请求,该请求会下发到IT人员的手,去实现、测试和部署。在规则解决方案的帮助下,业务规则或决策逻辑被独立地部署和维护,我们有不同的业务流程来识别业务规则,并使用轻量级的规则部署机制。业务规则维护是整个业务管理活动中的一环。规则管理受同步或异步开发模式的业务规则解决方案所深深影响。

时间: 2024-12-29 01:38:07

规则解决方案深刻地改变着业务系统的生命周期的相关文章

系统开发生命周期

原文:系统开发生命周期 常规的系统开发生命周期(SDLC): 1.计划(Planning) 2.需求收集与分析(Requirements gathering) 3.概念鱼逻辑设计(Conceptual and logical design) 4.物理设计(Physical design) 5.搭建模型并测试(Construction and testing) 6.实现和实施(Implementation and deployment) 7.维护/支持(Maintenance/ongoing su

系统开发生命周期之分析阶段

分析阶段说明此系统由谁来用.用做什么.在哪里用,以及什么时候用.这个阶段,项目团队调查所有现有系统,确定可改进的机会,以及开发新系统的方案.这个阶段包括以下3步. 1.开发分析策略来指导项目团队的工作.这个策略包括对当前系统及所存在问题的分析,以及设计新系统的方式. 2.下一步是需求收集.对这些信息进行分析,从而导出新系统的开发方案.系统方案是开发一系列业务分析模型的基础,这些分析模型描述的是如果新系统开发好后业务将怎样处理.模型集合中一般应包括支持执行业务过程必需的数据表示模型和过程模型. 3

业务系统技术架构的方法论

业务类系统(通常称为To B 类产品),一般包括crm,供应链,物流等.系统的架构设计非常具有挑战性. 面向用户的To C 类前台产品,无论产品经理还是用户都已经培养起了使用习惯,对功能有一定程度的理解,见过的模式足够多,能够建立起一定的产品模型,也容易找到参照物去模仿.但是业务类的系统,常常是没有参照和模仿,一些业务流程的不同,一点公司组织结构的不同,你家的CRM和他家的CRM可能完全没有参考性.所以在搭建产品架构的时候则要求产品经理非常懂业务,考验PM能力的同时,对技术架构也具备很大的挑战.

业务系统监控解决方案

第 1 章 方案背景 1.1. 方案背景 随着网络与自动化的建设,各个企业信息化程度已经达到了较高水平.信息技术在提高管理水平,促进业务创新,提升企业竞争力方面发挥着日益重要的作用.显而易见,基本上所有的业务系统都架设在网络之上以提供服务.然而,客户无法了解和预测网络架构的变化,网络故障对于业务的影响,也无法了解业务的变化如何影响网络基础设施.引入业务网络可视化管理解决方案将会提高业务性能和运营效率,从关键的投资中提供战略性价值. 1.2. 业务管控的需求 用户对于业务管控的需求往往包括以下方面

提供一种业务系统非核心信息不连表查询解决方案

一种业务系统非核心信息不连表查询解决方案 本文针对java开发且采用前后端分离的开发模式,非java开发可能作用不大.同时数据库以mysql为例,部分表述只做示例,并非严谨的mysql语句. 普通的业务系统开发过程中,下面描述的这种需求应该是比较常见的.一个申请单,需要显示申请人名字,审核人名字. 这里涉及到两张表:申请单(t_apply), 用户(t_user),后台数据表我们可能会这么设计: // 方案一 t_apply( apply_id, apply_no, *** apply_user

从0到1教你设计业务系统

导读 本文将以一个案例,向读者逐步揭示一套业务系统从0到1的设计过程.重点讲述架构.模型等业务系统最本质的设计精要. 一.业务系统设计概述 1.什么是业务系统 互联网公司常常将产品方向分为两类,C端和B端,C端主要是面向客户和消费者的系统,B端的范围则相对模糊,给供应商或商家使用的系统,给内部业务人员使用的系统,都统称为B端系统.C端和B端系统建设的出发点和侧重点完全不同.C端系统偏重用户体验,强调感性,持续的数据分析优化,同一个按钮不同的摆放位置都要精心设计.论证,服务对象是个人:B端系统偏重

银行综合储蓄业务系统,水平为学了一年C语言

银行综合储蓄业务系统 #include <stdio.h> #include<string.h> int acccunt = 0; char name[10],pw[10]; struct user   //定义结构体 { int ID; char userName[10]; char userPwd[10]; float money; int status;  // 状态 1:正常 2. 挂失 0:销户 }users[60]; int kk = 0; // 记录编号,和已添加用户

企业级业务系统开发实战

通过一个系列讲述一个真实企业的ERP系统开发全过程.其中包括需求分析.设计建模.开发.测试全生命周期过程,其中会详细讲方法论与技术实践.涉及到的方法包括敏捷软件开发.四色原型.领域驱动设计.业务架构.技术架构与具体的EF.WF.EasyUI等技术在项目中的使用. 领域驱动设计案例之领域层框架搭建 摘要: 根据前面对领域驱动设计概念以及一些最佳实践的理解,领域模型是系统最核心的部分,我们还是采用前面销售订单的例子,这个案例系统的核心构建就从领域层开始.领域层框架搭建主要完成两个任务:1.领域模型的

业务系统中的开与闭——分发模式

"对新增开放,对修改关闭."--开闭原则. 这里分享一个我在业务系统设计过程中常用的一个"复合模式",用作一个在业务系统设计中运用"开闭原则"的例子. 背景 这是一个账务系统,负责处理各类业务流程中发生的若干个账户之间的转账相关逻辑,包括账户余额的变更.以及各账户的流水记录.这个系统的复杂度在于:不同的业务流程,所需要操作的账户.金额的计算公式.以及流水的类型,都有很大的差异:即使是同一个业务,里面也会细分为多个子业务,账户.金额.流水类型又各不