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

敏捷软件开发原则

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

敏捷软件开发原则


推荐阅读
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 本文内容为asp.net微信公众平台开发的目录汇总,包括数据库设计、多层架构框架搭建和入口实现、微信消息封装及反射赋值、关注事件、用户记录、回复文本消息、图文消息、服务搭建(接入)、自定义菜单等。同时提供了示例代码和相关的后台管理功能。内容涵盖了多个方面,适合综合运用。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 后台获取视图对应的字符串
    1.帮助类后台获取视图对应的字符串publicclassViewHelper{将View输出为字符串(注:不会执行对应的ac ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • 动态规划算法的基本步骤及最长递增子序列问题详解
    本文详细介绍了动态规划算法的基本步骤,包括划分阶段、选择状态、决策和状态转移方程,并以最长递增子序列问题为例进行了详细解析。动态规划算法的有效性依赖于问题本身所具有的最优子结构性质和子问题重叠性质。通过将子问题的解保存在一个表中,在以后尽可能多地利用这些子问题的解,从而提高算法的效率。 ... [详细]
  • Java验证码——kaptcha的使用配置及样式
    本文介绍了如何使用kaptcha库来实现Java验证码的配置和样式设置,包括pom.xml的依赖配置和web.xml中servlet的配置。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • 在project.properties添加#Projecttarget.targetandroid-19android.library.reference.1..Sliding ... [详细]
  • 猜字母游戏
    猜字母游戏猜字母游戏——设计数据结构猜字母游戏——设计程序结构猜字母游戏——实现字母生成方法猜字母游戏——实现字母检测方法猜字母游戏——实现主方法1猜字母游戏——设计数据结构1.1 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • 本文介绍了一种解析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社区 版权所有