软件技术发展的驱动力

软件产品的终极目标是为了实现用户需求从而满足人们的需要。也正是为了不断满足人们的需要使得软件行业不断向前发展。比如,新的算法(MPEG-1、MPEG-2、MPEG-4、H.264、……)等的出现都在当时为了满足不同的需要而被发明。然而,人们的需要(行业发展的外部动力)却并非是软件技术发展的唯一驱动力,因为它无法解释为什么业内的编程语言、软件平台与框架等会层出不穷,有的甚至给人“重新发明轮子”的感觉。如何判断“新轮子”的确是必要的呢?这与本文想重点关注的另外三大驱动力有关,重点关注它们的原因源于其与我们的日常工作更加息息相关。

我认为,软件技术发展的另外三大驱动力分别是简化、复用和美化(行业发展的内部动力)。“新轮子”是否必要的关键,是看它在简化、复用和美化这三个纬度上是否存在优于“老轮子”的内容。注意,这三大驱动力是站在程序员的角度去观察的,而不是从软件产品的最终用户角度。因为最终用户只关心产品的功能与使用体验,而不关注产品的开发过程,更不关心产品是用“老轮子”抑或“新轮子”构建的。

简化是应对日益复杂和规模庞大软件的核心有效手段,因为“复杂的问题总是以简单的方法解决的”(引自《大师亚当斯》)。简化的关键不是“拍脑袋”做到哪是哪,而需运用我们的洞察力去找到解决问题的关键路径、去繁求简。然而,洞察力的获得除了需要在某一技术方向上的长期积累外,更需要我们不断坚持就所面临的问题全神贯注地思考,洞察力也因此成为了行业的稀缺资源,也决定了真正能简化软件设计与实现的人少之又少。

简化在业内有各种不同的表现形式,除了有方法论(比如,领域驱动开发、面向对象编程、设计模式和解耦),更有通过不同形式和程度的抽象(比如,C编程语言之于汇编语言、C++编程语言之于C编程语言、各种软件平台与框架)。有趣的是,这些表现形式在简化的道路上自身却带来了更大的复杂度(复杂度是守恒的?)。

复用的好处相信众人皆知,这使得我们因避免“重新造(相同的)轮子”而获得更高的开发效率和更高质的产品。复用这一驱动力使得业内出现各种不同的开源软件平台与框架,也使得软件企业长期致力于打造自有产品的通用软件平台与框架。对于复杂软件来说,竞品的背后实际上是软件平台与框架之争。

复用的表现形式不只是构建软件平台与框架,还有各种编程语言的“语法糖”等。

简单是一种美,但美不只在于简单,更有软件的内在结构与代码的表现形式,美化因此也成为了驱动软件技术发展的另一大动力。我认为软件之美在于:1)对适应将来软件功能变化而导致的代码变更保持一定的弹性。这种适应能力其实是对软件内在结构的合理性提出了要求。2)代码能作为程序员间流畅沟通的载体与桥梁。这是对代码的表现形式所提出的要求,也间接地指出编程的目的不只是提供API或实现软件功能。美化工作的不到位是很多软件开发团队深陷质量困境的重要原因。

现实中,软件技术的进步其实是简化、复用和美化三大驱动力的综合结果,因为三者间并非完全正交。比如,简化的结果可能也实现了美化,美化的结果可能也带来了简化,复用又为我们带来了简化。无论如何,通常其中一个是作为技术发展的主导动机。

了解三大驱动力有助于我们更理性地看待软件技术的发展,同时作者也想暗示,我们在软件开发工作中应从简化、复用和美化三方面着手,而不能停留在“软件能用就行”这种“原始需求”上。否则,我们的行为就是不符合软件技术发展的“潮流”哦!

本文出自 “李云” 博客,请务必保留此出处http://yunli.blog.51cto.com/831344/1077317

时间: 2024-11-17 21:48:58

软件技术发展的驱动力的相关文章

云技术发展的驱动力

在云计算领域,IBM一直秉持着开放的精神,以最全面的云计算解决方案及最具前瞻性的技术优势领先全球.     推出更开放"云+端"战略:IBM认为目前云计算的驱动力中有33%是来自移动与嵌入式领域,未来比例还将进一步加大.为此,IBM提出了非常明确的"云+端"战略,IBM除了在后端强化云的能力,更加大力度对前端进行整合,包括移动.嵌入式以及众多的前端需求.与行业相比,IBM的"云+端"战略更加开放,在扩展性.兼容性.安全性以及分析能力等方面优势明

BAT解密:互联网技术发展之路(2)- 业务如何驱动技术发展

BAT解密:互联网技术发展之路(2)- 业务如何驱动技术发展 在<互联网技术发展之路(1) - 技术发展的驱动力>一文中,我们详细阐述了对于服务类的业务来说,业务发展是技术发展的驱动力.那接下来我们就看看业务究竟是如何驱动技术发展的.   互联网业务千差万别,但由于他们具有"规模决定一切"的相同点,其发展路径也基本上是一致的.互联网业务发展一般分为几个时期:初创期.快速发展期.竞争期.成熟期. 不同时期的差别主要体现在两个方面:复杂性.用户规模. 复杂性 业务的发展第一个主

OpenDaylight技术指导委员会主席Colin Dixon:网络开源软件的发展

2016年6月1-2日,"2016全球SDNFV技术大会"在北京盛大召开.作为连续举办三届的SDN/NFV技术与产业盛会,本届大会着眼于SDN /NFV的实践应用与部署,从SDN/NFV在运营商网络.企业网.云数据中心.测试解决方案等多个场景的应用出发,深入解析产业部署现状及面临的挑战与发展趋势. OpenDaylight技术指导委员会主席 Colin Dixon 在主会场上,OpenDaylight技术指导委员会主席Colin Dixon先生做了主题为"网络开源软件的发展&

青岛大学软件技术学院携手新联星发展试点本科

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 青岛大学是山东省重点建设的综合大学.学校位于美丽的海滨城市青岛,坐落在黄海之滨.浮山之麓,依山傍海,风景秀丽,是读书治学的理想园地. 青岛大学于1993年由原青岛大学.青岛医学院.山东纺织工学院和青岛师范专科学校合并组建而成.四所学校在办学历程中积淀了丰厚的文化底蕴,汇聚成了青岛大学的办学传统,为新的发展打下了坚实基础.合并办学以来,学校各项

国内外WAF需求特点和技术发展分析

2004年之后,经济利益成为安全攻击的驱动力,这改变了整个互联网的安全图景,攻击变得"工业化",具有庞大的组织.资金,更聚焦,并具有自动化能力.在此图景下,Web安全事件不断暴露出来,WAF解决方案应运而生,而为了更系统地进行Web安全防护, 各类法规.政策陆续出现,这更有力地推动了WAF的需求和技术发展.但国内.国外(主要指美国)对WAF的需求特点并不完全一样, 所以国内.国外厂商的WAF技术发展也不完全一样,产品走出了不一样的发展轨迹,本文将在这方面做一些分析.国外美国研究WAF最

中国软件技术大会2016 深度探讨软件技术热点

2016中国软件技术大会将以"互联网+"时代企业级应用新生态为主题,大会将邀请五十多位著名互联网公司的技术大咖.行业企业的技术专家.技术畅销书的作者.独立咨询师等就多个新兴前沿领域,从独立于厂商的角度,深入解析最新技术热点,探讨当前的技术变革对企业级软件的开发技术.架构.运维的影响力和驱动力. 会议时间:2016年12月9-10日 会议地点:北京国家会议中心 主办单位:中科院软件研究所 中科软科技股份有限公司 计算机世界 大会主题:"互联网+" 时代企业级应用新生态

《.NET软件技术学习与实践》之序言

  自序        这是一本有自已特色的书.       这是一本于讲技术之外,更讲学习方法的书       这是一本从首至尾贯彻"授人与鱼,不如授人与渔"的书       2003年暑假我在CSDN程序人生论坛发表的个人自传--<一个普通IT人的十年回顾>(已收入本书配套光盘),一石激起千层浪,被许多网站转载,我个人也收到了海内外近千封电子邮件.       我是一个在没有明师指导情况下,几乎完全靠自己在黑暗中摸索,在自学之路上艰难跋涉过来的软件开发者.我不敢自称为&

多层交换技术发展动向

目前,以太网技术已经渗透到网络应用的各个角落,其优势在于应用多年.为用户所熟悉.业务指配时间短.以太网是一种成熟的标准化技术,互换互操作性好,具有广泛的软硬件支持,成本低.在以太网技术处于领先地位的极进公司认为,在市场需求的驱动下,以太网交换技术不断向前发展,在第三层交换技术走向成熟的基础上,第四到第七层交换技术也开始逐步被接受,并在一定的范围内获得了应用. 第三层交换技术具有速度快.可靠性高等特点,并可以通过智能化带宽控制技术来满足网络发展的需要.极进网络的第三层交换技术,就充分体现了这一思路

从软件技术演变到软件项目管理的进步

在这个演变过程中,软件项目管理的实质内容也在不断转变 20世纪90年代,无论是国内还是国外,应用软件技术主体还都处于DOS(个人电脑操作系统)下的编程状态. 那时的编程以代码行为单位,逐字逐句地进行编写,若要做个点击按钮,要写几十行代码,是很正常的事.光调试一个按钮代码,就需要花费几个小时的时间,编写语言主要为汇编.C.Basic等.编写工具跟现在Windows里的写字板一样,几乎全靠程序员个人的能力来解决编写问题.当时开发出来的应用软件主要是二维平面界面,如部分银行至今还在使用的前台服务系统: