text: 9.软件工程学软件生存周期过程与管理
  软件生命周期管理是指在整个软件开发过程中对软件进行计划、监控、控制和评估，以确保软件开发过程的有效性和质量。软件生命周期管理的目标是确保软件开发过程的有效性和质量。软件生命周期管理包括以下几个方面：1、计划和监控：在软件开发过程中，开发团队需要制定计划，并监控计划执行情况，以确保软件开发进度和质量符合要求。2、风险管理：开发团队需要对软件开发过程中的风险进行管理，以确保软件开发过程不会受到不可控因素的干扰。3、质量管理：开发团队需要对软件质量进行管理，确保软件能够满足用户需求，并符合质量标准。4、变更管理：在软件开发过程中，开发团队需要对软件变更进行管理，以确保软件变更能够被有效地跟踪和控制。一、软件生存周期过程概述1．过程分类按过程主体把软件生存周期过程分为以下几个过程。（1）基本过程：是指那些与软件生产直接相关的活动集。该过程又可分为获取过程、供应过程、开发过程、运行过程和维护过程。（2）支持过程：是指有关各方按他们的目标所从事的一系列相关支持活动集。该过程又可分为文档过程、配置管理过程、质量保证过程、验证过程、确认过程、联合评审过程、审计过程和问题解决过程。（3）组织过程：是指那些与软件生产组织有关的活动集。该过程又可分为设计过程、基础设施过程、培训过程和改进过程。2．系统语境的过程类系统语境的过程类包含四个过程组，分别是协议过程组、项目过程组、技术过程组和组织上项目使能过程组。（1）协议过程组包含两个过程：获取过程和供应过程。（2）项目过程组包含七个过程：项目规划过程、项目评价过程、决策管理过程、风险管理过程、配置管理过程、信息管理过程和测量过程。（3）技术过程组包含11个过程：利益攸关方需求定义过程、系统需求分析过程、系统体系结构设计过程、实现过程、系统集成过程、系统测试过程、软件安装过程、软件接受支持过程、软件运行过程、软件维护过程和软件销毁过程。（4）组织上使能过程组包含五个过程：生存周期模型管理过程、基础设施管理过程、项目包管理过程、人力资源管理过程和质量管理过程。3．组织上使能过程的作用。组织上使能的过程一般来说是组织层面上的工作，为项目的执行提供基本保障。该过程包含五个子过程。（1）生存周期模型管理过程：其任务为过程建立、过程评估、过程改进。（2）基础设施管理过程：其任务为过程实现、基础设施的建立、基础设施的维护。（3）项目包管理过程：项目初始化、项目包评估、项目结束处理。（4）人力资源管理过程：其任务为技能标识、技能开发、技能获取和供给、知识管理。（5）质量管理过程：其任务为质量管理、质量管理纠正措施。二、过程描述软件验证过程包含两个活动：过程实现和验证。其中验证活动有五个任务：需求验证、设计验证、代码验证、集成验证和文档验证。一个过程可通过过程意图、期望的结果以及达到过程结果所需要执行的活动和任务来描述。对于一个过程的完整技术上的描述，还应包括：达到过程意图和实现过程结果的方法或规程，以及过程和活动的文档。三、应用说明1．系统和软件的关系在《ISO／IEC系统与软件工程-软件生存周期过程12207-2008》标准中，把软件认为是整个系统的一个组成部分，执行系统中所确定的功能主要包括三大功能：控制功能、耦合功能以及软件本身提供的功能。由于软件通常存在于一个系统的上下文中，因此软件产品或服务一般可被认为是系统的一个项或称为系统元素。2．剪裁过程及应用剪裁过程是使剪裁这一标准过程满足以下特定情况或因素。（1）围绕一个组织，其中该组织在一个协议中使用了这一标准。（2）影响一个项目，其中要求该项目满足一个引用该标准的协议。（3）反映一个组织的需要，其中该组织要供给产品或服务。四、软件生存周期模型1．瀑布模型瀑布模型是将软件生存周期各个活动规定为按固定顺序连接的若干阶段的模型。这一模型规定了各开发阶段的活动：系统需求、软件需求、需求分析、设计、编码、测试和运行，并且自上而下具有相互衔接的固定顺序；还规定了每一阶段的输入，即工作对象以及本阶段的工作成果，作为输出传送到下一阶段。瀑布模型的提出，对软件工程的主要贡献为如下。（1）在决定系统怎样做之前存在一个需求阶段，它鼓励对系统做什么进行规约。（2）在系统构造之前存在一个需求阶段，它鼓励规划系统结构。（3）在每一阶段结束时进行评审，从而允许获取方和用户的参与。（4）前一步可以作为下一步被认可的、文档化的基线，并允许基线和配置早期接受控制。瀑布模型的问题主要是：（1）要求客户能完整、正确和清晰地表达他们的需求；并要求开发人员一开始就要理解这一应用。（2）由于需求的不稳定性，使设计、编码和测试阶段都可能发生延期；并且当项目接近结束时，出现了大量的集成和测试工作。（3）在开始的阶段中，很难评估真正的进度状态；并且直到项目结束之前都不能演示系统的能力。（4）在一个项目的早期开发阶段，过分地强调了基线和里程碑处的文档；并可能需要花费更多的时间用于建立一些用处不大的文档。2．增量模型增量模型是一种非整体开发的模型。软件在该模型中逐渐开发出来，开发出一部分，向用户展示一部分，可让用户及早看到部分软件，及早发现问题。该模型具有较大的灵活性，适合干软件需求不明确、设计方案有一定风险的软件项目。3．演化模型该模型主要针对事先不能完整定义需求的软件开发的。在用户提出待开发系统的核心需求的基础上，软件开发人员按照这一要求，首先开发一个核心系统并投入运行，以便用户能够有效地提出反馈，即精化系统、增强系统能力的需求；接着，软件开发人员根据用户反馈，实施开发的迭代过程；每一迭代过程均由需求、设计、编码、测试、集成等阶段组成，为整个系统增加一个可定义的、可管理的子集；如果在一次迭代中，有的需求不能满足用户的要求，可在下一次迭代中予以修正。主要特征：该模型显式地把需求获取扩展到需求阶段，即为了第二个构造增量，使用了第一个构造增量来精化需求。演化模型在一定程度上可以减少软件开发活动的盲目性。不足之处：在演化模型的使用中，即使很好地理解了需求或设计，也很容易弱化需求分析阶段的工作。4．螺旋模型螺旋模型将瀑布模型与增量模型结合起来，加入了两种模型均忽略了的风险分析，弥补了这两种模型的不足。因而它是一种风险驱动的模型。螺旋模型将开放过程分为几个螺旋周期，每个螺旋周期大致和瀑布模型相符合。螺旋模型关注解决问题的基本步骤，即标识问题，标识一些可选方案，选择一个最佳方案，遵循动作步骤并实施后续工作。其一个突出特征是，在开发的迭代中实际上只有一个迭代过程真正开发了可交付的软件。螺旋模型与演化模型和增量模型相比，同样适用了瀑布模型作为一个嵌入的过程，但螺旋模型所关注的阶段以及它们的活动是不同的。如果项目的开发风险很大或客户不能确定系统需求，在更广泛的意义上来讲，还包括一个系统或系统类型的要求，这时螺旋模型就是一个好的生存周期模型。5．喷泉模型喷泉模型体现了软件创建所固有的迭代和无间隙的特征。该模型主要用于支持面向对象技术的软件开发。由于对象概念的引入，使分析、设计、实现之间的表达没有明显五、过程规划与管理1．创建一个软件项目生存周期过程的步骤（1）选择软件生存周期模型。（2）细化所选择的生存周期模型。（3）为每一个活动或任务标识合适的实例数目。（4）确定活动的时序关系，并检查信息流。（5）建立过程计划的文档。2．软件评估中应考虑的影响因素不管做什么样的决策，都必须对所采取的措施对生存周期过程所产生的影响进行评审，以便保证项目获得好的结果。在这一评估中，应考虑以下几方面的影响。（1）所要求的“返工”。（2）资源需求。（3）实施时间。（4）对项目和用户的益处。（5）员工情绪。知识点总结1、软件生存周期是软件产品或系统的一系列相关活动的全周期。从形成概念开始，历经【开发】、【交付使用】、在使用中不断【修订】和【演化】，直到最后被淘汰，让位于新的软件产品。P1992、系统需求规格说明应描述：【系统的功能和能力】；【业务需求，组织需求和用户需求】；【安全保密需求，接口需求，运行和维护需求】；【设计约束以及合格性需求】。P2003、软件组织过程指那些与软件生产组织有关的活动集，可分为以下过程：【管理过程】、【基础设施过程】、【培训过程】和【改进过程】。P202-2034、ISO／IEC 12207—2008中，把一个系统在其生存周期内可执行的活动分为两大类，即【“系统语境的过程”】和【“针对软件开发的过程”】。P206（1）系统语境的过程类包括4个过程组，分别是【协议过程组】、【项目过程组】、【技术过程组】和【组织上项目使能过程组】。（2）针对软件开发的过程类包括3个过程组：【软件实现过程组】、【软件支持过程组】和【软件复用过程组】。5、软件生存周期模型主要有【瀑布模型】、【增量模型】、【螺旋模型】、【喷泉模型】、【演化模型】。P221-2276、瀑布模型规定了各开发阶段的活动：【系统需求】、【软件需求】、【需求分析】、【设计】、【编码】、【测试和运行】。P2227、增量模型是指需求可以【分组】，形成一个个的增量，并可形成一个结构。P2248、增量模型前提为【需求可结构化】。比较适用于【“技术驱动”的软件产品开发】，常被工业界所采用。P2249、演化模型主要是针对事先【不能完整定义需求的软件开发】的。P22510、演化模型的主要特征是显式地把【需求获取】扩展到需求阶段。P22511、螺旋模型是在【瀑布模型与演化模型的基础上】，加入两者所忽略的【风险分析】所建立的一种软件开发模型。P22612、和其他模型相比，螺旋模型的优越性较为明显，适用于【大型、质量要求高的软件开发】。P22713、对于一个项目而言,过程管理计划是项目管理计划的主体，一般还可能存在一些对支持生存周期过程具有重要作用的其他计划，包括【软件工程管理计划】、【软件配置管理计划】、【软件质量保证计划】、【软件验证和确认计划】和【软件度量计划】。P231.参考教材：《软件工程》，机械工业出版社，王立福主编，2011年版。