技术开发 频道

软件系统设计的核心

【IT168 分析评论】

    当然我现在所说的内容都是建立在面向对象基础之上的,也就是用面向对象的语言Java或C#设计出来的的软件系统。那么软件系统设计的核心问题是什么呢?那就是如何让系统易于维护并且复用性较好,让软件系统具有可维护性和可复用性,是我们的系统要达到的目标。

    要完成上述的目标,并不是一件特别容易的事情。一个完成了上述目标的软件系统必然具备可扩展性、灵活性、可插入性这三个特质。如何才能具备这三个特质呢?当然是提高软件的可维护性和复用性了,哈哈,又绕回来了。那么如何完成软件系统的设计目标呢?那就是以设计原则和设计模式为基础来设计我们的系统。

    在《Java与模式》这本书中提出了一个“支持可维护性的复用”的概念,他的定义是:“在保持甚至提高系统的可维护性的同时,实现系统的复用”。(好像是废话啊!)“支持可维护性的复用”的基础就是我们上面提到的设计原则和设计模式。

    设计原则有哪些?设计原则与设计模式有什么关系?

    在面向对象的设计中,有六个设计原则(这些原则也都是复用原则,当然也并非全部的设计原则。):

    1、开闭原则。

    2、里氏代换原则。

    3、依赖倒转原则。

    4、接口隔离原则。

    5、组合/聚合复用原则。

    6、迪米特法则。

    如何才能做到在设计中遵循这些原则,当然是会有一些方法和方式,那么这些方法和方式就是以设计模式的面目出现的。所以设计模式你可以简单把他看成是:为遵循设计原则而制定的一些指导性的方法,说的文言一些就是遵循设计原则的解决方案。设计模式可以划分为三大类别:

    1、创建模式。

    2、结构模式。

    3、行为模式。

    前面我们提到,一个达到了可维护性和可复用性目标的软件系统必然具备可扩展性、灵活性、可插入性这三个特质。如何才能保证我们的软件系统具备这三个特质呢(这次不绕了)?

    1、可扩展性可以用开闭原则、里氏代换原则、依赖倒转原则、和组合/聚合复用原则来保证。换句话说你只要遵循一些设计原则你的系统就能保证达到可扩展性。

    2、灵活性可以由开闭原则、迪米特法则、接口隔离原则来保证。

    3、可插入性可以用开闭原则、里氏代换原则、组合/聚合复用原则和依赖倒转原则来保证。

    具备了上述三个特质的软件系统,我们软件设计的可维护性和可复用性目标也就达到了。

    我们可以想象,一个软件系统首先是从遵循设计原则出发的,然后再运用一些设计模式来保证我们遵循了设计原则。如果我们为了设计模式而设计模式,脑子里并没有太多设计原则的概念的话,那么设计模式并不会给我的工作带来方便。

0
相关文章