当前位置:网站首页>浅谈敏捷开发
浅谈敏捷开发
2022-08-03 00:28:00 【xzystart】
1.什么是敏捷开发
敏捷开发是一种以人为核心、迭代、循序渐进的开发方法。在敏捷开发中,软件项目的构建被切成多个子项目,各个子项目的成果都是经过测试,具备集成和可运行性。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的子项目,并分别完成,在此软件过程中软件一直处于可使用状态。
1.1、敏捷开发原则
主张简单:如果现在不需要这项功能,就不要再设计中增加它。不必要对这个系统进行过分设计,等日后需求有变化时,再来重构这个系统
拥有变化:需求时刻在变,人们对于需求的理解也时刻在变。在项目开发过程中,项目成员可能会变化。项目相关干系人的观点也可能会变化,前期定制的目标、标准也可能会变化。因此开发方法必须能够拥抱变化。
可持续性:即便已经把一个能够运行的系统交付给用户,项目可能也是失败的–实现项目关系人的需求,其中就包括系统应该要有足够的鲁棒性,能够适应日后的发展。可持续性指的是下一个主要的发布版本,捉着正在构建的系统的运转和支持。要做到这一点,不仅仅要构建高质量的软件,还要创建足够的文档,保证下一场软件竞争能有效的进行。
递增的变化:没必要在一开始的时候就设计一个囊括一切的框架模型,只要设计一个小的最基础的核心架构,打下基础,然后慢慢地改进架构,或者在不需要时丢弃这个架构,这就是递增的思想。
快速反馈:从开始采取行动,到获得行动的反馈,二者之间的时间至关重要。和客户紧密工作,了解并分析他们的需求,或是开发满足他们需求的用户界面,这样就提供了快速反馈的机会。
1.2、敏捷开发过程
测试驱动开发(Test-Driven Development,TDD)是一种不同于传统软件开发流程的新型开发方法。它要求在编写某个功能的代码之前要先编写测试代码,然后只编写测试通过的功能代码,通过测试来推动整个开发的进行。这有助于编写简洁可用和高质量的代码,有很高的灵活性和健壮性,能够快速响应变化,并加速开发过程。测试驱动开发的基本过程:(1)、快速新增一个测试(2)、运行测试,发现新增的测试不能通过(3)、做一些小改动,尽快让测试程序可运行(4)、再次运行测试,并且让测试通过(5)、重构代码,消除重复设计,优化设计结构
持续集成:频繁、持续地在多个团队成员的工作中进行集成,并给与反馈。主要是SVN等版本控制器的使用
结对编程:两个程序员在一台机器上共同工作。一个输入代码,一个审查。主要是与测试相结合
小版本发布,一般以周、月为单位,尽可能多的发布产品。
较少的文档。敏捷开发中不是没有文档,而是有大量的文档,即测试代码,这些代码真是的反应了用户的需求以及系统API的用法。
2.敏捷开发与传统开发
整体而言,概念非常简单。
我们要造一个代步工具,去很远的地方。
传统的方式,是这样的。
- 造轮胎。
- 造车底盘。
- 造车身。
- 车内布局。
- 安装引擎。
- 开始上路。
先不说方式的好坏,我们再看敏捷开发方式。
- 造滑板。
- 造自行车。
- 造摩托车。
- 造三轮车。
- 造汽车。
现在再来对比一下,两种思维方式的不同。
根据目前的社会节奏和产品竞争的时效性,用最快的速度把东西投入市场,比花更多时间把更好的东西投入市场的效益比,要好得多。
对比:
传统方式,需要最后一步,才能将产品投入市场。
敏捷开发,再任何一步,都能将产品投入市场,抓住最佳时机。
3. 敏捷开发与DDD架构
DDD领域驱动设计的开发模式十分契合敏捷开发的思想,一条业务线开发完成后,便可以上线部署,同时DDD架构下即使业务体量变大后,依然具有面向修改封闭,面向扩展开放的特性(MVC架构下实体类之间的关系是复杂的网状结构,成为大泥球,牵一发而动全身,导致不敢轻易改代码;),所以即使系统膨胀,DDD架构依然能满足敏捷开发原则
边栏推荐
猜你喜欢

全栈---CORS

Day017 封装

js显示隐藏手机号

一套开源的可快速搭建自己的物联网/智能家居系统源码

全栈---Proxy

Auto.js special positioning control method cannot perform blocking operations on the ui thread, please use setTimeout instead

解决错误:Optional int parameter ‘pageSize‘ is present but cannot be translated into a null value due to

新公链时代的跨链安全性解决方案

pytest-常用运行参数

有奖提问|《新程序员》专访“Apache之父”Brian Behlendorf
随机推荐
新公链时代的跨链安全性解决方案
阿里云增强版实人认证--银行卡要素核验
谷歌 Chrome 浏览器 104 正式版发布:加快网页加载,蓝牙 API 改进
TensorFlow学习记录(一):基本介绍
【QT】自定义工程封装成DLL并如何调用(带ui界面的)
@GetMapping、@PostMapping、@PutMapping、@DeleteMapping的区别
【多线程】Thread类的基本用法
C语言:链表
剑指 Offer 21. 调整数组顺序使奇数位于偶数前面
flutter 时间戳转日期
自己做的选择
Moco of Mock tools use tutorial
一套开源的可快速搭建自己的物联网/智能家居系统源码
FreeRTOS任务管理
优秀论文以及思路分析02
关于地图GIS开发事项的一次实践整理(上)
全栈----跨域
九零后程序员心声:互联网的同行们,别卷了,再卷人都卷没了
公司招个程序员,34岁以上两年一跳的不要,开出工资以为看错了
稳压电源: 电路图及类型