在切入主题之前先要了解“上”与“下”的含意是什么,这需要从图1中找答案。图中,应用层在最上面,其下依次是框架、平台、库和操作系统层,因此“上”是指靠近应用层,而“下”则是指靠近操作系统层。

图1
    
对于一个被设计的软件模块,存在两个视角。一个是从上向下看,这一看,看到的是模块向上层提供的是什么样的接口,或者说“长什么样”;另一个则是从下向上看,即模块的具体实现是什么,是如何通过使用其下的库(或其它的模块)来塑造它自己的“模样”的。
那一个软件模块的设计之初,是应当自上而下呢,还是自下而上?
软件设计最为重要的是塑造形象,即打算将软件设计成什么样,这是软件设计阶段真正要做的事。软件设计时,最重要的不是数据结构的组织,而是形象塑造,当形象有了以后,数据结构的组织就是一件很自然的事了。因此,软件设计应当先是“自上而下”。显然,光有自上而下也不行,当塑造好了模块的形象以后,还得“自下而上”地考虑如何去实现被设计模块。自下而上时还可以审视,现有的哪些模块能被将要设计的模块所重用,从而提高现有软件模块的复用性。
宏观上讲,两种方法各有特点。自上而下更容易把握整体性,但难度更大,成本也相对高;而自下而上则更容易做到复用,进而获得更好的经济性。在进行软件设计审查(注意,不是代码审查)时,审查者需要注意,不能从自下而上的角度去审视被审查的设计,相反,应当采用自上而下的方式,检查被审查的模块是否很好地体现了它的概念或“模样”。

软件设计中的“自上而下”和“自下而上”相关推荐

  1. 软件设计中的一些原则

    本文为大家介绍软件设计中的一些原则,都是经过长期经验总结出来的知识,每一个程序员都应该了解,相信对大家在进行软件设计的过程中会有很大帮助. Don't Repeat Yourself (DRY) DR ...

  2. 第九十期:哪种人是软件设计中的稀缺型人才?

    好的系统架构离不开好的接口设计,因此,真正懂接口设计的人往往是软件设计队伍中的稀缺型人才. 作者:从码农到工匠 好的系统架构离不开好的接口设计,因此,真正懂接口设计的人往往是软件设计队伍中的稀缺型人才 ...

  3. 哪种人是软件设计中的稀缺型人才?

    阿里妹导读:好的系统架构离不开好的接口设计,因此,真正懂接口设计的人往往是软件设计队伍中的稀缺型人才. 为什么在接口制定标准中说:一流的企业做标准,二流的企业做品牌,三流的企业做产品?依赖倒置到底是什 ...

  4. 从奥运门票系统瘫痪到家乐福踩踏事件看软件设计中业务模型的处理

    从奥运门票系统瘫痪到家乐福踩踏事件看软件设计中业务模型的处理 作者:郭方明 完成日期:2007-11-17 version 1.0 联系信箱:gfm.job@Gmail.com 注:转载文章,请注明作 ...

  5. 【转载】软件设计中的易用性

    软件设计中的易用性 摘要: 这篇文章介绍了软件设计中"易用性"的概念并解释了为什么它在软件设计项目中应该是一个重要的部分. 介绍 应用"易用性"到软件开发中 & ...

  6. 漫谈 · 软件设计中的具象化

    本文微信公众号链接:https://mp.weixin.qq.com/s/PiZU1biNR5DeqrjnhXE9ag 何为具象化?要说具象,就要说说与具象有关的抽象.表象. 抽象与具象: 抽象是通过 ...

  7. 软件设计中的抽象层次

    The programmers of old were mysterious and profound. We cannot fathom their thoughts, so all we do i ...

  8. 软件设计中的csc_通用集中监控中心CSC解决方案

    概述:中兴力维推出的通用集中监控中心CSC解决方案,建设动环监控系统的省级监控中心,对各个地市的区域监控中心LSC集中监控,从而实现对全省监控系统的统一管理,实现全省电源设备资源的共享,提升各运营商全 ...

  9. 《盘点软件设计中的七大原则》

    说在前头:本人为大二在读学生,书写文章的目的是为了对自己掌握的知识和技术进行一定的记录,同时乐于与大家一起分享,因本人资历尚浅,能力有限,文章难免存在一些错漏之处,还请阅读此文章的大牛们见谅与斧正.若 ...

最新文章

  1. python【蓝桥杯vip练习题库】ADV-100第二大整数
  2. 问懵逼:请站在 JVM 角度谈谈 Java 的锁?
  3. 【机器学习】聚类代码练习
  4. Caffe 编译错误记录
  5. 【Qt】简单QT文本编辑器
  6. 在sql当中为了让数据做缓存做with as的操作
  7. 云水画中人,独立一江秋
  8. (转)淘淘商城系列——初始SolrCloud
  9. 【渝粤题库】陕西师范大学800009 环境变迁
  10. Linux云用户,Linux 用户与权限
  11. Linux部署DotNetCore记录
  12. 用c语言编写小游戏:贪吃蛇
  13. R语言编程环境的安装和运行
  14. armorGame的像素块级的3D 游戏--酷
  15. 小程序支付微信回调地址问题
  16. 【2020省选模拟】题解
  17. linux配置mysql全局环境变量,Linux 配置 jdk mysql 环境变量
  18. BASE32编码 --记录
  19. “无穷大”与“老鼠会”
  20. 探索“哑巴英语”的缘由

热门文章

  1. 6-2 使用函数输出指定范围内Fibonacci数的个数 (20 分)
  2. 新研究调查Masimo ORi™(氧储备指数)能否用作避免全麻期间高氧状态的指数
  3. Windows XP系统中实用的命令及操作技巧
  4. 了解一些常用的文件系统和一些基础定义
  5. mysql题目练习的答案
  6. fmri优缺点_fmri原理优缺点
  7. Linux:进程控制
  8. 魔兽世界怀旧服 八区最新服务器推荐,魔兽世界怀旧服选择哪一个服务器好[多图]...
  9. 医疗器械软件网络安全相关
  10. PAT乙级_1068 万绿丛中一点红 (20 分)_python