`
xpp02
  • 浏览: 1013325 次
社区版块
存档分类
最新评论

软件技术发展的驱动力

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

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

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

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

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

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

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

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



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

分享到:
评论

相关推荐

    我国GIS软件的发展现状

    特别是“九五”期间,原国家科委将GIS作为独立课题列入“重中之重”科技攻关计划,给予了充分的重视和支持,技术发展速度明显加快,GIS基础软件技术支持得到了全面的加强,出现了一批有水平的技术成果和产品。...

    大数据技术发展.pptx

    数据变革的现实驱动力 数据量爆炸性增长 需要分布式存储 数据类型增加 需要半结构化存储 数据模型日渐复杂 弱化关联的需求 PC服务器成本下降 PC服务器大行其道 大数据技术发展全文共36页,当前为第18页。...

    光纤通信系统技术的发展、挑战与机遇

    首先概述了光纤通信系统关键技术的发展,并分析了其在蓬勃发展的云时代中的发展驱动力及在此驱动力下未来光纤通信系统面临的挑战与机遇。结合这些挑战与机遇,分别从光纤通信系统总体网络架构、骨干网络技术、城域...

    人工智能核心技术产业白皮书(信通院).pdf

    在此背景下,我院发布人工智能核心技术产业白皮书,探讨以深度学习技术为主要驱动力的人工智能发展状况、技术创新重点与产业发展趋势,总结十三五期间我国发展情况,提出十四五期间的发展方向与机遇,以期与业界分享...

    软件技术《行业标准-人工智能》.doc

    行业标准-人工智能 一、人工智能产业发展现状 人工智能作为新一轮产业变革的核心驱动力,将催生新的技术、产品、产业、 业态、模式,从而引发经济结构的重大变革,实现社会生产力的整体提升。麦肯锡预计 ,到2025年...

    北大青鸟ACCP 6.0 软件开发初级程序员:使用JSP.Servlet.Ajax技术开发新闻发布系统.pdf

    作为一款面向大众的求职系列教育产品,ACCP6.0的课程开发采用了全球同步机制,推陈出新,引领未来IT技术发展潮流,继续保持了北大青鸟APTECH ACCP课程体系的国际同步水平以及在国内IT职业教育领域的领导地位。...

    中国电信CRM客户端平台规范

    本规范包括驱动力分析、系统定位、系统建设目标,规范了功能架构和技术架构,以及核心技术选型建议,同时对系统部署与安全策略、集成接口、系统演进方案进行了阐述;提出了系统UI和UE设计原则,针对部署客户端软件后...

    自动化软件平台发展趋势

    工业化是驱动经济社会发展的重要动力,而信息化已经渗透到生产管理、经济生活的各个角落,信息化与工业化的融合代表了未来经济发展的方向,是占领后危机时代制高点的重要措施。通过“两化融合”,以信息化带动工业化...

    新一代人工智能发展规划.doc

    新一代人工智能总体部署 (二)新一代人工智能的五个技术发展方向 大数据智能 目标: 形成从数据到知识、到智能的可解释的和更通用的能力,形成能融合使用多领域数 据的知识中心,支撑形成新技术、新产品和新系统的...

    软件测试经典面试题 (超实用)

    110、谈谈软件测试技术,以及如何提高 27 111、谈谈软件测试职业发展,以及个人的打算 27 112、谈谈软件测试在企业的地位,也可以结合软件生命周期来谈 27 113、一般公司里实际的软件测试流程是什么样的?你们公司又...

    1软件工程填空题.pdf

    软件工具的商品化推动了软件产业的发展,而软 件产业的发展,又增加了对软件工具的需求,促进了软件工具的商品化进程。 9、环境集成主要有数据集成、界面集成、控制集成、平台集成、过程集成。 10、

    模拟技术中的蜂窝基站中的模拟技术发展趋势

    目前,移动计算与通信设备已很普遍,数字电子技术正是支持这一发展的驱动力,不过模拟电子技术发展也同样重要,二者缺一不可。在蜂窝基站中,数字电子技术执行许多复杂的功能,通常在软件与固件控制下工作。而收发...

    新一代工业互联网发展模式与成功实践:数据驱动的新价值网络.pdf

    在工业互联网蓬勃发展的今天,如何应对工业化思维与数字化思维冲撞、碎片化需求与规模化供给矛盾、封闭的设备联接走向开放、多元的利益格局走向平台利益共同体,实现从软件上云到硬件上云、从隐性数据显性化到隐性...

    大数据分析技术基础教学课件3-大数据处理平台Hadoop.pptx

    大数据发展的驱动力 大数据分析技术基础教学课件3-大数据处理平台Hadoop全文共27页,当前为第4页。 Google解决大数据计算问题的方法 面对爆炸式增长的数据,如何从海量的数据中找到自己想要的信息 Google三大神器 ...

    四线电阻屏Linux驱动

    触摸屏的驱动软件安装; 触摸屏的硬件安装; 触摸屏的具体使用方法和注意事项 排除故障的要点总结 触摸屏的简要介绍和安装准备 通用的四线电阻触摸屏的特点;  最近几年, 人机对话的界面刚发展起来的一...

    硬件市场状况调研报告.doc

    硬件市场状况调研报告 随着科技的发展,计算机硬件价格每...第三,嵌入式软 件成为操作系统市场发展的驱动力,系统及网络管理软件需求不断升温。随着大型系统 网络基础设施和应用系统建设的不断完善,如何有效管理和合

    车载软件架构-功能安全入门简介

    早期的安全系统基本由继电器组成,随着半导体技术的发展,将PLC等控制器应用于安全相关系统的内在驱动力越来越强。但是,由于对安全相关系统的认识局限,直到九十年代,任然有许多标准中排斥微控制器的使用,如IEC ...

    汽车电子中的汽车电子控制技术的应用与发展趋势

     汽车电子控制系统基本由传感器、电子控制器(ECU)、驱动器和控制程序软件等部分组成,与车上的机械系统配合使用(通常与动力系统、底盘系统和车身系统中的子系统融合),并利用电缆或无线电波互相传输讯息,即...

    北大青鸟ACCP 6.0 软件开发初级程序员:使用Java实现面向对象编程.pdf

    作为一款面向大众的求职系列教育产品,ACCP6.0的课程开发采用了全球同步机制,推陈出新,引领未来IT技术发展潮流,继续保持了北大青鸟APTECH ACCP课程体系的国际同步水平以及在国内IT职业教育领域的领导地位。...

Global site tag (gtag.js) - Google Analytics