在来兄弟会之前我从未从事过软件开发工作,也没有系统的学习过什么软机开发知识,也是来兄弟会之后我第一次听说了分布式开发,因为陈老师多次课上的自习讲解,让我对分布式开发有了一个崭新的认识,在此我叙述一下我对分布式开发的认识和理解,不尽之处还望熟悉之人多多指教。
说到我理解的分布式开发就需要提到几个名词。
架构,框架,规范。
字面上来解释分布式开发,就是有计划和规范的约束由多人合作开发的一种方式,这里我并没有专门引用此名词在软件开发上。我们日常生产活动也普遍的适用这样的一种模式,日常生产活动中我们可能将这种所谓的分布式开发称作为统筹规划。是将生产资料和资源充分整合以最优的效率来实现生产。记得小时候上学的时候就学过统筹这个概念,大概的意思就是我们在同一个时间内可以做很多事,举例来说我们烧一壶开水的时间里还能洗脸刷牙,打扫屋子。这是一个人对时间的统筹,如果是多个人那么我们就需要分布式了。就拿盖房子来说,从设计到施工,如果是一个来做的话需要很长时间,倘若是多人协作那就会大大的缩短生产时间,从而提升生产效率。虽然说是人多力量大,效率高,这些都是需要条件的。这里就需要引入之前我提到的几个名词,架构,框架,规范。
还拿盖房子来举例,房屋的设计就是架构,房子被用来干什么,怎么干,使用条件和年限是多少等一系列问题直接影响后续的多人协作,所以一个架构的设计直接影响未来生产的走向,如何高效的整合与利用资源是架构需要考虑的直接问题,确定了架构也就是确定了目标这样接下来的工作才能有效的进行。这里我把架构的最终实现手段比喻成施工图纸的成功绘制。
有了架构,就有了图纸,接下来就是施工了,而施工就需要框架与规范,这里两者相辅相成,相互制约。
所谓相辅相成,是有了规范可以使框架更有规范和约束能力,正因为有了框架才有了规范的可执行基础。这里我们通俗的讲框架就是房子中的梁,板,柱。其他的任何元素都是在这些框架内填设的,而梁要做多么粗,板要做多么厚,柱子要做多么粗这些都是规范。而这一切的一切都是让每个参与到生产中的生产者更准确高效的完成工作。
房子我们人类盖了很多年,所以各种规范和方法相对成熟,而计算机从发明至今不过几十年,而长久以来的经验来说程序开发一直处于单打独斗阶段,本来计算机只是处理计算工作是程序员为其在计算中赋予数据某些含义,而这些含义或许只有程序人员自己能理解,换成另外的一个程序员来说或许就很难理解了,更不要说在其基础上做什么添加与修改了。所以,有时一个程序的开发会话费一个程序开发人员很大一部分精力,但是,随着互联网的迅猛发展,这种传统的开发模式显然不能满足市场需求的巨大压力。所以,软件开发的分布式开发同样需要架构,框架,以及规范。
如果我说软件开发是逻辑性最强的工作相信没有人反对,因为所以是计算机遵循的真理,所以一个合理的架构,配合一个框架以及开发规范可以使软件开发可以像盖房子一样敏捷高效的开发出来。这一方面最常见的想必就是目前最常见的开源软件了,每一款开源软件都是对外公布了源代码,接下来任何一个程序开发人员都可以在前人的基础上做修改做再开发。
而开源软件在形式上还是不太符合分布式开发,目前开源软件类似在已经盖好的大楼上面重新装修。并不是所有程序人员都从项目启动就开始编写代码,因为在程序开发时团队协作会出现重复造轮子的情况,也就是我们常说的版本冲突问题,同一串代码的重复编写,甚至是文件的冲突,WEB项目由于前端,后端因为涉及的技术偏多更是存在大量问题,所以无论是前端还是后端,都需要架构,框架以及规范。
最后我以前端为例讲讲前端的分布式开发。
目前大多数前端的界面开发普遍采用Html,Css,Javascript三种语言协同开发,Html是标签化语言,Css通过选择器将Html标签赋予属性以实现各类样式,而Javascript为页面又增添了许多动态特效。但是一个html界面配合一套Css样式是常态,几个html界面就需要几个css样式文件,意味着网页越多css样式编写就越多,一些重复的属性就需要不断重复来写,而这种重复工作肯定是不符合我们分布式开发的,所以我们以模块为单位,分布式开发又面临一个文件过多的问题,所以使css优雅而高效的less以及sass解决了文件过多的问题,开发阶段我们以模块式开发,上线投入使用时将文件整合打包上线。而像bootstrap这样的优秀的前端框架也正是为前端分布式开发注入了一剂强心良药,但是为了程序开发的高度自由与定制化,使用sass这种css扩展语言在分布式上充分的实现了自由与可定制化,而compass这种类似github组件化管理库让重复造轮子的问题尽可能的减少了。
所以分布式开发由可以称之为组件式开发。而实现组件式开发并且使程序的稳定性以及可扩展性达到最优的生产开发环境最缺乏或许就是一套分布式开发的架构设计者,所以回到日常生产中来,能将各种资源最优整合的我们称之为领导者,而在软件开发领域,我们把这种领导者称之为架构师,所以组件式开发也好分布式开发也罢,一个成熟稳定的架构设计直接关乎今后的生产发展,多尝试,多观察,多实践,多总结是分布式开发最需要的一些品质。