软件工程理论及应用 教学课件 ppt 作者 周屹 第1章
第1章 软 件 产 品,第1章 软 件 产 品,1.1 软件的发展 1.1.1 软件产业 1.1.2 软件的竞争 1.2 软件危机与软件工程 1.2.1 软件特征 1.2.2 软件工程 1.2.3 软件应用 1.2.4 软件语言 1.2.5 软件文档 1.3 软件生存周期模型 1.3.1 瀑布模型 1.3.2 原型模型 1.3.3 螺旋模型 1.3.4 喷泉模型和其他模型 1.4 软件工程工具及环境,1.1 软件的发展,“软件”这一名词在20世纪60年代初从国外引进,当时人们无法说清它的具体含义,也无法解释它的英文单词“software”,于是有人把它翻译成“软件”或“软制品”,现在统一称其为软件。早期,人们认为软件就是源程序。随着人们对软件及其特性的更深层的研究,认为软件不仅仅包括程序,还应包含其他相关内容。,图1-1 软件的发展阶段,1.1.1 软件产业,软件产业根本不是一个新概念,也不是一个新兴的产业,早已经是一个相对成熟的产业。在整个90年代,软件始终是风险投资的第一大户,直到互联网崛起,才扰乱了软件业的头把交椅。,1.1.2 软件的竞争,许多年来,大、小公司雇佣的软件开发人员仅仅在公司内部服务,而且他们也愿意这样。因为每一个计算机程序都是自行开发的,这些“自家”的软件人员控制着成本、进度和质量。今天,所有这一切都改变了。,1.2 软件危机与软件工程,随着计算机系统的增多,计算机软件库开始扩展。内部开发的项目产生了上万行的源程序,从外面购买的软件产品加上几千行新代码就可以了。当发现错误时需要纠正所有这些程序即所有这些源代码;当用户需求发生变化时需要修改;当硬件环境更新时需要适应。这些活动统称为软件维护。在软件维护上所花费的精力开始以惊人的速度消耗资源。,1.2.1 软件特征,软件是逻辑的而不是物理的产品。逻辑往往实际只存在于人的头脑当中,软件的开发过程极难加以控制;因此,软件具有与硬件完全不同的特征: 1)软件是由开发或工程化而形成的,而不是传统意义上的制造产生的。,2)软件不会“磨损”。图1-2介绍了硬件和软件的故障变化曲线。,3)大多数软件是自定的,而不是通过已有的构件组装而来的。,1.2.2 软件工程,工程是将科学及数学原理运用于实际用途的具体应用手段, 是运用科学知识,对现实问题提供性能价格比合理的解决方案,如设计、制造、机器操纵、构架等。典型的传统工程包括建筑工程、机械工程、电力工程等。 句子的主干为“工程是应用手段”,是否妥当,建议修改。,1.2.3 软件应用,软件可以应用于任何场合,只要定义了一组预说明的程序步骤,如一个算法,但也有例外,如专家系统和人工神经网络。,下面给出一些软件应用领域,它们可能是一种潜在的应用分类: 1)系统软件。 2)实时软件。 3)商业软件。 4)工程和科学计算软件。 5)嵌入式软件。 6)个人计算机软件。 7)人工智能软件。,1.2.4 软件语言,软件语言是用于书写计算机软件的语言。软件语言主要包括:需求定义语言、功能性语言、设计性语言、实现性语言(即程序设计语言)、文档语言。,1.2.5 软件文档,文档是指某种数据媒体和其中所记录的数据。在软件工程中,文档用来表示对需求、工程或结果进行描述、定义、规定、报告或认证的任何书面或图示的信息。,1.3 软件生存周期模型,软件生存周期:一个软件从定义到开发、使用和维护,直到最终被弃用,要经历一个漫长的时期,通常把软件经历的这个漫长的时期称为生存周期。软件开发模型是软件开发全部过程、活动和任务的结构框架。它能直观表达软件开发全过程,明确规定要完成的主要活动、任务和开发策略。软件开发模型也常称为:软件过程模型;软件生存周期模型;软件工程范型。,图1-8 软件工程的演化过程,1.3.1 线性顺序模型和瀑布模型,生存周期模型应该容易为软件开发过程中的各类人员所理解,它应该适应不同的软件项目,具有较强的灵活性,以及支持软件开发环境的建立。线性顺序模型也称即简单瀑布模型。,图1-9 线性模型,瀑布模型(waterfall model),瀑布模型是在1970年由W.Royce最早提出的软件开发模型。它将软件生存周期的各项活动规定为依固定顺序连接的若干阶段工作,这些工作之间的衔接关系是从上到下、不可逆转,如同瀑布一样,因此称为瀑布模型。,图1-10 传统瀑布模型,1.3.2 原型模型和快速原型模型,常有这种情况,用户定义了软件的一组一般性目标,但不能标识出详细的输入、处理及输出需求;还有一些情况,开发者可能不能确定算法的有效性、操作系统的适应性或人机交互的形式。在这些及很多其他情况下,原型模型可能是最好的选择。,图1-12 原型法开发流程,1.3.3 螺旋模型和增量模型,螺旋模型(spiral model)是B. Boehm于1988年提出的。 是利用一种迭代的思想方法。它综合了瀑布模型和原型模型的优点,即将两者结合,并加入了风险分析机制。它的特征是使软件工程师渐进地开发,逐步完善的软件版本。是一个演化软件过程模型,它将原型的迭代特征与线性顺序模型中控制的和系统化的方面结合起来,使得软件的增量版本的快速开发成为可能。,图1-15 螺旋模型,1.3.4 喷泉模型和其他模型,1喷泉模型 喷泉模型是一种以用户需求为动力,以对象为驱动的模型,主要用于描述面向对象的软件开发过程。,图1-17 喷泉模型,2基于知识的模型 又称智能模型,它把瀑布模型和专家系统结合在一起。该模型在开发的各个阶段上都利用了相应的专家系统来帮助软件人员完成开发工作,使维护在系统需求说明一级上进行。,3构件组装模型 面向对象技术为软件工程的基于构件的过程模型提供了技术框架。面向对象模型强调了类的创建,类封装了数据和用于操纵该数据的算法。如果经过合适的设计和实现,面向对象的类可以在不同的应用及基于计算机的系统结构中复用。,4并发开发模型 并发开发模型,有时也称并发工程,David和Sitaram是这样描述它的:试图根据传统生命周期的主要阶段来追踪项目的状态的项目管理者是根本不可能了解其项目的状态的。这就是使用过于简单的模型追踪非常复杂的活动的示例。,5四代技术 R.Ross 1981年提出基于大型数据库管理系统开发的程序设计语言,称为四代语言4GL,以四代语言4GL为核心的软件开发技术称为四代技术4GT。4GT工具能将软件规格说明自动转换成程序代码。,1.4 软件工程工具及环境,1软件工程工具 软件工具是指为支持计算机软件的开发、维护、模拟、移植或管理而研制的程序系统。它是一个程序系统,是为专门目的而开发的。,2软件开发环境 软件开发环境是指在计算机的基本软件的基础上,为了支持软件的开发而提供的一组工具软件系统。在1985年第八届国际软件工程会议上,由IEEE和ACM支持的国际工作小组提出了“软件开发环境”的定义为“软件开发环境是相关的一组软件工具集合,它支持一定的软件开发方法或按照一定的软件开发模型组织而成。”,本 章 小 结,从软件的相关概念出发,介绍了软件的分类、规模、特点以及软件危机和软件危机产生的原因和解决的办法。引出了软件工程的概念,并且详细介绍了软件工程中的基本原理,着重对软件工程的生存周期进行阐述。根据不同软件开发的特点和需求,着重介绍了几种典型的软件过程模型:瀑布模型、快速原型模型、螺旋模型、喷泉模型,之后简要介绍了其他软件开发的模型。还介绍了软件文档的重要性、种类及写作要求和软件工程工具等。,习 题,1什么是软件,软件有哪些特点? 2什么是软件工程,软件工程的基本原理? 3试说明“软件生存周期”的概念。 4介绍瀑布模型、快速原型模型、螺旋模型、喷泉模型,说明每种模型适用的范围。 5比较几种软件开发方法的特点。,