第一章软件与软件工程1.1软件(Software)1.1.1软件与软件的组成计算机软件——与计算机系统操作有关的程序、规程、规则及任何与之有关的文档和数据。∴软件程序及有关数据—机器可执行;文档(与软件开发、运行、维护、使用、培训有关)——不可执行。程序(program)——用程序设计语言描述的,适合于计算机处理的语句序列。程序设计语言三种类型:1.机器语言、汇编语言:依赖于机器,面向机器2.高级语言:独立于机器,面向过程或面向对象3.面向问题语言:独立于机器,非过程式语言(4GL)文档(document)—一种数据媒体和其上所记录的数据。文档记录软件开发活动和阶段成果,具有永久性,可供人或机器阅读。文档可用于专业人员和用户之间的通信和交流;软件开发过程的管理;运行阶段的维护。1.软件的特点软件是逻辑产品,硬件是物理产品。特点:(1)软件开发更依赖于开发人员的业务素质、智力、人员的组织、合作和管理。软件开发、设计几乎都是从头开始,成本和进度很难估计。(2)软件存在潜伏错误,硬件错误一般能排除。(3)软件开发成功后,只需对原版进行复制。(4)软件在使用过程中维护复杂:1)纠错性维护—改正运行期间发现的潜伏错误;2)完善性维护—提高或完善软件的性能;3)适应性维护—修改软件,以适应软硬件环境的变化;4)预防性维护—改进软件未来的可维护性和可靠性。(5)软件不会磨损和老化。2.软件的发展第一阶段——20世纪60年代中期以前,软件开发处于个体化生产状态。在这一阶段中,软件还没有系统化的开发方法。目标主要集中在如何提高时空效率上。第二阶段——从20世纪60年代中期到70年代末期。软件开发已进入了作坊式生产方式,即出现了“软件车间”。软件开发开始形成产品。到20世纪60年代末,“软件危机”变得十分严重。第三阶段——从20世纪70年代中期到20世纪80年代末期。软件开发进入了产业化生产,即出现了众多大型的“软件公司”。在这一阶段,软件开发开始采用了“工程”的方法,软件产品急剧增加,质量也有了很大的提高。第四阶段——从20世纪80年代末期开始的。这是一个软件产业大发展的时期。也是软件工程大发展的时期,人们开始采用面向对象的技术和可视化的集成开发环境。1.1.2软件危机——软件危机是指在计算机软件开发、使用与维护过程中遇到的一系列严重问题和难题。1.软件危机的表现1)对软件开发成本和进度的估计常常很不准确。常常出现实际成本比估算成本高出一个数量级、实际进度比计划进度拖延几个月甚至几年的现象,从而降低了开发商的信誉,引起用户不满。2)用户对已完成的软件不满意的现象时有发生。3)软件产品的质量往往是靠不住的。4)软件常常是不可维护的。5)软件通常没有适当的文档资料。文档资料不全或不合格,必将给软件开发和维护工作带来许多难以想象的困难和难以解决的问题。6)软件成本在计算机系统总成本中所占比例逐年上升。特别是软件维护成本迅速增加,已经占据软硬件总成本的40%~75%。7)开发生产率提高的速度远跟不上软件需求。2.产生软件危机的原因1)用户对软件需求的描述不精确。2)软件开发人员对用户需求的理解有偏差,这将导致软件产品与用户的需求不一致。3)缺乏处理大型软件项目的经验。开发大型软件项目需要组织众多人员共同完成。一般来说,多数管理人员缺乏大型软件的开发经验,而多数软件开发人员又缺乏大型软件项目的管理经验,致使各类人员的信息交流不及时、不准确、容易产生误解。4)开发大型软件易产生疏漏和错误。5)缺乏有力的方法学的指导和有效的开发工具的支持。软件开发过多地依靠程序员的“技巧”,从而加剧了软件产品的个性化。6)面对日益增长的软件需求,人们显得力不从心。从某种意义上说,解决供求矛盾将是一个永恒的主题。3.缓解软件危机的途径到了20世纪60年代末期,软件危机已相当严重。这促使计算机科学家们开始探索缓解软件危机的方法。他们提出了“软件工程”的概念,即用现代工程的原理、技术和方法进行软件的开发、管理、维护和更新。于是,开创了计算机科学技术的一个新的研究领域。1.2软件工程的概念硬件软件开发软件维护1955年1970年1985年100%8...