微信号:infoqchina

介绍:有内容的技术社区媒体

第三只眼——IT领域中的个体与整体

2013-11-27 21:14 InfoQ

在学校学习哲学课程的时候,个体与整体的原理是非常重要的哲学原理之一。它告诉我们,整体是由个体组成的,而整体又会具有个体所不具备的独特的特性。那么,今天就让我们来看看IT行业中有哪些地方应用了这个原理。


IT行业可以分为硬件、软件、网络三个领域,我们可以分别针对这三个领域来看下。


硬件方面,最基本的就是各种各样的电子元件,电容、电阻等等,这些基本的元素组成了电路。随着科技的发展,工业上采用了集成电路,把各种各样的元件集成在一块板子上,实现了一项功能,而这项功能是单个元件所不具备的,这正体现了整体具有个体不具备的特性的原理。而组装过计算机的同学都知道,想要组装一台兼容机,我们需要做的就是选购主板、显卡、声卡、CPU、内存、硬盘、机箱、显示器、鼠标、键盘等等组成部分,然后按照一定的方式组装在一起,就可以成为一台能够辅助我们工作、学习、娱乐的计算机了,各个部分缺一不可,但又可以用类似的组件来替换。


软件方面,在各种编程语言中,最基本的元素就是各种各样的关键字和符号,加上定义常量、变量的方法,我们就可以进行最基本的过程化语言编程。而程序执行的最基本三种结构就是顺序结构、选择结构和循环结构,这三种结构不断组合,就形成了各种各样程序。在面向对象的语言开发中,各种各样的变量、函数、方法组成了类、接口这些结构,进而形成了大型的软件系统。再复杂的软件系统也都是程序员们遵循各种语言之中的规律,从零开始,一行行代码编写出来的。


网络中也是一样,最基本的是各个网络设备,可能是一台计算机,也可能是交换机、路由器、防火墙等等,按照不同的方式组合起来(比方说星形、网状等等),就形成了一个个网络,世界各地的网络组合在一起,就形成了大家现在离不开的Internet。有了它,我们就可以把地球变成一个村子(不由地让我怀念当年在win95时代使用的一个台湾开发的软件,就叫做地球村,貌似现在已经没有了,当初在没有灵格斯的时代,是非常不错的翻译软件呢)。而IP地址的赋予也同样,分为四个部分,每个部分都是上一级的组成部分,是个体与整体的关系。


在以上三个方面中我们都会看到一种类似的情形,那就是最基本的元素组成稍微大一些的模块,像硬件中的集成电路、软件中的函数或者类、网络中的局部网络,一级一级递增,最终形成了大型的系统。而我们经常会把这叫做模块化。这种方式也给大家带来了非常大的方便。在硬件中,模块化之后的组件,我们可以很容易地通过插拔的方式来进行替换;软件方面,模块化编程让程序更容易维护,很多重构方法的目的也就是为了让程序的模块化程度更好,甚至OSGi做到了一定程度的极致,所有程序都是以模块的形式存在。


其实模块化的思想并不是仅仅在这个行业中存在的,也是从传统行业中借鉴过来的。像砖头,就是模块化最基本的例子,有了它,我们的建筑师们就不需要使用泥巴来盖房子了。


在软件开发的管理方面同样也有个体与整体原理的体现。


团队非常重要,在软件开发中也是一样,一般来说,一个团队中要有各种各样的角色,需求分析人员,设计人员,开发人员,测试人员,系统维护人员,项目经理,架构师等等,每个角色都是团队的组成部分,都有其各自的职责。各种角色相互配合,为了共同的目标努力,才能够让项目成功。如果大家不能够齐心协力,各自为战,甚至于相互倾轧,内耗,团队也就不能成为团队,项目的失败也就在所难免。


在当前流行的敏捷开发中,比方说Scrum框架中,也有对个体整体原理的应用。在做项目的时候,我们会把用户对整个系统的需求进行分解,形成一个一个的用户故事,然后基于用户故事来进行评估以及进一步分解,形成程序员可以选择和开发的backlog。各种各样的功能开发完成之后,就会组合起来,形成一个完整的系统。当然这个过程可能会每天进行,那就是持续集成。


而开发的进度也是一样,整个项目时间被切分为多个sprint,在每个sprint中我们都会完成特定的任务,并在每个阶段结束的时候对情况作具体的分析和调整,持续反馈,持续改进。当所有sprint完成的时候,也就是项目完成的时候。


总之,在IT领域,个体和整体原理可谓无处不在,那么如果我们能够理解这个基本的原理,并使用它来指导我们的工作和学习,必定会有更好的效果。 


第三只眼”:主要由InfoQ编辑专门为微信公众账号自编自写的一个栏目,旨在表明编辑态度及表述平日见闻和思考,期望成为和读者沟通的桥梁。亦接受投稿:editors@cn.infoq.com


今日专栏作者

侯伯薇@大连,快乐的程序员,InfoQ中文站翻译团队主编,热心的社区活动组织者。本文首发于他的微信公众账号快乐的程序员(happyprogrammer)。


***********************************

本文来自InfoQ微信公众账号:infoqchina

1、回复“今日新闻”,查看今天更新的新闻;

2、回复“今日英文”,查看今天英文站的更新;

3、回复“文章 +关键词”,搜索关键词相关内容;

4、回复“QCon”,了解QCon大会相关信息;

5、回复“活动”,了解最近InfoQ组织的线下沙龙;

6、回复“架构师”,获取《架构师》下载地址;

7、回复“投稿”,了解投稿和加入编辑团队的流程。

***********************************

 
InfoQ 更多文章 Facebook如何实现PB级别数据库自动化备份 学术派Google软件工程师Matt Welsh谈移动开发趋势 Spotify为什么要使用一些“无聊”的技术? 妹纸们放假了,汉纸们做啥? 大多数重构可以避免
猜您喜欢 React Native开发IDE安装及配置 Hello, World of Programming Languages 毕业了,去大公司实习还是去创业公司实习好? PHP多进程(4) :内部多进程 如果你已经这样了,那你必须要跳槽