简单是王道《一、开篇》
从事了很多年的企业信息应用软件的开发,深有感触。最大的感触是,在软件系统的构建中,一定要把握简单的原则。用简单的眼光来看待信息,用简单的手段来组织信息。
提到原则,很多人不以为然,通常原则是些非常显而易见的道理,就算有争议的原则,像这里说的--简单是王道,每个人肯定一目了然。但是在运用原则的过程中,总是有很多人会背道而驰。
在我看来,企业信息应用系统的内容非常复杂,但是系统本身的实现却很简单。本质上说,系统包括三个部分,一个域模型,一组基于域模型的计算,最后是用来和用户交互的UI。展开来呢,多了一些需要了解的知识,域模型在系统工作时涉及信息的使用和存储,所以要了解数据库(现在的OR Mapping工具甚至使你不用更多的了解它)。基于简单化原则,请在思考域模型的时候,别考虑什么数据库,做得到吗?很多人做不到,因为在考虑域模型的时候,总是忍不住去考虑效率、域模型中各元素的关系如何在数据库中的表达,还有一些OR Mapping工具在使用中的一些限制。如果忍不住诱惑,简单的原则马上就会违背。问题需要解决,但要在原则下进行。
上面说了和域模型有关的事,接下来看基于域模型的计算。有了域模型中的数据,围绕这些数据加加减减,就是企业信息系统通常要做的事。展开来看呢,又要多了解一些知识。业界有很多的平台和框架支持加加减减,J2EE、Spring、Seam,这些平台和框架提供了一些服务,例如分布式计算,事务服务,连接池,状态服务(各种上下文),等等。除了平台和框架,还有支持开发的工具:通过向导生成各种类型的项目,集成各种服务器,开发,调试,发布。再延伸开呢,业界还有一些流行的思想,例如SOA,帮助企业来进行系统集成;工作流,帮助系统实现灵活的业务逻辑。。。可是当进入这花花世界的时候,别忘了那个简单的原则,我们需要做的只有一个,基于域模型的计算。换句话说,需要做的是加加减减。和业务分析人员紧密合作比其他的事更重要。从这个层面上说,POJO是王道,有了新版JDK提供的annotation功能支持,有了越来越多像seam这种框架,真的不用太关心加加减减之外的事。
1 楼 pangbuddy 2008-09-23 是不是说要宏观抽象的看待复杂问题,并且在具体处理的时候各负其责,做好本职工作,不该管的事不多问? 2 楼 nijian 2008-09-23 我的意思是在考虑任何问题的时候,都要遵循简单的原则,不要轻易打破它,否则系统会失去控制,变得越来越复杂。 3 楼 gufeng 2008-09-23 说的很对,不管理从语言,到工具,简单才是王道,而设计开发,就是简单的积累... 4 楼 Durian 2008-09-23 看起来有道理,其实没用。
就像中医的天人合一 5 楼 nijian 2008-09-23 Durian,欢迎继续关注我的博客,我会用一些实例来说明简单的王道。 6 楼 jindw 2008-09-23 道德经有句:
吾言甚易知,甚易行。天下莫能知,莫能行。
简单往往是很多人可望而不可及的东西。 7 楼 noisy_dummy 2008-09-23 软件的世界从来都不是理想的世界,因此没有银弹能保证你的系统上来就是完美的,我想过程应该是从抽象到细节再回到抽象,虽然从外表看可能很简单的模型,却是不断雕琢的结果,套用一句广告词叫“简约而不简单”。 8 楼 sp42 2008-09-24 软件:要“妙”不要玄 9 楼 Azi 2008-09-24 能简么?
假如弄个支付系统,你必须考虑上万个安全问题 10 楼 nijian 2008-09-24 Azi 写道
能简么?
假如弄个支付系统,你必须考虑上万个安全问题
我觉得安全会从很多方面来考虑:
1、操作系统;
2、数据库;
3、软硬件的网络连接;
4、应用系统运行平台,如中间件提供的各种安全服务;
5、应用系统本身的安全框架;
6...
总体来说,安全与应用系统本身的业务应该分离。在用简单的原则构建系统前,应该列出那一万个安全问题(从安全种类来说,也许远远没有这个数量),不能遗漏,然后实现各种安全的应对措施。也许安全本身是一个有完整故事的系统。我说的简单不是简单地考虑复杂系统,而是使复杂系统的实现以简单的形式演化。
11 楼 Absolutely 2008-09-24 有点兴趣,静待下文。 12 楼 nijian 2008-09-24 Absolutely 写道
有点兴趣,静待下文。
我的博客上已经有了两篇下文,欢迎浏览。接下来我会谈谈开发模型。