首页 理论教育 软件开发工具概论-计算机软件开发与应用研究

软件开发工具概论-计算机软件开发与应用研究

时间:2023-10-17 理论教育 版权反馈
【摘要】:最初阶段的工作仅限于把用户已经明确表述出来的算法,用机器语言写成一系列机器指令,供硬件运行使用。这可以称之为人类对软件开发工作认识的第二阶段。按照这样的观点,目前进入的以应用软件开发工具为标志的新阶段,则进一步扩大了软件开发的范围。从以上所说的软件和软件开发过程的发展变化,我们可以体会其中贯穿始终的基本线索,那就是一头面向计算机硬件,提供可执行的机器指令。

软件开发工具概论-计算机软件开发与应用研究

软件开发工具的概念要点是:它是在高级程序设计语言(第三代语言)之后,软件技术进一步发展的产物;它的目的是在人们开发软件过程中给予人们各种不同方面、不同程度的支持或帮助;它支持软件开发的全过程,而不是仅限于编码或其他特定的工作阶段。在理解这个概念时,应当同时认识它的继承性与创新性。也就是说,一方面要充分认识到,软件开发工具是软件技术发展的必然产物和自然的趋势,它的基本思想仍是致力于软件开发的高效优质。另一方面,随着人类对软件与软件开发过程理解的深入,它又具备了一些以前的软件开发工作所没有的新的思想与方法,而这些正是它区别于以前的软件技术的关键所在。

首先,我们需要对软件的实质进行再认识。众所周知,软件(software)这个名词是有了计算机之后才产生的,而硬件(hardware)则是以前就有的。只会执行若干基本指令的机器本身,虽然具备高速运算与海量存储的潜在能力,但是如果没有事先准备好的一系列指令,它是不能完成实际任务的。即使由人一条一条地输入指令(通过扳键或光电设备),也只能以人们的输入速度来工作,它的巨大潜力是无法发挥出来的。这里的关键是要有一套事先编好并存入机器的指令,这就是我们现在所说的程序。一台存入了某种程序的计算机与一台没有存入这种程序的计算机,从外表是看不出区别的。然而前者在接到一个启动命令之后可以自动地执行某项任务,而后者却做不到这点。为了区分和描述,人们从已有词汇中借来了hardware特指看得见摸得着的硬件。而与之相对,创造了software软件这个新词,用米特指这种看不见、摸不着的,但又发挥着十分重要的作用的、事先编好的指令系列。它们之间的关系,正如人们所说的,硬件是躯体,软件是灵魂,二者缺一不可。

然而,从应用的角度来看,硬件与软件的情况有着极大的差别。硬件提供的信息存储与处理的基础,这对于任何领域的应用是一样的,没有什么区别的,它不必随应用领域的变化而改变(我们这里主要是指计算机本身,而不包括外围设备。对于外围设备,它的配置完全由应用领域确定)。软件则不同,正如前面指出的,它一头连着计算机硬件,向硬件提供它可以执行的机器指令,另一头面向用户,接受用户提出的要求,提供的算法。从这个意义上说,软件是用户与硬件之间的桥梁。正因为如此,360行就要有360种不同的软件。可以说,为了推广和普及计算机的应用,大量的工作正是集中在软件领域之中。[3]

从更深一层的意义去理解,软件实际上是人类知识与经验的结晶。所谓事先编好的指令,正是人们在实践中形成的工作规范与步骤。以运筹学数理统计中的算法为例,每一个程序都是以一定的理论分析与研究为基础的。当人们把这些程序编制出来时,这就是为这些经验或理论知识找到了一种新的载体。这种新的载体与书本纸张作为知识的载体不同,它看不见、摸不着,但是却能在计算机上实施,而且可以对不同的数据反复地使用。不可见是这种载体的一个主要缺点,这导致这些知识或经验在传播与应用中的困难。针对这一点,一些专家提出了软件应当包括程序和文档两个不可缺少的组成部分。这一进步使软件的实质充分表现出来。作为人类知识财富积累的一种新的手段,它的重要性与地位正在得到越来越广泛的认可。

如果从人类文明延续的角度看,软件的意义则更为深远。如果说文字的出现是人类文明历史的开端,那么软件这种知识载体的产生将进一步提高人类集中与保存知识与经验的能力。文字只是记录信息,而不包括各种处理方法与技术。而计算机则把人做事的方法与步骤(有时还只是设想的做法)存储起来,并在任何需要的时候重新执行。从数控机床、自动控制直到许多管理软件都是起着这样的作用。有了计算机软件,再加上方便的通信条件,人与社会的联系就变得更加紧密了,任何人都可以迅速地获取社会的、文化的、技术的最新信息,而他的经验、知识、研究成果(只要他愿意)也可以立即投入人类知识的总汇之中。

因此,对于软件的认识是逐步深入的。人们越来越认识到,单纯的、机械的编程并不是软件开发工作的关键之处,更不是它的全部。在努力提高编程工作的质量与效率的同时,还必须从知识的提取、积累、精确化等方面做大量的工作。

谈到软件开发工作的发展变化,我们把它归纳为四个不同的阶段。最初阶段的工作仅限于把用户已经明确表述出来的算法,用机器语言写成一系列机器指令,供硬件运行使用。这可以说是人们对软件开发工作的最初的认识

汇编语言产生之后,情况略有变化。编程工作改为用汇编语言进行,编好的汇编指令由汇编程序转化为机器指令,再交硬件执行。这里的变化可以归纳为三方面:第一,凡是能交给机器执行的事情,就尽量通过一定的专用系统去做。可以说,与机器的距离扩大了。第二,使用的通信方式——语言变了,从机器语言变成了汇编语言。第三,由于语言的变化,与用户的距离近了,从天书般的机器语言变成了比较接近自然语言的汇编语言了。这可以称之为人类对软件开发工作认识的第二阶段。

第三阶段的情况表面上变化不大,只是把汇编语言换成了高级程序设计语言(第三代语言)。然而正如前面所讲过的,高级程序设计语言不再是与机器指令一一对应,而是更加接近人类习惯的自然语言。因此,可以说是离机器更远了,离用户更近了。

按照这样的观点,目前进入的以应用软件开发工具为标志的新阶段,则进一步扩大了软件开发的范围。正如人们从大量实践工作中认识到的,对于大多数应用领域来说,用户不可能像运筹学专家或火箭专家那样,把需求用严格的数学语言写成算法,只把最后的编程工作交给软件工作者去做。恰恰相反,他们只能从自己的需要出发,以本行业的,而不是计算机专业的方式加以表达。这样表达出来的需求对于可以直接编程的算法来说,距离还很远。这个距离的跨越应当由谁来实现呢?当然只能是软件开发工作者。正是由于这个理由,需求分析已经被公认为软件开发中不可缺少的一个阶段。把用户的需求加以分析,最终以编程工作所需要的方式表达出来(文档、说明、流程图等),这是软件开发者必须承担的任务。

从以上所说的软件和软件开发过程的发展变化,我们可以体会其中贯穿始终的基本线索,那就是一头面向计算机硬件,提供可执行的机器指令。一头面向应用领域(即用户),接受所要求的信息处理业务。这种知识的提炼、表述、固化的作用,正是软件和软件开发过程的实质所在。这一点,几十年来不但一直没有改变,而且越来越为人们所自觉地认识。正因为这一点,今天的技术是软件技术多年发展的必然产物和自然延伸,包括软件开发工具在内的一系列新技术,正是在前几十年软件人员探索的成果(特别是第三代程序设计语言)的基础上成长和发展而来的。

另一方面,作为技术发展的新阶段,新的技术也必然具有一系列重要的、区别于以往阶段的特点,否则就不会成为一个新的发展阶段了。对于软件开发工具及新的软件开发方法来说,它的发展主要表现在四个方面。(www.xing528.com)

第一,自动化程度的提高。由于代码生成等技术的应用,在一些特定的条件下,可以较容易地自动生成第三代语言(或更低级的语言)代码,从而大大节省人力和时间。用前面几幅图的形象化表示方法来说,就是离硬件更远了一些。其原因是第三代语言编程中的部分工作已由工具代替执行了。当然,这里说的自动化是部分的,至少在目前程序设计的完全自动化还是不可能。值得一提的是,在20世纪60年代初期,人们开始研究与应用第三代语言时,称之为程序设计自动化。相对于机器语言和汇编语言来说,高级语言中许多工作,如内存安排等确实都已自动进行或由编译或连接程序完成了。因此,称之为自动化也是完全有道理的。进行这样的历史对比,可以使我们领略到技术发展及对其发展的认识的螺旋式上升的、辩证的发展过程。

第二,这一阶段的工作明确地把需求分析包括进了软件工作的范围之内,从而使软件开发过程进一步向用户方面延伸,离用户更近了。一直到应用第三代语言的时期,许多人还认为:用户应当清楚地表述出自己的要求,软件工作人员的任务只是在此基础上编写程序。

第三,把软件开发工作延伸到项目及版本管理,从而超出了一次编程的局限,而扩展了作为一个不断发展的客体生长完善的全过程。这也是软件研制从个体的、手工作坊的方式向科学、有组织、有计划的方式转变的一个重要表现。

第四,这一阶段的研究吸收了许多管理科学的内容与方法,如程序员的组织、质量的控制等。这一变化使软件开发技术不再只是讨论单个程序员自己工作的技术与方法问题,而是把组织、管理等项目负责人的思想与方法放到了更重要的位置。显然,这是完全符合软件规模越来越大,软件开发工作越来越依赖于组织与管理的发展趋势的。人们越来越深刻地认识到,软件生产的成败更多地依赖于合理的组织与协调,而不是领导者或程序员个人的编程能力。

总之,软件开发工具的提出与使用,是软件技术发展的一个新的阶段。

谈到软件开发工具的概念,必然涉及一些类似的、相关的概念或术语。作为一个迅速发展的新的技术领域,其概念交叉重叠,用语含混冲突是毫不奇怪的。人类社会技术进步的大趋势,正是从这些矛盾的清理中显露出来的。与软件开发工具有关的概念、术语很多。如第四代语言、CASE工具、可视化程序设计、最终用户计算(End User Computing)、组件程序设计(Component Programming)、即插即用的程序设计(Plug and Play Programming)等。为了便于后面的论述,简略地说明一下它们之间的关系。

第四代语言(4GL)是应用较为广泛的一个名词,它的原义是非过程化的程序设计语言。针对以处理过程为中心的第三代语言,它希望通过某些标准处理过程的自动生成,使用户可以只说明要求做什么,而把具体的执行步骤的安排交由软件自动处理。显然,这一思路与我们前面讨论的软件开发工具是一致的,离硬件更远,离用户更近。但是,它没有涉及上面提到的需求分析、项目管理、文档生成等问题。因此,我们认为第四代语言可以被看作软件开发工其中的一类,而不是全部。软件开发工具的范围还要更宽一些。

CASE工具一词有两种理解。一种是计算机辅助软件工程(Computer Aided Software Engineering);另一种是计算机辅助系统工程(Computer Aided System Engineering)。两者的缩写都是CASE。不论按哪种理解,它的基本思想与软件开发工具是完全一致的,即应用计算机自身处理信息的巨大能力,帮助人们开发复杂的软件或应用系统。但是由于有上述两种不同的理解,在某些范围内,各种不同的人员对之有不同的解释与用法。为了不产生歧义,我们笼统地把从第三代语言之后出现的各种有助于软件开发的各种方法与工具统一于软件开发工具这个名称之下。

至于其他几个名词,如可视化编程(Visual Programming)、最终用户计算(End User Programming)、组合编程(Component Programming)、即插即用编程(Plug and Play Programming)、组合软件(Components Software)等,无非都是软件开发工具范围内的某种思想或某种趋向。[4]例如有的强调“所见即所得”的原则,力图实现编程工作的可视化,即随时可以看到结果,程序的调整与后果的调整同步进行。显然,这是在人们运用第三代语言的基础上提出的进一步接近用户的愿望。有的则希望软件组件和它的标准化,像硬件那样,把元件生产和整机生产分开,实现高一层次上的软件重用,从而解决大型软件生产中的困难。这与项目管理、质量管理都是紧密相连的。至于直接让用户自己编程的想法,早在程序设计的早期就出现了,且不管它能实现到什么程度,这一方向无疑与软件开发工具的思想是一致的。

还有一个有关的名词——软件开发工具学(Software Development Methodology),也即软件开发工具。在几十年来的软件开发实践中。人们越来越认识到软件的开发事实上是对人类思维与做事的方法的探索,从本质上讲,它的基础是科学的认识论和方法论。对软件开发过程的认识,加深和丰富了人类对于自己认识世界和改造世界的过程与规律的理解,当然,这对于有效地组织其他工作提供了启发。软件开发工具正是立足于对软件开发过程的深入理解之上的。因此,软件开发工具与软件开发方法学的关系是十分密切的。二者的区别仅在于前者着重于实际应用与工具的开发,而后者着重于方法论的研究,后者是前者重要的理论基础之一。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈