敏捷开发-开发以人为本

敏捷开发系列学习总结(10)——到底什么是敏捷开发? 1,提要 软件开发是一个系统工程,包括最初的可行性分析、再到设计、开发、测试、维护等整个生命周期。在这个过程中某些阶段的失误或说是变化,都可能增加整个软件项目的风险。 如何在保证效率的基础上还能安计划、保证质量的完成软件项目?于是产生了软件开发的一些方法,这个方法不是指具体有编码阶段的各种设计模式和技巧,而是在整个软件开发策略层面的方法。 传统瀑布模式和新型的敏捷开发就是其中最常用的方法,后 阅读详情
     再谈了需求(甚至可以说是complains)之后,就可以切入正体了,并且我将以我的一个项目经验来阐述敏捷开发?
      首先什么是敏捷开发?这个问题网上会有许多解释,事实上从技术的角度讲,就是将设计,编码,测试等传统软件工程学上的不同阶段混在一起。从开发哲学讲,就是以人为本!你可能会觉得诧异,将这些阶段混在一起不是进入了最初的混沌阶段了吗?当然不是,所以才有了许多敏捷开发方法学,包括XP Programming,TDD(Test-Driven Development)等。至于敏捷开发是谁提出的,我想许多人都会认为是Martin Fowler于01年发表的《敏捷开发宣言》那时候开始的吧。其实不然,敏捷开发是许多位优秀的开发人员,在实际的开发过程中,发生了诸如我上篇提到的诸多抱怨后,认真总结,不约而同的悟出的,真的是悟出的!这里举个例子, 在我离开kst的前几天,曾经参加了金碟中间件的apusic的宣传会,当时,金碟的cto,中国java的diyiren,JCP的中国代表袁红岗先生也出席了(对此人比较崇拜,所以用了许多头衔)。他在会上说,在01年之前,他觉得他在软件业没有什么特别成就感,虽然也写了中国第一个windows平台财务软件,卖了10多个亿(牛人...)。01年之后,他对他过去的开发经验做了一些,总结,并悟出了一套方法学,并在以后的开发工作中加以应用(包括领导开发了同Websphere,Weblogic同一级别,同样获得Sun J2EE规范认证的application server:APUSIC),这才有了一定的成就感。之后,Martin Fowler来了中国,袁红岗也参加了见面会,在和Martin Fowler交流之后,他才觉得,原来世界上有这么多人想法和他一样(汗...)。不错,他悟出的那套方法论就是敏捷开发!
      事实上我对这其中的许多方法学感受不深,不过我下面会谈到我参与过的一个算是用了半个敏捷开发的项目吧。不过我首先想提出的做为一个程序员,如果要开发一个项目,你第一件事想到的是什么?是设计吗?不,是代码!想马上写一段代码试试看?这在传统软件工程学中,是要被BS的。但敏捷开发不同,以人为本吗。事实上仔细想想,你实际上是在用代码做设计,而不是传统软件工程学中所说的编码过程!以人为本,所以这里不需要你有严格规范的设计文档,不一定非要用建模工具,但是有一点还是需要的,你写的代码,或者说你设计的框架,别人一定要看懂!怎么看懂?随你了,你可以用UML建模工具将代码做成UML模型(事实上我认为UML真正的用途在于程序员之间的交流,而非建模本身),可以写简单的设计文档,甚至,真正优秀的代码只通过注释就可以在程序员之间进行没有任何障碍的交流。当然了,这是需要用极高的代码质量保证的。袁红岗就说,他从不用任何建模工具,他就是考代码建模的,如果有任何人读不懂他的代码,就说明没写好,就要重写!
       下面要说的是测试驱动(tdd),什么是测试驱动?就是现有测试,再有代码!这听起来觉得匪夷所思,但如果你是从客户的角度取考虑问题,那自然是理所当然的了。你最终要呈现给客户或者说是其他调用你的代码模块的东西就是,一些输入和期望的输出,而就进有无期望的输出就是通过测试完成的!于是这又是一个以人为本的体现!再者,事实上tdd能尽量的把测试工作再编码阶段就完成,这样做的莫大好处在于补救bug的代价变小了,在软件工程学中有这样一个说法就是,bug发现的越完,补救的代价越大?如果你完全的依靠传统软件工程学中的测试步骤,以及测试人员的话,那补救bug的代价将会非常之大,开发人员甚至已经忘了这段代码的作用了。而如果采用测试驱动的方法学,将大大的缩短最终的集成测试的时间,使尽量多的bug在编码阶段就已经得到了解决!
       之后我就要结合一下我所做过的一个算得上使半个敏捷开发的项目的经验吧。之所以说半个使因为他用到了tdd方法,可又不完全是tdd。因为当时对我们的要求是写完一个方法就要做Junit或Dbunit单元测试。一开始是比较反感的,因为觉得要花费额外的时间去完成一个功能。但是最终的结果却是项目整体时间的大大缩短,最后的集成测试花了2天不到就完成了。(事实上不仅如此,在开发过程中往往会调用别人负责的模块,由于每个功能的完成都有单元测试的保证,碰到这种情况时,几乎也没有因为别人代码的问题而耽搁过)。当然了tdd的方法学还需要有工具的支持才能事倍功半。当时我们用了一个日构件系统,做到了每日集成,每日测试,每天这个系统都会在半夜自动把cvs上的代码下载下来,把所有的测试案例跑一遍,第二天开发人员来到公司之后所要做的就是登录这个日构件系统,看看每个人负责的测试案例有没有都通过,代码覆盖率时多少。事实上这又是另一个敏捷开发的方法,XP Programming。
      所有网上的文章都在描述敏捷开发所带来的效率和以人为本。不过我想在中国敏捷开发能够未我们带来的最重要的东西却是真正对程序员的尊重!敏捷开发的方法学是要开发人员以对开发工作的热情和开发人员之间的协作,良性竞争为基础的。这在中国目前的以外包业为主的软件业中是很少见的,我们目前的软件业所需要的似乎只是循规蹈矩的按照传统工程学的工序一步步走下来的,编写无数重复代码的廉价劳动力!而中国却还一直在叫嚣缺乏高级软件人才!事实上正是所谓的有了高级,低级,软件蓝领,软件白领之分,才导致了优秀人才的缺乏!正是由于这些对程序员的不尊重,才导致了中国软件业落后的局面!程序员就是程序员,既不是做简单重复脑动的所谓软件蓝领,也不是制定一些往往事与愿违的开发计划,管理管理手下的经理人员。那是什么呢?程序员是能够改变世界的工程师!是把现实问题,转换成计算机描述并加以解决的技术人员!是为这个世界变得更简单而出力的劳动者!最重要的是,他们是在感受世界的人!
     最后还是用这句话来结束这篇blog:开发以人为本!
 
2、敏捷开发:理念、成功与失败 本文深入探讨了敏捷开发的理念、成功与失败的原因,以及如何避免陷入形式主义的陷阱。文章回顾了敏捷开发的起源,包括软件危机、轻量级方法的兴起以及敏捷宣言的诞生,分析了敏捷开发的本质在于适应性和以人为本。此外,文章还总结了敏捷开发成功的关键因素,如学习和响应变化、以工作软件展示进度,并提出了避免敏捷开发失败的具体建议,帮助团队真正践行敏捷哲学,实现软件开发的价值最大化。 阅读详情

相关推荐

智能体在车联网中的应用:第19天 智能体理论与初步实践 D30:阶段小结——在SUMO中使用TraCI控制预编程智能体

本文介绍了如何将强化学习从算法仿真迁移到交通系统实践,重点讲解了SUMO微观交通仿真平台与TraCI实时控制接口的架构。通过构建一个预编程驾驶智能体,演示了车辆从起点到目标点的导航控制。文章详细解析了TraCI的双向通信机制和事件驱动模型,对比了其与传统RL环境的差异,并提供了完整的Python实现框架,包括路网配置、车辆控制和基于向量场的导航逻辑。该实践为后续开发高级学习型交通智能体奠定了基础。

IT深耕十余载,大道之简 1483

【敏捷1.4】敏捷开发环境:领导与团队

敏捷开发环境:领导与团队敏捷中,最重要的是什么呢?基本上所有的教材都会说,敏捷是以人为本的,以团队为核心的。第一,敏捷不提倡加班,第二,敏捷让团队自管理,第三,敏捷中的领导都是服务员而不是...

硬核项目经理 925

PTPX功耗分析实战——从脚本配置到报告解读

本文详细介绍了PTPX功耗分析的全流程,从脚本配置到报告解读,帮助工程师快速掌握芯片设计中的功耗估算技术。文章涵盖了环境搭建、波形文件处理、功耗报告解析等关键环节,并提供了实战经验和优化建议,特别适合需要提升PTPX功耗分析效率的开发者。

weixin_29248313的博客 281

敏捷开发:以人为本的高效开发模式

敏捷开发以人为本,强调个体和交互的价值,倡导响应变化而非盲目遵循计划,推崇增量迭代式的开发流程。这种方法非常适用于小型项目,尤其是在需求不完全明确或经常变化的情况下。通过小步快跑的方式,敏捷开发能够高效应对复杂的项目挑战。 本文将深入探讨敏捷开发的核心理念、敏捷宣言的四大价值观以及敏捷开发如何在实践中应用,并最终分析敏捷开发如何在实际开发过程中提供了更大的灵活性和可适应性。

cooldream2009的博客 2598

UMD与KMD的协同交响曲:揭秘图形渲染背后的驱动架构设计

本文深入解析了图形渲染中用户态驱动(UMD)与内核态驱动(KMD)的协同架构设计,揭秘了从API调用到像素渲染的完整流水线。通过分析UMD的API转换、着色器编译等核心职责,以及KMD的内存管理、任务调度等关键功能,帮助开发者优化图形应用性能,提升渲染效率。

cc789的博客 724

手把手教你搞定EMC EFT测试:从电源线到信号线的完整整改实战(附常见失败原因)

本文详细解析了EMC EFT测试中的常见问题及整改措施,从电源线到信号线的完整实战方案。通过四步定位法和成本最优整改策略,帮助工程师有效应对电快速脉冲群干扰,提升产品通过率并降低成本。

weixin_30920597的博客 499

Scrum之旅

个体和交互重于过程和工具 敏捷方法认为,人是软件开发中最重要的因素。开发团队成员之间有效的交流、沟 通与协作,比单纯的编程能力更为重要。人与人面对面的交流,是最有效、最迅速的交 换信息的方式 可以工作的软件重于面面俱到的文档 过多的文档需要开发人员花费大量时间来维护。文档应该是为程序服务的,因此应 当短小精悍、易于维护,而且主题突出。敏捷方法认为最根本的...

黑白猪的世界 130

LAMMPS实战指南 - 从in文件到分子动力学模拟的完整流程解析

本文详细解析了LAMMPS分子动力学模拟的完整流程,从理解in文件的核心作用与基础结构开始,逐步指导如何创建模拟体系、选择势函数、进行能量最小化与初始化,并深入讲解了NVT/NPT系综弛豫与生产模拟的关键步骤。文章还提供了常见问题的避坑指南与实战技巧,帮助初学者快速掌握从编写in文件到成功运行模拟的全过程。

weixin_28365523的博客 398

【敏捷那些事儿 02期】如何理解敏捷价值观和原则?

从底层逻辑看敏捷

在数字化道路无限探索 1013

2026年瑞芯微数字IC设计笔试试卷带答案

本文主要考察数字集成电路设计相关知识,包括低功耗设计、时序分析、跨时钟域处理、总线协议等内容。试题分为单选题、多选题、代码设计题和简答题四部分。 单选题涉及门控时钟降低动态功耗、静态时序分析的限制、跨时钟域同步方案、时序违例修复方法、AHB总线信号、异步FIFO设计、半导体工艺电阻特性、二进制数转换、同步/异步复位比较以及分频电路设计等知识点。 多选题重点考查动态功耗优化技术、亚稳态特性、异步FIFO设计规范、Verilog可综合代码编写要求以及AXI总线协议特点等。 代码设计题要求实现一个同步FIFO和3

Open 217

基于知识图谱的智能工作流引擎

随着大数据和人工智能技术的快速发展,企业和组织对数据的依赖程度日益增加。为了更好地管理和利用这些数据,知识图谱逐渐成为一种重要的工具。知识图谱不仅能够以结构化的方式表示复杂的知识,而且能够通过推理和查询提供深层次的信息。然而,如何将知识图谱应用于实际业务场景中,尤其是如何构建智能工作流引擎,仍然是一个具有挑战性的问题。智能工作流引擎是一种能够自动化执行复杂业务流程的系统,它可以通过对业务规则和数据的分析,自动生成和优化工作流,从而提高工作效率和准确性。

AI天才研究院 1872

一、敏捷开发概述:全面理解敏捷开发的核心理念

(Agile Development)是一种以人为本、强调团队协作和快速交付的软件开发方法论。敏捷开发的核心理念在于,通过短周期的迭代开发、灵活应对变化、频繁交付可用软件来满足用户需求和市场变化,进而提升客户的满意度。与传统的瀑布式开发方法不同,敏捷开发倡导通过逐步交付软件的增量来快速适应变化。每一个增量都是一个独立的功能模块,开发团队可以在每次迭代结束时收集客户的反馈,进而调整开发方向。

xiaoqi270620903的专栏 1782

【MATLAB代码】二维平面的TOA定位,GDOP(几何精度因子)和CRLB(克拉美罗下界)计算与输出

本文介绍了一个MATLAB程序,用于计算二维定位场景中的几何精度因子(GDOP)和克拉美罗下界(CRLB)。该程序针对单目标和四个锚点配置,通过网格扫描法计算空间各点的GDOP分布,并以等高线图可视化展示。程序还可计算特定位置的理论定位精度下限(CRLB),输出X/Y方向标准差和GDOP值。核心算法通过构建几何矩阵和费舍尔信息矩阵实现,考虑了测量误差影响,并处理了特殊位置情况。程序提供了完整的源代码和参数修改说明,适用于定位系统精度分析。

985工科博士毕业,专攻定位、导航和滤波等算法研究。从业10年,主要使用MATLAB 803

敏捷开发思想

敏捷开发思想SCRUM 是什么?敏捷开发是什么?以人为核心是什么意思?迭代 是什么意思?SCRUM 与 敏捷开发思想有什么关系?敏捷开发的模式分类(摘抄至互联网):SCRUM 的工作流程(摘抄至互联网)流程: SCRUM 是什么? Scrum是敏捷开发中的名词。 敏捷开发是什么? 敏捷开发(Agile Development) 是一种以人为核心、迭代、循序渐进的开发方法。 简单的说的话: 它只是...

落笔丶的博客 3830

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

敏捷开发横空出世 以人为本颠覆软件工程(转贴)

作者: 缪炀《计算机产品与流通》CNETNews.com.cn 2005-06-23 10:35 AM“软件行业是成功的,但也存在很多问题,”软件教父Martin Fowler 在近期一次软件开发研讨会上表示,“而且问题往往在出现时才为人们所重视。” 问题缠绕软件开发 软件开发过程中问题多多,这不是个新发现。早在上世纪60年代,北约(NATO)就提出了软件危机这一概念。在《人月神话》一书中,软件开

How To Fly -- PF's Blog 1717

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

敏捷开发小结

1. 敏捷开发简介1.1. 什么是敏捷开发     敏捷开发,简言之就是是一种以人为核心、迭代、循序渐进的开发方法。     敏捷方法强调以人为本,专注于交付对客户有价值的软件。在高度协作的开环境中,使用迭代式的方式进行增量开发,经常使用反馈进行思考、反省和总结,不停的进行自我调整和完善。1.2. 敏捷宣言1.2.1. 个体和交互重于过程和工具     敏捷方法认为,人是软件开发中最重要的因素,开

船长工作室 835

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

敏捷开发系列之旅 第一站(掀起你的盖头来)

乍一听,“敏捷开发”这个词很新鲜,其实不然。早在2001年2月,就作为一种相对新颖的产品开发模式,提出了“敏捷开发”这一概念。到底什么是“敏捷开发”呢? 诞生      也就是2001年的2月(没有考据),有17名之多的软件工程师在美国犹他州的Snowbird举行会议,讨论轻量级软件开发方法,并发布了《敏捷软件开发宣言》。这标志着敏捷开发的诞生。这一模式随后被硅谷创业公司大量应用,并于

紫羽风的博客 5007

敏捷开发:拥抱变化,加速软件交付

在当今快节奏的科技领域,敏捷开发已经成为了许多软件开发团队的首选方法。但是,什么是敏捷开发?它又如何帮助团队实现软件开发的灵活、高效和质量?让我们一起来探索这个令人着迷的开发模式。

luckcxy的专栏 883

什么是敏捷开发

水晶方法,Crystal ,是由 Alistair Cockburn 和 Jim Highsmith 建立的敏捷方法系列,其目的是发展一种提倡“机动性的”方法,包含具有共性的核心元素,每个都含有独特的角色、过程模式、工作产品和实践。它们的具体名称、理念、过程、术语都不尽相同,相对于“非敏捷”,更强调程序员团队与业务专家之间的紧密协作、面对面的沟通(认为比书面的文档更有效)、频繁交付新的软件版本、紧凑而自我组织型的团队、能够很好地适应需求变化的代码编写和团队组织方法,也更注重软件开发过程中人的作用。

东境物语 2989

敏捷开发感悟(华为实践敏捷)

一  引言      近来,在BOSS系统团队敏捷开发熏陶和感染下,对敏捷开发求知是蠢蠢欲动. 心动不如行动. 咱也不能被动接受挨打吧. 这几天向战斗在BOSS一线具体参入人员问了卷,实施敏捷开发大哥们们请教. 感觉是个好东西.它是对传统的以瀑布模式为主的项目管理一次抽取精华和改进(个人认为,PMB项目管理的理念,敏捷开发中具体方法都有它的影子,只是浓缩精华).但觉得脑子里只是一些零散的概念,没有对敏捷开发系统理解。没有整体把握,底气不足,作为敏捷开发中注重以人为主,团队自管的思想, 咱也提不出好的改进意见

ws715的专栏 4467

敏捷开发入门篇

传统开发 传统的软件开发流程,比如瀑布流程(见下图)从需求、设计,到开发、测试和部署,是一环套一环的,结束一个环节才能开始下一个,中间过程很长,且不允许有变更,等到交付的时候才发现已经与客户的目标相差太远了。这时,要想弥补就要付出巨大的代价,很多工作需要重来,从而产生了巨大的浪费。 做员工很累很没意思,像个机器人,要不停地接受命令,没有自主权,明明知道怎么走却要等命令才能行事

思想上移,行动下移 1303

敏捷开发与敏捷测试

是对于外部的Bug(比如从Beta客户报告来的),没有被现有测试用例所覆盖。当产品的功能设计出现更改时(敏捷项目中功能设计的更改频繁),所涉及的测试用例也要相应地修改,使测试用例保持和现有的功能需求同步。   3.3 根据项目不断补充Common Sense   在项目进行过程中,测试人员需要不断积累经验,不断补充、完善各类目的Common Sense标准。例如,由CTTS项目总结出的Common Sense for USA标准,在以后的美国项目中要严格按照它来执行测试,保证以前出现过的失误在以后的项目

逗号的博客 2060

敏捷开发 我的经验(二)资源计算-以人为本

在整个sprint开发过程中要做到资源合理和充分利用,并给予ST预留闲置时间。 1. 每天工作时间为8小时,可充分利用时间为80%~90%,即8*80%~8*90%=6.4~7.2小时之间。    一般的,如果整个团队配合时间较长,可以考虑资源利用率在90%,如果是新团队或者项目刚给启动,建议资源利用率80%。在团队成长过程中逐步增加资源利用率,最多不要超过90%。防止任务过多影响sprint交...

weixin_33743248的博客 231

敏捷开发的一点感受

用了3天,充分挤完了海绵里的时间,看了《轻松Scrum之旅:敏捷开发故事》这本书,觉得写得很好,有意思,找到了当时看大话设计模式时候的感觉。     从书的题目可以看出,这本书主要是讲敏捷开发的,我也是第一次接触,理解的不好还请读者见谅。     一、从技术角度看:传统的瀑布模型由于在前期花费了大量时间去分析需求和准备文档,导致在产品模型在时间上的每一次迭代都会很漫长。而这其中很可能会发生需求

waynepl1的专栏 357

敏捷宣言以及敏捷开发的特点

敏捷宣言 敏捷宣言,也叫做敏捷软件开发宣言,正式宣布了对四种核心价值和十二条原则,可以指导迭代的以人为中心的软件开发方法。 敏捷宣言强调的敏捷软件开发的四个核心价值是: 个体和互动高于流程和工具 工作的软件高于详尽的文档 客户合作高于合同谈判 响应变化高于遵循计划 ( 注:敏捷开发的第一条价值观就是“ 以人为本”,强调“...

dfgwang1202的博客 596
上一篇: 我所看到的传统软件工程学
下一篇: 为什么需要AJAX
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值