您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > 第一章软件工程概述2
《软件工程》德州学院1.0课程介绍1.1软件的概述1.2软件危机1.3软件工程概述1.4软件生命周期1.5软件过程模型1.6软件工程师职业道德规范与要求第1章软件工程概述1.4软件生命周期软件生命周期是指一个计算机软件从功能确定、设计到开发成功投入使用,并在使用中不断地修改、增补和完善,直到停止该软件的使用全过程,包括6个阶段:制定计划需求分析软件设计程序编码软件测试运行维护1.4软件生命周期制定计划制定计划阶段的主要任务:(1)确定要开发软件系统的总目标。(2)给出功能、性能、可靠性以及接口等方面的要求。(3)完成该软件任务的可行性研究。(4)估计可利用的资源、成本、效益和开发进度。(5)制定出完成开发任务的实施计划,连同可行性研究报告,提高管理部门审查。1.4软件生命周期需求分析和定义需求分析和定义阶段的主要任务:(1)去用户处做需求调研,让用户提出对软件系统的所有需求。(2)对用户提出的需求进行分析、综合,并给出详细的定义。(3)编写软件需求说明书及初步的系统用户手册,提交管理机构评审。1.4软件生命周期软件设计软件设计阶段主要任务:(1)总体设计,也称概要设计把各项软件需求转化为软件系统的总体结构和数据结构。(2)详细设计,也称过程设计对每个模块给出详细的数据结构和算法。(3)编写设计说明书,提交评审。1.4软件生命周期编写程序该阶段是软件编码阶段,主要包括:(1)把软件设计转换成计算机可以接受的程序代码,即写成以某一种特定的程序设计语言要表示的“源程序清单”。(2)要求写出的程序应该是结构良好、清晰易懂的,且与设计相一致。1.4软件生命周期软件测试主要工作有:(1)单元测试:查找各模块在功能和结构上存在的问题加以纠正。(2)集成测试:将已测试通过的模块按一定顺序组装起来进行测试。(3)有效性测试:按规定的各项需求,逐项进行测试,判断已开发的软件是否合格,能否交付使用。1.4软件生命周期运行维护软件运行维护时期的主要任务是根据软件运行中的问题,对其进行各种修改,使得系统能持久满足用户的需要。4类维护活动:(1)改正性维护:诊断和改正在使用过程中发现的软件错误。(2)适应性维护:修改软件使之能适应环境的变化。(3)完善性维护:根据用户的新要求扩展功能和改进性能。(4)预防性维护:修改软件为将来维护活动预先准备。1.0课程介绍1.1软件的概述1.2软件危机1.3软件工程概述1.4软件生命周期1.5软件过程模型1.6软件工程师职业道德规范与要求第1章软件工程概述1.5软件过程模型软件过程模型是软件开发全部过程、活动和任务的结构框架。瀑布模型原型模型增量模型螺旋模型喷泉模型统一过程模型敏捷过程模型微软过程模型基于组件的开发模型瀑布模型制定开发计划、进行需求分析和说明、软件设计、程序编码、测试及运行维护,并且要依照固定顺序连接的若干阶段工作。瀑布模型基本思想:将软件生命周期划分为若干明确定义的阶段,每一阶段活动具有严格性,要实施评审工作,以便及早在评审中发现错误、改正错误。优点:提供了一种有效的管理模式。支持开发结构化软件。能有效地控制软件开发的复杂度。瀑布模型缺点:缺乏灵活性。无法解决软件需求不明确或不准确的问题。由于瀑布模型开发具有顺序性,有些问题甚至在开发过程完成后才察觉,因此其代价十分高昂。为了克服瀑布模型的局限性,引入原型模型。原型模型原型模型是快速建立的可以在计算机上运行的程序。基本思想:快速地建立一个能反映用户主要需求的原型系统,让用户在计算机上试用它,提出修改意见,开发人员按照用户的意见快速地修改原型系统,然后再次请用户试用,循环往复,直到用户认为这个原型系统确实能做他们所需要的工作为止。原型模型特点:(1)能及早发现问题,随时纠正错误,减少了技术、应用风险。(2)促使用户主动参与开发话动,促进各类人员的协调,减少误解,适应需求的变化,能有效提高系统质量。适应范围:(1)有快速原型开发工具,或已有类似的产品原型。(2)简单而熟悉的行业或领域。(3)进行产品移植或升级。增量模型这种模型融合了瀑布模型的基本成分和原型实现的迭代特征。它从一组给定的需求开始,通过构造一系列可执行的中间版本来实施开发活动。第一个中间版本纳入一部分需求,下一个中间版本纳入更多的需求,以此类推,直到系统完成。每个中间版本都要执行必要的过程、活动和任务。增量模型特点:增量模型本质上是迭代的。增量模型具有较大的灵活性,适合于软件需求不明确,设计方案有一定风险的软件项目。增量的中间版划分依赖于系统功能的构成和软件开发人员的经验。螺旋模型螺旋模型螺旋模型是一种风险驱动的模型,它具有原型模型的迭代性和瀑布模型的线性特点,同时增加了风险分析。螺旋模型螺旋模型将软件过程划分为若干个螺旋线,螺旋线的每个回路表示软件过程的一个阶段。第一圈,确定了初步的目标、方案和限制条件以后,对风险进行识别和分析。如果风险分析表明需求有不确定性,那么在右下的工程象限内,所建的原型会帮助开发人员和客户,考虑其它开发模型,并对需求作进一步修正。客户对工程成果做出评价之后,给出修正建议。在此基础上需再次计划,并进行风险分析。螺旋模型在每一圈螺线上,做出风险分析并得到是否继续下去的判断。风险过大,开发者和用户无法承受,项目可能终止。多数情况下沿螺旋的活动会继续下去,自内向外,逐步延伸,最终得到所期望的系统。螺旋模型沿着螺线旋转,每转一圈,表示开发出一个更完善的新的软件版本。它在四个象限上分别进行4个活动:螺旋模型(1)制订计划。制订计划是确定软件目标,选定实施方案,弄清项目开发的限制条件。(2)风险分析。风险分析分析所选方案,考虑如何识别和消除风险。(3)实施工程。实施工程是实施软件开发。(4)客户评估。客户评估是评价开发工作,提出修改建议。螺旋模型优点:强调了可选方案和约束条件,有利于已有软件的重用。强调严格的全过程风险管理。强调各开发阶段的质量。提供机会检讨项目是否有价值继续下去。适用范围:大规模的软件项目。螺旋模型对所开发项目的需求已有了较好的理解或较大的把握,可采用普通的瀑布模型。这在螺旋模型中可认为是单圈螺旋。对所开发项目的需求理解较差,则需要开发原型,甚至需要不止一个原型的帮助,此时就要经历多圈螺旋线。喷泉模型喷泉模型是由B.H.Sollers和J.M.Edwards于1990年提出的一种开发模型,它是典型的面向对象技术的软件过程模型之一。其主要特点:迭代、重复、演进、无间隙、各阶段间无明显界限。统一过程模型6)统一过程模型统一过程模型是在1998年由美国Rational软件公司面向对象领域三位杰出专家Booch、Rumbaugh和Jacobson提出的新一代软件工程方法,也称RUP(RationalUnifiedProcess)。特点:迭代式的增量开发、用例驱动、以软件体系结构为核心。适合:开发复杂、技术难度大、需求多变、高风险的项目。统一过程模型RUP将软件生命周期分解为4个独立的阶段:初始阶段、细化阶段、构造阶段和交付阶段。每个阶段又分为若干次迭代,每次迭代有一个核心工作流,都会经历需求、分析、设计、实现、测试等活动。统一过程模型(1)初始阶段目标是为系统建立业务案例并确定项目的边界。主要工作:①大概的了解需求,确定系统中的多数角色和用例。②划分主要子系统,给出系统的体系结构概貌。③分析项目执行的风险。④考虑时间、经费、技术、项目规模和效益等因素。⑤制定开发计划。统一过程模型(2)细化阶段目标是分析问题领域,建立健全的体系结构基础,编制项目计划,淘汰项目中最高风险的元素。识别出剩余的用例。对当前迭代的每个用例进行细化,分析用例的处理流程、状态细节以及可能发生的状态变化。细化流程时,可以使用状态图和顺序图,还可以使用活动图、类图分析用例对风险的处理。统一过程模型主要工作:①进行需求风险分析考虑项目的目标是否偏离了用户的需求。应尽量列出所有的用例,并要建立领域的概念模型。②进行技术风险分析通过建立原型等方法,考察所选的技术方案是否可行。③进行技能风险分析考虑实施项目的人员素质能否胜任项目的要求。统一过程模型④进行政策风险分析考虑政策性因素对项目的影响。⑤进行高层分析和设计,并做出结构性决策。⑥产生简要体系结构,包括用例列表、领域概念模型和技术平台等。⑦为构造阶段制定计划。统一过程模型(3)构建阶段识别出剩余的用例、每一次迭代开发都是针对用例进行分析、设计、编码、测试和集成的过程,所得到的产品是满足项目需求的一个子集。在构建阶段,所有剩余的构件和应用程序功能被开发并集成为产品,所有的功能被详细测试。构建阶段是一个制造过程,其重点放在管理资源及控制运作上,以优化成本、进度和质量。统一过程模型(4)交付阶段重点是确保软件对最终用户是可用的。交付阶段可以跨越几次迭代,包括为发布做准备的产品测试,基于用户反馈的少量的调整。不足:RUP只是一个开发过程,并没有涵盖软件过程的全部内容。它没有支持多项目的开发结构,这在一定程度上降低了在开发组织内范围实现重用的可能性。敏捷过程模型敏捷开发(AgileDevelopment)是一种以人的需求为核心,以迭代方式循序渐进开发的方法,目标是提高开发效率和响应能力,其软件开发的过程称为“敏捷过程”。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。敏捷过程模型由4个价值观声明组成:(1)个体和交互胜过过程和工具优秀的团队成员是软件开发项目获得成功的最重要因素。致力于构建软件开发团队(包括成员和交互方式等),然后再根据需要为团队配置项目环境(包括过程和工具)。敏捷过程模型(2)可以工作的软件胜过面面俱到的文档软件开发的主要目标是向用户提供可以工作的软件而不是文档,完全没有文档的软件也是一种灾难。开发人员应该把主要精力放在创建可工作的软件上面,仅当迫切需要并且具有重大意义时,才进行文档编制工作,而且所编制的内部文档应该尽量简明扼要、主题突出。敏捷过程模型(3)客户合作胜过合同谈判开发团队与客户密切协作。(4)响应变化胜过遵循计划软件开发过程中总会有变化,软件过程应该有足够的能力及时响应变化。项目的计划必须有足够的灵活性和可塑性,在形势发生变化时能迅速调整,以适应业务和技术等方面发生的变化。微软过程模型微软过程模型把软件生命周期划分为5个阶段,分别为构思、计划、开发、稳定和发布,为每一个生命周期发布一个递进的软件版本,各个生命周期持续、快速地迭代循环。(1)构思阶段(Envisioning)该阶段的主要任务是明确项目的前景、目标和范围。主要工作有创建核心团队、充分和客户沟通、项目筹备、提交项目前景与范围文档,以及编写风险管理文档等。微软过程模型(2)计划阶段(Planning)主要工作是编写功能说明书、完成概要设计和编写工作计划、制定费用预算和制定进度表等。(3)开发阶段(Developing)实现整个解决方案代码和文档的编写,其结果可以提供给用户试用。(4)稳定阶段(Stabilizing)完成所有代码的优化和测试工作,准备产品发布。微软过程模型(5)发布阶段(Deploying)主要完成产品的发布,突击解决发布过程中出现的问题,发布过程稳定以后再将项目移交到运营和支持人员手中。产品移交完成之后,项目组开始进行客户满意度调查,召集项目评审会,评价、总结整个项目过程,并进入该产品现有版本的维护过程,必要时,会进入下一个版本开发过程。微软过程模型微软过程综合了统一过程和敏捷过程的许多优点,是对众多成功项目的开发经验的正确总结。不足之处,对方法、工具和产品等方面的论述不如RUP和敏捷过程全面。基于组件的开发模型基于组件的开发(Component-baseddevelopment,简称为CBD)模型融合了螺旋模型的许多特征,它利用预先包装好的软件组件来构造软件应用。组件是程序中某些可标识的代码段。组件可以具有某个功能,也可以具有一组相关的功能。基于组件的开发模型在基于组件的开发模型里,系统被划分为多个组件,组件又进一步被划分为若干个模
本文标题:第一章软件工程概述2
链接地址:https://www.777doc.com/doc-6401801 .html