《软件工程》 第1章软件工程学概述_第1页
《软件工程》 第1章软件工程学概述_第2页
《软件工程》 第1章软件工程学概述_第3页
《软件工程》 第1章软件工程学概述_第4页
《软件工程》 第1章软件工程学概述_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第1章软件工程学概述第二章1.1软件危机1.2软件工程1.3软件生命周期1.4软件过程1.5小结2014年春•软件工程在运行中能提供所希望的功能和性能的指令集(即程序)使程序能够正确运行的数据结构(逻辑结构,存储结构,运算)描述程序研制过程和方法使用的文档程序软件可执行部分不可执行部分文档1文档2文档3什么是软件?2014年春•软件工程软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。软件危机包含下述两方面的问题:如何开发软件;如何维护软件。案例1963年美国飞往火星的火箭爆炸,造成1000万美元的损失。原因是FORTRAN程序:

DO5I=1,3

误写为:DO5I=1.31.1软件危机2014年春•软件工程1966年,IBM公司组织开发的OS/360,共约100万条指令,花费了5000个人年;经费达数亿美圆,而结果却令人沮丧,错误多达2000个以上,系统根本无法正常运行。OS/360系统的负责人Brooks这样描述开发过程的困难和混乱:“…像巨兽在泥潭中作垂死挣扎,挣扎得越猛,泥浆就沾得越多,最后没有一个野兽能够逃脱淹没在泥潭中的命运。…”1967年苏联“联盟一号”载人宇宙飞船在返航时,由于软件忽略一个小数点,导至在进入大气层时因打不开降落伞而烧毁。2014年春•软件工程1.1.1软件危机的介绍

软件危机的表现:对软件开发成本和进度的估计常常很不准确。用户对“已完成的”软件系统不满意的现象经常发生。软件产品的质量往往靠不住。软件常常是不可维护的。软件通常没有适当的文档资料。软件成本在计算机系统总成本中所占的比例逐年上升。软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。2014年春•软件工程1.1.2产生软件危机的原因

主要有两个原因:一方面与软件本身的特点有关另一方面也和软件开发与维护的方法不正确有关。2014年春•软件工程1.1.3消除软件危机的途径

首先应该对计算机软件有一个正确的认识。应该推广使用在实践中总结出来的开发软件的成功的技术和方法。研究探索更好更有效的技术和方法。应该开发和使用更好的软件工具。软件工程正是从管理和技术两方面研究如何更好地开发和维护计算机软件的一门新兴学科。2014年春•软件工程1.2软件工程

1.2.1软件工程的介绍两个定义:早期定义:“软件工程就是为了经济地获得可靠的且能在实际机器上有效地运行的软件,而建立和使用完善的工程原理。”更全面更具体的定义:“软件工程是:①把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;②研究①中提到的途径。”2014年春•软件工程软件工程的本质特征1.

软件工程关注于大型程序的构造2.软件工程的中心课题是控制复杂性3.软件经常变化4.开发软件的效率非常重要5.和谐地合作是开发软件的关键6.软件必须有效地支持它的用户7.在软件工程领域中通常由具有一种文化背景的人替具有另一种文化背景的人创造产品2014年春•软件工程1.2.2软件工程的基本原理

1.用分阶段的生命周期计划严格管理2.坚持进行阶段评审3.实行严格的产品控制4.采用现代程序设计技术5.结果应能清楚地审查6.开发小组的人员应该少而精7.承认不断改进软件工程实践的必要性2014年春•软件工程1.2.3软件工程方法学

软件工程技术包括:技术和管理二方面内容把软件生命周期全过程中使用的一整套技术方法的集合称为方法学主要存在:

A传统方法学(生命周期方法或结构化方法):分阶段开发和管理

B面向对象方法(OOA,OOD,OOP)2014年春•软件工程过程是为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。

软件工程构成三要素

方法是完成软件开发的各项任务的技术方法,回答“怎样做”的问题

工具是为运用方法而提供的自动的或半自动的软件工程支撑环境过程方法工具软件工程

要素之间相互关联和支持2014年春•软件工程1.传统方法学

也称为生命周期方法学或结构化范型。它采用结构化技术(结构化分析、结构化设计和结构化实现)来完成软件开发的各项任务,并使用适当的软件工具或软件工程环境来支持结构化技术的运用。这种方法学把软件生命周期的全过程依次划分为若干个阶段,然后顺序地完成每个阶段的任务。每一个阶段的开始和结束都有严格标准,对于任何两个相邻的阶段而言,前一阶段的结束标准就是后一阶段的开始标准。在每一个阶段结束之前都必须进行正式严格的技术审查和管理复审2014年春•软件工程2.面向对象方法学

面向对象方法学的出发点和基本原则是尽量模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类认识世界解决问题的方法与过程,从而使描述问题的问题空间(也称为问题域)与实现解法的解空间(也称为求解域)在结构上尽可能一致。优点:降低了软件产品的复杂性,提高了软件产品的可理解性,简化了软件的开发和维护工作。促进了软件重用。

2014年春•软件工程面向对象方法学具有下述4个要点:(1)把对象(object)作为融合了数据及在数据上的操作行为的统一的软件构件。(2)把所有对象都划分成类(class)。(3)按照父类(或称为基类)与子类(或称为派生类)的关系,把若干个相关类组成一个层次结构的系统(也称为类等级)。(4)对象彼此间仅能通过发送消息互相联系。(封装性)2014年春•软件工程两者区别传统方法学强调自顶向下顺序地完成软件开发的各阶段任务。面向对象方法学开发软件的过程,是一个主动地多次反复迭代的演化过程。2014年春•软件工程1.3软件生命周期

软件从开始计划到最后废弃不用整个阶段称为计算机软件的生命周期。软件生命周期分为三个时期:软件定义软件开发软件维护每个时期又可进一步划分成若干个阶段。2014年春•软件工程问题定义编码和单元测试需求分析系统设计可行性研究软件维护综合测试软件开发软件维护软件定义(目标与范围说明书)(可行性论证论告)(维护报告)(测试报告)(程序)(设计文档)(需求说明书)软件生命周期2014年春•软件工程1.4软件过程

软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。可以通过以下方式定义:软件过程定义了在生产高质量的软件产品时执行的一组任务软件过程是用来开发软件的方法软件过程是一个过程,遵循该过程从最初的概念构建、交付并最后系统退役为止软件过程是软件工程三要素之一通常用生命周期模型来描述2014年春•软件工程生命周期模型生命周期模型规定了把生命周期划分成哪些阶段及各个阶段的执行顺序,因此,也称为过程模型。

目前典型的软件开发模型有:瀑布模型、快速原型模型、增量模型、螺旋模型、喷泉模型等。不同的开发方法有不同的软件过程模型。2014年春•软件工程1.4.1瀑布模型在20世纪80年代之前,瀑布模型一直是惟一被广泛采用的生命周期模型。传统软件工程方法学的软件过程,基本上可以用瀑布模型来描述。2014年春•软件工程传统瀑布模型的几个特点

1.阶段间具有顺序性和依赖性①必须等前一阶段的工作完成之后,才能开始后一阶段的工作②前一阶段的输出文档就是后一阶段的输入文档2.推迟实现的观点

清楚地区分逻辑设计与物理设计,尽可能推迟程序的物理实现3.质量保证的观点①每个阶段都必须完成规定的文档②每个阶段结束前都要对所完成的文档进行评审2014年春•软件工程优点:

可强迫开发人员采用规范的方法(如结构化技术);严格地规定了每个阶段必须提交的文档;要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证。缺点:

由于瀑布模型几乎完全依赖于书面的规格说明,很可能导致最终开发出的软件产品不能真正满足用户的需要。开发周期长。前期不能出错。2014年春•软件工程实际的瀑布模型当在后面阶段发现前面阶段的错误时,需要沿图中左侧的反馈线返回前面的阶段,修正前面阶段的产品之后再回来继续完成后面阶段的任务图中实线箭头表示开发过程,虚线箭头表示维护过程2014年春•软件工程1.4.2快速原型模型

快速原型是快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品能完成的功能的一个子集。过程:

快速建立一个能反映用户主要需求的原型系统用户试用,提出意见修改原型,直到用户满意书写规格说明文档开发软件2014年春•软件工程图1.4快速原型模型2014年春•软件工程主要优点:

软件产品的开发基本上是线性顺序进行的。原型系统已经通过与用户交互得到验证,据此产生的规格说明文档正确地描述了用户需求,因此不会进行较大的返工。开发人员通过建立原型系统已经学到了许多东西,因此,在设计和编码阶段发生错误的可能性也比较小,减少了在后续阶段需要改正前面阶段错误的可能性。开发人员应该尽可能快地建造出原型系统,以加速软件开发过程,节约软件开发成本。原型的用途是获知用户的真正需求,一旦需求确定了,原型将被抛弃。因此,原型系统的内部结构并不重要,重要的是,必须迅速地构建原型然后根据用户意见迅速地修改原型。2014年春•软件工程1.4.3增量模型增量模型也称为渐增模型。使用增量模型开发软件时,把软件产品作为一系列的增量构件来设计、编码、集成和测试。每个构件由多个相互作用的模块构成,并且能够完成特定的功能。图1.5增量模型2014年春•软件工程例子:使用增量模型开发字处理软件第一个增量构件往往实现软件的基本需求,提供最核心的功能。第二个增量构件提供更完善的编辑和文档生成功能;第三个增量构件实现拼写和语法检查功能;第四个增量构件完成高级的页面排版功能。增量模型注意事项:增量构件规模适中;分解的约束条件是当新构件集成到现有软件中时,所形成的产品必须是可测试的;软件体系必须是开放的,即在对现有系统添加新增量构件时,不能破坏系统原有功能。2014年春•软件工程优点:能在较短时间内向用户提交可完成部分工作的产品(分批地逐步向用户提交产品,整个软件产品被分解成许多个增量构件,开发人员一个构件接一个构件地向用户提交产品)逐步增加产品功能可以使用户有较充裕的时间学习和适应新产品,从而减少一个全新的软件可能给客户组织带来的冲击缺点:

它一方面要求开发人员把软件看作一个整体,另一方面又要求开发人员把软件看作构件序列,每个构件本质上都独立于另一个构件。除非开发人员有足够的技术能力协调好这一明显的矛盾,否则用增量模型开发出的产品可能并不令人满意。2014年春•软件工程图1.6风险更大的增量模型2014年春•软件工程1.4.4螺旋模型螺旋模型的基本思想:使用原型及其他方法来尽量降低风险。理解这种模型的一个简便方法,是把它看作在每个阶段之前都增加了风险分析过程的快速原型模型2014年春•软件工程图1.8完整的螺旋模型2014年春•软件工程螺旋模型优缺点优点:对可选方案和约束条件的强调有利于已有软件的重用,也有助于把软件质量作为软件开发的一个重要目标;减少了过多测试(浪费资金)或测试不足(产品

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论