第19章软件工程概述05-10_第1页
第19章软件工程概述05-10_第2页
第19章软件工程概述05-10_第3页
第19章软件工程概述05-10_第4页
第19章软件工程概述05-10_第5页
已阅读5页,还剩61页未读 继续免费阅读

下载本文档

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

文档简介

第三部分 软件工程,一、课程性质、目的与任务 软件工程部分是教学计划中一门综合性和实践性很强的必修课程的一部分,主要内容包括软件工程概述、可行性研究与计划、需求分析、概要设计、详细设计、编码、软件测试、软件维护。 通过本课程的学习,了解软件项目开发和维护的一般过程,掌握软件开发的传统方法和最新方法,为今后更深入地学习和从事软件工程实践打下良好的基础。二、课程的考试要求 基本概念和基本知识:软件与软件工程生存周期与软件开发模式,结构化分析、设计与编码,软件的评审、测试与维护,项目计划与项目管理。 基本技能:能用软件工程的方法参与软件项目的分析、设计、实现和维护。 重点:系统分析、系统设计、系统实现、系统维护。 难点:需求分析、软件测试。,三、实践性大作业要求 1根据本门课程的学习,设计一个小型软件 2软件用来实现一定的功能,比如学生成绩管理系统 。 3软件的设计按照软件工程的方法,各个阶段必须有相应文档记录,比如可行性分析报告,需求分析报告,详细设计要有流程图,编码有源代码(改进前后的)。 4软件维护修改过程中,必须有文档记录修改原因改进前后优缺点等内容。 5软件不要求十分商业化,要求基本运行正确无重大错误。 6作业提交方式:最好设计完成后采用安装程序打包,可以发行。将设计好的软件(运行版本或安装版本)、要求的设计文档报告和源程序(各阶段分目录保存)保存在软盘或刻成光盘或装订好文档提交,以供老师考查评分 。,软 件 工 程, 实用软件工程 (第二版) 郑人杰 殷人昆 陶永雷 清华大学出版社(1996), 软件工程 -实践者的研究方法(英文版 第四版) Roger S. Pressman 机械工业出版社,参考书目,第19章 软 件 工 程 概 述,学习目标: 1、掌握:软件和软件工程的基本概念 2、了解:软件生存周期及软件开发的各种模型学习要点: 软件、软件工程、软件生存周期和软件开发模型,软 件 工 程 概 述,软件工程主要讲述软件开发的道理,基本上是软件实践者的成功经验和失败教训的总结。本章主要介绍软件概念、特点和分类、软件的发展、软件危机,软件生存周期、软件开发模型。,19.1 计算机软件概念,19.1.1 软 件 定 义 什么是软件?软件是一种产品,同时又是开发和运行产品的载体。作为开发运行产品的载体,软件是计算机工作的基础、信息通信的基础,也是创建和控制其他程序的基础。 软件是计算机系统中与硬件相互依存的另一部分, 它是包括程序,数据及其相关文档的完整集合。程序是按事先设计的功能和性能要求执行的指令集。数据是使程序能够正确运行的数据结构。文档是描述程序研制过程、方法所用的有关的图文 材料。,19.1.2 软件的特点,软件是一种逻辑实体,而不是具体的物理实体。因而它具有抽象性软件是通过人们的智力活动,把知识与技术转化成信息的一种产品,是在研制、开发中被创造出来的,在它的开发过程中没有硬件明显的制造过程。在软件的运行和使用期间,没有硬件那样的机械磨损,老化问题,软件的特点,软件的开发和运行经常受到计算机系统的限制,对计算机系统有着不同程度的依赖性 软件的开发至今尚未完全摆脱手工艺的开发方式软件本身是复杂的实际问题的复杂性程序逻辑结构的复杂性 软件的开发费用越来越高,成本相当昂贵相当多的软件工作涉及到社会因素,19.1.3 软件的分类,1.基于软件的功能划分:系统软件 是与计算机硬件紧密配合以使计算机各个部件与相关软件及数据协调、高效工作的软件,如:操作系统数据库管理系统设备驱动程序通信处理程序等,软件的分类,支撑软件 它是协助用户开发软件的工具性软件,包括帮助程序人员开发软件产品的工具。文本编辑程序文件格式化程序磁盘向磁带进行数据传输的程序程序库系统支持需求分析、设计、实现、测试和支持管理的软件,软件的分类,应用软件 是在特定领域内开发,为特定目的服务的一类软件。几乎所有的领域都有计算机的应用软件。如:工程与科学计算软件(Matlab)计算机辅助设计制造软件(CAD/CAM)系统仿真软件(SIMULINK)智能产品嵌入软件(LABVIEW)医疗、制药软件(HIS)事务管理、办公自动化软件(OFFICE)计算机辅助教学软件(CAI)商业数据处理软件(如财务软件),软件的分类,2. 基于软件工作方式划分 :实时处理软件:对处理时间严格要求分时软件:轮流处理多个作业交互式软件:良好的用户接口批处理软件:作业处理的高吞吐量,软件的分类,3.基于软件的规模进行划分: 类别 参加人员数 研制期限 源程序行数 微型 1 14周 0.5k 小型 1 16月 1k2k 数值计算或数据处理,通常没有与其它程序的接口。需要按一定的标准化技术、正规的资料书写以及定期的系统审查。只是没有大题目那样严格。中型 25 12年 5k50k 软件人员之间、与用户之间的联系、协调的配合关系。因而计划、资料书写以及技术审查需要比较严格地进行。应用程序和系统程序。系统的软件工程方法是完全必要的。,软件的分类,大型 520 23年 50k100k 编译程序、小型分时系统、实时控制系统等。二级管理,若干小组,每组5人以下。人员调整往往不可避免,新手的培训。采用统一的标准,实行严格的审查是绝对必要的。 甚大型 1001000 45年 1M(=1000k) 若干个子项目,每一个子项目都是一个大型软件。子项目之间具有复杂的接口。如远程通信系统、多任务系统、大型操作系统、大型数据库管理系统、军事指挥系统通常都有这样的规模。很显然,这类问题没有软件工程方法的支持,它的开发工作是不可想象的。 极大型 20005000 510年 1M10M军事指挥、弹道导弹防御系统、航天工程。只是对软件工程技术依赖的程度不同而已。,软件的分类,4.基于软件失效的影响进行划分: 高可靠性软件 一般可靠性软件,软件的分类,5.基于软件服务对象的范围划分:分为定制(项目)软件 产品软件,19.1.4 软件的发展,计算机软件经历了四个发展时期: 1.程序设计阶段(46年-60年代中) 2.程序系统阶段(60年代中期70年代末期) 3.软件工程阶段(70年代中期并跨越近十年)4.第四阶段(90年代至今),19.1.4 软件的发展,1程序设计阶段(46年-60年代中) 特征: 程序设计全凭个人经验和技艺单独进行个体生产方式; 程序的运行、维护等工作全部由程序设计者自身承担; 缺乏通用性。典型技术:面向批处理、有限的分布、自定义软件 程序的制造者就是使用者,因此没有文档,软件的发展,2.程序系统阶段(60年代中期70年代末期)软件=程序+说明 (提出软件的概念) 特 征: 需要多人分工,共同协作“作坊式生 产方式”。 程序的设计与运行维护不是由一个人来 承担。 程序是不可缺少的部分。典型技术:多用户、实时、数据库、软件产品,软件的发展,“ 软件危机”主要表现在: (1) 成本和进度估计不正确 (2) 用户对“已完成的”软件系统不满意 (3) 质量不可靠 (4) 不可维护 (5) 缺乏良好的软件文档;成本高昂, 并逐年上升,软件的发展,3.软件工程阶段(70年代中期并跨越近十年)特 征:软件以产品化、系列化、工程化、标准化的产业发展,打破了软件生产的个体化特征,有了可以遵循的软件工程化的设计原则、方法和标准如何用科学管理方法去组织软件开发和维护,它包括探索新的设计方法、手段和技术工具。典型技术:分布式系统、嵌入“智能”、低成本硬件、消费者的影响。,软件的发展,4.第四阶段(90年代至今)软件开发技术以全新的开发模式进行生产,转变了传统的以功能为基础的开发观念。软件产业向着自动化、国际化的大规模群体生产模式发展。典型技术:强大的桌面系统、面向对象技术、专家系统、人工神经网络、并行计算、网络计算机,19.2.1 软件危机与软件工程定义,美国IBM公司在1963年至1966年开发的IBM360机的操作系统。这一项目花了5000人一年的工作量,最多时有1000人投入开发工作,写出了近100万行源程序。.据统计,这个操作系统每次发行的新版本都是从前一版本中找出1000个程序错误而修正的结果。.这个项目的负责人F. D. Brooks事后总结了他在组织开发过程中的沉痛教训时说:“.正像一只逃亡的野兽落到泥潭中做垂死的挣扎,越是挣扎,陷得越深,最后无法逃脱灭顶的灾难。.程序设计工作正像这样一个泥潭,.一批批程序员被迫在泥潭中拼命挣扎,.谁也没有料到问题竟会陷入这样的困境.”。IBM360操作系统的历史教训成为软件开发项目的典型事例为人们所记取。,Software Crisis !,1.软件危机,1.软件危机,什么是软件危机?,软件危机是指在计算机软件的开发与维护过程中所遇到的一系列严重的问题。,软件危机包括两个方面的问题:1、如何开发软件以满足需求2、如何维护已有的软件,软件危机的表现,产品不符合用户的实际需要。 软件开发生产率提高的速度远远不能满足客观需要。 软件产品的质量差。 对软件开发成本和进度的估计常常不准确。 软件的可维护性差。 软件文档资料通常既不完整也不合格。 软件的价格昂贵,软件成本在计算机系统总成本中所占的比例逐年上升。,软件危机,一些数据:大约70的软件开发项目超出了估算的时间,大型项目平均超出计划交付时间20到50,90以上的软件项目开发费用超出预算,并且项目越大,超出项目计划的程度越高美国政府审计局:只有不到2的合同定购软件在发布时具有可用性98以上的项目都失败了,软件危机,相关术语“两难境地(Crunch Mode)”:处于两难境地的项目面临着无法达到最初目标的威胁(费用、进度表、功能性等等),而项目团队在努力想要跨越该困境。“我们正处于两难境地,在半夜之前是不会回家的”“死亡行军(Death March)”:用来描述其进度表几乎不可能完成的项目。“这是一个死亡行军项目,我希望自己不要参与进去”,软件危机,软件项目超出费用和进度表目标普遍存在的原因是:目标本身完全是错误的。为什么有那么多人喊着软件危机呢?因为有利可图:某些经销商叫喊危机是为了卖出他们声称能够提供对策的产品或者服务;某些研究者叫喊危机是为了获得他们声称同样将提供对策的研究项目的经费;某些学术界人士叫喊危机是为了促使人们接受并阅读他们提出对策的专业论文。software runaways,软件危机,更准确的说法:慢性痛苦(chronic affliction) Suggested by Prof. Daniel Tiechrow, University of Michigan尽管忍受痛苦,但是软件依然在我们这个世界起着越来越重要的作用,但是如果能够医治痛苦,那么软件业将发展得更加健康。,产生软件危机的原因,软件是计算机系统中的逻辑部件而不是物理部件。在运行之前,很难检验它的正确性,质量也难评价,维护较难。 软件规模庞大,有技术问题,也有管理方法问题。 开发和管理人员只重视开发而轻视问题的定义,使软件产品无法满足用户的需求。 软件管理技术不能满足现代软件开发的需要,没有统一的软件质量管理规范。 在软件的开发和维护问题上存在错误的概念。,软件危机解决之道:,软件工程生命周期,2. 软件工程定义,Boehm:运用现代科学技术知识来设计并构造计算机程序及为开发、运行和维护这些程序所必需的相关文件资料IEEE:软件工程是开发、运行、维护和修复软件的系统方法Fritz Bauer:建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法,软件工程定义,软件工程-采用工程的概念、原理、技术和方法开发和维护软件。强调使用软件生存周期阶段方法学和各种结构分析及结构设计技术。从软件工程的定义说明:采用工程化方法和途径来开发与维护软件应该开发和使用更好的软件工具采取必要的管理措施,19.2.2 软件工程学的范畴,软件工程学所包含的主要内容(即范畴): 理论、结构、方法、工具、环境、管理、规范等,19.2.2 软件工程学,A、软件开发方法学是研究如何高效地开发出高质量的软件的方法。其任务:对软件开发步骤和文档格式提出了规范化的要求。B、软件工具是“帮助开发软件的软件”。C、方法与工具相结合,再加上配套的软硬件支持,就形成了 软件工程环境。D、软件工程管理的目的,是为了按照进度和预算完成软件计划,实现预期的经济和社会效益。包括:计划管理、成本管理、质量管理、组织管理。,软件工程学研究的基本目标,最终目标是以较少投资获得易维护、易理解、可靠、高效率的软件产品。软件工程学是研究软件结构、软件设计与维护方法、软件工具与环境、软件工程标准与规范、软件开发技术与管理技术的相关理论。,*软件工程的原则 为了开发出低成本高质量的软件产品,软件工程学应 遵守下述基本原则: 1.分解 2.独立性 3.一致性 4.确定性,3. 软件工程的历史,起源于20世纪50年代但是从学术的角度看,软件工程还是一个年轻的学科第一次会议在20世纪60年代后期而在80年代才从计算机科学分离开,19.3 软件生存周期,回顾:软件定义:软件是计算机系统中与硬件相互依存的另一部分,它是包含程序、过程及其相关文档资料的完整集合。软件=程序或过程+文档资料包括四个部分,软件的四个主要部分,(1)应用程序:直接面向用户,为解决各种特定问题而编写的程序。 (2)系统程序:是应用程序的支撑部分。 (3)面向用户的文档:如何使用和维护应用程序的资源:如用户手册、维护手册(4)面向开发者的文档:记载了应用程序的设计和开发过程,以便进一步开发和维护,如需求规格说明书、设计说明书等,19.3.1 软件生存周期的划分,软件有一个孕育、诞生、成长、成熟、衰亡的生存过程。这个过程即为计算机软件的生存期。软件生存周期的定义:是指从软件项目的提出,包括研制、运行、使用和维护,直到最终被弃用的整个过程。,软件生存周期的划分,问题定义 可行性研究需求分析 设计(概要设计、详细设计)编码 测试 运行与维护,软件生存周期一般可分为以下阶段:,19.3.2 各阶段的基本任务,计划时期: 问题定义-弄清“是什么? 可行性研究-有无解决办法 软件计划-作用范围,资源分析. 开发时期: 需求分析-弄清系统具体“做什么?” 软件设计: 概要设计-建立软件的总体结构 详细设计-确定模块的内部过程 、结构及算法 编码-选定语言,编写源程序 测试-查出并改正程序的错误 运行时期: 纠正错误 扩充、完善功能,19.4 软件开发模型,分类: *瀑布模型 *快速原型模型 螺旋模型 构建组装模型 演化模型 喷泉模型 混合模型,19.4.1 瀑布模型,软件工程的基础模型:瀑布模型又称生存周期模型。核心思想:按工序将问题化简,将实现与设计分开, 便于分工协作。 瀑布模型规定了软件生存周期的各个阶段 如同瀑布流水,逐级下落,自上而下、相 互衔接的固定次序。,瀑布模型,问题定义和可行性研究,确定要开发软件系统的总目标给出功能、性能、可靠性以及接口等方面的要求完成该软件任务的可行性研究估计可利用的资源(计算机硬件,软件,人力等)、成本、效益、开发进度制定出完成开发任务的实施计划,连同可行性研究报告,提交管理部门审查,需求分析,对待开发软件提出的需求进行分析并给出详细的定义编写软件需求说明书或系统功能说明书及初步的系统用户手册提交管理机构评审,设 计,总体设计 “如何解决问题”可以列出多种解决方案进行比较把各项需求转换成软件的体系结构。结构中每一组成部分都是意义明确的模块,每个模块都和某些需求相对应详细设计 对每个模块要完成的工作进行具体的描述,为源程序编写打下基础编写设计说明书,提交评审。,编 码,把软件设计转换成计算机可以接受的程序代码,即写成以某一种特定程序设计语言表示的“源程序清单”写出的程序应当是结构良好、清晰易读的,且与设计相一致的,测 试,单元测试,查找各模块在功能和结构上存在的问题并加以纠正组装测试,将已测试过的模块按一定顺序组装起来按规定的各项需求,逐项进行有效性测试,决定已开发的软件是否合格,能否交付用户使用,运行和维护,改正性维护 运行中发现了软件中的错误需要修正。适应性维护 为了适应变化了的软件工作环境,需做适当变更。完善性维护 为了增强软件的功能需做变更。预防性维护 为了给未来的软件改进奠定更好的基础。,特 点:,(1)阶段间的顺序性和依赖性 只有前一阶段的工作完成以后,后一阶段的工作 才能开始。 前一阶段的输出文档,就是后一阶段的输入文档。(2)推迟实现 物理实现推迟到软件开发的后期进行,这就大大 降低了软件的风险。 (3)质量保证的观点 每一阶段都要完成规定的文档。 每一阶段都要对已完成的文档进行复审。突出的缺点:是该模型缺乏灵活性,特别是无法解决 软件需求不明确或不准确的问题。,19.4.2 快速原型模型,软件原型是软件的最初版本,以最少的费用、最短的时间开发出的,反映最后软件的主要特征的系统。特征:(1)可实际运行的系统(2)包括主要功能,以及重要接口(3)快速、廉价,说明:软件开发者和用户一起定义软件的总目标、说明需求,并规划出定义的区域,然后快速设计软件中对用户/客户可见部分的表示。快速设计导致了原形的建造,原型由用户/客户评估,并对开发软件的需求进一步求精。逐步调整原形使之满足用户需求,这个过程是迭代的。,快速原型模型,快速原型软件开发的生存期模型,19.4.3 螺旋模型,螺旋模型沿着螺线旋转,在笛卡尔坐标的四个象限上分别表达了四个方面的活动,即:制定计划确定软件目标,选定实施方案,弄清项目开发的限制条件风险分析分析所选方案,考虑如何识别和消除风险实施工程实施软件开发客户评估评价开发工作,提出修正建议,螺旋模型,螺旋模型(Spiral Model),19.4.4 构件组装模型,构件组装模型导致了软件的复用,提高了软件开发的效率。面向对象技术是软件工程的构件组装模型的基础,面向对象技术强调类的创建,类封装了数据和操纵该数据的算法。面向对象的类可以被复用。构件组装模型融合了螺旋模型的特征,本质上是演化的,并且支持软件开发的迭代方法,它是利用预先包装好的软件构件来构造应用程序。,构件组装模型,19.4.5 其它模型,1、演化模型(Evolutional Model),由于在项目开发的初始阶段人们对软件的需求认识常常不够清晰,因而使得开发项目难于做到一次开发成功,出现返工再开发在所难免。往往要做两次:第一次只是试验开发,其目标只是在于探索可行性,弄清软件需求。第二次则在此基础上获得较为满意的软件产品。,2、喷泉模型,喷泉模型(Water Fountain Model),迭代重复演进无间隙各阶段间无明显界限,3、第四代技术模型,第四代技术包含了一系列的软件工具,它们的共同点是:能使软件设计者在较高级别上说明软件的某些特征。然后软件工具根据说明自动生成源代码。优点是极大地降低了软件的开发时间,并显著提高了构造软件的生产率。缺点是目前的第四代技术并不比程序设计语言更容易使用,而且这类工具生成的结果源代码是低效的,使用第四代技术开发的大型软件系统的可维护性是令人怀疑的。4、混合模型混合模型把几种模型组合在一起,它允许一个项目沿着最有效的路径发展。,课堂练习:,一、填空题1软件是一种产品,同时又是开发和运

温馨提示

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

评论

0/150

提交评论