毛新生:简洁 - 软件的美感
来源:原创 复制链接 更新时间:2012-04-14
最近读到几位名人的文章,谈论控制软件复杂度的事情,颇有感触。

这几年有幸接触了比较多的客户,看到每个企业里的 IT 系统放在一起都很乱 -- 各种各样的问题。从不同的角度看,这些问题有很多成因,今天我想谈其中一个很重要的原因,就是复杂度和变化。

如果你从整个企业的角度来看,经过多年的信息化,系统已经变得非常复杂了;更不幸的是,我们每天都面临着各种变化 - 技术在变化,买的产品要升级,业务需求在变化,已经建立的系统要集成、加强或者退休,新系统要上马;同时时间和成本的要求越来越严酷。所以我们需要考虑:如何才能够很好地管理复杂度和变化?

一个企业需要考虑这个问题, IT 业界技术提供者也需要回答这个问题:如何让代码量减少? 如何将代码组织的更好?

这非常不容易...

有很多的例子可以佐证这一点 -- 比如你可以比较 IE 和 Firefox,他们的代码量不在一个量级上。前者安装需要几百兆的空间,而后者不过区区几十K,但从使用上而言,功能相当。我想我们找得到很多这样的例子...

不过,对简洁性的追求一直在发生...

先谈谈构造软件的主要几个要素:抽象用的基本元素(如过程、对象、组件,接口等),组织这些元素的结构(如设计模式,软件架构,系统集成模式等),使用元素和结构的方式、风格和理念也就是设计原则和设计风格,以及使得这一切能够有序地发生的过程即开发过程

抽象元素越来越高阶,以便我们管理软件的复杂度...
各种结构模式,都通过必要的设计原则来简化复杂度,并使得变化不被扩散...
系统架构和集成模式也在多年探索之后,开始朝松散耦合和灵活性发展,比如现在很热的 SOA 架构和 ESB 架构模式...
设计原则和方法也越来越朝松散耦合、关注点分离等有助于简化复杂性和容纳变化的方向发展...
开发过程则越来越从过去瀑布式的方式,向敏捷软件过程和轻量级的过程发展,以便更好地管理变化与风险...

期待着 IT 厂商和 IT 工程师们,努力地在这条道路上探索,将软件的简洁性作为自己的设计理念 -- 它终将回报给你:更少的构造时间,更少的错误,更好的质量,更少的维护,给业务提供更好的支持... 还有你会从一个简单的软件工程师变成一个美的缔造者。

看看那些已经存在的,复杂、难用(定制)、难维护、老要升级、打补丁的商品软件,看看那些运作多年、承担着我们的核心业务、补丁累累、改一下就动全身的解决方案... 如果系统更简洁些,那会让所有的人的生活都简单些、活得更好些...


是时候追求“简洁就是美”了...