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

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

        相对于顺序或“瀑布”软件开发模型,迭代和进化式开发(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.mzph.cn/news/106610.shtml

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

相关文章

如何使用前端构建工具(如Webpack、Parcel)?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

C++指针解读(6)-- 指针和字符串

1、字符串的基本概念 (1)字符串的存储 字符串是存放在字符数组中的。比如字符串“hello”,在内存中是这么存放的: 这里要注意,在字符串的最后会加上一个\0,也被称为NUL字符,表示字符串的结束位…

Liunx中系统安全及文件系统(极其粗糙版)

系统安全: 系统安全和数据防护,数据备份的资质 比如三台服务器: 500万 工信部是有要求的,组织必须保证处理的个人数据的安全性 品牌形象如何维护呢 基于liunx的安全加固措施: 权限进行控制 账号安全:…

09_Webpack打包工具

1 初识Webpack 1.1 什么是Webpack Webpack打包工具对项目中的复杂文件进行打包处理,可以实现项目的自动化构建,并且给前端开发人员带来了极大的便利。 目前,企业中的绝大多数前端项目是基于Webpack打包工具来进行开发的。 1.2 Webpack的安…

C++学习——引用详解

以下内容源于C语言中文网的学习与整理,非原创,如有侵权请告知删除。 一、引用的语法 1、引用的含义 引用(Reference)是 C 相对于C语言的又一个扩充。 引用可以看做是数据的一个别名,通过这个别名和原来的名字都能够…

可观测 AIOps 的智能监控和诊断实践丨QCon 全球软件开发大会总结

作者:董善东(梵登) 本文是作者于 9 月 5 日在 QCon 北京 2023(全球软件开发大会)上做的《阿里云可观测 AIOps 的智能监控和诊断实践》专题演讲文字版。 大家上午好,很高兴可以在 QCon 稳定性和可观测的场…

华为云云耀云服务器L实例评测|华为云耀云服务器L实例评测用例(五)

六、华为云耀云服务器L实例评测用例: “兵马未动,粮草先行”,随着企业业务的快速发展,服务器在数字化建设体系至关重要,为了保证服务器的稳定性、可靠性,需要对服务器进行评测,以确保服务器能够…

FPC柔性电路板介绍及PCB设计经验规则总结

🏡《总目录》 目录 1,概述2,FPC的特点3,FPC设计十五条经验规则4,总结1,概述 FPC软板由于具有可弯曲折叠的特点,当前在消费电子,汽车电子和航空航天领域应用广泛。本文详细介绍FPC的特点并对FPC板设计中需要注意的经验原则进行总结。 2,FPC的特点 FPC的全称是Flexibl…

网站如何应对网络流量攻击

网络安全问题中,受到流量攻击是一种常见挑战。以下是一系列的专业建议,帮助您预防和减轻这类攻击,从而确保您的网站和数据的安全。 使用 Web 应用程序防火墙 (WAF) Web 应用程序防火墙是一项专门的安全工具,能够检测和拦截恶意流…

【Docker 内核详解】namespace 资源隔离(五):User namespaces

【Docker 内核详解 - namespace 资源隔离】系列包含: namespace 资源隔离(一):进行 namespace API 操作的 4 种方式namespace 资源隔离(二):UTS namespace & IPC namespacenamespace 资源隔…

项目管理软件中注释功能的作用是什么?

在项目管理软件中,注释功能允许您对任务、文件夹和项目进行详细的标注。这一功能不仅便于团队成员之间的沟通与协作,还能提高项目管理的效率。通过在项目中添加评论,您可以及时了解项目的最新动态,提出疑问并寻求解决方案。此外&a…

汇编语言基础

引言 汇编语言是直接在硬件之上工作的编程语言,首先要了解硬件系统的结构,才能有效的应用汇编语言对其编程。汇编课程的研究重点放在如何利用硬件系统的编程结构和指令集有效灵活的控制系统进行工作。 基础知识 1.1机器语言 机器语言是机器指令的集合…

单链表---结构体实现

定义 链表称为线性表的链式存储,顺序表逻辑上相邻的数据,存储位置也相邻。链表逻辑上相邻的数据,存储位置是随机分布在内存的各个位置上的。 故 对于每一个结点,定义的结构体是: typedef struct _LinkNode {int d…

Java-使用sqlSessionTemplate实现批量更新-模拟mybatis 动态sql

环境准备(非核心方法) 创建表 创建表的sql(下表是基于Oracle创建的) CREATE TABLE "SYSTEM"."STUDENT" ("ID" NUMBER(10, 0),"NAME" VARCHAR2(20 BYTE),"ADDRES" CLOB,PRIMARY KEY ( …

milvus和相似度检索

流程 milvus的使用流程是 创建collection -> 创建partition -> 创建索引(如果需要检索) -> 插入数据 -> 检索 这里以Python为例, 使用的milvus版本为2.3.x 首先按照库, python3 -m pip install pymilvus Connect from pymilvus import connections c…

mac电脑版数字图像处理软件:ACDSee Photo Studio 9最新 for Mac

ACDSee Photo Studio 9是一款由ACD Systems开发的功能强大的照片管理和编辑软件,专为Mac用户提供一站式解决方案,方便用户轻松浏览、管理和编辑照片。该软件提供了许多实用的工具和功能,包括高效的导入和排序工具、强大的编辑工具、智能组织和…

CustomTabBar 自定义选项卡视图

1. 用到的技术点 1) Generics 泛型 2) ViewBuilder 视图构造器 3) PreferenceKey 偏好设置 4) MatchedGeometryEffect 几何效果 2. 创建枚举选项卡项散列,TabBarItem.swift import Foundation import SwiftUI//struct TabBarItem: Hashable{ // let ico…

Java练习题-获取数组元素最大值

✅作者简介:CSDN内容合伙人、阿里云专家博主、51CTO专家博主、新星计划第三季python赛道Top1🏆 📃个人主页:hacker707的csdn博客 🔥系列专栏:Java练习题 💬个人格言:不断的翻越一座又…

Qt之给控件添加右键菜单

一、设置控件 在对应控件的属性中,将contextMenuPolicy设置为CustomContextMenu。 二、添加槽函数 在对应控件上右键选择槽函数customContextMenuRequested(QPoint)。 三、在槽函数中添加右键菜单 在槽函数中输入如下代码,添加右键菜单。 //右键菜单 …

Flutter 剪裁(Clip)

🔥 ClipOval 🔥 子组件为正方形时剪裁成内贴圆形;为矩形时,剪裁成内贴椭圆 裁剪纯色背景 ClipOval(child: Container(width: 300.w,height: 300.w,decoration: const BoxDecoration(color: Colors.red),),), 裁剪背景图片 裁剪前…