说到业务是个让人又爱又恨的东西,客户、领导把它看的很重,不少“技术控”却瞧不起它,认为它是“低智商”的代名词。当然了,这些看法都很偏激。技术仅仅是一个工具,因“业务”的需求而诞生至使用,小说里常常写到,当一个人学会了屠龙之术,却发现天地之间没有龙给他“屠”,这个是最悲惨的事情了,这里的“龙”就是业务,“屠龙之术”就是技术,离开了业务的技术是没有意义的。
业务本身是个抽象的集合,真正把它搞懂了其实也能锻炼人的抽象能力。
说来说去“业务”是个什么东西,似乎没有明确的定义,我觉得“业务”就是个“标准”,程序员完成的系统必须满足这个“标准”,不同行业,不同硬件环境都会有自己的合适的标准,某项技术都有其对应的“标准”。
比如一直讨论很久的问题,C++和Java到底谁快,为此也有衍生出了很多讨论,技术控也是乐此不疲,但是或多或少都脱离具体环境。
计算机语言发展了这么多年,都会相互学习优点,不过总有些本质的区别,比如C++的优势是和硬件结合紧密,Java的优势是屏蔽了硬件限制,两者在诞生的时候发展的方向就有不同,比如通信系统的交换机等各类硬件的程序非C/C++莫属,Java在这里难有使用的地方,但是在异构硬件集群中,现在很火的“云”系统,Java的优势就很明显,现在常用的服务器系统大多都是Java。当然也有人说Java免费,所以比C++更容易推广,的确没错,但是这也属于“业务”的范畴。
说完了业务的大范围,下面说说具体行业的业务。我最熟悉的是电信的业务。相比金融、电商系统,从网上的信息来看似乎电信的系统是最没技术含量的,其实电信的数据量远大于金融、电商,只是大量的数据是后台处理,可以异步展现,所以给的要求并不高,总体来说电信系统是入门的技术低,做好了很不容易。
我和不少电信的程序员人聊过,他们纷纷吐槽是,工作就是配置各种业务参数,体力活。但是说到具体的业务模型时,却说不清楚。
我总结的电信系统分2两大部分,业务模型(CRM)和工作流(IOM)。CRM和IOM是比较老的名词了,新的我也不太清楚。
模型如下:
主产品+子产品+产品规则+动作
解释如下:
主产品,和硬件挂钩。现在的电信产品有手机(移动,联通,电信分属不同网段)、固话、ADSL、光纤、2B+D、30B+D等。
子产品,依赖于主产品。比如移动电话的各种优惠包,宽带的互联星空等。
产品规则,这里是最让人抓狂的。产品规则分3类、
1、主产品规则,主产品之间是没有任何关系的,比如一家人可以装两条宽带,用多个手机。
2、子产品规则,基于不同主产品的子产品之间没有任何关系,基于同一主产品的子产品之间有各种规则,比如手机的资费包开通了一个就不能开通另一个,这类为互斥。不同的优惠可以共同作用,这类为叠加。由于各种子产品的数量繁多,所以这些规则的校验和实现是个很庞大的数字。
3、运营商制定的规则,比如,从硬件角度来说,装宽带、装电话、开通手机是互不相干的,但是运营商制定了各种套餐,“强迫”统一办理。这个无论是对程序员还是消费者都是是很讨厌的……
动作,装、拆,(改=装+拆)
分析完了以后可以发现真正麻烦的地方是业务规则这块,一个电信客户系统的质量高低很大程度上就由这个“业务规则引擎”决定,如果只是闷头往这个引擎里加参数的确无聊,但是这正了解这个引擎的工作步骤还是很有趣的,个人认为理解一个系统的运行是很容易提高能力的。
下面说说“工作流”,消费者的任何一个请求在电信系统中都会转变一个流程,某些特殊的业务流程会很长,比如装高清宽带,需要人上门施工,并测试宽带质量等,这些都成功了才会触发其它的步骤。消费者的业务请求在后端实现往往是“事务”型的,比如原来是套餐A,改成套餐B的会有3个步骤,不熟悉电信业务的人可以想下“神州行”改“全球通”。当步骤1和2施工成功后,步骤3发现现有条件不满足时(这里的判断不在当前系统中,或者说当前系统无法判断,必须将数据发送到另一个平台之后由那个平台来判断,这种情况在电信系统里很常见,比如当前系统没有客户资料,所以无法判断),也就意味着不能办理套餐B,这样得回复成套餐A,这样需要对步骤1和2得进行反向施工,也就是“事务回滚”。先后这就是“工作流”的任务。
工作流在电信系统中是很重要的角色,相比于是电商和金融系统,电信系统的工作流最强大。
简单解释下工作流,工作流有两个最基本单元(节点),逻辑节点和工作节点(不同的系统中叫法也不同,但是作用都一样)。
逻辑节点,就是if判断。
工作节点,就是一个具体的施工环节,一般关联一个平台。
一般工作流的具体配置都由这两种节点组成。
工作流定义的关系有,串行和并行(电信里的叫法是同进同退,一般直接定义成事务)。
于一个系统来说,业务层的调优效果优于代码层的调优效果(代码错误引起的宕机问题不属于调优范围)。比如,一个业务的判断规则精简了,比你优化几个计算语句强的多。比如之前说的例子,在步骤1、2、3中,因为3出了问题,导致1、2得反向施工,所以实际有5步操作,1、2、3、2反向、1反向。所以如果3最容易出问题,那么应该调整顺序应该是3、1、2,把最容易出问题的放在最开始,这样可以避免不必要的步骤。其实在系统上线后运行一段时间,就可以统计出那些平台的出错率高,调整顺序几乎是0修改,但是带来的效率提升是明显的,但是没有几个地方有这么做的。
说了这么多,我觉得把整个系统的框架搞明白还是很能提高个人能力,抽象逻辑对于程序员来说必不可少。所以现在每次抱怨工作无聊时,我都会想想,真的就不能挖出点东西么?
分享到:
相关推荐
信息化-项目管理-药品申报服务类业务流程外包项目管理的研究 在信息化时代,项目管理作为一种现代化的管理方式,逐渐应用于各个行业领域中,其中药品申报服务类业务流程外包项目管理是其中的一个重要分支。随着中国...
Project项目管理-开办新业务.mpp
标题“项目管理-论文及实践”表明这是一个关于项目管理的资料集合,可能包含了理论与实际操作的结合。描述中提到的“博文链接:https://dolphin-ygj.iteye.com/blog/517181”指向了一个ITeye上的博客文章,暗示这里...
软件项目范围管理是项目管理中的核心环节,尤其在IT行业中,对于软件开发项目的成功至关重要。范围管理涵盖了项目从启动到收尾的全过程,确保所有工作都围绕着明确的项目目标和预期产出进行。本文将深入探讨项目范围...
### 软件项目管理-注释版 #### 一、项目定义与特性 本章节首先介绍了项目的概念及其特征,并通过一系列示例帮助理解。在软件项目管理领域,项目的定义和特性是理解整个项目管理流程的基础。 - **项目定义**:项目...
【项目管理-需求调研计划】 在项目管理过程中,需求调研是一项至关重要的步骤,它为项目的成功奠定了基础。需求调研计划是这一过程的蓝图,详细规划了如何有效地收集、理解和确认项目涉及的所有相关方的需求。本...
【课程大纲】01.Storm项目实战课程大纲02.CDH5搭建之CM5安装部署03.CDH5搭建和CM界面化集群管理04.Hadoop、HBase、Zookeeper集群管理和角色分配05.Kafka基础知识和集群搭建06.Kafka基本操作和最优设置07.Kafka Java ...
网站项目管理(WPM)的含义为WebbasedProjectManagement,即以Web应用程序为主要表现方式的架构来进行的项目设计及管理,这样的架构中包含了浏览器、网络和Web服务器等关键主体,主要体现在网站设计、以浏览器为...
产品管理-研发业务管理之软件项目管理培训教材.pptx
【项目管理在建筑施工行业的信息化解决方案】 建筑施工行业的项目管理面临着多方面的需求,包括但不限于合同管理、招投标管理、材料管理、保证金管理、劳务工资管理、财务管理和信息流转等。信息化解决方案的目标是...
大数据企业级项目实战--Titan大型数据运营系统项目课程,附课件+代码下载。 ...课程项目的业务背景源自各类互联网公司对海量用户浏览行为数据和业务数据分析的需求及企业数据管理、数据运营需求。
项目管理系统实施项目管理章程主要涉及的是在软件工程领域中如何...通过这样的项目管理系统和实施章程,企业能够更高效地协调资源,监控项目进度,控制质量,减少风险,并最终实现项目目标,提高业务运作的效率和效果。
- **项目管理高级知识**包括大型、复杂项目和多项目管理、战略管理、用户业务流程管理、知识管理、项目绩效考核与绩效管理等内容,这些知识对于管理大规模项目至关重要。 #### 七、总结 信息系统项目管理师不仅...
艺体培训机构业务-艺体培训机构业务系统-艺体培训机构业务系统源码-艺体培训机构业务管理系统-艺体培训机构业务管理系统java代码-艺体培训机构业务系统设计与实现-基于springboot的艺体培训机构业务系统-基于Web的艺...
课程项目的业务背景源自各类互联网公司对海量用户浏览行为数据和业务数据分析的需求及企业数据管理、数据运营需求。 本课程项目涵盖数据采集与预处理、数据仓库体系建设、用户画像系统建设、数据治理(元数据管理、...
【软件开发与项目管理-1期 0203 模块三】涉及的知识点主要集中在问卷调查系统的架构设计上,包括系统功能、物理部署架构和开发架构设计。 1. **系统功能**: - 问卷调查系统由四个主要模块组成:题库管理、问卷...
综上所述,《希塞-项目管理》这门课程旨在全面介绍项目管理的基础知识和实践技能,通过理论学习和案例分析相结合的方式,帮助学生掌握项目管理的核心理念和方法论,为未来从事项目管理工作打下坚实的基础。
从给定的文件信息中,我们可以提炼出一系列关于IT项目管理的重要知识点,这些知识点涵盖了项目管理的基本概念、项目管理在IT领域的应用、项目管理的环境和过程等方面。 ### IT项目管理概览 #### 项目与项目管理...
- **B (Business Acumen)**:商业敏锐度,要求项目管理者理解业务需求,能够从商业角度出发思考项目的价值。 - **E (Execution Excellence)**:卓越执行,强调高效的执行力和结果导向。 - **S (Stakeholder ...