炼金术(1): 识别项目开发中的ProtoType、Demo、MVP
软件开发是很分裂的,只有不断使用原则和规律,才能带来质量。
只要不是玩具性质的项目,项目应该可以大概划分为0-1,1-10,10-100,100-1000四个种重要阶段。其中,0-1是原型验证性的;1-10是Demo展示性的;而10-100是项目的最小功能集,可以让产品初步达到可以第一次发布的阶段;最后100-1000则需要对项目做持续的迭代,完善项目的完整功能,达成完整发布。
项目立项的时候,可以为一个项目做出原型(ProtoType)。项目原型是内部用的,使用的开发工具也可以是内部的。原型的核心目的是验证项目的核心能力,以及这个核心能力是有价值的,值得我们为之发起一个团队项目去设计、实现、测试、发布产品。原型对应的是项目的0-1阶段。
项目立项之后,可以为一个项目做出Demo。项目Demo是对外的,Demo要至少能看能用能展示核心功能。Demo的核心目的是展示项目的核心功能,让外部看到产品能提供的一些关键和核心能力,作为项目可以达成目标的初步证明。Demo对应的是项目的1-10阶段。
Demo阶段过后,需要立即对项目整体功能做功能规约,找出项目完整功能的最小子集,也就是所谓的MVP(Minimum Viable Product),如下图中,从项目的大金字塔中切出一个产品真正的MVP部分,也就是如下的阴影部分。并且在这个基础上控制需求、人力、时间、金钱等成本优先做好这些阴影部分,以达到第1个产品可用功能发布。MVP发布是一个核心功能完备的可用的产品,它不是Demo、更不是ProtoType。在MVP阶段,如果需求、人力、时间、金钱没有做好严格控制,就会导致MVP膨胀,从而大概率就会延期,并且无法形成项目的良性的短周期设计-开发-测试-发布-反馈循环。
识别项目开发中的ProtoType、Demo、MVP,对于项目初期控制是有用的,这三者应该被识别出来。
参考资料:
[1] Demos, Prototypes, and MVPs
--end--
炼金术(1): 识别项目开发中的ProtoType、Demo、MVP的更多相关文章
- 团队项目开发中,常见的版本控制有svn,git
团队项目开发中,常见的版本控制有svn,git
- 项目开发中的一些注意事项以及技巧总结 基于Repository模式设计项目架构—你可以参考的项目架构设计 Asp.Net Core中使用RSA加密 EF Core中的多对多映射如何实现? asp.net core下的如何给网站做安全设置 获取服务端https证书 Js异常捕获
项目开发中的一些注意事项以及技巧总结 1.jquery采用ajax向后端请求时,MVC框架并不能返回View的数据,也就是一般我们使用View().PartialView()等,只能返回json以 ...
- Angular 项目开发中父子组件传参
在项目开发中经常会遇到 组件之间传参的问题.今天总结下在使用angular的项目中父子组件传参的问题: 1.父组件向子组件传参: 然后在父组件中 然后在父组件的html中 然后就可以在子组件中使用了 ...
- 《Maven在Java项目开发中的应用》论文笔记(十七)
标题:Maven在Java项目开发中的应用 一.基本信息 时间:2019 来源:山西农业大学 关键词:Maven:Java Web:仓库:开发人员:极限编程; 二.研究内容 1.Maven 基本原理概 ...
- 项目开发中的git简单使用
原文地址: https://www.zhuyilong.fun/tech/the-blog-git.html 示例远程仓库地址: https://github.com/zhu-longge/gitWo ...
- MyBatis 项目开发中是基于 XML 还是注解?
只要你对 MyBatis 有所认识和了解,想必知道 MyBatis 有两种 SQL 语句映射模式,一种是基于注解,一种是基于XML. 基于 XML <mapper namespace=" ...
- Java项目开发中实现分页的三种方式一篇包会
前言 Java项目开发中经常要用到分页功能,现在普遍使用SpringBoot进行快速开发,而数据层主要整合SpringDataJPA和MyBatis两种框架,这两种框架都提供了相应的分页工具,使用 ...
- 项目开发中Maven的单向依赖-2022新项目
一.业务场景 工作多年,在真实的项目开发中经常会遇到将一个项目拆分成多个工程的情况,比如将一个真实的项目拆分成controller层,service层, dao层,common公共服务层等等.这样拆分 ...
- iOS项目开发中的知识点与问题收集整理①(Part 一)
前言部分 注:本文并非绝对原创 大部分内容摘自 http://blog.csdn.net/hengshujiyi/article/details/20943045 文中有些方法可能已过时并不适用于现在 ...
随机推荐
- MySQL移动数据库位置
http://zlyang.blog.51cto.com/1196234/1726029 需求:MySQL数据库文件原位置:/var/lib/mysql 要移动至:/data/mysql 1.首先在/ ...
- IntelliJ IDEA 2017.3尚硅谷-----安装
选择路径 安装目录 bin目录下的文件 启动文件 虚拟机的配置信息 -Xms128m 初始内存 -Xmx750m 最大内存-XX:ReservedCodeCacheSize=240m 可保留代码缓存的 ...
- 8.14-T2捕老鼠(cat)
题目大意 有 N 个仓库,排成了一排,编号为 1-N.假设在第 i 个仓库点燃艾条,烟雾就会充满该仓库,并向左右扩散Ai的距离,接着所有|i-j|<=Ai的仓库 j 的老鼠被消灭.最少需要多少支 ...
- layui-table 样式
<!DOCTYPE html> <html> <head> <style> #lay-table { background-color: #fff; c ...
- Visual Studio Code修改全屏背景
打开VSCode安装目录,找到workbench.desktop.main.css文件 在最后一行添加以下代码: body{ pointer-events:auto !important; backg ...
- Nuxt配置动态路由以及参数校验
动态路由就是带参数的路由.比如我们商品列表里很多商品详细页,这时候就需要动态路由的帮助了. 比如我们新建一个commodity文件夹,新建一个index.vue 文件,然后新建一个_id.vue (以 ...
- mysql 随笔
(select GROUP_CONCAT(car_brand_name separator ',') carBrandName,supplier_id from ycej_supplier_carbr ...
- A. DZY Loves Chessboard
DZY loves chessboard, and he enjoys playing with it. He has a chessboard of n rows and m columns. So ...
- 联合查询:union
1.联合查询:union 1.1 作用:将多条select语句的结果,合并到一起,称之为联合操作. 1.2 语法:( ) union ( ); 例子:(select name from info_or ...
- Centos6.10-FastDFS-Tracker-Nginx示例配置
nginx 安装过程<详见> 1.进入工作目录 cd /usr/local/nginx/conf 2.创建子目录 mkdir configs 3.创建storage代理配置 cd conf ...