美文网首页简友广场想法
如何开发一个软件——软件过程介绍

如何开发一个软件——软件过程介绍

作者: uq | 来源:发表于2019-11-29 22:35 被阅读0次
                                           

    简介

    软件过程是在软件开发时遵循的一系列步骤,软件过程的基础活动为沟通、策划、建模、构建和部署。

    过程模型是软件过程的具体实现。最早提出过程模型是为了改变软件开发混乱的状况,使软件开发变得更有序。

    瀑布模型

    是一个系统的、顺序的软件开发方法,是最早的过程模型,强调需求完整,执行有序。

    从规划出产品的完整需求开始,按阶段逐步进行。每个阶段都会有评审,评审通过后生成说明文档,作为下一阶段的指导。如果发现某一阶段有问题则逐步向上一阶段反馈,然后重新评审。

    适合需求明确、稳定的产品。

    不适合需求不明确、需求频繁变化的产品。需求不明确,则无法进行设计阶段。需求频繁变化,需要逐步回溯、评审和更新文档一系列操作,耗费大量的人力和时间。

    不适合客户要快速得到可用产品的场景。客户要等所有阶段完成后,才会得到可用的软件。

    增量模型

    增量模型是一个功能逐渐增加的开发方法。客户有完整的需求,但是要求时间紧迫,所以将功能拆分多次去交付。每个增量是每次开发功能的数量,并且使用瀑布模型。第一个增量往往是核心功能,满足基本需要,客户评估或使用后,然后制定下一个增量计划。

    适合客户要快速得到可用产品的场景。

    迭代模型

    迭代模型是一个需求越来越明确的开发方法。客户初始没有明确的需求,但是有一个笼统的想法,所以快速开发出一个可用的版本,交付给客户,然后通过客户的反馈来细化,然后不断的重复这个过程,以此来实现最终想要的产品。每一次的迭代都会使用瀑布模型。

    适合需求不明确或频繁变化的产品。

    原型模型

    原型模型是一个以原型为基准的开发方法。原型是模拟产品的原始模型,可以用辅助软件画出来。在获得了用户的一组需求后,立即将其原型化,然后让客户试用,这样可以检验需求,同时也可以启发客户,以此来获得完整的需求。

    适合小型的、完整需求难以确定的产品。大型复杂的产品,构造原型的时间长并且难度大。

    螺旋模型

    图片源自 wikipedia.org

    螺旋模型结合了原型模型、迭代模型和瀑布模型,并增加了风险分析。从螺旋的中心开始,沿着螺旋进行迭代,每一次迭代都要进行风险分析。螺旋的第一圈确认需求,第二圈确认设计,第三圈交付版本,然后继续这个周期。

    适合大型复杂的产品。

    统一过程 RUP

    RUP驼峰图 图片源自 wikipedia.org

    统一过程是一个以用例为驱动,以架构为核心,迭代并且增量的过程。强调体系结构和从用户角度描述系统。为了更好的把控时间,把开发过程分为四个阶段(横轴)初始、细化、构建、交付,每个阶段按顺序执行(纵轴)商业建模、需求、分析和设计、实现、测试、部署,执行。每个阶段都有一个里程碑,为要实现的目标。随着时间按阶段迭代,到最终交付。

    适合大型复杂的产品。

    敏捷开发

    敏捷是一种快速响应变化的能力。适合需求不确定或频繁变化的产品。

    敏捷开发是基于敏捷宣言的4个价值观和12条原则的一系列方法。

    4个价值观:

    个体和互动 高于 流程和工具

    工作的软件 高于 详尽的文档

    客户合作 高于 合同谈判

    响应变化 高于 遵循计划

    12条原则:

    1、我们最重要的目标,是通过及早和持续不断地交付有价值的软件使客户满意。

    2、欢迎不断变化的需求,即使是在项目开发的后期。要善于利用需求变更,帮助客户获得竞争优势。

    3、不断交付可用的软件,周期通常是几周,越短越好。

    4、项目过程中,业务人员与开发人员必须在一起工作。

    5、激发个体的斗志,以他们为核心搭建项目。提供所需的环境和支援,辅以信任,从而达成目标。

    6、面对面交谈是最好的沟通方式。

    7、可工作的软件是进度的首要度量标准。

    8、敏捷过程倡导可持续开发。责任人、开发人员和用户要能够共同维持其步调稳定延续。

    9、不断地追求技术卓越和良好设计,敏捷能力由此增强。

    10、简单性至关重要,尽最大可能减少不必要的工作。

    11、最好的架构、需求和设计出自自组织团队。

    12、团队要定期反思如何能提高成效,并依此调整。

    如下列举了一些敏捷开发的方法:

    极限编程 XP

    图片源自 软件工程-实践者的研究方法 第8版

    所谓极限,是在传统瀑布模型中看来是“极端的”实践,在敏捷开发中,将会更加好的响应用户需求。如测试驱动开发、结对编程、现场客户。

    1、策划

    策划软件发布计划和周期开发计划。

    短交付周期,每个迭代1-3周时间。

    系统隐喻,用形象的比喻来描述系统或功能模块是怎样工作的。

    2、设计

    用最简单的办法实现每个小需求。

    3、编码

    测试驱动开发,先编写测试代码,然后只编写使测试通过的功能代码。

    结对编程,两个人完成编码,一个编码,一个评审。

    重构,只要有可能,程序员都不应该心疼以前写的程序,而要毫不留情地改进程序。

    持续集成,要早集成,常集成。帮助项目在早期发现项目风险和质量问题。

    4、测试

    现场客户,使用系统的人应该时刻在现场解决问题。

    Scrum

    图片源自 软件工程-实践者的研究方法 第8版

    1、产品待定项,团队负责人领导团队成员细分任务,估计工作量,单位到天。

    2、冲刺(Sprint)待定项,将总的任务划分为几个相连的Sprint,并决定当前的Sprint。将当前的任务细分到小时,然后团队成员认领任务。

    3、冲刺,在此期间只有负责人与外界沟通,团队成员只关注自己的任务。每日进行例会,汇报任务情况及遇到的难题。

    4、发布增量版本,进行下一个Sprint。

    参考资料

    软件工程-实践者的研究方法 第8版

    构建之法-现代软件工程 第3版

    阮一峰 敏捷开发入门教程

    相关文章

      网友评论

        本文标题:如何开发一个软件——软件过程介绍

        本文链接:https://www.haomeiwen.com/subject/ovfpwctx.html