您的位置:首页 > 理论基础

计算机软件知识

2008-01-14 15:13 183 查看
一、什么是软件?

  “软件(software)”一词,用于描述计算机中的非硬件成分,出现于50年代,1960年前后才广为流传,国内由中科院软件所最早定名。目前软件指计算机系统中的程序及其文档。

二、 软件发展的动因

  1946年2月,第一台电子计算机ENIAC在美国宾州大学阿伯丁弹道实验室问世。其后计算机技术飞速发展,速度之快令人震惊,今天具有ENIAC功能的计算机可集成到面积只有几平方毫米的硅片上,售价不到10美元。从那时起到现在,计算机已经经历了四代:第一代(1946一1959年):电子管计算机时代;第二代(1960一1964年):晶体管计算机时代;第三代(1965一1970年):中小规模集成电路计算机时代集成电路;第四代(1971年--现在):大规模集成电路计算机时代。计算平台的快速发展为软件发展提供了基础设施。
  1968年NATO会议(Garmisch,Germany)提出“软件危机”,今天仍然存在,表现为:(1)对软件的需求远超出现有的生产能力,一方面信息技术的爆炸性增长促进了对新软件的空前需求,另一方面软件系统的规模和复杂性不断增长,而用来开发这些软件的资源没有与上述需求保持同步;(2)人们依赖于脆弱的软件,目前的软件不可靠、缺乏安全性、性能下降、出错、难以升级,73%的软件项目被延迟、超资、取消或失败;(3)构造可靠、安全软件的技术能力不足,过去40年,硬件性能至少跨越了8个重要的阶段,但开发软件的能力未能与硬件提供的机会保持同步。以下给出几个应用需求不断增加和规模增大的例子:比如航天飞机有4000万行代码、空间站是10亿行代码,大家比较熟悉的Windows系统也有4500-6000万行代码。

三、20世纪软件发展的回顾与启示

  归纳软件在20世纪的发展,可以得到一些基本结论:(1)详细设计与编程实现基本成熟;(2)需求分析与质量保障难度较大;(3)高级自动化技术目前实行困难;(4)软件工程管理的作用日益突出。
  软件工程发展史上各个阶段的里程碑是:(1)70年代:程序设计方法学、结构化分析和设计、抽象数据类型、软件工具;(2)80年代:软件开发方法学、软件工程环境(CASE)、面向对象技术;(3)90年代:软件复用和软件构件技术、软件过程、需求工程。如何达成软件工程的目标--提高开发质量和生产率?过去的认识:技术的发展是达到上述目标的主要(唯一)途径。如:80年代后期,CASE工具、环境被认为是最好的解决方案--通过自动化工具的支持可以很容易地提高质量和效率;90年代,GUI生成技术和OO技术也被寄予厚望。其原因在于,技术可以给出立即可见的解决方案,并很快得到收益。但结果却经常不尽人意。
  可见,技术并不能唯一保证达到预期的目标和效果,开发单位过程的改善是达到目标的重要因素。但过程改善将导致企业组织、管理方式的改变,需要高层的承诺和长期的投资。
  过程改善+技术提高=完善的解决方案!

四、21世纪初的软件开发技术

  20世纪的最后十几年,信息技术范围内最具有深远影响的技术进步是Internet的出现,并迅速发展成为当今世界上覆盖面最广、规模最大、信息资源最丰富的计算机信息网络,深刻地改变了传统的技术以及应用、业务和产业模式,也成为影响21世纪至少初期(前20年)的主要因素。
  Internet计算平台具有开放、动态、多变的特征,体现出无统一控制的“真”分布性,节点的高度自治性,节点链接的开放性和动态性,人、设备和软件的多重异构性,实体行为的不可预测性,使用方式的个性化和灵活性,网络连接环境的多样性等特点,也对传统学科提出挑战:传统软件工程基于实体驱动和确定目标、有序控制的开发模式开始让位于Internet下智能软件工程基于协同驱动和动态目标、实体聚合的开发模式。软件开发技术将呈现如下特征:(1)基础平台:网络化(Internet化);(2)应用方式:开放化、服务化;(3)核心技术:主体化、协同化;(4)运行支撑:中件化、多样化;(5)开发方式:复用化、工程化;(6)用户界面:自然化;(7)发展趋势:用户主导。
  满足日益加剧的应用软件需求的一种有效方法是加强用户的主导作用,让软件开发成为问题定义过程而不是详细编码过程。用户主导的应用软件开发方法,通过让最终用户成为软件系统的实际设计者使问题空间与求解空间尽可能取得一致。

五、 21世纪初的软件过程技术

  90年代后,随着软件规模日益增大和应用领域的日益广泛,工业化软件生产日益成为朝阳产业而在新的世界经济格局中占领重要一隅。工业化的软件过程技术和质量保障技术,已经成为发展软件产业的重要支柱。软件过程随着软件组织的特点不同和商业目标不同,经常处于动态的调整和定义与重定义状态。所以过程技术必须支持过程的动态定义和过程流的动态重组。软件过程流本质上由工作流组成。过程改善的关键:可以明确标识当前状态,并明确改进的方向。
  目前国际上软件过程方面代表性技术有:CMU-SEI提出的CMM (Capability Maturity Model)、PSP (Personal Software Process)、TSP (Team Software Process)、CMMI (Capability Maturity Model Integration);国际标准化组织 ISO 发布的ISO9000(质量管理体系标准)、ISO15504(信息技术—软件过程评价);以及其他如TickIT、Bootstrap、SPICE等。预计21世纪初,软件过程技术将得到进一步的重视和发展。
  软件过程的质量改进通常包括如下步骤:(1)了解开发过程的现状;(2)期望的开发过程的目标;(3)按优先级确定所需的改进工作;(4)形成完成改进工作的计划;(5)分配执行计划的资源;(6)执行和完成计划。以上循环。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: