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

下载本文档

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

文档简介

第一章软件工程学概述主讲人:赵方Contents2.软件危机

3.软件工程

4.软件生命周期

5.软件生命周期模型

1.计算机软件

6.技术审查和管理复审

7.软件工程的作用计算机软件定义软件就是程序吗?严格地讲,计算机软件是指计算机程序和与之相关的数据和文档资料的总和。分类系统软件应用软件特点软件是逻辑产品,而不是有形的物质。软件产品的生产主要是研制。软件不会磨损。软件大多数需要定制。软件危机什么是软件危机软件危机的表现产生软件危机的原因解决软件危机的途径

什么是软件危机 在计算机软件开发和维护中产生的一系列严重问题叫软件危机。软件危机的表现1、对软件开发成本和进度估计不准。2、用户对“已完成的”的系统不满意。3、软件产品质量往往靠不住。4、软件常常是不可维护的。5、软件通常没有适当的文档。6、软件成本在计算机系统总成本中的比例逐年上升。7、软件生产率提高的速度,远远跟不上计算机硬件发展和计算机应用普及的速度。产生软件危机的原因1、软件不同于硬件,开发过程的进展情况和生产质量较难评价。2、软件的一个显著的特点是规模大。3、对软件开发认识不足。4、软件的生命周期长,维护的工作量大。5、用户需求在开发进程中不断的变化。6、软件工程固有方法的缺陷。7、不合要求的文档。不断的变化的用户需求的代价解决软件危机的途径(1)使用先进的技术和方法以及工具开发软件;(2)提高开发人员对软件开发的认识;(3)运用科学的管理措施和手段对软件开发过程进行控制和管理。软件工程软件工程的典型定义软件工程的基本原理软件工程的方法学软件工程是指导计算机软件开发和维护的工程学科。采用工程的概念、原理、技术和方法来开发软件,把经过时间考验证明是正确的管理技术和当前能够得到的最好技术方法结合起来,这就是软件工程。IEEE定义的软件工程:将系统化、严格约束的、可量化的方法应用于软件开发、运行和维护,即将工程化应用于软件。将工程化应用于软件方法的研究。软件工程定义基本原理(1)用分阶段的生命周期计划严格管理。(2)坚持进行阶段评审。(3)实行严格的产品控制。(4)采用现代程序设计技术。(5)结果应能够清晰的审查。(6)开发小组人员应该少而精。(7)承认不断改进软件工程实践的必要性。方法学定义:软件生命周期全过程中使用的一整套技术方法的集合。方法学三要素:软件开发方法、软件工具、软件过程软件工程主要内容=开发技术+管理手段(本人观点)软件工程方法学(范型paradigm)*软件开发方法软件开发方法是一种使用早已定义好的技术集和符号表示习惯来组织软件生产过程的方法。其方法一般表述成一系列的步骤。软件开发的目标是在规定的投资和时间内,开发出符合用户需求的高质量的软件。比较成熟的软件开发方法:结构化开发方法面向对象开发方法结构化开发方法结构化分析结构化设计结构化程序设计根据分解与抽象的原则,按照系统中数据处理的流程,用数据流图来建立系统的功能模型,从而完成需求分析。根据模块独立性准则、软件结构准则,将数据流图转换为软件的体系结构,用软件结构图来建立系统的逻辑模型,实现系统的概要设计。根据结构程序设计原理,将每个模块的功能用相应的标准控制结构表示出来,从而实现详细设计。结构化开发方法是一种面向数据流的开发方法。简单实用,应用较广,技术成熟。总的指导思想是自顶向下、逐步求精。基本原则是功能的分解与抽象。软件工程中最早出现的开发方法,特别适合于数据处理领域的问题。对于规模大的项目及特别复杂的项目不太适应,难于解决软件重用问题,难于适应需求变化的问题,难于彻底解决维护问题。详细介绍见2-8章。面向对象开发方法面向对象分析面向对象设计面向对象实现面向对象开发方法基本出发点是尽可能按照人类认识世界的方法和思维方式来分析和解决问题。以对象作为最基本的元素,它也是分析问题、解决问题的核心,符合人类的认识规律。为了统一各种面向对象方法的术语、概念和模型,1997年推出了统一建模语言,即UML(UnifiedModelingLanguage)。它是面向对象的标准建模语言,可通过统一的语义和符号表示,使各种方法的建模过程和表示统一起来,将成为面向对象建模的工业标准。详细介绍见第9-12章。软件开发工具定义为支持整个软件生命周期的自动化或半自动化的软件环境简称为CASE。开发环境支持整个开发过程。保持项目开发的高度可见性、可控制性和可追踪性。最初以工具箱形式出现,但工具界面不统一,内部无联系,工具由人工切换。大大提高软件生产率,放大人类的智力。重要性工具箱开发环境计算辅助软件工程软件工具一般是指为了支持软件人员开发和维护活动而使用的软件。包括项目估算工具、需求分析工具、设计工具、编码工具、测试工具和维护工具等。CASE(Computer

AdidedSoftwareEngineering)实质是为软件开发提供一组优化集成的且能大量节省人力的软件开发工具。目的是实现软件生存周期各环节的自动化并使之成为一个整体。CASE技术是软件工具和软件开发方法的结合。强调了解决整个软件开发过程的效率问题,而不是解决个别阶段的问题。跨越了软件生存周期各个阶段,着眼于软件分析和设计以及实现和维护的自动化,在软件生存周期的两端解决了生产率问题。CASE工具不同于以往的软件工具,主要体现在:支持专用的个人计算环境。使用图形功能对软件系统进行说明并建立文档。将生存周期各阶段的工作连接在一起。收集和连接软件系统中从最初的需求到软件维护各个环节的所有信息。用人工智能技术实现软件开发和维护工作的自动化。软件过程软件过程是为获得高质量软件所需完成的一系列活动(任务框架),它规定了完成各项活动的工作步骤。过程定义了运用方法的顺序、应该交付的产品和文档资料、为保证软件质量和协调变化所需要采取的管理措施以及标志软件开发各个阶段任务完成的里程碑。目的是为各种人员提供一个公共的框架,以便用相同的语言进行交流。它与具体的开发项目无关。

这个框架由7个重要子过程组成:获取过程供应过程开发过程操作过程维护过程管理过程支持过程获取过程为需方按合同获取一个系统、软件产品或服务的活动。供应过程为供方向需方提供合同中的系统、软件产品或服务所需的活动。开发过程为开发者和机构为了定义和开发软件或服务所需的活动。此过程包括需求分析、设计、编码、集成、测试、软件安装和验收等活动。操作过程为操作者和机构为了在规定的运行环境中为其用户运行一个计算机系统所需要的活动。维护过程为维护者和机构为了管理软件的修改,使它处于良好运行状态所需要的活动。管理过程为软件工程过程中各项管理活动,包括项目开始和范围定义;项目管理计划;实施和控制,评审和评价;项目完成。支持过程对项目的生存周期过程给予支持。它有助于项目的成功并能提高项目的质量。软件生命周期问题定义问题是什么可行性研究问题是否可解需求分析系统必须做什么总体设计系统应实现的功能详细设计怎样实现功能编码正确的程序测试满足要求的软件维护长期技术支持软件过程(生命周期)模型软件生命周期模型的基本概念瀑布模型增量模型螺旋模型微软过程Rational公司的RUP极限编程(XP)基本概念模型是忽略不必要的细节,为了理解事物而对事物作出的一种抽象。软件生命周期模型是描述软件开发过程中各种活动如何执行的模型。意义:一个强有力的软件生命周期模型对软件开发提供了强有力的支持,为软件开发过程中所有活动提供了统一的政策保证,为参与软件开发的所有成员提供帮助和指导。软件生命周期模型是模型化技术的基础,也是建立软件开发环境的核心。软件生命周期模型确立了软件开发和演绎中各阶段的次序限制以及各阶段活动的准则,便于各种活动的协调以及各种人员的有效通信,有利于活动重用和活动管理。软件生命周期模型能表示各种活动的实际工作方式,各种活动间的同步和制约关系,以及活动的动态特性。适应不同的软件项目,具有较强的灵活性,以及支持软件开发环境的建立。目前有代表性的软件生命周期模型,如瀑布模型、增量模型、螺施模型、喷泉模型、变换模型和基于知识的模型等。瀑布模型瀑布模型是将软件生命周期各活动规定为依线性顺序联接的若干阶段的模型。包括可行性分析、项目开发计划、需求分析、概要设计、详细设计、编码、测试和维护。规定了由前至后、相互衔接的固定次序,如同瀑布流水,逐级下落。瀑布模型为软件开发提供了一种有效的管理模型。根据这一模式制定开发计划,进行成本预算,组织开发力量,以项目的阶段评审和文档控制为手段有效地对整个开发过程进行指导。因此它是以文档作为驱动、适合于需求很明确的软件项目开发的模型。瀑布模型的表示瀑布模型的特点: (1)阶段间具有顺序性和依赖性。 (2)推迟实现。 (3)质量保证的观点。增量模型瀑布模型是一种整体开发模型。在开发过程中,用户看不到软件是什么样子,只有开发完成后,整个软件才全部展现现在用户面前。这时如果用户发现有不满意的地方,为时已晚。

增量模型是一种非整体开发的模型。软件在该模型中是“逐渐”开发出来的,开发出一部分,向用户展示一部分,可让用户及早看到部分软件,及早发现问题。或者先开发一个“原型”软件,完成部分主要功能,展示给用户并征求意见,然后逐步完善,最终获得满意的软件产品。该模型具有较大的灵活性,适合于软件需求不明确、设计方案有一定风险的软件项目。增量模型螺旋模型螺旋模型将瀑布模型与增量模型结合起来,加入了两种模型均忽略了的风险分析,弥补了这两种模型的不足。螺旋模型是一种风险驱动的模型。在软件开发中,有各种各样的风险。对于不同的软件项目,其开发风险有大有小。在制定项目开发计划时,分析员要明确项目的需求是什么,需要多少资源,如何安排开发进度等一系列问题。但是,要给出准确无误的回答是不容易的。分析员通常可凭借经验的估计而给出初步的设想,这难免会带来一定的风险。同样,在设计阶段,给出的设计方案是否能实现用户的功能,也会具有一定风险。实践表明,项目越复杂,设计方案、资源、成本和进度等因素的不确定性越大,项目开发的风险也越大。因此,应及时对风险进行识别、分析和采取对策,从而消除或关系少风险的危害。螺旋模型将开发过程分为几个螺旋周期,每个螺旋周期大致和瀑布模型相符合。每个螺旋周期可分为4个工作步骤。第一,制定计划,即确定目标,选定实施方案,明确开发限制条件。第二,风险分析,即分析所选方案,识别风险,通过原型消除风险。第三,开发实施,即实施软件开发。第四,用户评估,即评价开发工作,提出修改意见,建立下一个周期的计划。螺旋模型适合于大型软件开发,它吸收了软件工程“演化”的概念,使开发人员和用户对每个螺旋周期出现的风险有所了解,从而作出相应的反应。但是,使用该模型需要有丰富的风险评估经验,这使其应用受到限制。螺旋模型的表示微软过程准则:项目计划应该兼顾未来的不确定因素。用有效的风险管理来减少不确定因素的影响。经常生成并快速发布测试软件的过渡版本,从而提高产品的稳定性和可预测性。采用快速循环、递进的开发过程。用创造性的工作来平衡产品特性和产品成本。项目进度表应该具有较高稳定性和权威性。使用小型项目组并发完成开发工作。在项目早期把软件配置项基线化,项目后期则冻结产品。使用原型验证概念,对项目进行早期论证。把零缺陷作为追求的目标。里程碑评审会的目的是改进工作,切忌相互指责。微软软件生命周期阶段划分和主要里程碑构思阶段:小组和客户一起定义业务需求和项目总目标计划阶段:小组和客户一起定义小组什么时候做什么稳定阶段:小组消除以发现的缺陷和期望值不理想的问题开发阶段:小组实现所有工作产品(产品代码和文档)前景认可项目计划认可项目预计的工作域完成项目发布中间里程碑:项目工作量大时可分段成可检测的片段,每个片段设置中间里程碑,有利于同步对齐,比主里程碑灵活Rational统一过程Rational统一过程(Rational

UnifiedProcess,RUP)是由Rational软件公司推出的一种完整而且完美的软件过程。6条最有效的软件开发经验:迭代式开发管理需求使用基于构件的体系结构可视化建模验证软件质量控制软件变更RUP软件开发生命周期是一个二维的生命周期模型。RUP软件开发生命周期RUP软件开发生命周期敏捷过程与极限编程敏捷过程:个体和交互胜过过程和工具可以工作的软件胜过面面俱到的文档客户合作胜过合同谈判响应变化胜过遵循计划极限编程:敏捷过程中最富盛名的一个,广泛用于需求模糊且经常改变的项目。有效的开发实践:客户作为开发团队的成员、使用用户素材、短交付周期、验收测试、结对编程、测试驱动开发、集体所有、持续集成、可持续的开发速度、开放的工作空间、及时调整计划、简单的设计、重构、使用隐喻。敏捷过程与极限编程技术审查和管理复审进行技术审查的必要性错误的放大效应技术审查的标准和方法标准:后一阶段的工作方法:准备简要介绍情况阅读被审查文档 复查返工开审查会软件工程的作用1、从历史上讲就是克服软件危机的表现。2、从现在的观点看就是告诉人们如何开发软件和管理软件生产过程。具体说它体现在与软件开发人员与管理人员有关的人员和过程上。3、对参与软件工程过程的不同人员有不同的作用。(1)高层管理人员。(2)中层项目经理和软件工程师。(3)软件蓝领工人。(4)软件营销人员。(5)软件实施和维护人员。(6)软件售前人员。

以上6种人员中,软件工程这门课,是前3种人员的必修课。对后3种人员,若要在工作中寻求更大的发展空间,提升自己的知识结构和工作层次也十分需要掌握软件工程的基本知识。高层管理人员应具备的条件:软件专业的宏观知识、软件工程管理知识。加上商业与资本运作知识。他们要用软件工程的理论和方法来管理整个公司的软件业务。他们应具备的条件:系统分析知识、系统设计知识,加上项目管理知识。他们要用软件工程的理论和方法来管理项目组的软件开发。他们的个人奋斗目标是软件管理专家、分析设计专家、开发技术专家。这两部分人员,他们是软件工程的拥有者和实践者。软件蓝领工人应具备的条件:掌握阅读文

温馨提示

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

评论

0/150

提交评论