软件工程课件全第1章概述_第1页
软件工程课件全第1章概述_第2页
软件工程课件全第1章概述_第3页
软件工程课件全第1章概述_第4页
软件工程课件全第1章概述_第5页
已阅读5页,还剩71页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

现代软件工程

ModernSoftwareEngineering

第一章软件工程概论西邮计算机学院

课程简介课程名称:现代软件工程教学方式:授课+

讨论 课时安排:48考试类别:考试 参考资料:ApplyingUMLandPatterns(UML与模式应用),CraigLarman,机械工业出版社,第三版软件工程导论,张海藩,清华大学出版社现代软件工程,周之英,科学出版社实用软件工程,郑人杰,高等教育出版社软件工程案例教程,韩万江,机械工业出版社课程目标《现代软件工程》以当前主流的软件开发过程、面向对象技术和UML作为核心,密切结合软件开发的先进技术、最佳实践和企业案例,力求从“可实践”软件工程的角度描述需求分析、软件设计、软件测试以及软件开发管理,并对软件工程领域的最新研究热点与成果进行介绍。通过本课程的学习,使学生掌握软件工程的基本原理、开发软件项目的工程化的方法和技术及在开发过程中应遵循的流程、准则、标准和规范,具备一定的软件分析、设计能力以及有效地策划和管理软件开发活动的能力。课程安排Chap1.软件工程概述Chap2.传统软件工程方法Chap3.面向对象方法与UMLChap4.软件设计与实现Chap5.软件测试与评估Chap6.软件项目管理Chap7.形式化软件工程Chap8.案例分析与讨论第一章软件工程概论1.1软件的基本概念1.2软件危机1.3软件工程1.4软件生存周期1.5软件工程基本原理1.6软件的开发模型1.7软件工程方法学1.8关于软件工程的学习1.9小结1·1软件的基本概念生产力显著提高100倍。人们从繁重的体力劳动中解脱出来。80年代初期

BusinessWeekly“软件:新的驱动力”20年后……带翼的软件公路上的代码健康软件……计算机软件已经成为一种驱动力进行商业活动的引擎现代科学研究和工程问题解决的基础区分现代产品和服务的关键因素现代社会中不可缺少的应用于:交通、医药、通讯、军事、娱乐、办公……1·1·1软件的定义【定义】:软件是程序、数据及开发、使用和维护程序所需要的所有文档。其中 程序:计算事务的处理对象和处理规则的描述,为指令的集合;数据:程序加工、处理的对象。文档:有关计算机程序功能、设计、编制、使用的文字或图形资料。1·1·2软件的发展史早期(程序设计阶段): 【时间】:20世纪50年代初期至60年代中期

【特点】:硬件已经通用化,而软件的生产却是个体化。软件产品为专用软件,规模较小,功能单一,开发者即使用者;软件只有程序,无文档;软件设计在人们的头脑中完成,形成了错误观念“软件=程序”。【典型技术】:面向批处理、自定义软件1·1·2软件的发展史第二阶段(程序系统阶段): 【时间】:20世纪60年代中期至70年代末期

【特点】:多道程序设计技术、多用户系统、人机交互式技术、实时系统和第一代数据库管理系统的出现,使得计算机应用得到迅速。出现了专门从事软件开发的“软件作坊”,软件作为产品得到了广泛应用。但在软件业空前繁荣的同时,原始的开发与维护方法陷入了极端困境,“软件危机”产生。【典型技术】:多用户、实时、数据库、软件产品

1·1·2软件的发展史第三阶段(软件工程阶段): 【时间】:20世纪70年代中期至80年代中期

【特点】:微处理器的出现和广泛应用,使得计算机真正成为大众化的东西。以软件的产品化、系列化、工程化和标准化为特征的软件产业发展起来,软件开发有了可以遵循的软件工程化的设计准则、方法和标准。【典型技术】:分布式系统、广域网和局域网、低成本的硬件、嵌入“智能”1·1·2软件的发展史第四阶段: 【时间】:20世纪80年代中期至今

【特点】:计算机的发展不再着重与单台计算机和计算机程序、而是针对计算机和软件的综合应用。由复杂的操作系统控制的PC机、广域网、局域网、Internet,配合以先进的软件应用已经成为标准。面向对象的开发方法在许多领域迅速取代了传统的软件开发方法。【典型技术】:强大的桌面系统、面向对象技术专家系统、人工神经网络、网络计算机1·1·3软件的特点

软件是一个逻辑的而不是物理的产品:软件是一种逻辑实体,不具有直观可见性;软件是由开发或工程化而形成的,而不是传统意义上的制造产生的;软件不会“磨损”;大多数软件是自定义的,而不是通过已有构件组装的;软件的开发和运行常常受到计算机系统的限制,对计算机有着不同的依赖。(软件移植)。软件的成本相当昂贵。硬件与软件的故障曲线时间硬件的故障率曲线故障率生命初期“磨损”后软件的故障率曲线故障率时间理想曲线实际曲线修改副作用软件的成本相当昂贵软件技术的发展落后于需求时间软件复杂性软件需求差距软件技术硬、软件成本比例的变化年份成本%软件1950197019851995硬件1·1·4软件的分类基于软件功能划分:系统软件;支撑软件;应用软件基于软件工作方式划分:实时处理;分时处理;交互式;批处理基于软件规模划分:微型;小型;中型;大型……基于软件服务对象的范围划分:定制软件;通用软件基于软件失效的影响划分:关键软件;非关键软件1·1·5软件应用 软件的应用领域十分广阔:系统软件:是一组为其它软件服务的软件。如操作系统、编译软件、DBMS等。特点是与硬件交互频繁;多用户支持;多外部调用等。实时软件:管理、分析、控制现实世界种发生事件的软件。特点是必须在严格时间范围内相应。商业软件:目前最大应用领域。如管理信息系统。工程可科学计算软件:特征是“数值分析”。嵌入式软件:工业产品中用于控制之用。个人计算机软件:如字处理、多媒体、娱乐等。人工智能软件:如专家系统、虚拟现实、仿真等。1·2软件危机个体化软件环境软件作坊急剧膨胀软件危机产生SoftwareCrisis?SurveyoftheUSGovernmentAccountingOffice-19791·2软件危机【定义】:在计算机软件的开发和维护过程中所遇到的一系列严重问题。

1968年,北大西洋公约组织的计算机科学家在联邦德国召开国际会议,讨论软件危机问题,正式提出并使用了“软件工程”的概念,标志软件工程正式诞生。软件危机包含两方面的问题:如何开发软件,以满足不断增长,日趋复杂的需求。如何维护数量不断膨胀的软件产品。1·2·1软件危机的表现形式对软件的开发成本和进度的估计常常很不准确;用户对“已完成”软件系统的不满意现象时常发生;软件产品的质量往往靠不住;软件常常是不可维护的;软件通常没有适当的文档资料;其他。1·2·2产生软件危机的原因软件本身的特点:逻辑部件,不具有直观可见性;规模日趋庞大,开发与管理十分复杂性。错误的软件开发与维护方法忽视软件需求分析轻视文档的重要性忽略软件维护等1·2·3解决软件危机的途径对计算机软件有一个正确的认识 (软件≠程序)必须充分认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。推广使用在实践中总结出来的开发软件的成功技术和方法。开发和使用更好的软件工具。1·2·3解决软件危机的途径1.技术措施 推广和使用在实践中总结出的好的软件开发技术和方法,并不断探索和研究更有效的技术。 开发和使用更好的软件工具,包括采用好的开发工具,系统分析和辅助设计工具等,以提高工作效率。2.管理措施 吸收和借鉴人类长期以来从事各类工程项目所积累的行之有效的原理、概念、技术和方法。水利工程建筑工程机械工程…

…软件工程传统工程新兴工程气象工程生物工程工程工程是对技术(或社会)实体的分析、设计、建造、验证和管理。1·3软件工程“软件工程”----SoftwareEngineering于1968年NATO组织在德国召开的一次会议上提出是把软件当作一种工业产品,要求“采用工程化的原理与方法对软件进行计划、开发和维护”。软件工程的概念及范畴围棋与软件工程的感想围棋围棋棋谱拿过来的时候,大师问“后面应该走哪里?”十个初级爱好者选择的落点散布在棋盘各处……

十个职业棋手说的落子点都差不多,甚至包括后面的几步……

这就是高手和低手的差别……软件工程当一个小程序拿过来的时候,项目经理让大家编写……

十个中国软件工程师写出来的程序各有“特色”、千差万别,十个印度软件工程师写出来的程序差不多,以至于怀疑是“抄袭”。项目经理也不清楚中国软件业和印度软件业的差距是多少年只是觉得差了好远好远……思考:软件开发是否需要追求风格一致和代码一致软件开发是否应该抹杀个人的创造性要解决的问题是什么?用于解决该问题的实体具有什么特点?如何实现该实体(解决方案)?如何建造该实体?采用什么方法去发现该实体设计和建造过程中产生的错误?当该实体的用户要求修改、适应和增强时,如何支持这些活动?从发展的角度:硬件发展超过软件人们对新程序的需求对软件的依赖建造高质量和高可靠性的软件的努力拙劣的设计和资源的缺乏软件工程

背景(Cont.)从产业的角度:计算机发展的早期,面向硬件程序设计被看作是一门“艺术”开发成本分配发生变化管理者和开发人员:?Why

长时间?Why

成本高?Why

错误?Why

难度量软件工程

背景(Cont.)1·3软件工程【定义】

采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的技术方法结合起来,来指导软件的开发与维护。软件工程技术的两个明显特点:

强调规范化强调文档化开发范型设计方法支持过程管理过程需求设计实现确认支持可用性正确性合算性软件工程活动维软件工程目标维软件工程原则维软件工程的框架是由软件工程目标、软件工程活动和软件工程原则三个方面的内容构成的。软件工程框架目标:生产具有正确性、可用性以及开销适宜的软件产品。正确性:软件产品达到预期功能的程度。可用性:软件基本结构、实现及文档为用户 可用的程度。开销适宜:软件开发、运行的整个开销满足 用户要求的程度。决定了:软件过程、过程模型和工程方法的选择。软件工程目标活动:生产一个最终满足需求且达到工程目 标的软件产品所需要的步骤。1、需求:问题分析:需求获取和定义,又称软件需求规约。

需求分析:生成软件功能规约。2、设计:概要设计:建立整个软件的体系结构,包括子系统、模块以及相关层次的说明、每一模块的接口定义等。

详细设计:产生程序员可用的模块说明,包括每一模块中数据结构说明及加工描述。3、实现:把设计结果转换为可执行的程序代码。4、确认:贯穿整个开发过程,对完成的结果进行确认,保证产品满足用户的要求。5、支持:修改和完善活动。软件工程活动软件工程的四条基本原则:采取适宜的开发模型:控制易变的需求;采用合适的设计方法:需要软件模块化、抽象与信息隐藏、局部化、一致性以及适应性等,需要合适的设计方法的支持。提供高质量的工程支持:软件工具和环境对软件过程的支持。重视开发过程的管理:有效利用可用的资源、生产满足目标的软件产品、提高软件组织的生产能力等。软件工程原则工具方法过程质量焦点1·3·1一种层次化技术Softwareengineeringlayers质量焦点:支持软件工程的根基就在于对质量的关注。过程:软件工程的过程将技术层结合在一起,使计算机软件合理和及时开发出来。方法:涵盖一系列的任务:需求分析、设计、编程、测试和维护。工具:对过程、方法提供自动或半自动的支持。例CASE集成软件、硬件或一个软件工程数据库。1·3·1一种层次化技术软件工程的基层过程定义了一组关键过程区域的框架(KPAs)关键过程区域构成了软件项目的管理控制的基础规定了技术方法的采用,工程产品(模型、文档、数据、报告等)的产生,checkpoint的设立、质量的保证以及变更的管理软件工程的过程层提供了建造软件在技术上需要“如何做”。方法涵盖了以下任务需求分析设计编程测试维护软件工程方法依赖于一组基本原则,这些原则控制了每一个技术区域,包括建模技术和其他描述技术软件工程的方法层(1)遗留(legacy)软件将继续发挥作用。(2)软件应用范围将继续扩大,成为信息社会的基础设施。(3)网络化软件将是发展重点。(4)软件的可靠性与安全性日趋重要。(5)工业化生产是必由之路。1·3·2软件发展趋势软件工业化生产时代的基础技术:软件过程技术:以软件过程改进为中心

软件过程成熟度模型CMM

个体软件过程PSP

群体(小组)软件过程TSP

建造支持软件过程的环境面向对象技术构件重用技术1·3·2软件发展趋势软件工程关注于大型程序的构造软件工程的中心课题是控制复杂性软件经常变化开发软件的效率非常重要和谐地合作是开发软件的关键软件必须有效地支持它的用户在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人创造产品1·3·3软件工程—

本质特征【定义】

(SoftwareLifeCycle)一个软件从定义、开发、使用和维护,直到最终被废弃为止的整个过程。1·4软件生存周期软件生命周期费用效益1·4·1软件生存周期方法学基本思想

采用生命周期方法学,从时间角度对软件开发和维护的复杂问题进行分解,把软件生命的漫长周期依次分为若干阶段,每个阶段有相对独立的任务,然后逐步完成每个阶段的任务。 前阶段任务的完成是后阶段工作开始的前提与基础,后阶段任务是前阶段的具体与细化。优点:

各阶段任务相对独立,便于分工协作,降低开发工作的难度;便于科学组织与管理;保证了产品的质量,提高了可维护性。1·4·2阶段划分及基本任务阶段划分原则:

各阶段的任务彼此间尽可能的相对独立,同一阶段各项任务的性质尽可能的相同,从而降低各阶段任务的复杂程度,简化不同阶段之间的联系,有利与软件的组织管理。问题定义可行性研究需求分析总体设计详细设计编码单元测试软件维护综合测试定义时期开发时期维护时期1·4·2阶段划分及基本任务1.问题定义:通过对系统实际用户和使用部门负责人的访问调查,明确要解决问题性质、工程目标和规模。2.可行性研究:导出系统的高层逻辑模型(数据流图),并在此基础上更准确、更具体的确定工程的规模和目标;更准确的估计系统的成本和效益。3.需求分析:和用户密切配合,充分交流信息,以得到用户确认的系统逻辑模型(数据流图、数据字典及简要的算法表示的系统逻辑模型)。1·4·2阶段划分及基本任务4.总体设计: 1)提出几种可能的解决方案,权衡各种方案的利弊,并推荐出最佳方案; 2)设计软件的结构,确定软件的模块构成及模块之间的关系。5.详细设计:把解决问题的方案具体化,设计出程序的详细规格说明,并包含必要的细节信息。6.编码和单元测试:将详细设计的结果翻译成高级程序设计语言的源程序,并仔细测试编写的每一个模块。1·4·2阶段划分及基本任务7.综合测试:通过各类型的严格测试与调试,使软件达到预定的要求。 1)集成测试:各模块装配后测试; 2)验收测试:按规格说明书。8.软件维护:通过必要的维护工作使得系统持久的满足用户的需要:

1)改正性维护;2)适应性维护;3)完善性维护;4)预防性维护修改软件的代价

在软件的不同开发阶段进行修改所需要的代价是不同的。错误发现的越早,引起的变动越小,付出的代价越少;反之付出的代价猛增。代价早中后高中低时期引入同一变动付出的代价随时间的变化趋势图软件开发工作量分配比例40%~50%10%~20%费用分配比例55%~70%1·5软件工程基本原理1.用分阶段的生命周期计划严格管理

项目概要计划,里程碑计划,项目控制计划,产品控制计划,验证计划,运行维护计划。2.坚持进行阶段评审(评审过程)

每个阶段都进行严格的评审,以便尽早发现错误。3.实行严格的产品控制

实行基准配置(经过阶段评审后的软件配置成份,包括文档和程序代码)对软件的修改进行严格管理。1·5软件工程基本原理4.采用现代的程序设计技术

结构化分析(SA)与设计(SD);面向对象的分析(OOA)与设计(OOD)。5.结果能清楚的审查

规定开发组织的责任和产品标准。6.开发小组的人员应该少而精

成员素质要好,人数不宜过多。7.承认不断改进软件工程实践必要性把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学。软件工程方法学包含3个要素:方法、工具和过程方法—完成软件开发的各项任务的技术方法,回答“怎样做”的问题;工具—为运用方法而提供的自动的或半自动的软件工程支撑环境;过程—为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。1·6软件工程方法学传统方法学面向对象的方法学1·6软件工程方法学仍然是使用十分广泛的软件工程方法学。采用结构化技术来完成软件开发的各项任务,并使用适当的软件工具或软件工程环境来支持结构化技术的运用。从上而下,顺序地完成软件开发的各阶段任务。传统方法学(生命周期方法学)出发点和基本原则是尽量模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类认识实践解决问题的方法与过程,从而使描述问题的问题空间与实现解法的解空间在结构上尽可能一致。面向对象的方法学把对象作为融合了数据及在数据上的操作行为的统一软件构件;把所有对象都划分成类;按照父类与子类的关系,把若干个相关类组成一个层次结构的系统;对象彼此间仅能通过发送消息互相联系。面向对象的方法学1·7软件开发过程模型【定义】: 软件开发过程模型是软件开发全部过程、活动和任务的结构框架。它能直观表达软件开发全过程,明确规定要完成的主要活动、任务和开发策略。

亦称为: 软件开发模型 软件生存期模型分类:(1)瀑布模型(2)原型模型(3)OO模型可行性研究与计划需求分析设计编码运行维护测试定义阶段开发阶段维护阶段1·7·1瀑布模型(线形顺序模型)1.顺序性和依赖性1)前结束,后开始;2)前输出,为后输入。2.推迟实现的观点 前阶段的工作必须做扎实,方可以开展后续工作。3.质量保证的观点 1)必须完成规定文档; 2)必须对完成的文档进行评审,以便尽早发现问题。1·7·1瀑布模型——特点先完成一个系统子集的开发,再按同样的开发步骤增加功能(系统子集),如此递增下去直至满足全部系统需求。 系统的总体设计在初始子集设计阶段就应作出设想。1·7·2增量模型(递增模型、增殖模型)分析设计编码测试分析设计编码测试分析设计编码测试分析设计编码测试增量1增量2增量3增量4交付的增量1交付的增量2交付的增量3交付的增量4日历时间1·7·2增量模型一般用于最终系统的早期用户评价,开发工期短,质量有保证。1·7·3原型模型(快速成型模型)听取用户意见建造/修改原型用户测试运行原型【适用领域】:事先不能完整定义需求的领域。风险分析工程实施制定计划客户评估ProductMaintenanceProjects产生维护计划ProductEnhancementProjects产生增加计划NewProductDevelopmentProjects新产生发展计划ConceptDevelopmentProjects

温馨提示

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

评论

0/150

提交评论