关于敏捷开发的点点思考 V0.0.1
絮絮叨叨:
前段时间在阅读文章的时候看到这个词,查了下什么是敏捷开发,然后深深吸引了我的注意力。
最开始时候理解敏捷开发就是快速开发,而作为一个开发者,自己在做一些业余项目时,深刻的感觉到开发效率低下。
在后面的了解中,了解了更多关于敏捷开发的知识,而对自己的开发流程有了些不一样的思考。
注:这里不介绍敏捷开发的详细流程,只有从敏捷开发开始产生的一些思考。
什么是敏捷开发
首先看敏捷开发的概念:
敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。
这句话里面的几个词体现了敏捷开发的要点:需求变化、迭代、循序渐进。
敏捷开发所对应的是传统的瀑布式开发:需求评审、概要设计、详细设计、开发、单元测试、集成测试、发布。 这也是电子行业的大部分开发模式,电子行业不同与软件开发,可以在线升级,大多数电子产品生产完成后就无法更新,所以必须要求在发布时保证功能的完整性和可靠性。
敏捷开发的核心是将整体项目分解为多个迭代版本,在迭代的过程中优化和改进代码。
在最开始时,不要求代码设计时完美的,而是先发布核心功能,然后在根据反馈,优化项目代码。
迭代开发将一个大任务,分解成多次连续的开发,本质就是逐步改进
对于个人开发者在业余开发时,往往是有个想法之后,开始确定需求,然后找下网上开源的代码,是否又现有的轮子可用,然后进行方案选型,确定硬件和软件框架;开始设计PCB,同时开发软件开发
所谓"增量开发",指的是软件的每个版本,都会新增一个用户可以感知的完整功能。也就是说,按照新增功能来划分迭代。
师父给我举过一个例子,微信的开发可以看成一个敏捷开发的流程,在最开始的微信版本中只具备核心的语音和文字聊天功能,在后期不断添加了朋友圈、公众号、小程序等一系列的功能。这个就是通过版本的迭代进行优化和改进的例子。
敏捷开发的第一个好处,就是早期交付,从而大大降低成本。
对于成本敏感,需要快速交付来抢占市场的产品,敏捷开发比较合适。现在硬件生产、采购的效率也很高,周期可以缩短。对于质量要求高,时间要求不紧,产品生命周期长的项目,可以认真做好做细各个环节,尽量减少反复,没必要用敏捷
在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。
简单地来说,敏捷开发并不追求前期完美的设计、完美编码,而是力求在很短的周期内开发出产品的核心功能,尽早发布出可用的版本。然后在后续的生产周期内,按照新需求不断迭代升级,完善产品。
在我的个人开发时,基本采用的就是瀑布式开发,从最开始的有一个idea,然后开始设计方案,确定器件选型,进行硬件开发,完成软件的各个模块,然后整体测试,最后完成一个项目。
在这个流程中,经常时有一个想法,开始确定设计方案,这个过程自己的想法经常变化,当明确整个项目的需求就用了一周甚至更长的时间。然后在器件选型,整体方案设计,软件开发的每个步骤中都会反复更改,导致整个项目周期拖的很长,一个项目几个月都没有看到成果,没有正向反馈,导致项目弃坑(现在弃坑的项目一大堆。。。)
按照我的理解,在个人开发的过程中,最开始不应该追求完美,而是先完成最开始的核心功能,完成第一版功能后,有了正向反馈,在进行第二版开发。
所以这个文章写作的时候也是按这个思路进行的,首先把所有脑海中的想法和查找的重要资料记录下来,在后期的时候在对文字进行整理排版。