引用《程序员》2012年第7期 邢波涛-系统架构与业务架构论证我的观点

   我强调了十年的企业信息化系统开发的思想,竟然与《程序员》著名作者邢波涛不谋而和。摘录他的《程序员》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后,跟他的聊天记录都没有了,失去跟他联系的方式了。

猜你喜欢

转载自ffychina.iteye.com/blog/1722136
今日推荐