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

下载本文档

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

文档简介

软件工程概论(第6版),清华大学出版社,第一章软件工程概述,教授教师:荣根,课程的性质和课题,软件工程是计算机科学与技术专业的核心课程。通过本课程的学习,学生可以掌握系统的软件开发理论、技术和方法,学习低成本、可靠性和高效操作的软件开发,为以后的软件开发和维护打下坚实的基础。软件工程概述、软件生命周期、软件设计方法等主要课程内容。主要内容,1.1软件危机1.2软件工程1.3软件生命周期1.4软件流程,1.1.1软件危机介绍,1.1软件危机介绍,1.1.1软件危机介绍,计算机软件开发和维护过程中出现的一系列严重问题,软件危机的典型征兆,1.1.1软件危机的一般征兆,1.1 1.1.2软件危机的原因,软件开发和维护方法不正确,1.1.1.2软件危机的原因,1.1软件危机,1.1.2软件危机的原因,软件开发的不同阶段需要修改的费用,1.1.3软件危机消除方法,1.1.3软件危机消除方法.软件工程、传统工程、新兴工程、气象工程、生物工程、软件工程是研究创建和维护高质量软件的工程方法的学科。2020/5/30,1,软件、软件、软件、软件、软件是计算机系统硬件相互依赖的另一部分。这包括程序、数据和相关文档的完整集合。1.1软件的概念和特性,2020/5/30,2,软件的特性,软件是逻辑实体,不是特定的物理实体。软件的生产与硬件不同。软件运行和使用过程中的机械磨损(如硬件)、老化问题、磨合调整、磨损不良、修改点、实际曲线、理想曲线、2020/5/30、软件成本相当高,硬,软件成本比率的变化,年,成本%,软件,硬件,2020/5/30,3,软件分类,1,按软件功能划分,1,2,3,系统软件,应用软件,1.2软件工程的概念和类别,2020/5/30,程序,2,软件的演化(即从现有软件开发到现代软件开发),软件,软件产品,现有软件开发,现代软件开发,2020/5/30,需求分析,问题定义,性行研究,计划期间,摘要设计,详细设计,编码,测试,开发期间,软件工程是通过使用工程概念、原理、技术和方法开发和维护软件,结合通过时间测试证明的正确管理技术和目前获得的最佳技术方法,经济地开发和有效地维护高质量软件。1968年第一次NATO会议上提出了软件工程的初始定义。“软件工程是为了确保能够在经济、可靠、真实的系统上有效运行的软件,建立和使用完整的工程原理。”1993年,IEEE做出了更全面、更具体的定义。“软件工程将系统、规格、可测量的方法应用于软件开发、运行和维护过程,即应用于软件;研究中提到的方法。1.2软件工程,1.2.1软件工程简介,软件的本质特征,1.2.1软件工程简介,1.2软件工程,1.2.2软件工程的基本原理,1.2软件工程,1.2.3软件工程方法,1.2.3软件工程方法,1.2,1.2软件工程,1.2.3软件工程方法,现有方法的特点:现有方法将软件生命周期的整个过程分为多个阶段,按顺序完成每个阶段的工作。每个步骤的开始和结束都有严格的标准,对于相邻的两个步骤,上一步骤的结束标准是下一步骤的开始标准。1.2软件工程,1.2.3软件工程方法需要正式进行严格的技术审查和管理审查,直到每个阶段结束。审查的主要标准之一是在每个阶段提交“最新”文档资料(即与正在开发的软件完全匹配),以确保在软件开发项目结束时使用完整准确的软件配置交付。采用1.2软件工程、1.2.3软件工程方法和生命周期方法,可以显着提高软件开发成功率,显着提高软件开发生产率。现在,现有的方法仍然是人们在开发软件时非常广泛使用的软件工程方法。1.2软件工程,1.2.3软件工程方法,面向对象方法:概念:与传统方法不同,面向对象方法将数据和行为视为同等重要,是以数据为主线将数据和数据操作紧密结合在一起的方法。1.2软件工程,1.2.3软件工程方法,四个关键问题:1.2软件工程,1.2.3软件工程方法,面向对象方法的基本原则:尽量模拟人类习惯的思维方式,尽量模拟软件开发方法和过程,通过人类了解世界并接近解决问题的方法和过程来描述问题的问题空间(也称为问题域),以及实现解决方案的解决方案空间(也称为问题域),1.2软件工程,1.2.3软件工程方法,面向对象方法:优点:降低软件产品的复杂性,提高软件理解,简化软件开发和维护任务。面向对象方法的独特继承和多态进一步提高了面向对象软件的可重用性。1.2软件工程,1.2.3软件工程方法学,1.3软件生命周期,主要内容,1.1软件危机1.2软件工程1.3软件生命周期1.4软件流程,1.3软件生命周期,1.3软件生命周期,软件生命周期是软件定义、软件开发和操作维护(也称为软件维护)三个周期,软件定义期间的任务是确定软件开发工程必须完成的总体目标。确定项目的可行性。导出实现工程目标必须使用的策略和系统必须执行的功能。估算完成此项目所需的资源和成本,并制定项目时间表。此期间的工作也称为系统分析,由系统分析员完成。1.3软件生命周期、1.3软件生命周期、软件定义周期一般进一步分为问题定义、可行性研究和需求分析三个阶段。开发期间具体设计和实施上一期间定义的软件,通常包括四个阶段:总体设计、详细设计、编码和单元测试、综合测试。其中前两个阶段称为系统设计,后两个阶段也称为系统实现。维护期间的主要任务是使软件不断满足用户的需要。1.3软件生命周期、1.3软件生命周期、软件生命周期每个阶段的基本任务、1.3软件生命周期、1.3软件生命周期每个阶段的基本任务、实际执行软件开发任务时软件的大小、类型、开发环境以及用于开发的技术方法等,将影响阶段的划分。1.4软件流程,主要内容,1.1软件危机1.2软件工程1.3软件生命周期1.4软件流程,1.4软件流程,1.4软件流程,软件流程是获得高水平软件必须执行的一系列任务的框架,规定了完成每个任务的任务步骤。软件流程描述了谁(who)、何时(when)、什么(what)以及如何(how)做这些工作以开发客户需要的软件。1.4.1瀑布模型、1.4软件流程、1.4.1瀑布模型、瀑布模型一直是唯一被广泛采用的生命周期模型,现在仍然是软件工程中应用最广的流程模型。下图是典型的瀑布模型,图1.2中的传统瀑布模型显示在图1.2中。图1.2根据传统瀑布模型、1.4.1瀑布模型和传统瀑布模型开发软件,有以下几个特征:阶段之间有顺序和依赖性:双重意义:等上一阶段的工作完成后,才能开始下一阶段的工作;前一阶段的输出文档是后一阶段的输入文档,因此前一阶段的输出文档必须正确,后一阶段的工作才能得到正确的结果。1.4软件流程,1.4.1瀑布模型,1.4.1瀑布模型,b)延迟实现的观点瀑布模型在编码前设置系统分析和系统设计的各个阶段,分析和设计阶段的基本工作规定在这两个阶段主要考虑目标系统的逻辑模型,不包括软件的物理实现。1.4软件流程,1.4.1瀑布模型,1.4.1瀑布模型,c)质量保证的观点:软件工程的基本目标是高质量、高产量。为了确保开发的软件的质量,瀑布模型的各个阶段都必须坚持两个重要的做法。每一阶段都要完成规定的文件,没有交出合格的文件,或者没有完成该阶段的任务。在每个阶段结束之前,必须审阅完成的文件,尽快找出问题,纠正错误。1.4软件过程,1.4.1瀑布模型,1.4.1瀑布模型,传统瀑布模型过于理想化,事实上,人在工作中难免出错。实际瀑布模型有“反馈环”,如系统的图1.3所示。1.4软件过程,1.4.1瀑布模型,1.4.1瀑布模型,1,图中实线箭头表示开发过程,虚线箭头表示维护过程。2,如果在实际瀑布模型后的步骤中发现上一步骤中的错误,则沿着图中左侧的反馈线返回到上一步骤,修改上一步骤中的产品,然后返回继续下一步骤中的工作。1.4.1瀑布模型,瀑布模型有很多优点,可以强制开发人员采用规范(如结构化技术)。严格规定了各阶段必须提交的文件。要求每个阶段交付的所有产品都要经过质量保证组的仔细验证。1.4软件过程,1.4.1瀑布模型,1.4.1瀑布模型,1.4.2。快速保护模型,1.4软件进程,1.4.2。快速保护模型,概念:快速保护是可在计算机上运行的快速程序,其可执行的功能通常是可在最终产品中执行的功能的子集。如下图1.4所示:图1.4中的实线箭头表示开发过程虚线箭头表示维护过程,1.4.2。快速原型模型,快速原型模型没有反馈回路,这就是这些流程模型的主要优点。软件产品的开发基本上是按线性顺序进行的。基本上,开发线性序列的主要原因如下:1.4软件进程,1.4.2。快速保护模型,1.4.2。快速保护模型,1.4软件进程,1.4.2。快速保护模型,1.4.3。增量模型,1.4软件进程,1.4.3。增量模型,概念:增量模型也称为增量模型。使用增量模型开发软件时,将软件产品设计、编码、集成和测试为一系列增量组件。每个元件由多个互动模组组成,您可以完成特定功能。使用增量模型时,第一个增量组件经常实现软件的基本要求,提供最重要的功能。增量模型如图1.5所示。图1.5增量模型,1.4.3。增量模型,优点:1.4软件进程,1.4.3。增量模型,1.4软件进程,1.4.3。增量模型,使用增量模型的困难:1.4.3。增量模型,1.4软件进程,1.4.3。增量模型,风险更大的增量模型:1.4.3。增量模型、1.4.4螺旋模型、1.4软件进程、1.4软件进程了解此模型的简单方法是将其视为在每个阶段之前添加了风险分析进程的快速原型模型。螺旋模型如下图所示:1.4.4螺旋模型,图1.7简单螺旋模型,1.4.4螺旋模型,图1.8完整螺旋模型,1.4.4螺旋模型,1.4.5。分数模型,1.4软件过程,概念:“分数”一词反映了面向对象软件开发过程的迭代和无缝特性。迭代是软件开发过程中常见的一种内在属性。使用面向对象方法学软件开发时,应重点关注生命周期的分析阶段。分数模型图显示在下图1.9中。1.4.5。分数模型,图中表示不同阶段的圆,彼此重叠,这清楚地表明两个活动之间存在重叠。图中一个步骤内的向下箭头指示该步骤内的重复(或精炼)。图中,小圆圈表示维护,小圆圈表示采用面向对象的范例后,维护时间缩短。1.4.5。分数模型,1.4软件过程,概念:Rational unifiedprocess (RUP)是Rational software corporation提供的完整、完整的软件过程。RUP总结了经过多年商业化验证的六项最有效的软件开发经验,称为“最佳实践”。1.4.6.Rational集成过程,1.4.6.Rational集成过程,1.4软件过程,a)最佳做法迭代开发可以更改每个迭代过程中的需求,这种开发方法通过一系列细分加深了对问题的理解,从而更容易接受需求更改。管理要求RUP描述了如何提取、配置和记录系统的功能要求和约束条件。1.4.6.Rational集成流程,1.4.6.Rational集成流程,1.4软件流程,a)使用基于最佳实践配置的体系结构UP提供了使用现有或新开发的组件定义体系结构的系统方法,有助于降低软件开发的复杂性和提高软件重用率。视觉建模可视化建模语言UML紧密连接,在开发过程中构建软件系统的可视化模型,有助于提

温馨提示

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

评论

0/150

提交评论