Axure设计分析作业-实例解析
本文转载自人人都谁产品经理,作者完全使用Axure做了这一个产品需求文档。文档地址:http://1passwordmanager.sinaapp.com/ 大家可以先睹为快。这个PRD完全使用axure制作,没有用传统的word方式,历时2个月完成制作。到现在,我觉得在转行产品的同学,也可以尝试着做一下这个事情,对你会有很大的提升,也是你找工作的一个重要筹码。
做一个密码管理类的app是我萌生已久的一个idea,起初我只是在网上查了下密码管理类App的市场,发现都是国外的几款产品占据着大部分市场, 本地化的优化还不是很好,正好我最近在寻求产品类的工作,打算做出点东西来,于是就有了现在这个“密码管家”的产品原型。在这里把制作PRD的过程分享给 大家,共同探讨这个产品可能性。
写在前面
需要说明的是,其实只制作PRD是很扯淡的,一个产品的诞生是由其核心需求和商业目标所驱动的,那么我这里做出来的东西其实是抛开了商业战略来假想 的,但是核心需求是明确的,在做的过程中你能体会到一个产品经理所需要做的很多工作,我分享的就是这个过程。做它的过程和一个产品的诞生大概相同,这里我 想引用《用户体验的要素》里面提到了五个框架来说明:战略层、范围层、结构层、框架层、表现层。
阶段一:确定需求(战略层)
这里涉及到战略层面的东西,确定核心需求就是致力于改善用户生活中密码繁多且容易忘记的问题。核心用户是商务人群和中老年人群,商业目标的话我也想了很多,但是目前还没有特别好的想法,也欢迎大家脑洞大开,提供一些好的想法。
阶段二:确定做什么(范围层)
我首先考虑的是为了实现核心需求需要做什么。目前v1.0的产品还比较简单,功能比较单一,但是基本功能需求肯定是能满足的。在此基础上,根据功能需求确定功能框架

阶段三:确定怎么做(结构层)
这里要根据上一阶段的功能构架,确定产品的逻辑流程、产品结构、信息结构等。实现每一个小的功能点,都要进行逻辑设计,想清楚其中的逻辑,对应的画出流程图。
首次进入APP流程:

非首次进入APP流程:

创建网络库流程:

新增密码流程:

其实我个人很不喜欢这种纯粹的流程图,你要表达的意思别人通过这种形式的流程图很难理解,这里提倡的是有原型的流程图,所以我后来又重新设计了一张总的逻辑流程图,然后把一个比较繁琐的流程也重新设计成了这种形式。
界面流转图(部分):



(点击可查看大图,完整图片请访问:密码管家 原型文档)
在逻辑流程设计好之后,我进行的是产品信息构架设计,确定为了实现功能需求需要哪些信息作为支撑。

接下来是产品结构设计,这个把结构框架用脑图画出来,为原型设计打好基础。

阶段四:原型设计(框架层)
开始原型设计吧!我的方法是首先在笔记本上用笔绘制草图,然后确定界面的元素哪些是必需的,原因是什么,放弃这个元素可不可以,经过反复推敲,确定了就大胆开始设计吧!还有一点是我在每个原型图下面都绘制了相同一幅图进行标注说明,进行必要的界面解释。另外我在《Word产品需求文档,已经过时了》这篇文章中受到启发,加入了漂亮的导航设计,多谢作者臻龙~
下面给大家展示几个有代表性的界面
版本说明:

全局交互:

控件规范:

网络库登陆界面:


修改密码:


安全设置:


首页:


我的资料:

我的收藏:

模板选择:

我的资料:

设置:

会员中心:

密码详情:

密码编辑:


写在后面:
这个PRD完全使用axure制作,没有用传统的word方式,历时2个月完成制作。到现在,我觉得在转行产品的同学,也可以尝试着做一下这个事情,对你会有很大的提升,也是你找工作的一个重要筹码。
作者:潘和翔,14年大学毕业,毕业后从事与产品无关的工作。正在利用业余时间深度学习产品,这个作品正是我利用业余时间制作出来的,寻求互联网产品机会。
本文转载自:http://www.woshipm.com/rp/230437.html
Axure设计分析作业-实例解析的更多相关文章
- R数据分析:潜类别轨迹模型LCTM的做法,实例解析
最近看了好多潜类别轨迹latent class trajectory models的文章,发现这个方法和我之前常用的横断面数据的潜类别和潜剖面分析完全不是一个东西,做纵向轨迹的正宗流派还是这个方法,当 ...
- exec函数族实例解析
exec函数族实例解析 fork()函数通过系统调用创建一个与原来进程(父进程)几乎完全相同的进程(子进程是父进程的副本,它将获得父进程数据空间.堆.栈等资源的副本.注意,子进程持有的是上述存储空间的 ...
- [Reprint] C++函数模板与类模板实例解析
这篇文章主要介绍了C++函数模板与类模板,需要的朋友可以参考下 本文针对C++函数模板与类模板进行了较为详尽的实例解析,有助于帮助读者加深对C++函数模板与类模板的理解.具体内容如下: 泛型编程( ...
- [Reprint]C++普通函数指针与成员函数指针实例解析
这篇文章主要介绍了C++普通函数指针与成员函数指针,很重要的知识点,需要的朋友可以参考下 C++的函数指针(function pointer)是通过指向函数的指针间接调用函数.相信很多人对指向一般 ...
- JavaWeb实现文件上传下载功能实例解析
转:http://www.cnblogs.com/xdp-gacl/p/4200090.html JavaWeb实现文件上传下载功能实例解析 在Web应用系统开发中,文件上传和下载功能是非常常用的功能 ...
- Android实例-Delphi开发蓝牙官方实例解析(XE10+小米2+小米5)
相关资料:1.http://blog.csdn.net/laorenshen/article/details/411498032.http://www.cnblogs.com/findumars/p/ ...
- Android开发之IPC进程间通信-AIDL介绍及实例解析
一.IPC进程间通信 IPC是进程间通信方法的统称,Linux IPC包括以下方法,Android的进程间通信主要采用是哪些方法呢? 1. 管道(Pipe)及有名管道(named pipe):管道可用 ...
- easyUI:ComboTree and comselector使用实例解析
ComboTree 使用场景:故名思意,ComboTree是combox和Tree的结合体,在需要通过选择得到某一个node值的时候触发. 栗子: 定义: 使用标签创建树形下拉框. Comselect ...
- Maven--多模块依赖实例解析(五)
<Maven--搭建开发环境(一)> <Maven--构建企业级仓库(二)> <Maven—几个需要补充的问题(三)> <Maven—生命周期和插件(四)&g ...
随机推荐
- 如何改变Myeclipse编辑区背景色
编辑窗口右键单击——>Preferences——>General加号——>Editors加号——>点Text Editors字样——>右下窗口选Backgroud col ...
- Javascript:一款简易的图片切换插件
最近迷上javascript,每天不写点什么都不舒服哈~ 尽管自己能力有限,还是尽自己所能写点东西出来. 实现效果: 效果预览:http://codepen.io/anon/pen/BNjxXj 该插 ...
- [原创作品]html css改变浏览器选择文字的背景和颜色
又很久没有'剥壳'了,最近在为一家公司做一个生产管理解决方案.所以都很忙.今天的话题很简单,就做一个很简单的网页特效.今天偶然浏览到一个网站,他们在选择文字时,样子不是蓝背景和白色字体那么单调,感觉这 ...
- JSF标签大全详解
1. JSF入门 藉由以下的几个主题,可以大致了解JSF的轮廓与特性,我们来看看网页设计人员与应用程序设计人员各负责什么. 1.1简介JSF Web应用程序的开发与传统的单机程序开发在本质上存在着太多 ...
- Java Instanceof
Java Instanceof Instanceof是一个非常简单的运算符,前一个操作通常是一个引用类型的变量,后一个操作数通常是一个类(也可以是接口,可以把接口理解成一种特殊的类),它用于判断前面的 ...
- [置顶] iOS 应用程序内部国际化,不跟随系统语言
前言:网络上关于iOS国际化的文章很多,但基本上都是基于跟随系统语言的国际化,笔者就不赘述了-0 – 今天要讲的是不跟随系统的切换语言版本方案,即程序内部的切换语言版本方案. 一.总则: 应用内部语言 ...
- IOS Layer的使用
CALayer(层)是屏幕上的一个矩形区域,在每一个UIView中都包含一个根CALayer,在UIView上的所有视觉效果都是在这个Layer上进行的. CALayer外形特征主要包括: 1.层的大 ...
- RMAN-configure命令
在Oracle 10g中的配置情况 使用RMAN>show all; 可以显示出RMAN 配置参数为: CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # ...
- CSS结构伪类E:first-child/last-child/only-child/empty
E:first-child解释:E的父元素的第一个子元素正好是E,给这个E定义样式 E:last-child解释:E的父元素的最后一个子元素正好是E,给这个E定义样式 E:only-child解释:E ...
- 伸缩放大的js
window.onload = function() { var div1 = document.getElementById('div1'); div1.onmous ...