热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

敏捷软件开发原则

文章是《敏捷软件开发原则、模式与实践》,对于敏捷开发十二个原则的一些读书笔记,有直接摘录于书本,也有自己的一些理解。文章乍看起来,都是一些说教性、理论性,比较无聊的东西。但是如果结
  敏捷软件开发原则 ----《敏捷软件开发原则、模式与实践》学习笔记
 
      最近在系统地学习并且有意地在工作中实践敏捷软件开发,文章乍看起来,都是一些说教性、理论性,比较无聊的东西。
  但是如果静下心来结合自己自身的经历、思考地去阅读,可能会发现,有的观点确实很赞同,然而有的可能会有自己的想法。
  以下是在《敏捷软件开发 原则、模式与实践》一些读书笔记,斜体字是直接摘录于书本,非斜体字是自己的一些理解。
 
一、尽早的,持续地交互有价值的软件来使客户满意。初期交付的系统功能越少,最终交付的系统的质量越好。逐渐增加功能的方式,经常地交付系统和最终质量之间有非常强的相关性。交付得越频繁,最终产品的质量越高。
关于交付对象,这里指的交付给客户,我们能做的不一定是交付给客户,还可以是提交给上级、开发、产品、测试同事看一下,看是否有不合理的地方,可以及时更正。如果等到差不多完了才交付,可能出现了问题也不好改了。
关于交付的时间点,可以是软件有一部分完整可以展示的功能即可。
 
二、欢迎需求的变化,即使到了开发后期,敏捷过程能够驾驭变化,为客户创造竞争力。
其实欢迎需求变化,个人觉得只是一种无奈、坦然的说法,有谁闲着没事希望天天改需求丫。这里的意思只是说,开发软件的时候,要努力的保持软件结构的灵活性,当需求有变化的时候,让系统改动最小化。
 
三、经常地交付可以工作的软件,从几个星期到几个月,时间越短越好,不赞成交付大量的文档与计划,我们关注的目标是交付满足顾客使用的软件。
这个和第一点是类似的,尽早、经常交互,尽早发现各自对需求理解的差异、集思广益地提出对系统改进的意见。之前在一个公司,开发提交代码到SVN,每天服务器会自动把提交的代码自动编译到开发环境,这样就可以很方便地看到最新的系统。好的工具和流程,对推动交付也是很有帮助的。
 
四、在整个项目开发期间,开发人员和业务人员必须朝夕在一起工作。客户、开发人员、利益的相关者,必须进行有意义的,频繁的交互。软件项目不像发射出去了,就能够自动导航的武器。必须对软件项目持续不断地进行导航。
 
五、依靠斗志高昂的人构建项目。给他们提供所需要的环境和支持,并相信他们能够完成任务。人是项目取得成功的重要因素,其他因素(过程、环境、管理等)都被认为是次要的,当他们对人有负面影响的时候,就要对他们进行改变。
对于这点的理解,我很认同强调人的影响,看重人的作用。过程、环境、管理,并不是没有用,也不是随便被抛弃,而是,不能够一成不变,要根据人的正确反馈,不断地被改进。因为,一定的规范、管理、约束并不是一开始就是最完善的,而且也不适用于所有的场景和项目。
 
六、在团队内部,最有效率,也是最有效果的信息传达方式,就是面对面交谈。书面文档会按照和软件一样的时间来编写和更新,但是仅在需要的时候才这样做。
 
七、可以工作的软件是进度的主要度量标准。仅当30%的功能可以工作时,才确定完成了进度的30%。
 
八、敏捷过程提倡可持续地开发。出资人、开发者和用户应该总是保持稳定的开发速度。敏捷项目不是50米短跑而是马拉松长跑。团队不是全速启动,并且在开发的时候保持这个速度,相反,他们以快速,但是可持续的速度进行。
项目开发前期,就死命加班,可能坚持不了几天就身心疲惫,这样的话对项目也不好,这样到后期可能变得很松散。不过在为了完成阶段性目标,做阶段性冲刺还是可以的。
 
九、对卓越的技术和良好设计的不断追求,有助于提高软件的敏捷性。高的产品质量是获得高的开发速度的关键。不要制造了混乱后,对自己说,等有更多的时间的时候再来清理它。今天制造了混乱就必须今天清理干净。
对于这点的理解,主要有两方面:
第一、对于,花不是很长时间就能改进的东西,不要想着下次有时间再改,因为,一方面,要相信程序员的时间永远都不够用,另一方面,下次来改,可能会生疏了,花费的成本会更大。
第二、快就是慢。不要为了赶进度,而忽略了产品质量,连自己的那关也过不了。否则和测试人员的反复交互,反而会使得效率更低,最终只是眼前快而已,进度最终反而变得更慢。
 
十、简单,尽量减少工作量的艺术是相关重要的。敏捷团队不会去构建那些华而不实的系统,他们总是更愿意采用跟目标一致的最简单的方法。
这里说的有三个层面的意思,第一,是投入与产出的问题。不要花很大功夫去开发一些对于实际应用没多大意义的功能;第二,是要多思考,看看有无更简单的方法实现需求;第三,对于系统不要过度设计。
 
十一、最好的架构、需求和设计都源于自我组织的团队。敏捷团队都是自我组织的团队,责任不是从外部分配给某个团队成员,而是分配给某个团队,然后由团队来确定履行职责的最好方法。每个成员都能够共同解决项目中涉及各个方面的问题。
在实际项目中,具体的工作可能由团队不同的人来负责。虽然,即使是某一项工作不是由自己负责,但是自己有责任去提供帮助和提出意见。
 
十二、每隔一段时间,团队都要总结如何更有效率地完成工作,然后相应调整自己的行为。敏捷团队应该知道所处的环境是不断变化的,而自己也应该随着环境一起变化。
 
 
以上十二个原则,有一个大的原则,就是强调人、团队和沟通的重要性。在日常的工作中,其实可能都在有意或无意地实践着这些原则。
 
在往后的工作中,将会有计划地实践一下以上十二个原则, 并且将实践过程、效果记录下来。
 
如果有人也有兴趣一起践行这些原则,欢迎一起督促、交流、探讨。
 

敏捷软件开发原则


推荐阅读
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • 本文介绍了腾讯最近开源的BERT推理模型TurboTransformers,该模型在推理速度上比PyTorch快1~4倍。TurboTransformers采用了分层设计的思想,通过简化问题和加速开发,实现了快速推理能力。同时,文章还探讨了PyTorch在中间层延迟和深度神经网络中存在的问题,并提出了合并计算的解决方案。 ... [详细]
  • 本文内容为asp.net微信公众平台开发的目录汇总,包括数据库设计、多层架构框架搭建和入口实现、微信消息封装及反射赋值、关注事件、用户记录、回复文本消息、图文消息、服务搭建(接入)、自定义菜单等。同时提供了示例代码和相关的后台管理功能。内容涵盖了多个方面,适合综合运用。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • 本文是一位90后程序员分享的职业发展经验,从年薪3w到30w的薪资增长过程。文章回顾了自己的青春时光,包括与朋友一起玩DOTA的回忆,并附上了一段纪念DOTA青春的视频链接。作者还提到了一些与程序员相关的名词和团队,如Pis、蛛丝马迹、B神、LGD、EHOME等。通过分享自己的经验,作者希望能够给其他程序员提供一些职业发展的思路和启示。 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • 猜字母游戏
    猜字母游戏猜字母游戏——设计数据结构猜字母游戏——设计程序结构猜字母游戏——实现字母生成方法猜字母游戏——实现字母检测方法猜字母游戏——实现主方法1猜字母游戏——设计数据结构1.1 ... [详细]
  • 本文介绍了一种解析GRE报文长度的方法,通过分析GRE报文头中的标志位来计算报文长度。具体实现步骤包括获取GRE报文头指针、提取标志位、计算报文长度等。该方法可以帮助用户准确地获取GRE报文的长度信息。 ... [详细]
  • PDF内容编辑的两种小方法,你知道怎么操作吗?
    本文介绍了两种PDF内容编辑的方法:迅捷PDF编辑器和Adobe Acrobat DC。使用迅捷PDF编辑器,用户可以通过选择需要更改的文字内容并设置字体形式、大小和颜色来编辑PDF文件。而使用Adobe Acrobat DC,则可以通过在软件中点击编辑来编辑PDF文件。PDF文件的编辑可以帮助办公人员进行文件内容的修改和定制。 ... [详细]
  • CentOS 6.5安装VMware Tools及共享文件夹显示问题解决方法
    本文介绍了在CentOS 6.5上安装VMware Tools及解决共享文件夹显示问题的方法。包括清空CD/DVD使用的ISO镜像文件、创建挂载目录、改变光驱设备的读写权限等步骤。最后给出了拷贝解压VMware Tools的操作。 ... [详细]
author-avatar
pokiyo6836
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有