随笔-34  评论-108  文章-0  trackbacks-0
(1)软件的首要技术使命:管理复杂度
     本质性困难的原因:必须去面对复杂、无序的现实世界;精确而完整地识别出各种依赖关系与例外情况;设计出完全正确而不是大致正确的解决方案等。想清楚的认清现实世界到底如何运作仍有很多挑战,当软件要解决更大规模的现实问题的时候,现实的实体之间的交互行为就变得更为复杂,这些转而又增加软件解决方案的本质性困难。
      作为软件开发人员,我们不应该试着在同一时间把整个程序都塞进自己的大脑,而应该试着以某种方式去组织程序,以便能够在一个时刻可以专注于一个特定的部分。这么做的目的是尽量减少在任一时间所要考虑的程序量。
      在软件架构的层次上,可以通过把整个系统分解为多个子系统来降低问题的复杂度。所有软件设计技术的目标都是把复杂问题分解为简单的部分。子系统之间的相互依赖越少,你就越容易在同一时间里关注问题的一小部分。
(2)理想的设计特征
      最小复杂度
      易于维护:意味着在设计时为做维护工作的程序员着想。
      松散耦合:意味着在设计时为让程序的各个组成部分之间关联最小。
      可扩展性:能增强系统的功能而无须破坏其底层结构。
      可重用性:设计的系统的组成部分能在其他系统中复用。
      高扇入:大量的类试用某个特定的类。
      低扇出:让一个类少量或者始终的使用其他的类。   
      可移植性:可以很方便的移植到其他环境中。
      精简性:设计出的系统没有多余的部分。伏尔泰曾说:一本书的完成,不在他不能再加入任何内容的时候,而在不能再删去任何内容的时候。
      层次性:尽量保持系统各个分阶层的层次性,使你可以在任何层面上观察系统,并得到某种具有一致的看法。设计出来的系统应该能在任意层次上观察而不需要进入其他层次。
      标准技术:尽量使用标准化的、常用的方法,让整个系统给人一种熟悉的感觉。
(3)设计的层次
      
posted on 2007-09-20 09:36 探丫头 阅读(795) 评论(0)  编辑 收藏 引用 所属分类: 《代码大全》读书笔记

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理