您的位置:首页 > 运维架构 > 网站架构

软件的设计原则

2011-05-22 16:56 113 查看
   从事软件开发这个行业有一段时间了,在曾经的一个项目中,因为一个不好的设计导致该项目重复返工,最后失败。从那以后软件的设计开始作为我开发生涯中的一个重要关注点。也明白开发出一个软件容易,但是要开发出一个既能满足现在客户的需求,又能应对后期变化的软件是相当具有挑战性的事情。最近在阅读Miscrosoft.Net企业级应用架构设计,从中学到一些关于软件的一些设计原则,特此写下这篇文章和同行者一起分享。如果解释有模糊的请大家及时指正,小弟我将不甚感激!

  在现今软件开发领域中,软件项目开发中设计占有一定的分量。

  在软件项目开发中,团队中的每个人都希望能够成功并尽了最大的努力。即使是这样系统设计仍然有可能出现失败。系统的改变通常是一个缓慢的过程,我们在设计时必须考虑到如何来应对后期的变化。同时有可能你会不停的在系统中为类型添加临时型的修复,这样会让越来越多的代码难以维护和改进,到最后你会发现系统将无药可救。

  接下来将给出一些常见的信号,当这些信号出现时,就暗示着你的设计或许已经开始走下坡路了。

  1、坚硬因此易碎

  坚硬的软件是指那些对修改有较大抵触的软件。若对某一个模块进行了修改,此时你不得不对其依赖的模块进行修改,此时你不能预见修改的时间同时在修改软件的同时有可能破坏其完整性。那么这样的软件有意义吗?

  2、使用比重用简单

  如果我们曾经开发的某一个软件工作良好,在另一个项目中,你可能会想到重用原有项目的类型或者程序集。但是当你将类型或者程序集复制过去后发现没办法使用。这是因为什么呢?当出现这种情况时,说嘛你的原有的项目在设计时也很失败。依赖是不可重用的罪魁祸首。此时我们将不得不重新设计。

  3、临时修补要比彻底解决简单

   在软件开发中,出现问题虽然临时修补比彻底解决简单。但是不断的临时修补会积少成多,到最后导致代码乱成一团,难以维护。

下面我们介绍一些设计的基本原则吧

  在现今软件开发领域中,几乎所有软件开发从业人员都或多或少了解过多层结构开发模式,如三层架构开发模式。在以前很多的代码是这样的:混乱不堪、充斥着跳转/返回、满屏尽是GOTO语句。并将这样的代码称之为“意大利面代码”。慢慢的,因为这样的混乱代码、开发中的心中渐渐地出现了结构化编程的理念。通过结构化编程设计的系统被称之为“千层面”。关于“意大利面”和“千层面”的区别,大家仔细体会吧!在结构化编程的背后隐藏着软件系统设计的两个核心原则:高内聚、低耦合。这两个核心原则在面向对象软件系统设计中仍然风光无限

  内聚,表示某个特定模块的软件模块所表达的逻辑之间的距离。内聚的衡量标准从低到高。内聚越高说嘛软件的设计越好。同时高内聚意味着高的可维护性和高的重用性。高内聚意味着模块之间的依赖较少。与内聚紧密相关的是单一职责原则。表示各个模块相对独立。

  耦合:用于度量模块与模块之间的依赖程度。两个模块之间的耦合代表A模块修改了,B模块不得不修改,否则无法编译。可见高的耦合性对软件系统并不是很有利。因此我们在软件设计中,应尽量降低模块与模块之间的耦合。一个项目的耦合低说明该项目设计较好。因为高耦合会阻碍测试过程同时降低代码的重用性。最终软件将变得坚硬、易碎。

  可见高内聚、低耦合是多么的重要。一个系统满足了这两个条件时,那么软件系统基本满足了高可读性、高可维护性、易于测试和易于重用的要求。

  好了,就到这了,有时间再和大家一起分享。

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息