软件设计中的“自上而下”和“自下而上”
分类:软件工程
来源:网络
时间:2010-09-23 16:29:01
在切入主题之前先要了解“上”与“下”的含意是什么,这需要从图1中找答案。图中,应用层在最上面,其下依次是框架、平台、库和操作系统层,因此“上”是指靠近应用层,而“下”则是指靠近操作系统层。
图1
对于一个被设计的软件模块,存在两个视角。一个是从上向下看,这一看,看到的是模块向上层提供的是什么样的接口,或者说“长什么样”;另一个则是从下向上看,即模块的具体实现是什么,是如何通过使用其下的库(或其它的模块)来塑造它自己的“模样”的。
那一个软件模块的设计之初,是应当自上而下呢,还是自下而上?
软件设计最为重要的是塑造形象,即打算将软件设计成什么样,这是软件设计阶段真正要做的事。软件设计时,最重要的不是数据结构的组织,而是形象塑造,当形象有了以后,数据结构的组织就是一件很自然的事了。因此,软件设计应当先是“自上而下”。显然,光有自上而下也不行,当塑造好了模块的形象以后,还得“自下而上”地考虑如何去实现被设计模块。自下而上时还可以审视,现有的哪些模块能被将要设计的模块所重用,从而提高现有软件模块的复用性。
宏观上讲,两种方法各有特点。自上而下更容易把握整体性,但难度更大,成本也相对高;而自下而上则更容易做到复用,进而获得更好的经济性。在进行软件设计审查(注意,不是代码审查)时,审查者需要注意,不能从自下而上的角度去审视被审查的设计,相反,应当采用自上而下的方式,检查被审查的模块是否很好地体现了它的概念或“模样”。
- 默认分类(20)
- J2EE(25)
- Java(56)
- PHP(55)
- SEO(10)
- 网页设计(20)
- 网站建设(37)
- 数据库(7)
- JavaScript(17)
- JQuery(6)
- MySQL(20)
- SQL Server(6)
- Access(1)
- Oracle(6)
- office(6)
- Dreamweaver(4)
- Photoshop(12)
- Flash(9)
- Fireworks(13)
- CSS(14)
- HTML(4)
- .NET(7)
- ASP(2)
- DB2(1)
- Ajax(2)
- Linux(12)
- Struts(7)
- Hibernate(8)
- Spring(2)
- Jsp(22)
- Asp(8)
- C#(3)
- C++(1)
- 网络安全(5)
- 软件工程(7)
- XML(1)
- English(2)
- 计算机等级考试(2)
- 计算机病毒(4)
- 个人日志(76)
- 互联网(15)
- ActionScript(10)
- Android(3)
- 数据结构与算法(1)
- 游戏策略(3)
- 美文翻译(2)
- 编程开发(19)
- 计算机应用(4)
- 计算机(10)
- Unity3d(6)
- 其他(1)
- egret(1)