软件接口的发展对于软件行业的未来至关重要。在计算机世界中,“接口”一词有两种常见的含义:一方面是指软件内部各部分之间的交互接口,即应用程序编程接口(API),表现为源代码形式;另一方面则是指人与软件之间的交互界面,即用户界面(UI)。尽管大多数程序员注重设计良好的用户界面,但实际上,软件API的设计对于软件的成功与否起着关键作用。历史上,许多成功的软件或Web应用都在API设计上满足了用户需求,即使用户并不直接使用这些API。
软件接口的历史可以追溯至上世纪70年代,当时Digital Research公司的Gary Kildall为微型计算机创造了世界上第一个实用的软件API。这个API最初包含大约20个简单的操作系统函数调用,虽然简单粗糙,但却极大地改变了计算机世界。Bill Gates意识到,面向应用程序开发者而非科学家的API是
商业软件成功的关键之一,因此他复制了CP/M及其API,并在其基础之上增加了新的特性,从而使得MS-DOS的API在软件开发中占据主导地位。然而,随着Windows操作系统的推出,
微软并没有继续复制Kildall的成果,而是自行设计了一个庞大的API族,尽管这些API在初期饱受批评,但由于Windows引入了实用的伪
多线程技术和高效的内存管理,以及易于使用的图形界面,迅速赢得了用户的青睐。微软花了五年时间改进和发展早期的
Windows,并最终在全球桌面操作系统市场上取得了垄断地位。
1988年,微软收购了Alan Cooper开发的可视化
编程语言Ruby,并将其与垂死的
QuickBASIC语言结合,创建了Visual Basic。Ruby实现了名为VBX的软件API,允许程序员动态扩展Visual Basic的功能,这也预示了组件对象模型COM的前身。与此同时,在
微软以外的世界,
unix系统发明了自己的API——TCP/IP,使得网络间的通信成为可能。Marc Andreessen推出的Mosaic浏览器,后来演变为Netscape Navigator,标志着Web时代的到来。最初的Navigator只能查找和显示本地文件,但得益于TCP/IP API,它可以访问其他网络上的远程文件。
网景的流行推动了互联网的普及。
进入90年代,Netscape如流感般传播开来。如今,
计算机之间能够通过通用API轻松通信,但很少有用户会直接与这些接口交互。没有成熟且符合时代潮流的API,即使是先进技术也可能会长期处于边缘状态。一旦成熟的API出现,软件的前景便能预见。例如,现代智能手机和
平板电脑本质上是计算能力不同的计算机,它们配备了短距离无线通信端口,但若缺乏公共API,则无法实现彼此之间的通信。未来可能出现的“陌生人服务”API,将使手持设备能够自动与其他设施通信,包括商店、办公室、售货机和个人。目前,几家公司在开发此类通用API,其中最有可能成功的是
甲骨文公司的
Jini项目。然而,Jini的目标群体主要是计算机科学家,而非解决方案提供商。
今天,软件开发的一大重点在于Web应用程序,Web发展的驱动力主要来自交互设计和商业模式创新,而非技术创新。尽管大型Web开发商不太关注技术细节,但他们更依赖于其他人编写的软件组件,这意味着他们更加依赖于相应的API。无论设计何种API,首要原则是明确目标受众和设计目的。只有了解目标受众的需求,才能创建有用的API,实现适当的用户接口,并确保不同软件部分的良好集成。
软件接口的规约,即API规范,规定了软件提供的程序接口的具体行为。例如,
网络浏览器IE作为一个软件,提供了诸如mouseover这样的接口,允许编程人员在其中编写代码,以便在用户鼠标移动时触发特定的响应。接口规约详细描述了可用的参数、参数类型、范围值以及可响应的事件。在概要设计文档的接口部分,应简洁明了地说明用户接口、外部接口和内部接口的相关信息。