北京理工大学教学课件_第1页
北京理工大学教学课件_第2页
北京理工大学教学课件_第3页
北京理工大学教学课件_第4页
北京理工大学教学课件_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

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

文档简介

北京理工大学教学课件软件工程

课名:软件工程参考教材:1、张海藩,软件工程导论(第5版),清华大学出版社,20082、齐治昌等,软件工程(第二版),高等教育出版社,20063、郑人杰等,软件工程概论,机械工业出版社,2010教学方式:授课+实验课时:40教学目的和要求:(1)掌握软件工程的基本概念(2)学会软件工程项目开发过程的分析、设计、编码要求以及测试、维护的基本策略和方法(3)了解软件工程项目管理的基本内容和方法主要内容为:(1)软件工程概述:软件工程发展、过程模型.(2)

软件工程技术:

软件工程分析方法、软件工程系统设计方法、软件测试技术(3)软件维护:软件的可维性、软件维护的任务及过程、

软件维护的副作用(4)软件项目管理技术:软件项目管理的基本概念、项目计划、风险分析、软件质量保证、软件配置管理第一章软件工程概述第一章软件工程概述的内容1.1引言

1.2

软件基本概念、分类、特点1.3软件工程的发展过程

1.4软件工程的活动

1.5

软件过程模型

1.6

Rational统一过程模型

1.1引言为什么要讲软件和软件工程?唯有对软件和软件的开发过程,有充分的认识,才能更好的开发出过程受控、质量受控的软件产品。对于软件和软件工程的认识是困难的,但软件开发过程又存在很多困惑,需要对此有正确的、深刻的认识。1.1引言软件不仅仅是在计算机运行的程序任何预先定义好的程序步骤的地方,都有软件的身影软件的应用领域系统软件实时软件商业软件工程和科学计算软件嵌入式软件个人计算机软件基于Web的软件(网站)人工智能软件1.2.1软件1.2软件基本概念、分类、特点

软件是计算机系统中与硬件相互依存的另一部分,包括程序、数据及相关文档的完整集合。三要素程序:按事先设计的功能、性能要求执行的指令

(语句)序列;数据:使程序能正常操纵信息的数据结构;文档:与程序开发、维护和使用有关的图文资料。可执行的计算机软件定义(GB)与计算机系统的操作有关的计算机程序、规程、规则,以及可能有的文件、文档及数据。其中:I=(i1,i2,…,in)

输入集合。Ij表示一个抽象的输入数据类型O=(O1,O2,…,On)

输出集合。Oj表示一个抽象的输出数据类型E=(e1,e2,…,en)

构成集合。ei表示一个子系统或一个构件R=(r1,r2,…,rn)

构件关系集合.ri表示一个关系。软件表示

S=(I,O,E,R)1.2.2软件的特点1.是逻辑实体,非物理实体,具抽象性;2.没有明显的制作过程;3.运行、使用期间不存在磨损、老化;4.软件的开发、运行受计算机系统的限制;复杂性高,成本昂贵。涉及社会因素。1.2.3软件分类软件从设计、实现、维护和传统工程有相同的基础2.基于软件工作方式:*实时处理*分时处理*交互处理*批处理1.基于软件大的功能框架:

*系统软件*支撑(工具)软件*应用软件管理者的错误观点:我们已经有标准和规程了我们已经有好的开发平台和工具了我们可以在开发进度得不到保障时,可增加开发人员我们可以外包一部分项目,缓解项目的压力用户的错误观点:因为知道项目的目标,可先编程序。不考虑项目将来怎样,以后要变改就行了开发者的错误观点:编完程序就大功告成程序未运行前,没有质量问题最后项目完成只提交程序软件工程,就是写文档,增加开发成本1软件开发的错误观点开发者管理者用户1.2.4软件开发技术面临的问题1.2.5软件危机概括地说,软件危机包含下述两个方面的问题:如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。在软件开发和维护的过程中存在这么多严重问题,一方面与软件本身的特点有关,另一方面也和软件开发与维护的方法不正确有关。1.2.6.软件危机的主要特点软件开发周期大大超过规定日期;软件系统开发成本高,周期长,质量差,满足不了市场需求;

软件质量无保证软件系统开发人员数量少,质量低.软件系统维护难度大.软件开发缺乏合适的工具和方法软件的版权问题得不到保证1.2.7yet,SuccessHasntComeEasily31%53%成功争议失败16%成功的标准:用户在使用用户使用软件很容易做完要做的事

开发人员写出的软件达不到用户要求:人的能力问题.

当前技术发展问题系统平台问题失败的根本原因1.3软件工程的发展1.3.1软件的发展在软件危机形式下,软件工程诞生了,1968年在北大西洋公约组织(NATO)的德国开的学术会议上,软件工程术语首次提出1.3.2软件生命周期(SoftwareLifeCycle)软件产品或软件系统从设计、投入使用到被淘汰的全过程工作成果计划任务书需求规格说明书设计说明书基本任务理解工作范围建立软件结构确定模块结构定义用户需求阶段计划需求分析概要设计详细设计系统分析员开发组完成人编码测试维护编写程序发现和排除问题运行和管理程序软件产品改进的软件产品用户程序员测试小组1.3.3硬件、软件生命周期的比较硬件故障率曲线软件实际故障率曲线生命初期磨损后理想曲线实际曲线由于副作用造成的故障率提高修改故障率故障率时间时间

改正一个问题需付出的代价需求分析结构设计详细设计编码集成测试系统测试现场改正一个问题的估计费用改正一个问题估计的工作量20200200010005.02.50.050.5(美元)(人天)1.4软件工程的定义1IEEE93对软件工程定义:软件工程是(1)将系统化的、严格约束的、可量化的方法应用于软件的开发、运行和维护。即将工程化应用于软件。(2)在(1)中所述方法的研究IEEE:美国电气和电子工程师学会:(InstituteofElectricalandElectronicsEngineers)学会设各种专门技术分会,软件标准分技术委员会为SESS2定义给的四个要点:软件工程方法和性质----系统化、严格约束、可量化的方法软件工程方法的作用和范围-----软件的开发、运行和维护软件工程方法的目标----即将工程化应用于软件软件工程方法的趋势-----方法的研究在给定成本、进度的前提下,开发出有可修改性、有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性且满足用户需求的产品。3软件工程的目标技术的观点:包括:软件项目的分析、设计、编码、测试、维护等技术方法。按软件技术理论,以高效、健壮、可复用、可维护为目的,研究软件体系结构、组成以及构造方式、等工程的观点:包括:软件项目招标、合同、实施、监督、验收推广等。以经济管理科学为依据,研究软件工程的规划策略和经济收益等工程问题管理的观点:包括:软件项目开发人员组织控制、进度风险分析和质量保证体系等方面。以科学性、高效可行及可测量性为目标来研究工程项目管理4软件工程的三视图5软件工程基本原理1、用分阶段的生命周期计划严格管理2、坚持进行阶段评审3、实行严格的产品控制4、采用现代程序设计技术5、结果应能清楚地审查6、开发小组的人员应该少而精7、承认不断改进软件工程实践的必要性软件工程的基本思想生命周期的观点重视文档的作用自上而下和逐步细化的思想模块化的思想反复迭代的思想注意编程风格1.5软件过程模型软件工程学的基础是软件过程软件过程贯穿于软件生命周期中软件工程学中的方法用于软件过程的各阶段的各项活动中1软件过程定义工具方法过程质量焦点Softwareengineeringlayers质量焦点:支持软件工程的根基就在于对质量的关注。过程:软件工程的过程将技术层结合在一起,使计算机软件合理和及时开发出来。方法:涵盖一系列的任务:需求分析、设计、编程、测试和维护。工具:对过程、方法提供自动或半自动的支持。例CASE集成软件、硬件或一个软件工程数据库。根据不同的项目来定义贯穿于软件生命周期之中的一组关键活动区域。也称过程模型2软件过程的位置和作用3.瀑布模型(线形顺序模型)可行性研究与计划需求分析设计编码运行维护测试定义阶段开发阶段维护阶段开发软件的特点:过程具有顺序性和依赖性不适应需求不确定的项目错误最后才发现开始进程呈阻塞情况

承接上一项活动中接收本项活动所需的对象作为输入利用输入进行本项活动。把本项的活动成果传送下一项对本项工作进行评审,若评审正确才能进行下一项工作确定:系统功能系统性能设计:数据结构体系结构接口算法开发软件的原则分析:系统需求软件需求4原型模型听取用户意见建造/修改原型用户测试运行原型原型模型带来的问题:原型时期的质量问题用户如何理解进度先入为主的非最佳方式不适合原型开发的领域:

实时控制软件数值计算软件原型产生的步骤需求分析和定义规格软件设计的一种工具解决不确定性的工具一种实验工具开发同时,作为同步培训工具原型演化为最终系统软件维护的辅助工具应用领域需求设计编码测试集成运行、试用核心系统开发设计需求编码测试集成运行、试用第二次迭代反馈反馈5演化(迭代)模型需要足够的人力资源用户和设计都成为关键适用于MIS形式的系统开发过程(1)根据用户要求开发出核心系统(2)用户试用后,提出精化系统、增强系统能力的需求,开发人员实施开发的迭代过程6增量模型(递增模型、增殖模型)

先完成一个系统子集的开发,再按同样的开发步骤增加功能(系统子集),如此递增下去直至满足全部系统需求。系统的总体设计在初始子集设计阶段就应作出设想。分析增量模型设计编码测试分析设计编码测试分析设计编码测试分析设计编码测试增量1增量2增量3增量4交付的增量1交付的增量2交付的增量3交付的增量4日历时间7.螺旋模型

瀑布模型和增量模型相结合,增加风险分析用来指导大型软件项目的开发将开发划分为制定计划、风险分析、实施工程、客户评估四类活动沿螺旋线每转一圈,表示开发出一个更完善的新的软件版本要点:相似于增量模型,是顺序模型与原型过程的统一,强调版本的升级。活动化分不同更强调:计划、风险分析、用户评估与增量模型的区别:8.喷泉模型演化分析设计实现确认维护1990年B.H.Sollers和J.M.Edwards提出主要用于采用面向对象技术的项目喷泉体现迭代和无间隙的特征软件的某些部分常常被重复工作多次,相关对象在每次迭代中随之加入渐进的软件成分在分析、设计、实现等各项活动之间无明显边界9.构件集成模型

构件库问题域识别构件查找构件生成构件组装系统查到构件未查到构件模型要点:•基于软件复用性•形成统一开发过程•采用统一建模语言35基本需求螺旋螺旋模型第n次迭代原型建造原型第n次迭代维护运行系统需求分析设计编码测试132578614944GT4GT4GT10111213组合模型要点:几种模型配合使用以一种模型为主,嵌入其它模型由开发者选择开发路径•已经有先例的项目•问题明确且时间紧的项目•规模较大且时间紧的项目•需求不确定的项目•带有突破性技术的项目•客户难以沟通和理解的项目•明显复用潜力的项目项目适应模型的规律(一般情况)

项目情况适用模型瀑布模型增量模型演化模型原型模型螺旋模型原型模型构件模型37Rational统一过程RUPRUP是由IBM公司开发和维护的过程产品它提供了在开发机构中分派任务和责任的方法它的目的是在可以预见的日程和预算前提下确保满足最终用户需求的高质量软件的产生RUP的优越性提高了团队的生产力创建并维护模型为如何有效地使用UML提供了指导是一个可配置的过程吸收了许多在商业上得到证明的软件开发的最佳实践经验RUP所吸收的最佳工程实践经验迭代地开发软件需求管理使用基于组件的体系结构可视化的软件建模验证软件质量控制软件的变化RUP的二维结构软件工程方法学

通常把在软件生命周期全过程中使用的一整套技术的集合称为方法学(methodology),也称为范型(paradigm)。软件工程方法学包括三个要素,这就是方法、工具和过程。目前使用得最广泛的软件工程方法学,分别是传统方法学和面向对象方法学。43结构化方法PK面向对象方法44结构化方法PK面向对象方法传统的结构化开发方法是以功能分析和数据分析为基础,采用分解和抽象的方法找出软件功能模块及其之间的连接关系,并找出数据的表或视图以及它们之间的关联。但是,该方法使得人们对现实世界的认识与编程之间存在理解上的鸿沟,整个系统的变动和修改十分困难,不便于软件重用,并且难以适应以突出控制特性的系统要求。45结构化方法PK面向对象方法面向对象方法是从现实世界中客观存在的事物(即对象)出发,尽可能地运用人类的自然思维方式来构造软件系统。它运用人类在日常的逻辑思维中经常采用的思想方法与原则,例如抽象、分类、继承、聚合、封装等,将其贯穿于整个分析和设计过程,实现了客观世界到计算机系统的平滑过渡,容易为人们所理解,并使得软件的复用在面向对象的设计中成了自然而然的事情。46什么是CASECASE(ComputerAidedSoftwareEngineering)计算机辅助软件工程是一组工具和方法的集合,用于辅助软件开发、维护、管理过程中的各项活动,促进软件过程的工程化和自动化所有软件工程方法都需要CASE的相应技术支持用于系统模型的图形编辑器管理设计实体的数据字典生成用户界面的GUI软件支持程序纠错的调试器代码生成器…47CASE工具IBMRational公司产品()开发管理软件过程:RUP需求管理:Requisite

Pro

可视化建模:Rose自动测试:Robot,TestRealtime,TestManager,XDETester项目管理:ProjectConsole配置管理:ClearCase,ClearQuest开源CASE工具:(

)CVS:应用广泛的版本管理工具UMLModeler:UML模型图形编辑工具UML2EJB:将XML表示的UML模型转换成EJB代码的转换器48进一步说明49软件工程面临的挑战遗留系统的问题遗留系统是指那些过时或存在问题的计算机系统,通常是许多年以前开发的挑战:既要以合理的成本维护和更新系统,又要能够继承系统中重要的商业信息和服务异构系统的问题网络环境下包含不同的硬件平台和软件系统挑战:需要提出新的开发技术,能够使所开发的软件系统运行在不同的硬件平台和系统环境下50软件工程面临的挑战高可信软件开发的要求软件的重要作用要求正确性、可靠性、安全性等可信性质挑战:如何在软件的开发和运行中保证其具有高可信的性质软件开发方式的变化网络时代带来的冲击挑战:研究分布式的软件体系结构和开发模式,探索与之相适应的软件工程策略51软件工程知识体系软件工程知识体系(SWEBOK)IEEE计算机学会发起研究,从而促进软件工程发展成为独立的专业学科2001年5月完成,发布“SWEBOK指南V1.00(试用版)”SWEBOK的组成将软件工程知识分解成若干知识域,形成层次化的组成结构10个知识域软

温馨提示

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

评论

0/150

提交评论