精华内容
下载资源
问答
  • 软件过程

    千次阅读 2018-06-18 20:51:08
    软件过程也称为软件生存周期过程,是指软件生存周期中的一系列相关过程。 为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。 2、软件过程的七大元素 活动:开发、维护、管理等;...

    1、定义
    软件过程也称为软件生存周期过程,是指软件生存周期中的一系列相关过程。 为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。

    2、软件过程的七大元素
    活动:开发、维护、管理等;
    任务:活动的细分,确定、安排任务等;
    工件:软件过程的工作产品,分输入与输出工件;
    角色:定义了软件过程中的个人或小组的行为与职责;
    资源:最佳实践、工具、技术、机器、场地等;
    目标:每个过程有明确的目标;
    度量指标:目标的具体度量与分析,如进度、成本、质量、返工率。

    3、软件生存周期模型
    又称软件开发模型,是软件生命周期的一个框架,规定了软件开发、运作和维护等所需的过程、活动和任务。

    4、软件生存周期模型分类
    线性顺序模型 Waterfall Model
    增量式模型 Incremental Model
    演化模型 Evolutionary Model

    5、线性顺序模型
    瀑布模型,又称线性顺序模型
    需求分析->设计->实现->测试->交付->使用和维护
    特点:
    强调阶段的划分顺序与依赖;
    强调各阶段工作文档的完备性,即文档驱动静态描述;
    每个阶段从技术和管理进行严格的审查,即质量保证的观点;
    是一种线性的、顺序的、逐步细化的开发模式;
    推迟实现的观点;
    适用时机:
    所有功能、性能等要求能一次理解和描述时
    所有的系统功能一次交付时
    必须同时淘汰全部老系统时
    实际的瀑布模型特点:
    具有反馈环
    价值:

    • 结构简单明了;历史较长、应用面广泛、为广大软件工作者所熟悉;已有与之配套的一组十分成熟的开发方法和丰富的支撑工具。
    • 一种较为有效的管理模式:订计划、成本预算、组织开发人员,阶段评审,文档管理,从而对软件质量有一定的保证。

    风险和缺点:
    获得完善的需求规约是非常困难的;
    难以适应快速变化需求;
    系统太大时,难以一次做完;
    反馈信息慢;
    极可能引起开发后期的大量返工,如返工到需求、设计等早期活动;

    建议不要使用该模型的几种情况:

    • 需求未被充分理解
    • 系统太大而不能一次开发完成
    • 事先打算采用的技术迅速发生变化
    • 需求迅速发生变化
    • 资源有限,如现有的工作人员/资金不足。
    • 无法利用某一中间产品

    6、增量模型
    软件被分解成许多增量构件,逐个提交。
    构造一系列可执行的中间版本(Version by Version)

    适用时机
    需要早期获得功能;
    中间产品可以提供使用;
    系统被自然地分割成增量;
    工作人员/资金可以逐步增加。

    需考虑的风险
    需求未被很好地理解
    一次要求所有功能
    需求迅速发生变化
    事先打算采用的技术迅速发生变化
    长时期内仅有有限的资源(人员/资金)

    7、演化模型
    只要核心需求能够被很好地理解,就可以进行渐进式开发,其余需求可以在后续的迭代中进一步定义和实现。这种过程模型称为演化模型,它能很好地适应随时间演化的产品的开发。

    特点:
    迭代的开发方法,渐进地开发各个可执行版本,逐步完善软件产品。每个版本在开发时,开发过程中的活动和任务顺序地或部分重叠平行地被采用。

    与增量模型的区别:
    需求在开发早期不能被完全了解和确定,在一部分被定义后开发就开始了,然后在每个相继的版本中逐步完善。

    演化模型在理解了核心需求就可以进行渐进开发,首先执行风险最大的任务,渐进迭代开发各个可执行的版本,允许需求变更。

    现代软件过程都采用演化模型:
    统一软件过程RUP
    敏捷过程 (SCRUM、XP等)
    净室(Cleanroom)软件过程

    演化模型的“子类”
    原型 Prototyping
    螺旋模型 Spiral Model
    并发开发模型 Concurrent Development Model

    (1)迭代化开发
    特点:尽可能降低风险,适用处理不确定的复杂系统。
    原则:
    1、每次迭代产生一个可执行的版本;
    2、要求有计划地迭代。
    选择功能,上一个迭代的结果,新的风险评估结果,模型、代码和测试的受控库->迭代规划->需求获取->分析与设计->实现->测试->准备发布->发布,更新的风险评估,受控库

    (2)快速原型模型
    特点:
    定义出总体目标或初步需求就开发原型,通过原型与用户交互识别进一步的需求.
    (1)抛弃式原型
    (2)演化式原型
    需求分析->原型开发->原型评价->最终系统设计->最终系统实现。

    (3)螺旋模型

    8、RUP(Rational Unified Process)统一软件过程
    RUP蕴涵了最佳实践准则
    (1)迭代式开发
    (2)管理需求
    (3)使用基于构件的体系结构
    (4)可视化建模
    (5)贯穿于开发过程的软件质量验证
    (6)控制软件变更
    RUP是一个风险驱动的、基于UML和构件式架构的迭代、递增型开发过程 。

    Inception(初始)
    目的:在所有项目干系人之间就项目目标达成共识
    Elaboration(精化)
    目的:建立架构基线,解决技术风险,为设计与实现奠定基础
    Construction(构建)
    目的:完成系统开发
    Transition(产品化)
    目的:确保最终用户可以使用

    6个核心规范和3个支持规范
    核心规范:
    业务建模(系统目标达成共识)
    需求(系统范围达成共识)
    设计
    实现
    测试
    部署
    支持规范:
    配置与变更管理
    项目管理(风险,计划,进度等)
    环境

    9、敏捷过程
    敏捷过程:具有高效、快速响应变化的开发过程。
    层次:
    动机->价值->原则->实践做法
    动机:
    快速的市场进入时间、快速变化的需求、快速发展的技术。

    价值-敏捷宣言:
    (1)个体和交互胜过过程和工具;
    (2)可以工作的软件胜过面面俱到的文档;
    (3)客户合作胜过合同谈判;
    (4)响应变化胜过遵循计划。

    敏捷过程的原则:
    优先目标是尽早持续交付高价值的软件来满足客户需求;
    通过驾驭变化帮助客户赢得竞争;
    经常交付可用软件;
    业务员和开发人员必须每天一起工作;
    以积极主动地人为核心建立项目团队;
    可用软件是最主要的项目进展目标;
    团队内外最有效的交流是面对面交流;
    提倡可持续开发,保持稳定的工作步调;
    用精益求精和优良设计增强敏捷性;
    简约—工作最小化;
    最优的架构、需求和设计来自自组织的团队;
    团队不断开展工作反思,校正自身行为。

    适用于敏捷过程的情况:
    需求不确定、易挥发
    有责任感和积极向上的开发人员
    用户容易沟通并能参与
    小于10个人的项目团队

    10、极限编程
    极限编程是敏捷过程中最著名的一种,指把好的开发实践运用到极致,多应用于软件需求模糊的场合。

    价值观:
    沟通、反馈、简化、勇气

    特点:
    测试成为开发的核心;
    纪律性与灵活性巧妙结合.

    XP关键做法:
    现场客户(On-site Customer)
    计划博弈(Planning Game)
    系统隐喻(System Metaphor)
    简化设计(Simple Design)
    集体拥有代码(Collective Code Ownership)
    结对编程(Pair Programming)
    测试驱动(Test-driven)
    小型发布(Small Releases)
    重构(Refactoring)
    持续集成(Continuous integration)
    每周40小时工作制(40-hour Weeks)
    代码规范(Coding Standards)

    11、RUP与XP的共性
    基础都是面向对象方法(取代传统的结构化方法)
    都重视代码、文档的最小化和设计的简化
    采用动态适应变化的演进式迭代周期(取代传统的瀑布型生命周期)
    需求和测试驱动
    鼓励用户积极参与

    12、RUP与XP的区别
    XP以代码为中心,编码和设计活动融为一体,弱化了架构的概念。
    RUP过程通常以架构为中心,细化阶段的主要目的就是构造出一个可运行的架构原型,作为将来添加需求功能的稳固基础。
    XP不包含业务建模、部署、过程管理等概念。
    RUP适合各种规模的项目,XP只适用于小团队。

    13、微软解决方案框架结构MSF
    微软过程准则:
    项目计划应该兼顾未来的不确定因素;
    用有效的风险管理来减少不确定因素的影响;
    经常生成并快速的地测试软件的过渡版本,提高稳定性和可预测性;
    采用快速循环,递进的开发过程;
    用创造性的工作来平衡产品特性和产品成本;
    项目进度表应该具有较高稳定性和权威性;
    使用小型项目组并发的完成开发工作;
    在项目早期把软件配置项基线化,项目后期则冻结产品;
    使用原型验证概念,对项目进行早期论证;
    把零缺陷作为追求的目标;
    里程碑评审会的目的是改进工作,切忌相互指责.

    14、Scrum过程
    强调经验性过程而不是确定性过程
    演化型的迭代开发过程

    15、软件过程的选择与裁剪
    每种过程都有其价值,分别具有一些最佳实践,适合于某类软件的开发。
    软件过程的选择:
    (1)产品/项目自身的特点
    (2)团队的实际情况和企业文化
    (3)客户的影响
    软件过程进行裁剪
    (1)流程归并与裁剪
    (2)角色的筛选与定制
    (3)工件的裁剪和定制

    16、软件过程的评估与改进
    参考模型:
    (1)CMM/CMMI
    过程能力成熟度模型(Capability Maturity Model,CMM)
    CMMI是一个标准簇(Capability Maturity Model Integration,CMMI)

    CMMI for Development(CMMI-DEV):开发模型
    CMMI for Service(CMMI-SVC):服务模型
    CMMI for Acquisition(CMMI-ACQ):采购模型

    CMMI模型不同的改进方法:
    组织成熟度方法(阶梯式模型)
    过程能力方法(连续式模型)

    CMMI阶梯式模型
    初始级->已管理级->已定义级->定量管理级->持续优化级

    CMMI的连续性模型
    过程管理
    项目管理
    工程
    支持

    ISO/IEC 15504
    信息技术——软件过程评价标准,又称为SPICE

    ISO/IEC 20000
    用于评估和认证IT运维服务管理过程的能力

    展开全文
  • 软件过程模型

    千次阅读 2018-10-04 18:52:32
    软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。通常使用生命周期模型简洁地描述软件过程。生命周期模型规定了把生命周期划分成哪些阶段及各个阶段的执行顺序,因此,...

    软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。通常使用生命周期模型简洁地描述软件过程。生命周期模型规定了把生命周期划分成哪些阶段及各个阶段的执行顺序,因此,也称为过程模型。常见的过程模型有瀑布模型、快速原型模型、增量模型、螺旋模型、喷泉模型等。

    1.瀑布模型

    这个特点有两重含义:

        1.必须等前一阶段的工作完成之后,才能开始后一阶段的工作;

        2.前一阶段的输出文档就是后一阶段的输入文档,因此,只有前一阶段的输出文档正确,后一阶段的工作才能获得正确的结果。

    瀑布模型每个阶段都应坚持两个重要做法:

        1.每个阶段都必须完成规定的文档,没有交出合格的文档就是没有完成该阶段的任务。完整、准确的合格文档是软件开发时期各类人员之间相互通信的媒介,也是运行时期对软件进行维护的重要依据。

        2.每个阶段结束前都要对所完成的文档进行评审,以便迟早发现问题,改正错误。事实上越是早期阶段犯下的错误,暴露出来的时间就越晚,排除故障改正错误所需付出的代价也越高。因此,及时审查,是保证软件质量,降低软件成本的重要措施。

          可以说瀑布模型是由文档驱动的。这个事实也是它的一个缺点,在可运行的软件产品交付给用户之前,用户只能通过文档来了解产品是什么样的。瀑布模型历史悠久、广为人知的,它的优势在于它是规范的、文档驱动的方法;这种模型的问题是,最终开发出的产品可能并不是用户真正需要的

    (1)传统的瀑布模型:

    传统的瀑布模型

    (2)实际的瀑布模型:

    实际的瀑布模型

     

    2.快速原型模型

         所谓快速原型是快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品能完成的功能的一个子集。快速原型的本质是“快速”,开发人员应该尽可能快地建造出原型系统,以加速软件开发过程,节约软件开发成本。原型的用作是获知用户的真正需求,一旦需求确定了,原型系统将被抛弃。

         快速原型模型正是为了克服瀑布模型的缺点而提出来的。它通过快速构建一个可在计算机上运行的原型系统,让用户试用原型系统并收集用户反馈意见的办法,获取用户的真实需求。

    快速原型模型

     

     

    3.增量模型

         增量模型也称为渐增模型,使用增量模型开发软件时,把软件产品作为一系列的增量构件来设计、编码、集成和测试。每个构件由多个相互作用的模块构成,并且能够完成特定的功能。使用增量模型时,第一个增量构件往往实现软件的基本需求,提供最核心的功能。

    优点:

        1.能在较短的时间内向用户提交可完成部分工作的产品。

        2.逐步增加产品功能可以使用户有充裕的时间学习和适应新产品,从而减少一个全新的软件可能给客户组织带来的冲击。

         增量模型具有可在软件开发的早期阶段使投资获得明显回报和较易维护的优点,但是,要求软件具有开放的结构是使用这种模型时固有的困难。

    增量模型

    4.螺旋模型

         螺旋模型的基本思想就是,使用原型及其他方法来尽量降低风险。理解这种模型的一个简便方法,是把它看作每个阶段之前都增加了风险分析过程的快速原型模型。

         螺旋模型主要适用于内部开发的大规模软件项目。如果进行风险分析的费用接近整个项目的经费预算,则风险分析是不可行的。事实上项目越大,风险也越大,因此进行风险分析的必要性也越大。此外只有内部开发的项目,才能在风险过大时方便中止项目。

         螺旋模型的主要优势在于,它是风险驱动,但是,这也可能是它的一个弱点。除非软件开发人员具有丰富的风险评估经验和这方面的专门知识,否则将出现真正的风:当项目实际上正在走向灾难时,开发人员可能还认为一切正常。

          风险驱动的螺旋模型适用于内部开发的大型软件项目,但是,只有在开发人员具有风险分析和排除风险的经验及专门知识时,使用这种模型才会获得成功。

    (1)简化的螺旋模型

    简化的螺旋模型

    (2)完整的螺旋模型

    5.喷泉模型(面向对象的生存周期模型)

          喷泉模型对软件复用和生存周期中多项开发活动的集成提供了支持,以面向对象的软件开发方法为基础,它适合面向对象的开发方法。它克服了瀑布模型不支持软件重用和多项开发活动集成的局限性。喷泉模型使开发过程具有迭代性和无间隙性。迭代性指系统某个部分常常重复工作多次,相关功能在每次迭代中随之加入演化的系统,即求精的一个过程。无间隙是指在分析、设计和实现等开发活动之间不存在明显的边界。

    喷泉模型

    优点:

    无缝,可同步开发,提高开发效率,节省开发时间

    缺点:

    可能随时加各种信息,需求和资料(不断迭代),文档管理比较难.   

     

    展开全文
  • 原以为关于开发过程模型是有百分百把握的,直到做出了题,决定回来在看一下这一块。 于是。... 统一软件过程RUP模型 1. 瀑布模型     A. 瀑布模型特征  从上一项活

    原以为关于开发过程模型是有百分百把握的,直到做出了题,决定回来在看一下这一块。

    于是。。。

    软件开发过程模型主要有: 

     瀑布模型(V模型、喷泉模型 ) 
     螺旋模型 
     原型模型(锯齿模型、快速原型) 
     构件组装模型 (增量模型) 
     统一软件过程RUP模型


    1. 瀑布模型

     

     

    A. 瀑布模型特征
     从上一项活动接收该项活动的工作 对象,作为输入 
     利用这一输入实施该项活动应完成的内容;
     给出该项活动的工作成果,作为输出传给下一项活动;
     对该项活动实施的工作进行评审,若其工作得到确认,则继续下一项活动,否则返回前项,甚至更前项的活动进行返工。


    B. 瀑布模型的优点 
     通过设置里程碑,明确每阶段的任务与目标
     可为每阶段制定开发计划,进行成本预算,组织开发力量 
     通过阶段评审,将开发过程纳入正确轨道 
     严格的计划性保证软件产品的按时交付


    C. 瀑布模型的缺点 
     缺乏灵活性,不能适应用户需求的改变 
     开始阶段的小错误被逐级放大,可能导致软件产品报废
     返回上一级的开发需要十分高昂的代价
     随着软件规模和复杂性的增加,软件产品成功的机率大幅下降


     2. 螺旋模型(图)

     

    A. 螺旋模型的特征
     每一圈是一个阶段,每个阶段里又有一些活动
     阶段可分为:操作的概念、软件需求、产品设计、详细设计、编码、单元测试 、集成和测试、验收测试、实现 
     活动有:需求与计划、风险分析、设计与制作、用户评价

    B. 螺旋模型的优点
     风险分析可使一些极端困难的问题和可能导致费用过高的问题被更改或取消 
     用户评价为需求的变更带来柔性 

    C. 螺旋模型的缺点 
     需要开发人员具有相当丰富的风险评估经验和专门知识 
     要求用户参与阶段评价,对用户来说比较困难,不易取得好的效果 

    3. 原型模型(图)

     

    A. 原型模型的特征 
     立项以后先提交原型给用户,在用户试用的基础上进行需求调查与原形修改 
     强调用户对软件功能和使用性能的评价 
     设计、修改原型与试用交替进行 
     一次迭代中的开发步骤: 
    *了解用户/设计者的基本信息需求
    *开发初始原型系统 
    *用户/设计者试用和评估原型系统 


    B. 原型模型的优点 
     开发者与用户充分交流,可以澄清模糊需求,需求定义比其他 模型好得多 
     开发过程与用户培训过程同步 
     为用户需求的改变提供了充分的余地
     开发风险低,产品柔性好 
     开发费用低,时间短 
     系统易维护,对用户更友好


    C. 原型模型的缺点
     开发者在不熟悉的领域中不易分清主次,原型不切题
     产品原型在一定程度上限制了开发人员的创新
     随着更改次数的增多,次要部分越来越大,“淹没”了主要部分 
     原型过快收敛于需求集合,而忽略了一些基本点 
     资源规划和管理较为困难,随时更新文档也带来麻烦 
     只注意原型是否满意,忽略了原型环境与用户环境的差异


    4. 构件组装模型/增量模型(图)

     

     

    A. 构件组装模型的特征
     应用软件可用预先编好的、功能明确的产品部件定制而成, 并可用不同版本的部件实现应用的扩展和更新。
     利用模块化方法,将复杂的难以维护的系统分解为互相独立、协同工作的部件,并努力使这些部件可反复重用。 
     突破时间、空间及不同硬件设备的限制,利用客户和软件之间统一的接口实现跨平台的互操作。 


    B. 构件组装模型的优点
     构件组装模型导致了软件的复用,提高了软件开发的效率,面向对象技术是软件工程的构件组装模型的基础。 
     构件可由一方定义其规格说明,被另一方实现,然后供给第三方使用。
     构件组装模型允许多个项目同时开发,降低了费用,提高了可维护性。
     可实现分步提交软件产品。


    C. 构件组装模型的缺点 
     可重用性和软件高效性不易协调。 
     缺乏通用的组装结构标准,而自定义的组装结构标准引入较大的风险。 
     需要精干的有经验的分析和开发人员,一般的开发人员插不上手。 
     客户的满意度低。


    5. 统一软件过程RUP模型(图)

    A. RUP模型特征
     RUP 可以用二维坐标来描述。横轴通过时间组织,是过程展开的生命周期特征,体现开发过程的动态结构,用来描述它的术语主要包括周期(Cycle)、阶段 (Phase)、迭代(Iteration)和里程碑(Milestone);纵轴以内容来组织为自然的逻辑活动,体现开发过程的静态结构,用来描述它的 术语主要包括活动(Activity)、产物(Artifact)、工作者(Worker)和工作流(Workflow)。 
    RUP的时间轴
    被分解为四个顺序的阶段,分别是: 
     初始阶段(Inception)、 
     细化阶段(Elaboration)、 
     构造阶段(Construction)和 
     交付阶段(Transition) 
    每个阶段结束于一个主要的里程碑(Major Milestones);每个阶段本质上是两个里程碑之间的时间跨度。在每个阶段的结尾执行一次评估以确定这个阶段的目标是否已经满足。如果评估结果令人满意的话,可以允许项目进入下一个阶段。
    RUP的阶段目标 
     初始阶段的目标是为系统建立商业案例并确定项目的边界。
     细化阶段的目标是分析问题领域,建立健全的体系结构基础,编制项目计划,淘汰项目中最高风险的元素。
     在构建阶段,所有剩余的构件和应用程序功能被开发并集成为产品,所有的功能被详细测试。 
     交付阶段的重点是确保软件对最终用户是可用的。 
    RUP的核心工作流
     RUP中有9个核心工作流,分为6个核心过程工作流(Core Process Workflows)和3个核心支持工作流(Core Supporting Workflows)。尽管6个核心过程工作流可能使人想起传统瀑布模型中的几个阶段,但应注意迭代过程中的阶段是完全不同的,这些工作流在整个生命周期 中一次又一次被访问。9个核心工作流在项目中轮流被使用,在每一次迭代中以不同的重点和强度重复。
    核心过程工作流 
     商业建模工作流为组织开发一个构想,并基于这个构想在商业用例模型和商业对象模型中定义组织的过程,角色和责任。 
     需求工作流的目标是描述系统应该做什么,并使开发人员和用户就这一描述达成共识。
     分析和设计工作流将需求转化成未来系统的设计,为系统开发一个健壮的结构并调整设计使其与实现环境相匹配,优化其性能。 
    核心过程工作流
     实现工作流的目的包括以层次化的子系统形式定义代码的组织结构;以组件的形式(源文件、二进制文件、可执行文件)实现类和对象;将开发出的组件作为单元进行测试以及集成由单个开发者(或小组)所产生的结果,使其成为可执行的系统。
    核心过程工作流
     测试工作流要验证对象间的交互作用,验证软件中所有组件的正确集成,检验所有的需求已被正确的实现,识别、提出缺陷并确认缺陷在软件部署之前被处理。
     部署工作流的目的是成功的生成版本并将软件分发给最终用户。 
    核心支持工作流 
     配置和变更管理工作流描绘了如何在多个成员组成的项目中控制大量的产物,管理演化系统中的多个变体,跟踪软件创建过程中的版本。 
     软件项目管理平衡各种可能产生冲突的目标,管理风险,克服各种约束并成功交付使用户满意的产品。 
     环境工作流的目的是向软件开发组织提供软件开发环境,包括过程和工具。 


    B. RUP模型的优点
     RUP 具有很多长处:提高了团队生产力,在迭代的开发过程、需求管理、基于组件的体系结构、可视化软件建模、验证软件质量及控制软件变更等方面,针对所有关键的 开发活动为每个开发成员提供了必要的准则、模板和工具指导,并确保全体成员共享相同的知识基础。它建立了简洁和清晰的过程结构,为开发过程提供较大的通用性。 


    C. RUP模型的缺点 
     一些不足: RUP只是一个开发过程,并没有涵盖软件过程的全部内容,例如它缺少关于软件运行和支持等方面的内容;此外,它没有支持多项目的开发结构,这在一定程度上降低了在开发组织内大范围实现重用的可能性。

    展开全文
  • 软件工程之软件过程模型

    万次阅读 2017-09-05 16:48:06
    软件过程模型 软件过程模型习惯上也称为软件开发模型,它是软件开发全部过程、活动和任务的结构框架。 瀑布模型: 瀑布模型是将软件生存周期中的各个活动规定为依线性连接的若干阶段的模型,包括需求分析、设计、...

    软件过程模型

    软件过程模型习惯上也称为软件开发模型,它是软件开发全部过程、活动和任务的结构框架。


    瀑布模型:

    瀑布模型是将软件生存周期中的各个活动规定为依线性连接的若干阶段的模型,包括需求分析、设计、编码、测试、运行与维护。由前至后、相互衔接的固定次序,如同瀑布流水逐级下落。

    这里写图片描述

    瀑布模型是以文档作为驱动、适合于软件需求很明确的软件项目的模型。

    V模型

    V模型是瀑布模型的一个变体。V模型提供了一种将验证确认活动应用于早期软件工程工作中的方法。

    这里写图片描述

    瀑布模型的优点:

    • 容易理解,管理成本低。
    • 强调开发的阶段性早期计划及需求调查和产品测试。

    瀑布模型的缺点:

    • 客户必须能够完整、正确和清晰地表达他们的需要
    • 开始2个或3个阶段,很难评估真正的进度。
    • 项目结束时,出现大量的集成和测试工作。
    • 需求或设计中的错误往往只有到了项目后期才能够被发现,对于项目风险的控制能力较弱,从而导致项目常常延期完成,开发费用超出预算。

    增量模型:

    增量模型融合了瀑布模型的基本成分和原型实现的迭代特征,它假设可以将需求分段为一系列增量产品,每一增量可以分别开发。

    这里写图片描述

    使用增量模型,第1个增量往往是核心的产品。客户对每个增量的使用和评估都作为下一个增量发布的新特征和功能,这个过程在每一个增量发布后不断重复,直到产生了最终的完善产品。增量模型强调每一个增量均发布一个可操作的产品。

    增量模型的优点:

    • 容易理解,管理成本低。
    • 强调开发的阶段性早期计划及需求调查和产品测试。
    • 第一个可交付版本所需要的成本和时间很少。
    • 开发由增量表示的小系统所承担的风险不大。
    • 减少用户需求的变更。
    • 运行增量投资,即在项目开始时,可以仅对一个或两个增量投资。

    增量模型的缺点:

    • 如果没有对用户的变更需求进行规划,那么产生的初始增量可能会造成后来增量的不稳定。
    • 如果需求不想早期思考的那样稳定和完整,那么一些增量就可能需要重新开发,重新发布。
    • 管理发生的成本、进度和配置的复杂性可能会超出组织的能力。

    演化模型:

    演化模型是迭代的过程模型,使得软件开发人员能够逐步开发出更完整的软件版本。演化模型特别适用于对软件需求缺乏准确认识的情况。典型的演化模型有原型模型和螺旋模型等。

    演化模型之原型模型:

    原型是预期系统的一个可执行版本,反映了系统性质的一个选定的子集。一个原型不必满足目标软件的所有约束,其目的是能快速、低成本地构建原型。

    这里写图片描述

    原型模型开始于沟通,其目的是定义软件的总体目标,标识需求,然后快速制定原型开发的计划,确定原型的目标和范围,采用快速射击的方式对其进行建模,并构建原型。

    根据原型的目的,可分为三种:

    • 探索型原型:目的是弄清目标的要求,确定所希望的特性,并探讨多种方案的可行性。
    • 实验型原型:目的是验证方案或算法的合理性,是在大规模开发和实现前,用于考查方案是否合适、规格说明是否可靠等。
    • 演化型原型:目的是将原型作为目标系统的一部分,通过对原型的多次改进,逐步将原型演化成最终的目标系统。

    演化模型之螺旋模型:

    螺旋模型将瀑布模型和演化模型结合起来,加入了两种模型均忽略的风险分析,弥补了这两种模型的不足。

    螺旋模型将开发过程分为几个螺旋周期,每个螺旋周期大致和瀑布模型相符合:

    这里写图片描述

    • 制定计划:确定软件的目标,选定实施方案,明确项目开发的限制条件。
    • 风险分析:分析所需的方案,识别风险,消除风险。
    • 实施工程:实施软件开发,验证阶段性产品。
    • 用户评估:评价开发工作,提出修正建议,建立下一个周期的开发计划。

    螺旋模型强调风险分析,使得开发人员和用户对每个演化层出现的风险有所了解,从而做出应有的反应。因此,该模型特别适用于庞大、复杂并且具有高风险的系统。

    螺旋模型和瀑布模型比较:

    螺旋模型支持用户需求的动态变化,为用户参与软件开发的所有关键决策提供了方便,有助于提高软件的适应能力,并且为项目管理人员及时调整管理决策提供了便利,从而降低了软件开发的风险。在使用螺旋模型进行软件开发时,需要开发人员具有相当丰富的风险评估经验和专门知识。另外,过多的迭代次数会增加开发成本,延迟提交时间。


    喷泉模型:

    喷泉模型是一种以用户需求为动力,以对象作为驱动的模型,适合于面向对象的开发方法。它克服了瀑布模型不支持软件重用和多项开发活动集成的局限性。喷泉模型使开发过程具有迭代性和无间隙性。

    这里写图片描述

    优点:

    • 提高软件项目的开发效率,节省开发时间。

    缺点:

    • 开发阶段是重叠的,开发过程中需要大量的开发人员,不利于项目的管理。
    • 需要严格的管理文档,使得审核的难度加大。

    基于构件的开发模型:

    基于构件的开发是指利用预先包装的构件来构造应用系统。基于构件的开发模型具有许多螺旋模型的特点,它本质上是演化模型,需要以迭代方式构建软件。

    基于构件的开发模型,包括领域工程和应用系统工程两部分。

    这里写图片描述

      领域工程的目的是构建领域模型、领域基准体系结构和可复用构件库。
      应用系统工程的目的是使用可复用构件组装应用系统。


    形式化方法模型:

      形式化方法是建立在严格数学基础上的一种软件开发方法,其主要活动是生成计算机软件形式化的数学规格说明。

      形式化方法用严格的数学语言和语义描述功能规约和设计规约,通过数学的分析和推导,易于发现需求的歧义性、不完整性和不一致性,易于对分析模型、设计模型和程序进行验证。这种方法的一个变型是净室软件工程。


    结束:

    我是衡钊清,北漂中的一员。

    人生格言:[ 做一个决定,并不难,难的是付诸行动,并且坚持到底 ]

    今天的苦果,是昨天的伏笔,当下的付出,才是明日的花开!加油!!!加油!!!

    展开全文
  • 什么是软件过程?它与软件工程方法学有何关系? 答:软件过程是指为了获得高质量软件产品,在软件工具支持下,由软件人员完成的一系列软件工程活动的框架。 软件过程与软件工程方法学的关系: 软件过程:是一个为了...
  • 软件过程与改进复习整理

    千次阅读 2018-05-03 16:48:27
    软件开发的质量以及效率受到人员、技术和过程这三个因素的影响软件过程理论的基石:软件产品和服务的质量,很大程度上取决于生产和维护该软件或者服务的过程的质量。以下来自百度百科:PDCA循环是美国质量管理专家...
  • 软件过程管理在软件项目中的作用

    千次阅读 2015-01-29 22:17:09
    软件过程管理,可以帮助软件组织将过程资产进行有效的管理,使之可以被复用在实际的项目中,并结合从项目中获取的过程的实际应用结果来不断的改进过程。 这样软件组织将能够有能力改变自身的命运,将它从维系在...
  • Software Process (软件过程)

    千次阅读 2015-05-17 23:15:21
    软件过程模型是一种软件过程的抽象表现,每种过程模型会从一种特殊的视角来表示一种过程,因此仅仅会提供一种局部的信息来反映该过程。本节将介绍一些常用的过程模型,然后从架构的角度来说明他们,
  • [软考]之软件过程模型II

    千次阅读 热门讨论 2015-11-01 11:52:27
    软件过程是软件开发与维护的工作流程和工艺流程,是软件工程的重要组成部分。软件过程指软件生存周期中所涉及的一系列相关过程。过程是活动的集合,活动是任务的集合,任务是把输入转换为输出的操作。软件过程是动态...
  • 常用的软件过程模型

    千次阅读 2014-05-02 15:56:17
     软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。通常使用生命周期模型简洁地描述软件过程。生命周期模型规定了把生命周期划分成哪些阶段及各个阶段的执行顺序,因此...
  • 各种软件过程模型的特点

    千次阅读 2013-05-20 17:06:06
    不同的软件过程模型对软件开发过程有不同的理解和认识,支持不同的软件项目和开发组织。下表对比和分析了各个软件过程模型的特点及其适用的软件项目类型。  各种软件过程模型的特点 模型名称 技术...
  • Rational 统一过程(RUP)软件过程能力评估的三个标准1 CMM(Carnegie Mellon University)能力成熟度模型(五个级别)2 ISO 90003 六西格码过程模型1 瀑布模型 (自上而下,相互衔接,呈线性,逐级下落)2 演化模型 (先原型...
  • 软件过程各类模型详细介绍(重要)瀑布模型 瀑布模型 瀑布模型也称为软件生命周期模型,根据软件生命周期各个阶段的任务,瀑布模型从可行性研究,逐步进行阶段性变化,直到最后通过确认测试并得到用户认可的软件...
  • 软件过程改进实践

    千次阅读 2007-07-19 15:43:00
    摘要:通过结合自身在企业中参与的一些项目的经验,根据软件过程的一些方法论,如RUP,XP等来分析所参与的一些项目中的过程现状,制定出一些过程的改进计划。并且阐述一下如何实施和评估整个软件过程改进。 关键字...
  • 软件工程:软件过程模型实例

    千次阅读 2017-12-16 22:12:53
    针对下列软件项目场景,探讨它们最合适采用哪种过程模型:
  • 软件过程的特点是无秩序的,甚至是混乱的,软件处于无章法和步骤可询的状态,或者制订的规范为能覆盖基本的关键过程要求,且执行没有政策、资源方面的保证,那么仍被视为初始级。 2)可重复级: 以及建立了基本的...
  • 个体软件过程学习小结

    千次阅读 2011-03-08 21:06:00
    第一次知道个体软件过程思想是在科技园参加的培训,有进一步了解是在阅读Watts S.Humphrey《个体软件过程》对个人软件过程(Personal Software Process,PSP)的描述。通过这几天的学习,小结如下: 第一,...
  •  公用(通用)软件过程——组织标准软件过程——项目自定义的软件过程   二、过程规范  软件过程管理的目的就是最大限度地提高软件产品的 质量 与软件开发过程的 生产率(依赖于过程、人和技术)。 1...
  • 个人软件过程(Personal Software Process)

    千次阅读 2010-05-07 23:46:00
    个人软件过程(Personal Software Process,PSP)是一种可用于控制、管理和改进个人工作方式的自我持续改进过程,是一个包括软件开发表格、指南和规程的结构化框架。PSP与具体的技术(程序设计语言、工具或者设计方法...
  • 软件工程学之软件过程 --------软件过程及过程模型 作者:Make 发表时间:2005-06-27导读1.概述2.软件工程再定义3.软件工程与软件过程4.软件过程模型5.过程模型关系图示 一、概述软件过程-我很喜欢的解释就是软件...
  • 《术以载道—-软件过程改进实践指南》荣耀上市!欢迎广大过程改进从业者,爱好者阅读!
  • 软件过程模型的分类与选用

    千次阅读 2008-03-27 21:47:00
    软件过程模型的分类与选用 所谓模型就是一种开发策略,这种策略针对软件工程的各个阶段提供了一套范形,使工程的进展达到预期的目的。对一个软件的开发无论其大小,我们都需要选择一个合适的软件过程模型,这种选择...
  • 统计过程控制(SPC)在软件过程改进的应用 软件产业历来就存在着一些问题,而这些问题的是不会自动解决的。为了解决这些问题,需要用基于数据的客观方法来观察问题,研究问题的内容以及产生问题的原因,从而找到...
  • 敏捷式开发质疑传统软件过程

    千次阅读 2006-06-26 12:35:00
    敏捷式开发质疑传统软件过程在六十年代末期提出了软件危机的概念,因此提出了非常有纪律性的方法即软件工程学,试图从电子工程学、技术工程学提炼出一些东西来用于软件工程学,他们想从中提炼出一种方法,使得软件...
  • 软件过程改进的实施建议

    千次阅读 2010-03-01 14:18:00
    5.5 软件过程改进的实施建议5.5.1 过程改进的目的和基本措施过程改进的目的是:优化流程制度,努力提升人们在过程中的工作能力,从而“提升产品质量、提升生产率并降低成本”。基本措施:(1)如果某个领域还没有...
  • 1、软件的实质:程序+数据+文档。 2、软件工程的三维空间观:过程+方法+工具。...4、面向对象方法与软件过程模型  1)基本模型 线性顺序模型:瀑布模型迭代模型:原型法模型基于构件的开发模型  2

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 190,726
精华内容 76,290
关键字:

软件过程