今天,软件规模的扩大已经势在必行,而通过工程的方法来管理软件开发相关人员,成为软件业面临的挑战。需求分析师、系统架构师、程序员、测试员、项目经理在软件开发过程中各司其职,而软件过程管理的工具,正是帮助这些人提高生产力,加强协作的关键所在。
从早期的层次结构到后来的数据关系模型,再回到今天XML层次型技术的回归,数据管理领域正在发生不断改变。而数据信息如何成为人们能够理解的知识?从电子表格到数据报表,从商业智能到语义技术,无不体现着人们对数据管理的强大需求。
知识工作者管理的年代,人与人之间的沟通已经结构化、系统化。如何提高整个组织的生产效率、如何降低沟通成本、如何集成办公系统与业务系统、如何有效管理客户与流程、如何将企业业务流程变成资产,解决这一系列问题形成了一个庞大的软件产业链。
SOA自2003年开始就成为企业软件开发和中间件领域的专家们津津乐道的话题。粗粒度和松耦合的企业应用设计问题经过4年多发展,基本得到解决。这一切都归功于SOA。今天的SOA不再只以一个技术架构,也不仅是方法论,而是许许多多不同的应用实践以及和产品。
软件开发一度被人们与艺术和建筑相提并论,一个软件从底层代码的数据关系、对象层次、系统架构,到上层应用的数据逻辑、业务建模,现代的设计工具可以采用图形化的方式更好的表现设计的思想,甚至与代码直接建立关联,半自动化的完成部分开发工作。
围绕Web的周边技术,以客户端为核心的浏览器、前端展示;以服务端为核心的应用服务器、中间件;以页面生成为核心的类CGI技术。所有的技术都只为一个目的:如何使用现有技术以更高的效率、更低廉的成本开发出能够更加适合用户需求、具有更好用户体验的web应用。
技术领域内,病毒和木马制造者与杀毒软件、信息加密与解密、信息保护与破解,同样是永远的竞争对手。绝大多数的用户更加关注如何能够有效的保障自己的信息安全。MD5被破解了、网络银行用户丢钱了、网民的桌面一度被流氓软件占领了、Windows的SP大补丁又出了,我们现在的选择是什么呢?
随着技术的发展和进步,一方面程序语言自身的发展,对于已知成熟的算法和软件设计方案,人们设计出可重用的库和开发框架;另一方面,随着多核CPU、GPU等硬件设计水平的提高,也产生了针对特定产品的开发库。利用这些开发库,开发者可以开发出更加优秀的产品。
开发领域有两种典型的开发环境。一种是类Unix风格的,例如vi/emacs+make+gdb建立起来的开发环境,通用、开放、灵活;一种是集成开发环境(IDE),整合了代码编辑、调试、对象结构、版本控制、图形界面生成等功能。现代的IDE具有良好的扩展性、对语言/库更好的支持以及完整的产品生命周期管理。
随着软、硬件以及运营商各方面技术的不断成熟,移动开发的趋势也越来越明朗:中间件越来越通用化,软件领域最具差异化价值的部分位于应用和服务层,位于中间件之上的应用与服务将塑造下一代的用户体验,这些体验将跨越手机的品牌与型号。
在互联网的世界中, 随着Web 2.0的逐渐成熟,如何让用户不再为应用之外的底层细节操心?如何充分利用用户生成的现有数据?如何将开发应用的选择权交到用户手中?如何快速整合现有的种种应用与服务?谁能够将这四个问题中的一个回答得足够好,就可以立于不败之地。
技术进步的脚步越来越快,"拿来主义"固然好,可总是会落后半步,在竞争中被人占尽先机也就无话可说。要想走在别人前面,就必须学着"想前人所未想,思前人所未思,言前人所未言,创以前未有之物"。这就是创新的定义。正像《程序员》杂志提出的口号一样:"技术改变世界,创新驱动中国"。