论计算机软件技术的发展
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
论计算机软件技术的发展
在计算机系统发展的早期时代(20世纪印年代中期以前),通用硬件相当普遍,软件只是为每个具体应用而专门编写的。这时的软件通常是规模较小的程序,人们把程序设计看作是一种任人发挥创造才能的技术领域。当时一般认为,写出的程序只要能在计算机上得出正确的结果,程序的写法可以不受任何约束,而且只有那些通篇充满了程序技巧,使用了许多窍门的程序才是高水平的好程序,尽管这些程序很难为别人看懂。因此对程序设计语言的研究曾一度是软件技术研究的焦点。这时软件编写者和使用者往往是同一个(或同一组)人。这种个体化的软件环境,使得软件设计通常是在人们头脑中进行的一个隐含的过程,除了程序清单之外,设有其他文档资料保存下来
一,软件技术的发展
从20世纪60年代中期到20世纪70年代中期,计算机系统进人了发展的第二个时期。由于软件的广泛使用,出现了“软件作坊”(软件开发小组)。这个阶段可称之为程序系统阶段程序不再是仅供极小范围使用,而需要较长时间为许多人使用。人们要求所使用的程序能容易看懂、容易使用并且容易修改和扩充于是,程序便从个人按自己意图创造的“艺术品”转变为能为广大用户接受的工程化产品,程序设计语言也由低级语言(机器语言、汇编语吉)发展到了高级语言(结构化语言、面向对象语言等等) 但是,“软件作坊”基本上仍然沿用早期形成的个体化软件开发方法。
随着计算机的时益普及以及网络的推广应用,软件变得无处不在。井且这时同于一般程序,一方面,一个显著特点是规模和复杂度骤增。例如,美国四代宇宙飞船的软件规模和复杂度呈指数增长,70年代末穿梭号宇宙飞船的软件包含4000万行目标代码。假设一个人一年可以开发出一个一万行的程序,为了开发一个4000万行的软件,是否集中4000人的力量一年就可以完成呢?绝对做不到! 因为代码长度增加了4000倍,程序复杂程度的增加远远超过4000倍。而且如何保证每个人完成的工作台在一起确实能构成一个高质量的大型软件系统?这更是一个极端复杂、困难的问题,不仅涉及许多技术问题,而且必须有严格而科学的管理;另一方,软件不同于硬件,它是计算机系统中的逻辑部件而不是物理部件。在写出程序代码并在计算机上试运行之前,软件开发过程的进展情况较难衡量,软件开发的质量也较难评价,因此,管理和控制软件开发过程相当困难;此外,软件在运行过程中不会因为使用时间过长而被“用坏”,如果运行中发现错误,很可能是在开发时期就隐含有故障。软件维护通常意味着改正或修改原来的设计,这在客观上使得软件较难维护这些在“软件作坊”无法解决的难题使人们意识到:软件技术的发展已经不能满足需要,“软件危机”出现了!
为了从根本上解决在计算机软件的开发和维护过程中所出现的这一系列严重问题提出了“软件工程”的概念。软件工程即是从管理和技术两方面来研究如何更好地开发和维护计算机软件的一门新兴学科。软件工程学要求在开发与维护软件产品时,采用工程的概念、原理、技术和方法,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,使开发出的软件产品满足软件的本质特性:构造性和演化性。软件的构造性是指软件是客观世界中间题空间的具体描述,也即软件是有结构的。一个好的软件就如同一座设计精良的
建筑,层次分明、结构合理.并且符合人们的审美观念、使用习惯、思维方式。软件的演化性是指软件是客观事物的一种反映.是知识的提炼、知识的体现、知识的固化。而客观世界是按照事物发展的普遍规律不断发展、不断变化的,因此,反映客观事物的软件也必须不断地发展,即软件要能随着新需求、新技术的不断出现而不断升级。
软件工程强调使用生存周期方法学和各种结构分析及结构设计技术。生存周期方法学即是从时间角度对软件开发和维护的复杂问题进行分解,把软件生存的漫长周期依次划分为若干阶段,每个阶段有相对独立的任务,然后逐步完成每个阶段的任务。采用软件工程方法论开发软件的时候,从对任务的抽象逻辑分析开始,一个阶段一个阶段地进行开发。前一个阶段任务的完成是开始进行后一个阶段工作的前提和基础,而后一阶段任务的完成通常是使前一阶段提出的解法更进一步具体化,加进了更多的物理细节每一个阶段的开始和结束都有严格标准,对于任何两个相邻的阶段而言,前一阶段的结束标准就是后一阶段的开始标准。在每一个阶段结束之前都必须进行正式严格的技术审查和管理复审,从技术和管理两方面对这个阶段的开发成果进行检查.通过之后这个阶段才算结束;如果检查通不过,则必须进行必要的返工,并且返工后还要再经过审查。审查的一条主要标准就是每个阶段都应该交出“最新式的”高质量的文档资料,从而保证在软件开发工程结束时有一个完整准确的软件配置交付使用在完成生存周期每个阶段的任务时,应该采用适合该阶段任务特点的系统化的技术方法—结构分析或结构设计技术,即软件技术
二、软件技术的主要内容
软件是计算机的灵魂,是固化的知识。人们抽象的经验、知识逐步由软件予以精确地体现,软件技术是运用系统的,科学的,规范的方法开发或维护软件产品的技术体系。目前,软件技术主要涉及以下几个方面的内容;
1.软件构件技术
软件构件技术是当前软件技术的关键技术。什么是软件构件呢?软件构件是指可以被多个软件系统所重复使用的、具有独立功能的系统构成成分。举个不是很恰当的比喻,软件构件就好像机械设计中的部件,当一个机械工程师被要求设计一台机器时,优秀的机械工程师会首先将整体划分为一系列具有相对独立功能的部件,确定出各个部件间的联接关系,然后再各个击破,从而完成整体设计。特别是其中会有一些常用的、人们已经标准化了的部件,像油泵、化油器、轴承等.这些标准部件往往由专业厂家按照型号生产出系列产品。这样,当在整体设计中需要这些部件时,工程师就不必再设计.而只需拿来选用。软件构件技术也是同样道理。该技术运用结构程序设计技术.首先对系统进行结构设计,确定出组成系统的相对独立的各个模块和模块问的调用关系,这些模块就是软件构件然后再针对每个软件构件进行设计、调试。最后按照构件间的调用关系组装成系统.完成整体设计。而且其中.必然会有相当一部分软件构件已经比较成熟,可以直接拿来使用。这种方法大大降低了软件开发和调试、使用的复杂性,更使得软件易于维护。
软件构件根据构件形态可以分为:实体、目标码、程序(代码)、软件。实体也称为运行态目标码,运行态目标码加上静态目标码构成目标码,目标码加上源代码构成程序代码,程序代码加上文档构成软件;软件构件根据构件功能可以分