第2章软件工程基础知识“软件工程”这个概念最早是在1968年召开的一个当时被称为“软件危机”的会议上提出的。自1968年以来,该领域已经取得了长足的进步。软件工程的发展已经极大地完善了我们的软件,使我们对软件开发活动也有了更深的理解。开发一个具有一定规模和复杂性的软件系统和编写一个简单的程序大不一样。其间的差别,借用Boodi的比喻,如同建造一座大厦和搭一个狗窝的差别。大型的、复杂的软件系统的开发是一项工程,必须按工程学的方法组织软件的生产与管理,必须经过计划、分析、设计、编程、测试、维t等一系列的软件生命周期阶段。这是人们从软件危机中获得的最重要的教益,这一认识促使了软件工程学的诞生。软件工程学就是研究如何有效地组织和管理软件开发的工程学科。正EE在1983年将软件工程定义为:软件工程是开发、运行、维护和修复软件的系统方法。著名的软件工程专家Boehm于1983年提出了软件工程的7条基本原理:(1)用分阶段的生命周期计划严格管理;(2)坚持进行阶段评审;(3)实行严格的产品控制;(4)采用现代程序设计技术;(5)结果应能清楚地审查;(6)开发小组的人员应该少而精;(7)承认不断改进软件工程实践的必要性。软件工程方法学包含3个要素:方法、工具和过程。方法是指完成软件开发的各项任务的技术方法;工具是指为运用方法而提供的软件工程支撑环境;过程是指为获得高质量的软件所需要完成的一系列任务的框架。根据考试大纲,在软件工程基础知识方面,要求考生掌握以下知识点:•软件需求分析与定义;•软件设计、测试与维护;•软件复用;•软件质量保证及质量评价;•软件配置管理;•软件开发环境;•软件过程管理。第2章软件工程基础知识•15•本章主要介绍软件需求分析与定义,软件设计、测试与维护,软件质量保证及质量评价,软件配置管理,软件开发环境和软件过程管理方面的知识,有关软件复用的知识将在第3章介绍。2.1软件需求分析与定义根据StandishGroup对23000个项目进行的研究结果表明,28%的项目彻底失败,46%的项目超出经费预算或者超出工期,只有约26%的项目获得成功。而在这些高达74%的不成功项目中,有约60%的失败是源于需求问题,也就是差不多有一半的项目都遇到了这个问题,这一可怕的现象不得不让我们对需求分析引起高度的重视。2.1.1软件需求与需求过程1.什么是软件需求那么什么是软件需求呢?软件需求就是系统必须完成的事,以及必须具备的品质^具体来说,软件需求包括功能需求、非功能需求和...