敏捷MVP面面观
在过去的十年中,软件开发经历了许多阶段。从使流程敏捷高效到使用DevOps简化IT服务,已经有了许多突破,MVP是对软件开发过程产生了根本性影响的进步之一。本文将深入探讨MVP在软件开发中怎样起作用、以及如何发挥作用。
什么是MVP
MVP,Minimum
Viable Product即最小化可行产品,是由Eric Ries
在《精益创业》里提出的一种软件开发方法。简单地说,就是指开发团队通过提供最小化可行产品获取用户反馈,并在这个最小化可行产品上持续快速迭代,直到产品到达一个相对稳定的阶段。它涉及到前期开发项目的基本框架,并使用最少的功能和用例,以提前降低成本,识别设计中的缺陷,同时减少上市时间。
为什么要使用MVP开发?
原始形式的软件开发是一个有缺陷的过程,开发人员一度花费大量时间和金钱,最后却发现了错误和问题。因此,MVP开发有助于提前确定主要目标用户需求,最终确定技术堆栈和功能,以及确定价值主张。特别是对于那些有严格预算指导方针的组织来说,重点应该是利用最简单的技术堆栈开发一个有意义的功能列表。
以下步骤对于确定功能并确定其优先级至关重要。
衡量市场需求
检查自己的软件在市场上提供的功能是否存在供应缺口。产品的需求可以基于满足消费者确切期望的消费者反馈。为了确定需求,我们需要分析竞争对手及其在市场上的现有产品。
识别产品的局限性
通过开发,产品的局限有助于利益相关者为未来问题做好准备,并实施适当的规划和替代方案。所有这些限制都带来了市场机会,这将带来有效的敏捷开发和用以区分市场现有产品的差异化。
跳出思维定势
下面这些步骤会让你更接近你的最终目标:
- 为高级功能设置和使用构思
- 确定项目范围
- 列出应用程序的功能和非功能特性
- 执行线框图,然后再做想法原型
完成技术堆栈
技术栈由一堆工具和技术组成,可以部署这些工具和技术来创建和发布产品。这些堆栈包含第三方、库、模块、包和工程工具,与所选择的编程语言兼容。堆栈还必须满足交付相关方所期望的业务价值的需要。
设计原型图
一个前端技术栈以及框架,为开发人员提供了使用完成组件的能力,比应用程序的自定义解决方案部署更快。这些元素可以与思想的主要后端算法联系起来,从而得到一个可测量的MVP。这可以进一步与需求、正确的客户和客户反馈相匹配。
因此,必须制定初始路线图,并与适当的企业应用程序开发服务提供商创建风险登记册。
其实MVP的本质就是在做实验,每个MVP都可以帮助回答一个针对某个假设的问题。之所以要尽可能的低成本去设计MVP,是因为MVP的本质是做实验,是试错,并不是在制造最终的产品,所以要尽可能用现有产品或者人工服务的方式来替代产品开发,尽可能地降低试错的成本。这也符合敏捷开发的“小步快跑、快速迭代”,而二者关系可以用一句话说清:敏捷开发是知道“方向”验证“方法”,最小可行产品是知道“方法”验证“方向”。
敏捷MVP面面观的更多相关文章
- 从Script到Code Blocks、Code Behind到MVC、MVP、MVVM
刚过去的周五(3-14)例行地主持了技术会议,主题正好是<UI层的设计模式——从Script.Code Behind到MVC.MVP.MVVM>,是前一天晚上才定的,中午花了半小时准备了下 ...
- 我大中华微软MVP中国区人才库
刘海峰:国内知名微软开源技术网站51Aspx 创始人,十年以上的Asp.net从业经验,微软MSDN特约讲师.Teched讲师.ImagineCup大赛评委.人大出版社研修班特约讲师,曾多次受邀访问美 ...
- #一周五# VS2015 CTP6, TFS2015 CTP1更新,老衣的开发工具汇总,2015 MVP 社区巡讲
又到周五,这一周博主我工作效率极高,每天更新博客一篇,<快速创建网站>系列已经进程大半了,希望这个系列能够对大家有所帮助.今天周五了,博主要休息一下,就给大家唠叨一下这段时间都发生了什么. ...
- js架构设计模式——你对MVC、MVP、MVVM 三种组合模式分别有什么样的理解?
你对MVC.MVP.MVVM 三种组合模式分别有什么样的理解? MVC(Model-View-Controller)MVP(Model-View-Presenter)MVVM(Model-View-V ...
- #一周五# VS2015 CTP6, TFS2015 CTP1更新,老衣的开发工具汇总,2015 MVP 社区巡讲
又到周五,这一周博主我工作效率极高,每天更新博客一篇,<快速创建网站>系列已经进程大半了,希望这个系列能够对大家有所帮助.今天周五了,博主要休息一下,就给大家唠叨一下这段时间都发生了什么. ...
- 我大中华微软MVP中国区人才库(转)
出处:http://www.genshuixue.com/i-cxy/p/15349735 刘海峰:国内知名微软开源技术网站51Aspx 创始人,十年以上的asp.net从业经验,微软MSDN特约讲师 ...
- MVP社区巡讲 12月5日北京站| 12月12日上海站
2015年底的社区巡讲Powered MVP Roadshow正式启动啦!12月5日周六下午北京场,12月12日周六下午上海场. 欢迎各位邀请您的同事朋友来参加MVP的社区活动,也邀请您发送活动信息( ...
- MVC,MVVM,MVP等设计模式的分析
从Script到Code Blocks.Code Behind到MVC.MVP.MVVM 三个模式按照大致的历史进程将这些概念进行划分: Script Code Blocks.Code Behind ...
- 从Script到Code Blocks、Code Behind到MVC、MVP、MVVM(转载)
http://www.cnblogs.com/indream/p/3602348.html 刚过去的周五(3-14)例行地主持了技术会议,主题正好是<UI层的设计模式——从Script.Code ...
- 敏捷软件开发_实例2<四>
敏捷软件开发_实例2 上一章中对薪水支付案例的用例和类做了详细的阐述,在本篇会介绍薪水支付案例包的划分和数据库,UI的设计. 包的划分 一个错误包的划分 为什么这个包是错误的: 如果对classifi ...
随机推荐
- 一秒出图?SDXL-Turbo实时AI绘画整合包下载
SDXL Turbo是一种快速生成的AI构图模型,它基于一种称为对抗性扩散蒸馏的新训练方法,该方法允许在1到4个步骤中以高图像质量对大规模基础图像扩散模型进行采样,并将其与对抗性损失相结合,以确保即使 ...
- djang中orm使用iterator()
当查询结果有很多对象时,QuerySet的缓存行为会导致使用大量内存.如果你需要对查询结果进行好几次循环,这种缓存是有意义的,但是对于 queryset 只循环一次的情况,缓存就没什么意义了.在这种情 ...
- Django关于StreamingHttpResponse与FileResponse响应文件或视频的下载请求
StreamingHttpResponse from django.http import StreamingHttpResponse StreamingHttpResponse(streaming_ ...
- Java HashMap 详解
HashMap HashMap 继承自 AbstractMap,实现了 Map 接口,基于哈希表实现,元素以键值对的方式存储,允许键和值为 null.因为 key 不允许重复,因此只能有一个键为 nu ...
- 【Azure Redis 缓存】Lettuce 连接到Azure Redis服务,出现15分钟Timeout问题
问题描述 在Java应用中,使用 Lettuce 作为客户端SDK与Azure Redis 服务连接,当遇见连接断开后,长达15分钟才会重连.导致应用在长达15分的时间,持续报错Timeout 问题解 ...
- 【Azure 应用服务】登录App Service 高级工具 Kudu站点的 Basic Auth 方式
问题描述 从Azure App Service的页面中,直接跳转到高级管理工具Kudu站点(https://<your app service name>.scm.chinacloudsi ...
- C++之指针变量的定义和使用
从b站上黑马程序员的c++课里学到的C++之指针变量的定义和使用 指针变量的定义和使用 简单理解指针就是地址. 内存编号是从0开始记录的,一般用16进制数字表示 1 #include <iost ...
- 关于KMP模式匹配的一些思考
算法简介 模式匹配 给定主串text和模式串pattern,在主串中查找,如果找到了模式串,返回模式串在主串中的起始位置,从1开始计数. 暴力求解求解模式匹配 算法的核心思想是:蛮力法.即使用两个指针 ...
- CXPACKET等待类型分析
背景 客户反馈今天8点钟开始进入业务高峰期后,数据库的CPU利用率非常高,基本达到了100%,前端应用也非常慢.怀疑是昨晚业务系统升级导致,请我们紧急协助分析. 现象 登录到SQL专家云,进入相关时间 ...
- SQLServer 导入 Excel 表数据报错“文本被截断。。。”
报错详情(关键信息就是:文本被截断) 错误 0xc020901c: 数据流任务 1: 输出"Excel 源输出"(9) 上的 输出列"xxxxx"(78) 出错 ...