在电脑时代的早期,有一个有趣的现象,那就是没有人知道该如何撰写电脑程序,也没有人知道该如何训练他人撰写程序。数学家或其他科学家虽然具备解决这方面问题的能力,但是许多专业人员,好比从音乐到文学方面的专业,也同样具有相当重要的贡献。今天即使在处理许多先进的问题上,如人类学、哲学、艺术及心理学等观念,非技术方面的专业人员亦引领着电脑科技的发展方向。
理由很简单,无论有多少的硬件设备,电脑终究要被人类所使用,人类可能担任操作者或程序设计人员的角色,不论是多媒体展示会的观众,或是受惠于电脑辅助设计教学的学生,在人机界面上,人类的智慧思维,与电子电路、物理及机械方面的知识,具有相同的重要性。
一旦有了程序语言,撰写程序便显得相当重要,我们再次强调,“语言”这种说法是非常恰当的,如同诗人、小说家或老师运用语言来写诗、小说或课本一般,程序设计师利用程序语言来撰写有用的或娱乐性的电脑程序。究竟现在有多少电脑程序存在呢?答案至少有数百万个。有数以百计的主程序包含数以千计的副程序,而且有许多标准程序可供用户修改成符合个别且特殊需求的程序。
在商场上被广为采用的,是数据库管理系统程序,或称DBMS。简单地说,数据库是一种事件的搜集,通常这些事件之间有某种程度的关联,如字典一般,电话簿就是一个数据库;又如银行建立的顾客的数据库,内容详列顾客的姓名、地址、账号,以及投资或储金的偏好,当一种新的存款方式上市,银行便会列出顾客名单,并寄上简介信给可能对此新产品有兴趣的客户。
对银行来说,一种更富挑战性的数据库,是所谓的“同步数据库”,这是一种随时将数据更新的数据库,对有提款机的银行来说,这样的程序是必须的,因为提款机必须立即进入用户的账户,减掉客户想要提取的金额,并更新该账户的记录,如此一来,该账户便无法以连续提领的方式溢领现金,但这对银行对客户服务的方便性,与银行提供该项服务的成本来说,具有相当大的影响。
不过,若我们以空中交通管制为例,这样的数据库可就不足为奇了。在这个例子中,飞机需确认其飞行于各大城市间的位置及其数据库,是否与实际状况同步,这是人命关天的事。空中交通管制人员便察觉到,拥有高速、同步更新的数据库有助于监控工作随时保持高度警戒。
数据库仅是众多有用的电脑程序中的一个,其他被广为采用的尚包括:文字处理、数值分析、绘图、图表或其他数值显示方式、教育或机械、建筑设计,而最令人兴奋的新程序种类,则是提供给程序设计的人员本身所使用的,这种新领域称为电脑辅助软件工程。
市场分析专家在近期的《电子工程师学会月刊》指出,电脑辅助软件工程在90年代中期,将有50亿美元的市场。简单地说,电脑辅助软件工程促进了软件撰写过程的自动化。尽管电脑语言的发展,在易于阅读与撰写方面已有长足的进步,但软件的开发仍是相当耗时与昂贵的工作,并且一旦软件开发完成,还必须经常更新与维护。换句话说,当一家公司购买一个庞大而昂贵的软件之后,还必须买进该项程序专家的时间,来确保软件的正常运作。
人们希望电脑辅助软件工程能够增进撰写软件的效率,使软件工程师有更多的时间去开发其他程序,或探索他们开发程序的新方法。通常软件工程师最常遇到的困难是,虽然他们对电脑技术所知甚多,但对其正在撰写的程序的应用方面,却没有特别深入的了解,因此,借由与程序使用者间的相处,对软件工程师是否能提供适当的软件给消费者,必定多有助益。
电脑辅助软件工程的重要关键,是一种称为物件导向程序设计的电脑语言模式,若没有相当的程序设计相关知识,很难去解释物件导向程序设计的意义,不过将其比喻成储藏着许多不同种类工具的五金行,倒是一个可行的方式。当一个木匠开始一项工作时,他们可能需要锤子、锯子、电动工具及其他零件材料;同样的,电脑程序设计师使用物件导向程序设计,便是利用各种物件——即程序中的工具,将他们组成一个所需的程序。