OOA/D 时统一过程(UP)中的 迭代、 进化 和 敏捷

news2024/11/20 2:55:26

一、迭代和进化式开发的优势

        相对于顺序或“瀑布”软件开发模型,迭代和进化式开发(iterative and evolutionary development )对部分系统及早地引入了编程和测试,并重复这一循环。这种方式通常会还没有详细定义所有需求的情况下假设开发开始,同时使用反馈来明确和改进演化中的规格说明。

        在迭代开发中,我们依赖于短时快速的开发步骤、反馈和改写来不断明确需求和设计。相比之下,瀑布模型提倡在编程之前就预先完成需求和设计步骤。一直以来,成功/失败的研究表明,瀑布模型和软件项目高失败率具有极大关系,对它的推广源于信念和风闻,而不是具有统计意义的证据。研究证实,迭代方法与较高的成功率、生产率和低缺陷率具有关系。

二、统一过程统一了什么?

        软件开发过程描述了构造、部署以及维护软件的方式。而统一过程(Unified Process,  UP)是一种构造面向对象系统的迭代软件开发过程。

        统一过程十分灵活和开放,鼓励引进其他迭代方法中的有用的实践,诸如极限编程(Extreme Programming, XP)、Scrum等。例如,可以在统一过程项目中引入极限编程的测试驱动开发(test-driven development)、重构(refactoring)和持续集成(continuous integration)等实践。同样,也可以引入Scrum的公共项目室(“作战室”)和Scrum日常会议等实践。

      统一过程把普遍认可的最佳实践(如迭代生命周期和风险驱动开发)结合起来,成为联系紧密并具有良好同步文档的过程描述。


        总体而言,统一过程是OOA/D时的一系列迭代过程,在软件开发过程中即拥抱变更又尊重未知(与传统瀑布模型相比),是一种“波浪式前进、螺旋式上升” “小步快跑”逐步向目标价值逼进的开发过程。经由行业证明是通用且公认的软件开发最佳实践。

三、统一过程下的迭代、进化

        迭代开发(iterative development)是统一过程和大多数其他现代方法中的关键实践。在这种生命周期方法中,开发被组织成一系统固定的短期小项目,称为迭代;每次迭代都产生经过测试、集成并可执行的局部系统;每次迭代都具有各自的需求分析、设计、实现和测试活动。

        迭代生命周期基于对经过多次迭代的系统进行持续扩展和精化,并以循环反馈和调整为核心驱动力,使之最终成为适当的系统。随着时间和一次又一次迭代的递进,系统增量式地发展完善,因此这一方法也被称为迭代和增量式开发。

        迭代的输出不是实验性的或将丢弃的原型,迭代开发也不是构造原型。与之相反,其输出是最终系统的产品子集。而每一次迭代又是上一次迭代基础之上的进化。

四、统一过程下的敏捷开发

        敏捷开发(agile development)方法通常应用时间定量的迭代和进化式开发、使用自适应计划、提倡增量交付并包含其他提倡其他敏捷性(快速和灵活的响应变更)的价值和实践。由于特定实践多种多样,因此不可能精确地定义敏捷方法。除进化式精化的计划、需求和设计的短时间定量迭代外,还倡导反映简易、轻量、沟通、自组织团队等更多敏捷性的实践和原则。

        统一过程可以采纳和应用可适应性和轻量级的精神,从而变身敏捷统一过程。

1、推荐使用统一过程活动和制品的简集。

2、统一过程是迭代和不断进化的,所以在实现前的需求和设计是不完整的。它们是在一系列迭代中,基于反馈而产生的。

3、以敏捷建模实践应用UML

4、对于整个项目不应有详细的计划。仅估计结束日期和主要里程碑的高阶计划,但不对这些里程碑定义细粒度的步骤。详细计划由一次次迭代的调整而完成。

五、统一过程的其他关键实践

        统一过程所倡导的核心思想是:短时间定量迭代、进化和可适应性开发。其他实践和概念包括:

  • 在早期迭代中解决高风险和高价值的问题
  • 不断地让用户参与评估、反馈和需求
  • 在早期迭代中建立内聚的核心架构
  • 不断地验证质量;提早、经常和实际地测试
  • 在适当的地方使用用例
  • 进行一些可视化的建模(使用UML)
  • 认真管理需求
  • 实行变更请求和配置管理

六、参考文档

        UML和模式应用
Applying UML and Patterns
An Introduction to Object-Oriented Analysis and Design and Iterative Development
(美) Craig Larman 著         李洋 郑䶮 等译

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1094544.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

阿里云易立:以云原生之力,实现大模型时代基础设施能力跃升 | KubeCon 主论坛分享

今天,由云原生计算基金会 CNCF 主办的 KubeConCloudNativeConOpenSourceSummit China 2023 主论坛在上海举办。阿里云容器服务负责人易立在主论坛发表演讲,介绍阿里云为大模型提供的基础设施能力,以及通过云原生 AI 的方式助力大模型普惠提效…

【Eclipse】设置自动提示

前言: eclipse默认有个快捷键:alt /就可以弹出自动提示,但是这样也太麻烦啦!每次都需要手动按这个快捷键,下面给大家介绍的是:如何设置敲的过程中就会出现自动提示的教程! 先按路线找到需要的页…

[计算机提升] 用户和用户组

1.1 用户和用户组 1.1.1 用户 用户账户是计算机操作系统中用于标识和管理用户身份的概念。 每个用户都拥有一个唯一的用户账户,该账户包含用户的登录名、密码和其他与用户身份相关的信息。 用户账户通常用于验证用户身份,并授权对系统资源的访问权限。…

Ourphp建站系统存在SQL注入

查询用户 文笔生疏,措辞浅薄,望各位大佬不吝赐教,万分感谢。 免责声明:由于传播或利用此文所提供的信息、技术或方法而造成的任何直接或间接的后果及损失,均由使用者本人负责, 文章作者不为此承担任何责任…

时间显示相关

显示当前的时间 显示当前的年份 date %Y date %y 显示当前的月 date %m 显示当前的日 date %d 显示小时 date %H 显示分钟 date %M 显示秒 date %S 组合显示 date …

掌握优先级队列:提升效率的关键技巧

目录 优先级队列的概念优先级队列的模拟实现堆的创建堆的插入与删除堆的插入堆的删除 用堆模拟实现优先级队列 常见接口了解PriorityQueue的几种常见构造方法 优先级队列的概念 队列是一种先进先出的数据结构,但在一些情况下我们要优先处理一些情况,比如…

B2R Raven: 2靶机渗透

B2R Raven: 2靶机渗透 视频参考:ajest :https://www.zhihu.com/zvideo/1547357583714775040?utm_id0 原文参考:ajest :https://www.zhihu.com/column/c_1403138803561816064 原文参考:ajest https://zhuanlan.zhih…

从0备战蓝桥杯:找出只出现一次的数字,数单身狗

前言:在部分大厂笔试时经常会使用OJ题目,这里对《剑指offer》中的俩个题目进行思路分析和讲解,希望对各位读者有所帮助。 题目来源选自力扣网 目录: 单个只出现一次的数字: 力扣链接: 题目描述 &#xf…

1.Vue-在独立页面实现Vue的增删改查

题记 在独立页面实现Vue的增删改查&#xff0c;以下是具体的代码&#xff0c;和操作流程。 编写index.html页面 index.html文件如下&#xff1a; <!DOCTYPE html> <html> <head><title>Vue CRUD Example</title><!--在线导入vue文件-->&l…

【网络协议】聊聊网络分层

常用的网络协议 首先我们输入www.taobao.com&#xff0c;会先经过DNS进行域名解析&#xff0c;转换为59.82.122.115的公网IP地址。然后就会发起请求&#xff0c;一般来说非加密的使用http&#xff0c;加密的使用https。上面是在应用层做的处理&#xff0c;那么接下来就是到传输…

Ansible运行临时命令及常用模块介绍

目录 一.运行临时命令 1.基本语法格式 2.查看当前版本已安装的所有模块 二.ansible常见模块 1.command模块 2.shell模块 3.raw模块 4.script模块 5.file模块 参数列表&#xff1a; 示例&#xff1a; 6.copy模块 参数列表&#xff1a; 示例&#xff1a; 7.fetch模…

SSL证书能选择免费的吗?

当涉及到保护您的网站和您的用户的数据时&#xff0c;SSL证书是必不可少的。SSL证书是一种安全协议&#xff0c;用于加密在Web浏览器和服务器之间传输的数据&#xff0c;例如信用卡信息、登录凭据和个人身份信息。 但是&#xff0c;许多SSL证书都是付费的&#xff0c;这可能会…

Java应用的混淆、加密以及加壳

文章目录 前言问题代码混淆存在的问题Java类文件加密存在的问题虚拟化保护存在的问题AOT编译存在的问题 Java应用的打包混淆器类加载与类加密Bootstrap Class LoaderExtension Class LoaderSystem Class Loader自定义ClassLoaderprotector4j 加壳采用Golang打包Java程序xjar 参…

基于未来搜索优化的BP神经网络(分类应用) - 附代码

基于未来搜索优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码 文章目录 基于未来搜索优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码1.鸢尾花iris数据介绍2.数据集整理3.未来搜索优化BP神经网络3.1 BP神经网络参数设置3.2 未来搜索算法应用 4.测试结果…

2023年四川省安全员B证证考试题库及四川省安全员B证试题解析

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2023年四川省安全员B证证考试题库及四川省安全员B证试题解析是安全生产模拟考试一点通结合&#xff08;安监局&#xff09;特种作业人员操作证考试大纲和&#xff08;质检局&#xff09;特种设备作业人员上岗证考试大…

Filebeat 采集 k8s Pod 和 Events 日志实战操作

文章目录 一、概述1&#xff09;采集 Pod 日志流程介绍3&#xff09;采集 Events 日志流程介绍 二、K8s 集群部署三、ElasticSearch 和 kibana 环境部署四、Filebeat 采集配置1&#xff09;采集 Pod 日志配置2&#xff09;采集 Events 日志配置1、创建 filebeat 授权 token2、f…

网络 | 排错五大步骤,没有解决不了的网络故障准达信息准达信息

网络故障是我们工作中最易常见的问题&#xff0c;那么如何才能进行网络排查&#xff0c;快速解决问题呢&#xff1f; 一、网络排错五大基本步骤与命令 五大基本思路如下&#xff1a; &#xff08;1&#xff09;检查物理链路是否有问题&#xff1b; &#xff08;2&#xff09;…

【总结】两个独立同分布的随机变量相加还是原来的分布吗?

二项分布&#xff0c;泊松分布&#xff0c;正态分布&#xff0c;卡方分布&#xff0c;具有独立可加性。 图源自没咋了&#xff0c;面哥课程。

【软考】9.3 二叉树存储/遍历/线索/最优/查找/平衡

《树与二叉树》 二叉树的顺序存储结构 顺序存储只适用于完全二叉树和满二叉树&#xff0c;一般二叉树不适用i 2 的左孩子为 2i 4&#xff0c;右孩子为 2i 1 5 二叉树的链式存储结构 链式存储适用于二叉树&#xff1b;空结点用“∧”表示二叉链表&#xff1a;左孩子&#xff0…

论文阅读:CenterFormer: Center-based Transformer for 3D Object Detection

论文地址&#xff1a;[2209.05588] CenterFormer: Center-based Transformer for 3D Object Detection (arxiv.org) 代码地址&#xff1a;GitHub - TuSimple/centerformer: Implementation for CenterFormer: Center-based Transformer for 3D Object Detection (ECCV 2022) …