《自考软件工程知识点总结.pptx》由会员分享,可在线阅读,更多相关《自考软件工程知识点总结.pptx(30页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第1章 绪论1.1软件工程的产生 1.1.1软件的特点“软件”定义为计算机程序及其说明程序的各种文档。“程序”是计算任务的处理对象和处理规则的描述;“文档”是有关计算机程序功能、设计、编制、使用的文字或图形资料。软件是一种特殊的产品,它具有下列一些特性:(1)软件是一种逻辑产品,它与物质产品有很大的区别。第1页/共30页 (2)软件产品的生产主要是研制。(3)软件产品不会用坏,不存在磨损、消耗问题。(4)软件产品的生产主要是脑力劳动,还未完全摆脱手工开发方式,大部分产品是“定做”的。(5)软件费用不断增加,软件成本相当昂贵。第2页/共30页 1.1.2软件生产的发展 自从第一台计算机诞生至今,
2、软件的生产经过了程序设计、程序系统和软件工程三个时代。1.程序设计时代(19461956年)2.程序系统时代(19561968年)3.软件工程时代(1968年至今)第3页/共30页 1.1.3软件危机 1.软件危机的产生 软件开发中遇到的问题因找不到解决的办法,使问题积累起来,形成了尖锐的矛盾,导致了软件危机。2.软件危机的表现 软件危机表现在以下几方面:(1)经费预算经常突破,完成时间一再拖延。(2)开发的软件不能满足用户要求。(3)开发的软件可维护性差。(4)开发的软件可靠性差。第4页/共30页3.软件危机的原因 (1)软件的规模越来越大,结构越来越复杂。(2)软件开发的管理困难。(3)软
3、件开发费用不断增加。(4)软件开发技术落后。(5)生产方式落后。(6)开发工具落后,生产率提高缓慢。第5页/共30页 1.1.4软件工程 在1968年北大西洋公约组织的工作会议上首先提出“软件工程”的概念,提出要用工程化的思想来开发软件。1.软件工程的定义 软件工程是用科学知识和技术原理来定义、开发、维护软件的一门学科。主要思想是在软件生产中用工程化的方法代替传统手工方法。这种工程化的思想贯穿到需求分析、设计、实现,直到维护的整个过程。第6页/共30页 2.软件工程的性质 软件工程是涉及计算机科学、工程科学、管理科学、数学等领域的一门综合性的交叉学科。计算机科学中的研究成果均可用于软件工程,但
4、计算机科学着重于原理和理论,而软件工程着重于如何建造一个软件系统。3.软件工程的目标 付出较低的开发成本;达到要求的软件功能;取得较好的软件性能;开发的软件易于移植;需要较低的维护费用;能按进完成开发任务,及进交付使用;开发的软件可靠性高。第7页/共30页 4.软件工程的内容 软件工程研究的主要内容是指软件开发技术和软件开发管理两个方面。5.软件工程面临的问题 1)软件费用 2)软件可靠性 3)软件可维护性 4)软件生产率 5)软件重用 第8页/共30页1.2 软件工程过程和软件生存周期 1.2.1 软件工程过程 软件工程过程规定了获取、供应、开发、操作和维护软件时,要实施的过程、活动和任务。
5、其目的是为各种人员提供一个公共的框架,以便用相同的语言进行交流。软件工程过程包含如下7个过程。1.获取过程 2.供应过程 3.开发过程 4.操作过程 5.维护过程 6.管理过程 7.支持过程 第9页/共30页 1.2.2软件生存周期 软件生存周期是指一个软件从提出开发要求开始直到该软件报废为止的整个时期。通常,软件生存周期包括可行性分析和项目开发计划、需求分析、概要设计、详细设计、编码、测试、维护等活动,可以将这些活动以适当方式分配到不同阶段去完成。1.可行性分析和项目开发计划 可行性分析和项目开发计划阶段必须要回答的问题是“要解决的问题是什么”。进行问题定义、可行性分析,制定项目开发计划。第
6、10页/共30页 2.需求分析 需求分析阶段的任务不是具体地解决问题,而是准确地确定“软件系统必须做什么?”确定软件系统必须具备哪些功能。3.概要设计 概要设计就是设计软件的结构,该结构由哪些模块组成,这些模块的层次结构是怎样的,这些模块的调用关系是怎样的,每个模块的功能是什么。同时还要设计该项目的应用系统的总体数据结构和数据库结构等。4.详细设计 详细设计阶段就是为每个模块完整的功能进行具体描述,要把功能描述转变为精确的、结构化的过程描述。第11页/共30页 5.编码 编码编码阶段就是把每个模块的控制结构转换成计算机可接受的程序代码,即“源程序清单”。写出的程序应是结构好,清晰易读,并且与设
7、计相一致。6.测试 测试是保证软件质量的重要手段,其主要方式是在设计测试用例的基础上检验软件的各个组成部分。测试分为模块测试、组装测试、确认测试。7.维护 已交付的软件投入正式使用后,便进入软件维护阶段,它可以持续几年甚至几十年,是软件生存周期中时间最长的阶段。可能由于各方面的原因,需要对软件进行修改。第12页/共30页1.3 软件生存周期模型、方法和工具 1.3.1 软件生存周期模型 软件生存周期模型是描述软件开发过程中各种活动如何执行的模型。目前有若干种软件生存周期模型,如瀑布模型、增量模型、螺旋模型、喷泉模型、变换模型和基于知识的模型等。第13页/共30页 1.瀑布模型 瀑布模型是将近软
8、件生存周期各活动规定为依线性顺序联接的若干阶段的模型。它包括可行性分析、项目开发计划、需求分析、概要设计、详细设计、编码、测试和维护。瀑布模型为软件开发提供了一种有效的管理模型。它是以文档作为驱动、适合于需求很明确的软件项目开发的模型。瀑布模型如图 1.1 所示。瀑布模型严格按照生存周期各个阶段的目标、任务、文档和要求来进行开发。第14页/共30页图 1.1 瀑布模型第15页/共30页 2.增量模型 瀑布模型是一种整体开发模型。在开发过程中,用户看不到软件是什么样子,只有开发完成后,整个软件才全部展现在用户面前。增量模型是一种非整体开发的模型。软件在该模型中是“逐渐”开发出来的,开发出一部分,
9、向用户展示一部分,可让用户及早看到部分软件,及早发现问题。或者先开发一个“原型”软件,完成部分主要功能,展示给用户并征求意见,然后逐步完善,最终获得满意的软件产品。该模型具有较大的灵活性,适合于软件需求不明确、设计方案有一定风险的软件项目。第16页/共30页 3.螺旋模型 螺旋模型将瀑布模型与增量模型结合起来,加入了两种模型均忽略了的风险分析,弥补了这两种模型的不足。螺旋模型是一种风险驱动的模型。实践表明,项目越复杂,设计方案、资源、成本和进芳等因素的不确定性越大,项目开发的风险也越大。因此,应及进对风险进行识别、分析和采取对策,从而消除或关系少风险的危害。第17页/共30页 螺旋模型将开发过
10、程分为几个螺旋周期,每个螺旋周期大致和瀑布模型相符合。每个螺旋周期可分为 4 个工作步骤。第一,制定计划;第二,风险分析;第三,开发实施;第四,用户评估。螺旋模型适合于大型软件的开发,它吸收了软件工程“演化”的概念,使得开发人员和用户对每个螺旋周期出现的风险有所了解,从而作出相应的反应。但是,使用该模型需要有相当丰富的风险评估经验和专门知识,这使该模型的应用受到一定限制。螺旋模型的表示如图 1.2 所示。第18页/共30页图 1.2 螺旋模型第19页/共30页 4.喷泉模型 喷泉模型是一种以用户需求为动力,以对象作为驱动的模型。它适合于面向对象的开发方法。它克服了瀑布模型不支持软件重用和多项开
11、发活动集成的局限性。喷泉模型使开发过程具有迭代性和无间隙性。系统某些部分常常重复工作多次,相关功能在每次迭代中随之加入演化的系统。无间隙是指在分析、设计和实现等开发活动之间不存在明显的边界。喷泉模型的图形如图 1.3 所示。它以面向对象的软件开发方法学为基础,以用户需求作为喷泉模型的源泉。第20页/共30页 图 1.3 喷泉模型第21页/共30页 5.基于知识的模型 基于知识的模型又称智能模型,它把瀑布模型和专家系统结合在一起。该模型在开发的各个阶段上都利用了相应的专家系统来帮助软件人员完成开发工作,使维护在系统需求说明一级上进行。为此,建立了各阶段所需要的知识库,将模型、相应领域知识和软件工
12、程知识分别存入数据库,以软件工程知识为基础的生成规则构成的专家系统与含有应用领域知识规则的其他专家系统相结合,构成了该应用领域的开发系统。第22页/共30页图 1.4 基于知识的模型 第23页/共30页 6.变换模型 变换模型是一种适合于形式化开发方法的模型。从软件需求形式化说明开始,经过一系列变换,最终得到系统的目标程序。第24页/共30页1.3.2 软件开发方法 软件开发方法是一种使用早已定义好的技术集及符号表示习惯来组织软件生产过程的方法。其方法一般表述成一系列的步骤,每一步骤都与相应的技术和符号相关。软件开发的目标是在规定的投资和时间内,开发出符合用户需求的高质量的软件。为了达到此目的
13、,需要有成功的开发方法。软件开发方法是克服软件危机的重要方面之一。第25页/共30页 1.结构化方法 结构化方法由结构化分析、结构化设计和结构化程序设计构成。它是一种面向数据流的开发方法。结构化方法总的指导思想是自顶向下、逐步求精。它的基本原则是功能的分析与抽象。2.Jackson方法 这是一种面向数据结构的开发方法。该方法首先描述问题的输入、输出数据结构,分析其对应性,然后推出相应的程序结构,从而给出问题的软件过程描述。JSD方法是一个完整的系统开发方法。第26页/共30页 3.维也纳开发方法(VDM)维也纳开发方法(即VDM),是一种形式化的开发方法,软件的需求用严格的形式语言描述,把描述
14、模型逐步变换成目标系统。VDM是一个基于模型的方法,它的主要思想是:将软件系统当作模型来给予描述,具体说就是把软件的输入/输出看作模型对象,而这些对象在计算机的状态可看作为该模型在对象上的操作。第27页/共30页 4.面向对象的开发方法 面向对象开发方法的基本出发点是尽可能按照人类认识世界的方法和思维方式来分析和解决问题。以对象作为最基本的元素,它也是分析问题、解决问题的核心。面向对象开发方法包括面向对象分析、面向对象设计和面向对象实现。面向对象开发方法有Booch方法、Coad方法和OMT方法等。统一建模语言UML(Unified Modeling Language)。它是面向对象的标准建模语言,可通过统一的语义和符号表示,使各种方法的建模过程和表示统一起来。第28页/共30页1.3.3软件开发工具 1.软件工具的重要性 软件工具一般是指为了支持软件人员开发和维护活动而使用的软件。2.工具箱 最初的软件工具是以工具箱的形式出现的,一种工具支持一种开发活动,然后将各种工具简单组合起来就构成工具箱。3.软件开发环境 软件开发环境,其目的是使软件工具支持整个生存周期。4.计算辅助软件工程 计算机辅助软件工程可以简单地定义为软件开发的自动化,通常简称为CASE(Computer Adided Software Engineering)。第29页/共30页感谢您的观看!第30页/共30页