在过去的十年中,软件开发经历了许多阶段。从使流程敏捷高效到使用DevOps简化IT服务,已经有了许多突破,MVP是对软件开发过程产生了根本性影响的进步之一。本文将深入探讨MVP在软件开发中怎样起作用、以及如何发挥作用。

什么是MVP

MVP,Minimum
Viable Product即最小化可行产品,是由Eric Ries
在《精益创业》里提出的一种软件开发方法。简单地说,就是指开发团队通过提供最小化可行产品获取用户反馈,并在这个最小化可行产品上持续快速迭代,直到产品到达一个相对稳定的阶段。它涉及到前期开发项目的基本框架,并使用最少的功能和用例,以提前降低成本,识别设计中的缺陷,同时减少上市时间。

为什么要使用MVP开发?

原始形式的软件开发是一个有缺陷的过程,开发人员一度花费大量时间和金钱,最后却发现了错误和问题。因此,MVP开发有助于提前确定主要目标用户需求,最终确定技术堆栈和功能,以及确定价值主张。特别是对于那些有严格预算指导方针的组织来说,重点应该是利用最简单的技术堆栈开发一个有意义的功能列表。

以下步骤对于确定功能并确定其优先级至关重要。

衡量市场需求

检查自己的软件在市场上提供的功能是否存在供应缺口。产品的需求可以基于满足消费者确切期望的消费者反馈。为了确定需求,我们需要分析竞争对手及其在市场上的现有产品。

识别产品的局限性

通过开发,产品的局限有助于利益相关者为未来问题做好准备,并实施适当的规划和替代方案。所有这些限制都带来了市场机会,这将带来有效的敏捷开发和用以区分市场现有产品的差异化。

跳出思维定势

下面这些步骤会让你更接近你的最终目标:

  • 为高级功能设置和使用构思
  • 确定项目范围
  • 列出应用程序的功能和非功能特性
  • 执行线框图,然后再做想法原型

完成技术堆栈

技术栈由一堆工具和技术组成,可以部署这些工具和技术来创建和发布产品。这些堆栈包含第三方、库、模块、包和工程工具,与所选择的编程语言兼容。堆栈还必须满足交付相关方所期望的业务价值的需要。

设计原型图

一个前端技术栈以及框架,为开发人员提供了使用完成组件的能力,比应用程序的自定义解决方案部署更快。这些元素可以与思想的主要后端算法联系起来,从而得到一个可测量的MVP。这可以进一步与需求、正确的客户和客户反馈相匹配。

因此,必须制定初始路线图,并与适当的企业应用程序开发服务提供商创建风险登记册。

其实MVP的本质就是在做实验,每个MVP都可以帮助回答一个针对某个假设的问题。之所以要尽可能的低成本去设计MVP,是因为MVP的本质是做实验,是试错,并不是在制造最终的产品,所以要尽可能用现有产品或者人工服务的方式来替代产品开发,尽可能地降低试错的成本。这也符合敏捷开发的“小步快跑、快速迭代”,而二者关系可以用一句话说清:敏捷开发是知道“方向”验证“方法”,最小可行产品是知道“方法”验证“方向”。

敏捷MVP面面观的更多相关文章

  1. 从Script到Code Blocks、Code Behind到MVC、MVP、MVVM

    刚过去的周五(3-14)例行地主持了技术会议,主题正好是<UI层的设计模式——从Script.Code Behind到MVC.MVP.MVVM>,是前一天晚上才定的,中午花了半小时准备了下 ...

  2. 我大中华微软MVP中国区人才库

    刘海峰:国内知名微软开源技术网站51Aspx 创始人,十年以上的Asp.net从业经验,微软MSDN特约讲师.Teched讲师.ImagineCup大赛评委.人大出版社研修班特约讲师,曾多次受邀访问美 ...

  3. #一周五# VS2015 CTP6, TFS2015 CTP1更新,老衣的开发工具汇总,2015 MVP 社区巡讲

    又到周五,这一周博主我工作效率极高,每天更新博客一篇,<快速创建网站>系列已经进程大半了,希望这个系列能够对大家有所帮助.今天周五了,博主要休息一下,就给大家唠叨一下这段时间都发生了什么. ...

  4. js架构设计模式——你对MVC、MVP、MVVM 三种组合模式分别有什么样的理解?

    你对MVC.MVP.MVVM 三种组合模式分别有什么样的理解? MVC(Model-View-Controller)MVP(Model-View-Presenter)MVVM(Model-View-V ...

  5. #一周五# VS2015 CTP6, TFS2015 CTP1更新,老衣的开发工具汇总,2015 MVP 社区巡讲

    又到周五,这一周博主我工作效率极高,每天更新博客一篇,<快速创建网站>系列已经进程大半了,希望这个系列能够对大家有所帮助.今天周五了,博主要休息一下,就给大家唠叨一下这段时间都发生了什么. ...

  6. 我大中华微软MVP中国区人才库(转)

    出处:http://www.genshuixue.com/i-cxy/p/15349735 刘海峰:国内知名微软开源技术网站51Aspx 创始人,十年以上的asp.net从业经验,微软MSDN特约讲师 ...

  7. MVP社区巡讲 12月5日北京站| 12月12日上海站

    2015年底的社区巡讲Powered MVP Roadshow正式启动啦!12月5日周六下午北京场,12月12日周六下午上海场. 欢迎各位邀请您的同事朋友来参加MVP的社区活动,也邀请您发送活动信息( ...

  8. MVC,MVVM,MVP等设计模式的分析

    从Script到Code Blocks.Code Behind到MVC.MVP.MVVM 三个模式按照大致的历史进程将这些概念进行划分: Script Code Blocks.Code Behind ...

  9. 从Script到Code Blocks、Code Behind到MVC、MVP、MVVM(转载)

    http://www.cnblogs.com/indream/p/3602348.html 刚过去的周五(3-14)例行地主持了技术会议,主题正好是<UI层的设计模式——从Script.Code ...

  10. 敏捷软件开发_实例2<四>

    敏捷软件开发_实例2 上一章中对薪水支付案例的用例和类做了详细的阐述,在本篇会介绍薪水支付案例包的划分和数据库,UI的设计. 包的划分 一个错误包的划分 为什么这个包是错误的: 如果对classifi ...

随机推荐

  1. python 创建动态类

    一般情况下多数是预先定义类 而少数特殊情况就需要去动态创建类了,直接贴代码. class BaseModel(Model): class Meta: database = _tb class_new ...

  2. Windows11补丁更新后无法使用Wifi和蓝牙

    最近在我的ThinkPAD T14上更新了Windows 11补丁,重启后Wifi和蓝牙鼠标都不能使用了,无法连接Wifi网络,也无法添加蓝牙设备. 使用厂家自带的管理工具查看驱动都是最新的,一度不知 ...

  3. 万字Java进阶笔记总结

    JavaApi 字符串 String 注意:Java中"=="操作符的作用: 基本数据类型:比较的是内容. 引用数据类型比较的是对象的内存地址. StringBuffer/Stri ...

  4. 问题:AttributeError: module 'lib' has no attribute 'OpenSSL_add_all_algorithms'

    分析 在使用支付宝沙箱时,报了这个错误,该问题是没有安装openssl包 解决 pip3 install pyOpenSSL 安装后再次运行如果还是报错,请降低加密库 pip install cryp ...

  5. ASP.NET Core MVC应用模型的构建[3]: Controller的收集

    从编程的角度来看,一个MVC应用是由一系列Controller类型构建而成的,所以对于一个代表应用模型的ApplicationModel对象来说,它的核心就是Controllers属性返回的一组Con ...

  6. 大众点评-CAT监控平台

    前言 我们禀着发现问题,解决问题的方针,针对后台诸多的服务,如何实时监控接口性能和访问频率,还要统计大盘信息?CAT作为大众点评开源的系统监控平台项目,下面就介绍一下CAT平台的搭建步骤. CAT作为 ...

  7. javascript浮点数相减、相乘出现一长串小数

    149.7 * 100 = 14969.999999999998 3.57 - 2.33 = 1.2399999999999998 这是JavaScript浮点运算采用IEEE 754标准导致的Bug ...

  8. Codeforces Round 914 (Div. 2)A~C

    A 反过来考虑,由皇后和国王的位置去寻找骑士的位置,当一个点既可以被皇后找到,也可以被国王找到时就说明这个点是满足条件的 #include <bits/stdc++.h> #define ...

  9. Kubernetes: kube-controller-manager 源码分析

    0. 前言 在 Kubernetes 架构中,controller manager 是一个永不休止的控制回路组件,其负责控制集群资源的状态.通过监控 kube-apiserver 的资源状态,比较当前 ...

  10. Java中关键字-instanceof-的真实应用场景-2022新项目

    instanceof关键字主要用来判断两个对象是否为同一种类型,举个例子如果有猫类.动物类,猫类继承自动物类: 判断某个类是否为动物类,就可以使用instanceof关键字.下面简单介绍几种真实的应用 ...