有的软件在工作中出现了故障,造成软件失效,可能给软件整个系统带来的影响不大 有的软件一旦失效。可能酿成灾难性后果。例如财务金融、交通通信、航空航天等软件。我 们称这类软件为关键软件。 3软件的发展和软件危机 自20世纪40年代中出现了世界上第一台计算机以后,就有了程序的概念。其后经历了 几十年的发展,计算机软件经历了三个发展阶段 程序设计阶段,约为50至60年代 程序系统阶段,约为60至70年代 软件工程阶段,约为70年代以后 几十年来最根本的变化体现在 (1)人们改变了对软件的看法。50年代到60年代时,程序设计曾经被看做是一种任人 发挥创造才能的技术领域。当时人们认为,写出的程序只要能在计算机上得出正确的结果 程序的写法可以不受任何约束。随着计算机的广泛使用,人们要求这些程序容易看懂、容易 使用,并且容易修改和扩充。于是,程序便从个人按自己意图创造的“艺术品”转变为能被 广大用户接受的工程化产品。 (2)软件的需求是软件发展的动力。早期的程序开发者只是为了满足自己的需要,这种 自给自足的生产方式仍然是其低级阶段的表现。进入软件工程阶段以后,软件开发的成果具 有社会属性,它要在市场中流通以满足广大用户的需要 (3)软件工作的范围从只考虑程序的编写扩展到涉及整个软件生存周期 在软件技术发展的第二阶段,随着计算机硬件技术的进步,要求软件能与之相适应。然 而软件技术的进步一直未能满足形势发展提出的要求。致使问题积累起来,形成了日益尖锐 的矛盾。这就导致了软件危机。问题归结起来有: (1)缺乏软件开发的经验和有关软件开发数据的积累,使得开发工作的计划很难制定。致 使经费预算常常突破,进度计划无法遵循,开发完成的期限一拖再拖。 (2)软件需求,在开发的初期阶段提得不够明确,或是未能得到确切的表达。开发工作 开始后,软件人员和用户又未能及时交换意见,造成开发后期矛盾的集中暴露 3)开发过程没有统一的、公认的方法论和规范指导,参加的人员各行其事。加之设计 和实现过程的资料很不完整:或忽视了每个人工作与其他人的接口,使得软件很难维护 (4)未能在测试阶段充分做好检测工作,提交用户的软件质量差,在运行中暴露出大量 的问题 如果这些障碍不能突破,进而摆脱困境,软件的发展是没有出路的。 4.软件工程过程和软件生存周期 许多计算机和软件科学家尝试,把其它工程领域中行之有效的工程学知识运用到软件开 发工作中来。经过不断实践和总结,最后得出一个结论:按工程化的原则和方法组织软件开 发工作是有效的,是摆脱软件危机的一个主要出路 (1)软件工程过程( Software Engineering Process 软件工程过程是为获得软件产品,在软件工具支持下由软件工程师完成的一系列软件工 程活动。软件工程过程通常包含四种基本的过程活动: P(Plan):软件规格说明。规定软件的功能及其运行的限制; D(Do):软件开发。产生满足规格说明的软件; C( Check):软件确认。确认软件能够完成客户提出的要求 A( Action):软件演进。为满足客户的变更要求,软件必须在使用的过程中演进3 有的软件在工作中出现了故障,造成软件失效,可能给软件整个系统带来的影响不大。 有的软件一旦失效。可能酿成灾难性后果。例如财务金融、交通通信、航空航天等软件。我 们称这类软件为关键软件。 3.软件的发展和软件危机 自 20 世纪 40 年代中出现了世界上第一台计算机以后,就有了程序的概念。其后经历了 几十年的发展,计算机软件经历了三个发展阶段: ·程序设计阶段,约为 50 至 60 年代 ·程序系统阶段,约为 60 至 70 年代 ·软件工程阶段,约为 70 年代以后 几十年来最根本的变化体现在: (1) 人们改变了对软件的看法。50 年代到 60 年代时,程序设计曾经被看做是一种任人 发挥创造才能的技术领域。当时人们认为,写出的程序只要能在计算机上得出正确的结果, 程序的写法可以不受任何约束。随着计算机的广泛使用,人们要求这些程序容易看懂、容易 使用,并且容易修改和扩充。于是,程序便从个人按自己意图创造的“艺术品”转变为能被 广大用户接受的工程化产品。 (2) 软件的需求是软件发展的动力。早期的程序开发者只是为了满足自己的需要,这种 自给自足的生产方式仍然是其低级阶段的表现。进入软件工程阶段以后,软件开发的成果具 有社会属性,它要在市场中流通以满足广大用户的需要。 (3) 软件工作的范围从只考虑程序的编写扩展到涉及整个软件生存周期。 在软件技术发展的第二阶段,随着计算机硬件技术的进步,要求软件能与之相适应。然 而软件技术的进步一直未能满足形势发展提出的要求。致使问题积累起来,形成了日益尖锐 的矛盾。这就导致了软件危机。问题归结起来有: (1) 缺乏软件开发的经验和有关软件开发数据的积累,使得开发工作的计划很难制定。致 使经费预算常常突破,进度计划无法遵循,开发完成的期限一拖再拖。 (2) 软件需求,在开发的初期阶段提得不够明确,或是未能得到确切的表达。开发工作 开始后,软件人员和用户又未能及时交换意见,造成开发后期矛盾的集中暴露。 (3) 开发过程没有统一的、公认的方法论和规范指导,参加的人员各行其事。加之设计 和实现过程的资料很不完整;或忽视了每个人工作与其他人的接口,使得软件很难维护。 (4) 未能在测试阶段充分做好检测工作,提交用户的软件质量差,在运行中暴露出大量 的问题。 如果这些障碍不能突破,进而摆脱困境,软件的发展是没有出路的。 4. 软件工程过程和软件生存周期 许多计算机和软件科学家尝试,把其它工程领域中行之有效的工程学知识运用到软件开 发工作中来。经过不断实践和总结,最后得出一个结论:按工程化的原则和方法组织软件开 发工作是有效的,是摆脱软件危机的一个主要出路。 (1) 软件工程过程 (Software Engineering Process) 软件工程过程是为获得软件产品,在软件工具支持下由软件工程师完成的一系列软件工 程活动。软件工程过程通常包含四种基本的过程活动: ·P (Plan) : 软件规格说明。规定软件的功能及其运行的限制; ·D (Do) : 软件开发。产生满足规格说明的软件; ·C (Check) : 软件确认。确认软件能够完成客户提出的要求; ·A (Action) : 软件演进。为满足客户的变更要求,软件必须在使用的过程中演进