收藏 分享(赏)

第一章 软件工程学概述【课件】.ppt

上传人:无敌 文档编号:965800 上传时间:2018-05-08 格式:PPT 页数:35 大小:510.01KB
下载 相关 举报
第一章  软件工程学概述【课件】.ppt_第1页
第1页 / 共35页
第一章  软件工程学概述【课件】.ppt_第2页
第2页 / 共35页
第一章  软件工程学概述【课件】.ppt_第3页
第3页 / 共35页
第一章  软件工程学概述【课件】.ppt_第4页
第4页 / 共35页
第一章  软件工程学概述【课件】.ppt_第5页
第5页 / 共35页
点击查看更多>>
资源描述

1、任课教师: 杨勇,软件工程,一、纪律要求1、学生 必须有教材,课前必须预习好下一次将要上的课程内容。2、上课必须认真听讲,记笔记,随时准备回答问题。3、在规定时间内完成作业,保持课堂纪律,不许迟到早退。二、作业的要求4、本课程理论性强和实践性更强的学科。有特殊的作业要求。每个学生必须选择一个题目,然后根据自己的题目完成指定的作业内容和作业次数。根据自己的题目每一位同学独立按时,在老师的指导下完成规定的作业。作业以电子作业形式交给教师。所以每一位同学准备好必要的工具。,学习本课程要求,三、作业内容5、面向过程:系统需求分析报告、系统数据流程图、系统详细设计和系统概要设计等四个大内容。 面向对象:

2、系统的用例模型,系统的域模型,系统的动态模型。四、评分办法6、作业50%;考试50%。,1.1 软件危机 1.2 软件工程 1.3 软件生命周期 1.4 软件过程,第1章 软件工程 ABC类 (4),一、软 件危机的含义 软件危机:是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。,1.1 软件危机,这些问题绝不仅仅是不能正常运行的软件才具有的,实际上,几乎所有软件都不同程度地存在这些问题。,二、软件危机典型表现, 对软件开发成本和进度的估计常常很不准确。, 用户对“已完成的”软件系统不满意的现象经常发生。, 软件产品的质量往往靠不住。, 软件常常是不可维护的。, 软件通常没有适当的文

3、档资料。, 软件成本在计算机系统总成本中所占的比例逐年上升。, 软件开发生产率提高的速度,既跟不上硬件的发展速度,也远远跟不上计算机应用迅速普及深入的趋势。 以上列举的仅仅是软件危机的一些明显的表现,与软件开发和维护有关的问题远远不止这些。,三、 产生软件危机的原因,产生软件危机的原因很多,除与软件本身固有的特征有关外,还与软件开发范型、软件设计方法。软件开发支持以及软件开发管理有关。,1、用户对软件需求的描述不精确,有遗漏、二义性、错误,甚至软件开发过程中不断修改软件功能、界面、支撑环境等要求。,2、软件开发人员急于求成,未能与用户达成一致就着手编写程序。,3、大型软件项目开发需要组织一定的

4、人力共同完成,各类人员的信息交流不及时、不准确、甚至产生误解,是一个主要原因。,4、重开发,轻维护也是一个重要原因。,5、软件不同于硬件,其开发进展情况较难衡量,质量也较难评价,因此管理和控制软件开发过程相当困难。,图1.1引入同一变动付出的代价随时间变化的趋势,1、应该加强软件开发过程的管理,做到组织有序、各类人员协同配合,共同保证过程项目完成,避免软件开发过程中各人单干的现象。2、推广使用开发软件的成功技术与方法,并且不断探索更好的技术与方法;消除一些计算机系统早期发展阶段形成的错误观念和做法。3、开发和使用好的软件工具,支撑软件开发的全过程,即建立软件工程支持环境。 总之,为了解决软件危

5、机,要从技术、管理两个方面入手,引入“软件工程”的观念,就是为了解决软件开发过程中的技术和管理问题。,四、克服危机的途径,一、 什么是软件工程 概括地说,软件工程是指导计算机软件开发和维护的工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。 ,1.2 软件工程,二、 软件工程的基本原理 1、用分阶段的生命周期计划严格管理2、坚持进行阶段评审3、实行严格的产品控制4、采用现代程序设计技术5、结果应能清楚地审查6、开发小组的人员应该少而精7、承认不断改进软件

6、工程实践的必要性,一、定义 软件生命周期(software life cycle):表明一个计算机软件从功能确定、设计,到开发成功投入使用,并在使用中不断地修改、增补和完善,直至被新的需要所替代而停止该软件的使用的全过程。,1.3 软件生命周期,二、 软件生命周期的基本任务,软件生命周期由软件定义、软件开发和运行维护三个时期组成,每个时期又可进一步划分成若干个阶段,每个阶段实现不同的任务。,软件定义,问题定义 : 要解决什么问题,可行性研究:上一阶段所确定的问题是否有行的通的,解决办法,需求分析 : 目标系统必须做什么,开发时期,概要设计 : 怎样实现目标系统?,详细设计 : 应该怎样具体地实

7、现这个系统,编码和单元测试:写出正确的容易理解、容易维护 的程序模块,综合测试 :通过各种类型的测试、调试使软件达到预定要求 运行维护 通过各种必要的维护活动使系统持久地满足用户的需求。,软件生命周期基本任务,1.问题定义 问题定义阶段必须回答的关键问题是:“要解决的问题是什么”。通过调研,系统分析员应该提出关于问题性质、工程目标、和工程规模的书面报告,并且需要得到客户对这份报告的确认。2.可行性研究 这个阶段要回答的关键问题是:“上一个阶段所确定的问题是否有行得通的解决办法”。系统分析员必须确定能否以最小的代价在最短的时间解决问题为宗旨,综合技术、经济、社会因素等分析可行性,从而确定工程可行

8、性。3.需求分析 这个阶段的任务仍然不是具体地解决客户的问题,而是准确地回答“目标系统必须做什么”这个问题。这个阶段的另外一项重要任务,是用正式文档准确地记录对目标系统的需求,这份文档通常称为规格说明(specification)。,基本任务具体解释,4.概要设计 这个阶段的基本任务是,概括地回答“怎样实现目标系统?”这个问题。概要设计又称为初步设计、逻辑设计、高层设计或总体设计。 首先,应该设计出实现目标系统的几种可能的方案。 概要设计的另一项主要任务就是设计程序的体系结构,也就是确定程序由哪些模块组成以及模块间的关系。 5.详细设计 概要设计阶段以比较抽象概括的方式提出了解决问题的办法。详

9、细设计阶段的任务就是把解法具体化,也就是回答“应该怎样具体地实现这个系统”这个关键问题。这个阶段的任务还不是编写程序,而是设计出程序的详细规格说明。 6.编码和单元测试 这个阶段的关键任务是写出正确的容易理解、容易维护的程序模块。,基本任务具体解释,基本任务具体解释,7.综合测试 这个阶段的关键任务是通过各种类型的测试(及相应的调试)使软件达到预定的要求。8.软件维护 维护阶段的关键任务是通过各种必要的维护活动使系统持久地满足用户的要求。通常有以下四类维护活动。 1)改正性维护:诊断和改正正在使用过程中发现的软件错误 2)适应性维护:修改软件以适应环境的变化 3)完善性维护:根据用户的要求改进

10、或扩充软件使它更完善 4)预防性维护:修改软件为将来的维护活动预先做准备,软件工程过程:是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。过程定义了运用方法的顺序、应该交付的文档资料、为保证软件质量和协调变化所需要采取的管理措施以及标志软件开发各个阶段任务完成的里程碑。为获得高质量的软件产品,软件工程过程必须科学、合理。整个软件开发的过程我们以一个软件生命周期来表示,而整个软件生命周期内所要完成的一系列任务我们以软件模型的方式进行具体流程的安排。 软件开发模型:是从软件项目需求定义直至软件经使用后废弃为止,跨越整个生存期的系统开发、运作和维护所实施的全部过程、活

11、动和任务的结构框架。,1.4 软件过程,图一 传统的瀑布模型,一、瀑布模型,在20世纪80年代之前,瀑布模型一直是唯一被广泛采用的生命周期模型,现在它仍然是软件工程中应用得最广泛的过程模型。 按照传统的瀑布模型来开发软件,有如下几个特点。 (1) 阶段间具有顺序性和依赖性 含义:A.前一阶段工作完成后,后一阶段工作才能开始 B.前一阶段的输出文档是后一阶段的输入文档。 (2) 推迟实现的观点 清楚地区分逻辑设计与物理设计,尽可能推迟程序的物理实现,是按照瀑布模型开发软件的一条重要的指导思想。,(3) 质量保证的观点 每个阶段都必须完成规定的文档,没有交出合格的文档就是没有完成该阶段的任务。 每

12、个阶段结束前都要对所完成的文档进行评审,以便尽早发现问题,改正错误。 实际的瀑布模型是带“反馈环”的,如图2.2所示(图中实线箭头表示开发过程,虚线箭头表示维护过程)。当在后面阶段发现前面阶段的错误时,需要沿图中左侧的反馈线返回前面的阶段,修正前面阶段的产品之后再回来继续完成后面阶段的任务。,图二 实际的瀑布模型,二、快速原型模型,快速原型:是快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品能完成的功能的一个子集。 如图三所示(图中实线箭头表示开发过程,虚线箭头表示维护过程),快速原型模型的第一步是快速建立一个能反映用户主要需求的原型系统,让用户在计算机上试用它,通过实践

13、来了解目标系统的概貌。通常,用户试用原型系统之后会提出许多修改意见,开发人员按照用户的意见快速地修改原型系统,然后再次请用户试用。一旦用户认为这个原型系统确实能做他们所需要的工作,开发人员便可据此书写规格说明文档,根据这份文档开发出的软件可以满足用户的真实需求。,图三 快速原型模型,快速原型的本质是“快速”。开发人员应该尽可能快地建造出原型系统,以加速软件开发过程,节约软件开发成本。原型的用途是获知用户的真正需求,一旦需求确定了,原型将被抛弃。,三、 增量模型,增量模型:也称为渐增模型,如图2.4所示。使用增量模型开发软件时,把软件产品作为一系列的增量构件来设计、编码、集成和测试。每个构件由多

14、个相互作用的模块构成,并且能够完成特定的功能。使用增量模型时,第一个增量构件往往实现软件的基本需求,提供最核心的功能。 优点: 1、在较短时间内向用户提交可完成一些有用的工作的产品。 2、逐步增加产品功能可以使用户有充裕的时间学习和适应新产品,从而减少一个全新的软件可能给用户带来的冲击。,图四 增量模型,图五 风险更大的增量模型,四、 螺旋模型,软件开发几乎总要冒一定风险,因此,在软件开发过程中必须及时识别和分析风险,并且采取适当措施以消除或减少风险的危害。 螺旋模型的基本思想是,使用原型及其他方法来尽量降低风险。理解这种模型的一个简便方法,是把它看作在每个阶段之前都增加了风险分析过程的快速原

15、型模型,如图六所示。 完整的螺旋模型如图7所示。图中带箭头的点划线的长度代表当前累计的开发费用,螺线旋过的角度值代表开发进度。,图六 简化的螺旋模型,图七 完整的螺旋模型,本章首先阐述了开发软件的一些错误方法和观念是怎样形成的。然后列举了这些错误方法带来的严重弊病(软件危机),澄清了一些糊涂观念。为了计算机系统的进一步发展,需要认真研究开发和维护软件的科学技术。应总结计算机软件的历史经验教训,借鉴其他工程领域的管理技术,逐步使软件工程这门新学科发展和完善起来。 其次在应用软件工程的实践中,提出了软件生命周期和软件过程(软件模型)的思想,以更好的知道软件的开发。,本章小结,软件过程是为了获得高质

16、量软件产品所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。软件过程必须科学、合理,才能开发出高质量的软件产品。 按照在软件生命周期全过程中应完成的任务的性质,在概念上可以把软件生命周期划分成问题定义、可行性研究、需求分析、概要设计、详细设计、编码和单元测试、综合测试以及维护等八个阶段。实际从事软件开发工作时,软件规模、种类、开发环境及使用的技术方法等因素,都影响阶段的划分。因此,一个科学、有效的软件过程应该定义一组适合于所承担的项目特点的任务集合。,生命周期模型(即软件过程模型)规定了把生命周期划分成的阶段及各个阶段的执行顺序。本章介绍了四类典型的软件生命周期模型。瀑布模型历史悠

17、久、广为人知,它的优势在于它是规范的、文档驱动的方法;这种模型的问题是,最终交付的产品可能不是用户真正需要的。 快速原型模型正是为了克服瀑布模型的缺点而提出来的。它通过快速构建起一个可运行的原型系统,让用户试用原型并收集用户反馈意见的办法,获取用户的真实需求。 增量模型具有能在软件开发的早期阶段使投资获得明显回报和易于维护的优点,但是,要求软件具有开放结构是使用这种模型时固有的困难。, 风险驱动的螺旋模型适用于大规模的内部开发项目,但是,只有在开发人员具有风险分析和排除风险的经验及专门知识时,使用这种模型才会获得成功。 每个软件开发组织都应该选择适合于本组织及所要开发的软件特点的软件生命周期模型。这样的模型应该把各种生命周期模型的合适特性有机地结合起来,以便尽量减少它们的缺点,充分利用它们的优点。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 经营企划

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报