《南邮软件工程Unit02软件过程.ppt》由会员分享,可在线阅读,更多相关《南邮软件工程Unit02软件过程.ppt(51页珍藏版)》请在第壹文秘上搜索。
1、1UNIT 2n软件过程软件过程n教材教材n英文精编版英文精编版 第第7版(第版(第2、3章)章)n本科教学版本科教学版 第第7版(第版(第2、3章)章)n原书原书 第第7版(第版(第2、3章)章)软件过程n一个为建造高质量软件所需要完成的活动、动作和任务的框架n定义了软件工程化中采用的方法n软件工程是由有创造力、有知识的人完成的,他们根据产品构建的需要和市场需求,选取成熟的软件过程通用过程模型n在软件过程中,技术工作的层次包括活动,活动由动作构成,动作由任务组成n沟通n策划n建模n构建n部署过程流n线性n迭代n演化n并行n工作任务n工作产品n质量保证点n里程碑定义框架活动n框架活动如何随着项
2、目性质的变化而变化?n个人负责的小型软件项目(需求简单)个人负责的小型软件项目(需求简单)n沟通:仅仅是与合适的利益相关者的一个电话n动作:电话交流n这个动作所包括的主要工作任务集有:n1. 通过电话与利益相关者取得联系。n2. 讨论需求并做记录。n3. 将笔记整理成一份简单的书面需求。n4. 通过E-mail,请利益相关者审阅并批准。n大型软件项目(需求复杂)大型软件项目(需求复杂)n沟通n动作:启动、导出、精化、协商、规格说明、确认n每个动作都包括的一系列的工作任务集5明确任务集n每一个软件工程动作都由若干个任务集构成n任务集定义了为达到一个软件工程动作的目标所需要完成的工作n工作任务工作
3、任务n相关工作产品相关工作产品n质量保证点质量保证点n项目里程碑项目里程碑n不同的项目需要不同的任务集,软件团队根据问题和项目的特点选择任务集6明确任务集(沟通需求获取)n小型项目:n1. 制定项目的利益相关者列表n2. 邀请所有的利益相关者参加一个非正式会议n3. 征询每一个人对于软件特征和功能的需求n4. 讨论需求,并确定最终的需求列表n5. 划定需求优先级n6. 标出不确定领域7明确任务集(沟通需求获取)n大型、复杂项目:n1. 制定利益相关者列表n2. 和每个利益相关者单独讨论,获取所有的要求n3. 基于任务集2的调查,建立初步的功能和特征列表n4. 安排一系列促进需求获取的会议n5.
4、 组织会议n6. 在每次会议上建立非正式的用户场景n7. 根据利益相关者的反馈,进一步细化用户场景n8. 建立一个修正的需求列表n9. 使用质量功能部署技术,划分需求优先级n10. 将需求打包以便于软件可以增量交付n11. 标注系统的约束和限制n12. 讨论系统验证方法8过程模式n描述软件工程工作中遇到的过程相关的问题、明确问题环境并给出针对该问题的一种或几种可证明的解决方案n提供一个模板,作为一种有效的机制:在软件过程的背景下,统一描述问题解决方案的方法,解决任何与软件过程相关的问题n从高层抽象开始(阶段模式),建立层次化的过程描述从高层抽象开始(阶段模式),建立层次化的过程描述n高层抽象描
5、述进一步细化为一系列步骤模式,描述框架活动高层抽象描述进一步细化为一系列步骤模式,描述框架活动n每一个步骤模式又进一步逐层细化为更详细的任务模式每一个步骤模式又进一步逐层细化为更详细的任务模式n过程模式一旦建立n通过复用模式,来定义各种过程变体:即将模式作为过程模通过复用模式,来定义各种过程变体:即将模式作为过程模型的构建模块,定制特定的过程模型型的构建模块,定制特定的过程模型n通过模式组合,软件团队可以解决问题并定义最符合项目需通过模式组合,软件团队可以解决问题并定义最符合项目需求的开发过程求的开发过程9过程模式的模板n模式名称:望文知意n驱动力:模式使用环境及主要问题,以明确主要难点并可能
6、影响解决方案n类型:步骤模式 / 任务模式 / 阶段模式n启动条件:描述模式应用的前提条件n问题:描述模式将要解决的具体问题n解决办法:描述如何成功实现模式n结束条件:描述模式成功执行之后的结果n相关模式:以层次或其他图的方式列举与该模式直接相关的其他过程模式n已知应用实例:说明该模式可应用的具体实例10过程模式的类型n步骤模式(stage pattern)n定义了与过程的框架活动相关过程的框架活动相关的问题n由于框架活动包括很多动作和工作任务,步骤模式包括与步骤(框架活动)有关的许多任务模式n例如,建立沟通(步骤模式),包括需求获取等任务模式n任务模式(task pattern)n定义了与软
7、件工程动作或工作任务相关、关系软件工程实践软件工程动作或工作任务相关、关系软件工程实践成败成败的问题n例如,需求获取是一个任务模式n阶段模式(phase pattern)n定义在过程中发生的框架活动序列框架活动序列,即使这些活动流本质上是迭代的n例如,螺旋模型和原型开发就是两种阶段模式。11过程模式的示例示例12过程评估与改进n软件过程并不能保证软件按期交付,也不能保证软件满足软件过程并不能保证软件按期交付,也不能保证软件满足客户要求,过程模型必须与切实的软件工程实践相结合客户要求,过程模型必须与切实的软件工程实践相结合n对过程本身也要进行评估,以确保满足了成功软件工程所对过程本身也要进行评估
8、,以确保满足了成功软件工程所必需的基本过程标准要求:必需的基本过程标准要求:n用于过程改进的用于过程改进的CMMI标准评估方法(标准评估方法(Standard CMMI Assessment Method for Process Improvement,SCAMPI)提供了五步的过程评估提供了五步的过程评估模型:启动(模型:启动(initiating)、诊断()、诊断(diagnosing)、建立()、建立(establishing)、)、执行(执行(acting)和学习()和学习(learning)。)。SCAMPI方法采用方法采用SEI的的CMMI作为作为评估的依据评估的依据 SEI00。
9、n用于组织内部过程改进的用于组织内部过程改进的CMM评估(评估(CMM-Based Appraisal for Internal Process Improvement, CBA IPI)采用采用SEI的的CMM作为评估的依据作为评估的依据Dun01,提供了一种诊断方法,用以分析软件开发机构相对成熟度。,提供了一种诊断方法,用以分析软件开发机构相对成熟度。nSPICE (ISO/IEC 15504) 该标准定义了软件过程评估的一系列要求。该该标准定义了软件过程评估的一系列要求。该标准的目的是帮助软件开发组织建立客观的评价体系,以评估定义的软件标准的目的是帮助软件开发组织建立客观的评价体系,以评
10、估定义的软件过程的有效性过程的有效性ISO08。n软件软件ISO 9001:2000这是一个通用标准,任何开发组织如果希望提高所这是一个通用标准,任何开发组织如果希望提高所提供的产品、系统或服务的整体质量,都可以采用这个标准。因此,该标提供的产品、系统或服务的整体质量,都可以采用这个标准。因此,该标准可直接应用于软件组织和公司准可直接应用于软件组织和公司Ant06。13传统的过程模型n传统的过程模型主张有序(结构化)有序(结构化)的软件工程方法n定义了规定的过程元素集合及其可预测的过程工作流n为软件工程工作增加了大量有用的结构化设计,并为软件团队提供了有效的路线图。尽管如此,软件工程工作及其产
11、品仍然停留在“混乱的边缘”引起了以下思考:引起了以下思考:n如果传统过程模型力求实现结构化和有序,那么对于那么对于富于变化的软件世界,这一模型是否合适呢富于变化的软件世界,这一模型是否合适呢?n如果我们抛弃传统过程模型(以及它们带来的秩序),取而代之以一些不够结构化的模型,是否会使软件工不够结构化的模型,是否会使软件工作无法达到协调和一致作无法达到协调和一致?瀑布模型n经典的生命周期n为什么瀑布模型有时候会失败?n实际的项目很少遵守瀑布模型提出的顺序。虽然线性模型可以加入迭代,但是它是用间接的方式实现的,结果是,随着项目的推进,变更可能造成混乱。n客户通常难以清楚地描述所有的需求。而瀑布模型却
12、需要客户明确需求,因此很难适应在许多项目开始阶段必然存在的不确定性。n客户必须要有耐心,因为只有在项目接近尾声的时候,他们才能得到可执行的程序。对于系统中存在的重大缺陷,如果在可执行程序评审之前没有被发现,将可能造成惨重损失。V模型nV模型阐明了验证确认动作如何与早期的工程动作相互关联n是瀑布模型的变体增量过程模型n时机:1)初期软件需求有确,但整个开发过程不宜单纯运用线性模型;2)既定商业期限内,没有足够开发人员n增量模型发布一系列称为增量的可运行版本,随着每个版本的交付,逐步为用户提供更多的功能n综合了线性过程流和并行过程流的特征n第一个增量是核心产品n早期增量是最终产品的片段版本,既提供
13、服务用户的能力,又提供用户的评价平台n规避技术风险演化过程模型n问题n需求经常发生变化,直接导致最终产品难以实现n严格的交付时间使得软件产品不可能圆满完成,但是必须交付功能有限的版本以应对竞争或商业压力n很好地理解了核心产品和系统需求,但是产品或系统扩展的细节问题却没有定义n演化模型中,每个迭代产生软件的一个更完整的版本n原型开发n螺旋模型原型开发n如果你的客户有一个合理的需求,但是对细节没有思路,那么不妨先开发一个原型n理想状况下,原型系统提供了定义软件需求的一种机制n对于要求把一个粗糙的原型系统变为工作产品的压力,建议应该尽量抵制。这样做的结果往往是产品质量受到损害原型机制n原型开发始于沟
14、通n与利益相关者进行会晤,定义软件的整体目标,明确已知的需求,大致勾画出以后再进一步定义的东西n迅速策划一个原型开发迭代并进行建模n利用已有的程序或应用工具,快速产生可执行的程序n集中于最终用户能够看到的方面,比如人机接口布局或者输出显示格式n原型部署,由利益相关者进行评价n根据利益相关者的反馈信息,进一步细化软件的需求n采用迭代技术调整原型n以满足各种利益相关者需求,同时也使开发者逐步清楚用户需求原型问题n软件开发管理往往陷入失效n利益相关者看到了软件的工作版本,却未察觉到整个软件是随意搭成的,也未察觉到为了尽快完成软件,开发者没有考虑整体软件质量和长期的可维护性。当开发者告诉客户整个系统需
15、要重建以提高软件质量的时候,利益相关者会不愿意,并且要求对软件稍加修改使其变为一个可运行的产品n不合理的技术、语言和算法选择n作为一名软件工程师,软件开发人员为了使一个原型快速运行起来,往往在实现过程中采用折衷的手段。他们经常会使用不合适的操作系统或程序设计语言,仅仅因为当时可用和熟悉。他们也经常会采用一种低效的算法,仅为了证明系统的能力。时间长了,软件开发人员可能会适应这些选择,而忽略了这些选择其实并不合适的理由,结果造成并不完美的选择变成了系统的组成部分的情况螺旋模型n一种演进式软件过程模型n结合了原型的迭代性质和瀑布模型的系统性和可控性特点n具有快速开发越来越完善软件版本的潜力n一种风险
16、驱动型的过程模型生成器n对于软件集中的系统,它可以指导多个利益相关者的协同工作n采用循环的方式逐步加深系统定义和实现的深度,同时降低风险n确定一系列里程碑,确保利益相关者都支持可行的和令人满意的系统解决方案螺旋模型n软件被开发为一系列演进版本n早期迭代中,软件可能是一个理论模型或原型n后来迭代中,产生一系列逐渐完整的系统版本n每次演进,都要重新评估风险n每次演进,都要标记里程碑(沿着螺旋路径沿着螺旋路径达到的工作产品和条达到的工作产品和条件的结合体件的结合体)螺旋模型n螺旋模型能运用在应用开发的整个生命周期,从概念开发到维护n螺旋模型的每一圈完成的时候,都将重新计划和修改项目预算n对于固定预算的软件项目,是不合适的n螺旋模型是开发大型系统和软件的理想方法n每次演进中,开发者和客户都能更好地理解和应对风险n原型是降低风险的机制,可以在产品演进的任何阶段使用原型方法n保留了经典生命周期模型中系统逐步细化的方法,但是把它纳入一种迭代框架之中,这种迭代方式与真实世界更加吻合n在项目的所有阶段都考虑技术风险,并能在风险变为问题之前化解风险协同模型n协同过程模型可用于所有类型的软件开发n更适合不同