软体的未来其实在很大程度上要指望软体接口的前景如何。我们知道,计算机世界里的接口这两个字具有两种众所周知的含义:其一是指软体本身的狭义“接口”,比如各种软体开发API等。其二则指的是人与软体之间的互动界面。
基本介绍
- 中文名:软体接口
- 含义:人与软体之间的互动界面
- 称作:用户界面
- 表现形式:原始码
定义
我们把这种人-软体之间的接口称作“用户界面”,也就是“UI”。这里要讨论的前一种定义: 软体不同部分之间的互动接口。通常就是所谓的API――应用程式编程接口,其表现的形式是原始码。API的发明和发展大大促进了计算机产业的进步,同时API几乎决定着日常运算的各个方面。
大多数程式设计师秉承为软体用户设计优秀的用户界面思想,这一点早已深入人心。可是,另一方面,如何实现合理的软体API却只为少数人所重视。历史证明,所有在套用上获得成功的软体或者Web套用无一不是首先在API的设计上满足了用户的需求,即便这些用户几乎从不直接使用这些API!
发展历程
早在上个世纪的70年代,Digital Research公司的Gary Kildall为微型计算机首创了世界上第一个实用的软体API。这个初生的API大致上有20多个对作业系统的简单函式调用组成,这个作业系统就是CP/M――那时可是相当的简单和粗糙,而同样简单的API却让整个计算机世界发生了重大变化。Kildall这个很有才气的计算机专家希望自己设计的API能被其他科学工作者採用。至于商用方面的考虑可是想都没想。而且,我们现在的产业现状也证明:仅让科学家们俱欢颜是不会在商业中赚到一分钱的!好在,比尔盖茨认识到,用于应用程式开发人员而不是科学家的API绝对是商业软体获得成功的关键之一,这样一来,情况就很不一样了。
随后由比尔·盖茨等开发的MS-DOS作业系统全盘拷贝了CP/M及其API,并在这些API的基础之上又增加了一些简单特性,务实的比尔·盖茨将Kildall的发明变成了巨大的商业套用并立刻让MS-DOS的API在软体开发中占据了主导地位。
然而,当微软公司推出Windows作业系统的时候,系统的庞大API族就没有拷贝Kildall的成果了,可是,事实证明这些微软自己折腾出来的Windows API实在是糟糕的可以:丑陋的代码、混乱的结构等等不一而足。但是,Windows採用了实用的伪多执行绪技术和高效的记忆体管理,特别是简单易用的图形界面立刻俘获了一般用户的忠心。大量的程式设计师也就随之投入到Windows程式的开发中来,这些糟糕的API自然当仁不让了。微软花费了5年多的时间改进和发展早期的Windows并在最终垄断了全球桌面作业系统市场。今天我们谁也离不开Windows API了,除非你不打算编写支持Windows的软体!
1988年,微软购买了Alan Cooper开发的可视程式语言:Ruby。随后微软把Ruby和垂死的QuickBASIC语言组合起来创建了Visual Basic。Alan Cooper方面的Ruby实现了名为VBX的软体API,这种API可以让程式设计师动态地扩展Visual Basic功能,这一事实再次证明了软体接口具有多大的重要性。VBX接口也就是目前火热的组件对象模型COM的前身。
在为微软的势力之外,Unix世界也发明了自己的API,这就是TCP/IP,有了它,网路之间就可以自由地通信了。TCP/IP首先在大学里获得了普遍的欢迎,然后,到了20世纪90年代,Marc Andreessen瞄準那些不是程式设计师却很想从使用计算机获得好处的年轻人推出了世界上第一个Web浏览器:Mosaic,后来在此基础上诞生了Netscape Navigator,可以说,正是Web和浏览器的发明,我们终于被带到了资讯时代。
最早的Navigator所能作的不外乎就是查找和显示档案,这和Macintosh Finder乃至Windows Explorer也没什幺两样,但是,正因为有了TCP/IP API,Netscape 就可以放眼于本机之外查找和显示其他网路上的其他计算机中的档案。新世界豁然洞开。
整个90年代,Netscape就象流感病毒一样满世界到处扩散。到了现在计算机之间在通用API的努力下可以非常方便地相互通信,但几乎没有一个用户会直接和这些TCP/IP接口互动。
如果没有优秀的、符合时代潮流的API,什幺先进的技术都可能会不得不寂寞很长一段时间以等待命运的垂青。一旦成熟的API出现,软体的前景也就能大致看到轮廓了。
举个例子,不管是你身上的手机还是随身携带的PDA――比如PalmPilot,它们其实都是处理能力不同的计算机而已,这两种设备都装备了短距无线(通常是红外线)通信连线埠。可是,它们如何才能通过这些连线埠实现相互之间的通信呢?如果这些设备之间缺乏公用的API,你的手机就不可能和你的PDA实现通信。
今后会产生一种所谓的“陌生人服务”API,比方说,当你走在大街上的时候,你的手持设备,不管是手机、PDA还是笔记本电脑或者车载导航设备就会自动地和周围设施通信,商店、办公室、售货机和其他人等等。
目前有几家公司已经在致力于开发以上的通用API,其中最有希望的或许是Oracle公司(Oracle公司于2009年收购Sun公司)的Jini。但是,Jini的定位和以前的CP/M一样,也是更多的把目标放在了计算机科学家而不是解决方案服务商上。
我们今天的软体开发很大一部分是开发Web应用程式,驱动Web进步的是互动设计和商务模式而不是技术创新。从技术上说,Web领域的大开发商不会对Web本身挖掘太多,他们缺乏编写大型、複杂程式的耐心。但是,反过来,这些大型厂商可以把其他开发商预先编写的软体组件组合起来,这样,他们就比以往更多地依赖于为其编写的软体API。
总而言之,不管我们设计什幺API,最重要的是首先要弄明白我们在为什幺目标或者为谁在设计。这是一定要记得的关键点。只有在我们理解目标客群的需求之后,我们才可能创建有用的API,才能实现恰当的用户接口,才能让不同人设计的不同软体部分良好地集成。
规约
简单的说应该就是API规範
很多软体会提供程式接口出来,举个例子
比如说我们用的浏览器IE本身就是一个软体,它会公布比如说mouseover这个接口出来
当编程人员在mouseover里写入代码也就代表当用户滑鼠划过这个网页的时候会做出什幺回响
比如说我们在某些做的比较炫的网站看到滑鼠走到哪都有一串星星跟随
而mouseover这个接口的规定里会写,有哪些参数(参数类型,範围值等)可以使用,这个接口有哪些事件可以回响等等
概要设计文档的接口部分应该很简单的,一般分:用户接口、外部接口和内部接口三个部分;用户接口只要简述用户操作和反馈结果等;外部接口简述硬体输入输出、网路传输协定等;内部接口简述模组间传值、数据传递等即可。