软件工程基础与训实教程.pptx
软件工程基础与实训教程,杜文洁 主编,第 1 章 软件工程概述,内容介绍,1.1 软件危机1.2 软件工程1.3 软件的开发方法1.4 软件生存周期1.5 软件开发模型1.6 小结,1.1 软件危机,1.1.1 软件的定义及特点 软件是计算机系统中与硬件相互依存的另一部分,它包括程序、相关数据及其说明文档。其中程序是按照事先设计的功能和性能要求执行的指令序列;数据是程序运行过程中处理的对象;文档是与程序开发、维护和使用有关的各种图文资料。软件有如下特点:(1)软件是一种逻辑实体,具有抽象性。(2)软件在使用过程中没有磨损的问题。(3)软件一旦研制成功,就可以重复制造,其生产过程就变成复制过程。(4)软件的开发和运行必须依赖于特定的计算机系统环境。(5)软件开发至今尚未摆脱手工方式。,1.1.2 软件危机的产生原因 软件危机是指落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。软件危机的产生有两方面的因素:一方面与软件本身的抽象性和复杂性有关,这是客观原因;另一方面则与软件开发和维护过程中使用的技术和方法有关,这是主观原因。其根本原因是软件开发过程不成熟,主要表现为:(1)忽视软件开发前期的调研和分析工作。(2)开发过程缺乏统一的规范。(3)软件开发管理困难而负责。(4)没有完善的质量保证体系。,1.1.3 解决软件危机的方法为了摆脱软件危机造成的困境,北大西洋公约组织(NATO)的科学委员会于1968年在联邦德国召开的有关研讨会上,第一次提出了“软件工程”(Software Engineering)的概念。从此,软件工程作为一门新兴的工程学科诞生了。软件工程的主要思想是运用工程学的基本原理和方法来组织和管理软件生产。,1.2 软件工程,1.2.1 软件工程的定义及目标 软件工程就是采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明是正确的管理方法和最先进的软件开发技术结合起来,运用到软件开发和维护过程中。软件工程旨在开发满足用户需求、及时交付、不超过预算和无故障的软件,其主要目标如下:(1)合理预算开发成本,付出较低的开发费用;(2)实现预期的软件功能,达到较好的软件性能,满足用户的需求;(3)提高所开发软件的可维护性,降低维护费用;(4)提高软件开发生产率,及时交付使用。,1.2.2 软件工程研究的内容 软件工程作为一门新兴的学科,研究的主要内容是软件开发技术和软件工程管理两方面。在软件开发技术方面,主要研究软件开发方法、软件开发过程、软件开发工具和环境。在软件工程管理方面,主要研究软件管理学、软件经济学、软件心理学等。,1.3 软件的开发方法,1.3.1 面向过程的方法 面向过程的方法包括面向过程需求分析、面向过程设计、面向过程编程、面向过程测试、面向过程维护、面向过程管理。面向过程的方法又称结构化方法,习惯上叫做结构化分析、结构化设计、结构化编程、结构化测试、结构化维护。面向过程的方法的特点是:程序的执行过程不由用户控制,完全由程序控制。面向过程的方法的优点是简单实用,缺点是维护困难。,1.3.2 面向数据的方法 面向数据的方法,也称为面向元数据(Metadata)的方法。元数据是关于数据的数据,组织数据的数据。面向数据方法的特点是:程序的执行过程中,根据数据流动和处理的需要,有时由程序员控制(如数据库服务器上触发器和存储过程的执行),有时由用户控制(如用户浏览层上控件的选择与执行)。面向数据方法的优点是通俗易懂,特别适合信息系统中数据层(数据库服务器)上的设计与实现,缺点是实现窗口界面较困难。,1.3.3 面向对象的方法 面向对象方法起源于面向对象编程语言。面向对象方法包括分析、设计和实现活动。它是一种把面向对象的思想运用于软件开发过程,指导开发活动的系统方法,建立在“对象”概念(对象、类和继承)基础上的方法学基于对象概念,以对象为中心,以类和继承为构造机制来认识、理解、刻画客观世界和设计、构建相应的软件系统。,1.3.4 三种开发方法的比较面向过程的方法、面向数据的方法和面向对象的方法这三种方法的比较如表1-1所示。表1-1 三种开发方法总结对比,软件生命周期是指软件产品或软件系统从产生、投入使用到被淘汰的全过程。软件生命周期大致可以分为6个阶段:可行性研究、需求分析、软件设计、编码、测试和维护。,1.4 软件生命周期,在软件工程中,人们通过建立抽象的软件开发模型,把软件生命周期中的各个活动或步骤安排到一个框架中,将软件开发的全过程清晰且直观地表达出来。常见的软件开发模型有瀑布模型、原型模型、增量模型、螺旋模型以及统一软件开发过程。,1.5 软件开发模型,本章主要介绍了与软件工程相关的基本概念,同时还介绍了软件工程的目标和研究内容。软件生命周期描述了软件产品的整个生存过程。使用软件开发模型来描述软件开发各个阶段之间的关系,常用的开发模型有瀑布模型、原型模型、增量模型、螺旋模型和统一软件开发过程。,1.6 小结,