我强调了十年的企业信息化系统开发的思想,竟然与《程序员》著名作者邢波涛不谋而和。摘录他的《程序员》2007年7月文章《系统架构与业务架构》,共勉之。
国内绝大部分企业,对于ERP,进销存这类业务系统的开发,采用的都是经典的SSH架构。对于ERP,存这类业务系统而言,架构必须分层,分为系统架构和业务架构两层。看到这里,每个人都会说,我们一直是这么做的啊。但我观察到很多企业的业务系统,都没有业务架构层,直接拿Spring的系统架构作为自己的架构设计,由JSP调用Action,Action调用Service层,然后Service又调用数据库打交道的DAO层。
如果采用的Hibernate,Dao又得调用Hibernate的类,然后每个表还得再生成一个BO类,这样,一个最简单的查询也得牵扯到Action->Service->Dao->Hibernate->Bo,5个类,外加一个JSP。Spring其实一点也不轻量,如果JSP再引入jquery或Ext这类视图层,一个简单的增删改查,哪怕只有一个表,就得有10个类和一大堆配置文件。因此我认为这是ERP、进销存这类业务系统存在十几年却没有任何一个成熟方案的根本原因。采用原型开发、结对编程、权限编程、敏捷开发、持续集成都没有任何用,个人很偏激地认为,这些方法都是某公司拿过来骗人的。否则,ERP、业务系统也不会失败率那么高了(几乎100%失败,不上ERP等死,上ERP找死)。
我还是举那个B2B2C经典的例子,一张采购入库单,触发了以下几个业务逻辑:(1)采购入库单本身主子表单据的增加;(2)采购商应付账款在增加;(3)采购商库存在增加;(4)厂商或者分销商应收账款在增加;(5)厂商或者分销商会有一个销售出库单;(6)厂商或者分销商库存在减少。如果采用经典的SSH架构,这个Service层得多复杂啊。为什么会有一个Service层呢?高人们就会告诉你,一是因为这是一个事务,必须有总控,入口单一;二是因为要复用,可以拿出去给其他模块使用。对于第一个理由,我是同意的,但事务的起点,我也不认为是Service层,而是Action触发的,我觉得Action才是业务逻辑的装配,而Service层根本没有存在的必要;至于是否复用,我个人认为复用的是最小逻辑单元,而不是整个业务逻辑。比如,增减库存是可以复用的,而出入库单的业务逻辑,是没有任何可复用可能的。系统架构师的作用,就是把这段非常复杂的逻辑,设计出耦合性更小的业务层架构,给程序员使用,而不是把SSH简单包装一下,就直接扔给程序员了。折腾程序员的最终结果,就是跟装修一样,大家(开发商和客户)都不满意,产品或者项目开发周期延迟。
--邢波涛(北京新软孚信息技术有限公司技术负责人。关注SaaS管理软件和B2B,B2C电子商务的融合)
邢波涛在这篇文章说的话就是我一直所说的话,真是心有灵犀了,我十年来一直就是在打造这样一个信息系统,关注客户的业务需求,关注程序员开发成本和时间,企业信息系统的健康发展,关注客户的满意度。我一直强调做软件跟其他行业不一样,要有独立思考的能力,要有精益求精的思想,要有创新和学习精神。当你准备对代码按CTRL+C的时候,你一定要想一想能否有更好的办法,当然,你需要一本叫《设计模式》的书帮你打通任督两脉,让你的创造力源源不断的输出。
很多进入J2EE开发的新人,都畏惧于J2EE的复杂性,当年的EJB已经没落了,想不到Spring代替了EJB,却成为了下一个“EJB”,如果按照所谓国际标准的J2EE开发模式,他们可能永远都是一粒螺丝钉,永远都要面对一堆烂摊子,他们根本就被困死在软件工程的焦油坑里直到他们离职,跳到另一个焦油坑。有些人只是拿着“教你如何使用SSH一步一步搭建系统”这类的教程去搭建系统,把SSH做为万金油框架,停留在低效和重复的开发水平,缺乏精益求精的精神,把开发框架变成了管理和限制程序员代码开发的工具,而不是帮助程序员更好更快地完成项目,这种开发框架既没有为客户快速有效地解决问题,也没有为其他程序员简化开发工作,对程序员的抱怨和建议置若罔闻,搞出来一个个难以维护和维护成本高企的系统。
JAVA是一门非常优秀的语言,有非常优秀的开发资源,而J2EE开发被极大的复杂化,90%以上的j2ee系统和产品都过于复杂,程序员为了java开发相对较高的薪资,也就逐渐麻木了思考,花了几年时间好辛苦才掌握了SSH已经累了,创新的激情都慢慢冷却了,客户也习惯了J2EE系统高昂的开发和维护成本,两者成为了J2EE信息化系统发展的最大阻力。没有对业务逻辑的有效管理和重用,减少不必要的代码,系统就会变得越来越难维护,拥抱变化的能力就会越来越差。
2年前跟邢波涛有过短暂的沟通,JavaEye改为ITEye后,跟他的聊天记录都没有了,失去跟他联系的方式了。
- 大小: 242.7 KB
分享到:
相关推荐
软件工程课程设计---学生管理系统--程序员SUMER 软件工程课程设计---学生管理系统--程序员SUMER 软件工程课程设计---学生管理系统--程序员SUMER 软件工程课程设计---学生管理系统--程序员SUMER 软件工程课程设计---...
他们需要与业务部门密切合作,了解业务流程、目标和痛点,设计出能够支持业务发展的系统架构。 在实践中,学习和经验积累是架构师成长的关键。参与大型项目、接手技术难题、阅读和分析其他优秀架构的设计都是提升...
软考是人社部《国家职业资格名 录》中唯一与程序员有关的考试 ,报考不受限制,可帮你积分落户、评职称、个税抵扣等。 二、软考分类 软考既是职业资格考试,又是职称资格考试。考试分为初级、中级和高级三个级别,...
WINDOWS程序员使用指南(三)----OLE_DDEWINDOWS程序员使用指南(三)----OLE_DDE
7. 程序员的数学【一本为程序员朋友们写的数学书】-2012 年 10 月 8. 程序员的数学 2 概率统计-2015-08-01(Ruby 版) 9. 程序员的数学 3 线性代数-2016-03-01(Ruby 版) 10. 离散数学-2016 年 03 月 11. 离散数学...
7. 程序员的数学【一本为程序员朋友们写的数学书】-2012 年 10 月 8. 程序员的数学 2 概率统计-2015-08-01(Ruby 版) 9. 程序员的数学 3 线性代数-2016-03-01(Ruby 版) 10. 离散数学-2016 年 03 月 11. 离散数学...
黑马程序员-SpringCloud-学习笔记01-认识微服务
《基础知识 - 系统架构》这篇博文主要探讨的是软件系统设计中的核心概念——系统架构。在IT行业中,系统架构是构建复杂软件系统的基础,它决定了系统的整体结构、组件以及它们之间的交互方式。以下是对这个主题的...
桌面右键多余菜单删除代码---程序员SUMER 桌面右键多余菜单删除代码---程序员SUMER 桌面右键多余菜单删除代码---程序员SUMER 桌面右键多余菜单删除代码---程序员SUMER 桌面右键多余菜单删除代码---程序员SUMER 桌面...
《程序员2006年第7期》是一本专注于IT技术和软件开发的专业杂志,该期PDF文件包含了一系列关于编程、软件工程、系统架构、项目管理以及技术趋势的文章和报道。这期杂志是程序员们获取最新技术资讯、提升专业技能的...
6. **系统编程**:包括中断处理、设备驱动编程、异常和错误处理,以及系统调用接口等,对于操作系统开发者和底层系统程序员尤其重要。 7. **最新更新说明**:2022年4月的更新内容可能涉及新的处理器功能、性能增强...
《程序员2006年第8期》是一本专注于IT技术和软件开发的专业杂志,该期PDF文档包含了丰富的技术文章、行业动态以及专家访谈等内容。作为2006年的期刊,它反映了当时的主流技术趋势和程序员的关注点,对于了解那个时期...
《程序员》封面报道:智能算法 智能应用每时每刻都在影响着我们的工作和生活,然而对于许多软件开发人员来说,构建智能应用的技术—智能算法依然披着神秘的面纱。一方面,这些技术的潜在价值可以带来巨大的经济回报...
《程序员》杂志2012年第十期(一)
2007年《程序员》杂志第7期part2
《软考-系统架构师(2009-2018历年真题).zip》这个压缩包文件包含了从2009年至2018年间的系统架构师全国计算机技术与软件专业技术资格(水平)考试(简称“软考”)的历年真题集。这些真题对于备考者来说是极其宝贵的...