如何彻底的理解需求,做出更好的软件

news2024/11/15 13:27:14

背景:

最近接到了一个需求,大概的需求就是我们有一些数据,默认分为了两类。如果变多的话,用户找起来非常的困难,针对这个现象我们提出了两点解决方案。1:添加搜索。2:添加分组。
在这里插入图片描述

第一波设计:

第一次我们想的很简单。需求都说了。添加搜索和增加分组嘛,没问题,干。加个搜索框,除了之前存在的正在进行和未在进行分组之外,在按照人名分个组
在这里插入图片描述
我们基本没有思考,没有去思考,领会需求背后,用户需要的到底是什么。需求既然这样列了,那我们就这样做就好了。
我们的原型和需求列的一样吗?看起来好像一样,但是背后我们却没去思考,这样做出来的软件,肯定不是用户需要的

第二波设计

第二设计的时候,我们想到了,用户需要的到底是什么?用户这个功能想要的核心其实就是,迅速找到自己的课程,让自己能够上课,这是我们的切入点,于是对此需求我们做了以下改进。
在这里插入图片描述
在这里插入图片描述

  1. 增加特别关注和默认分组。
  2. 用户可以自定义分组
    这时候,我们想到了如何去给用户提供更加丰富的功能,如何把我们设计人员写死的功能,我们默认给用户得分组,把这个选择权和使用权给用户。
    设计到这里,好像是站在用户的角度去设计功能了,但是这种设计是静态的,是无法变化的。为什么这么说呢。是因为我们忽视了,我们做的这个功能,是给新用户和老用户做的。这个用户可能有一门课,可能有十门课,可能有一百门课。用户的需求是动态的,而不是不可变得。我们第二波的设计,想到了用户的需求,想到了如何去引导用户,但是忽视了软件的生命力

第三波设计

在第二波设计的基础上。我们通过不同的时期对用户可能的需要做了划分。

  1. 一门课的时候,我们不给用户提供搜索,分组的功能,只有一门课,用户只需要点进去就足够了
  2. 两门课的时候,我们给用户出现分组和特别关注的功能。因为两门课,用户可能就会选择自己喜欢的课,就可以进行分组了
  3. 三门课以上,我们给用户出现搜索功能。因为我们的卡片设计,超过三门课,就不在一个页面了,用户需要下滑,超过了用户一眼就能看到的范围了,所以我们设置三门课之上出现搜索功能

设计流程

  1. 追根溯源,这个需求背后是什么?用户想要什么
  2. 罗列功能,变成用户,将自己变成用户,结合用户所想,用户所需,进行功能丰富的罗列
  3. 功能取舍。当功能实现的方式多起来的时候,综合考量,结合用户使用的维度,** 动态**的去看,用户在每个阶段需要什么功能。
  4. 最终确定,将设计的功能标记好,指导以后开发。

总结

我们这三版的优化,从想当然的设计,变成了有依据的设计。将自己的身份从一个开发人员,设计人员,转换为了用户,转换为了使用者。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/132150.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Android的adb命令实战篇-1

2023年 —— 是充满希望的一年. 对于Android开发者而言,ADB命令或多或少都使用过,今天我们就一起来整体回顾一下吧。 ADB的全称:Android Debug Bridge 1. ADB(Android Debug Bridge) 在实际工作中,周围同事会抱怨记不住常用的a…

过寒假

小时候,每到一放假就被父亲送回奶奶家。除了寒假作业,我还会带一堆书回去看。我小时候特别喜欢到邮电局大厅去订阅报刊杂志,就连学校也会报名订阅报刊。我小学时看完梁羽生的《七剑下天山》就是翻日报上每天的小说连载看完的。那时候过年时家…

Unity AR小游戏(玩具小车)踩坑记

最近对AR产生了兴趣。先科普一下什么是AR吧。AR是Augmented Reality(增强现实)的简称,是基于摄像头对现实世界的实时图像采集、分析和理解,然后在此基础上融入虚拟物体(信息),以达到增强体验的目…

Three.js学习(一)初识three.js

文章目录1.基本配置2.基本概念3.Api4.实现一个旋转动画1.基本配置 (1)安装 ​ npm install three (2)引入 import * as THREE from three2.基本概念 Three.js是基于原生WebGL封装运行的三维引擎。 (1)一…

【Linux】实验四 进程信号通信

文章目录一、实验目的二、 实验内容三、 实验原理1、信号3.1.1 信号的基本概念3.1.2、信号的发送2、所涉及的系统函数调用3.2.1 fork()3.2.2 kill( )This is my question.3.2.3 signal( )代码例子3.2.4 getpid()3.2.5 wait()四、 实验内容五、程序代码运行结果六、实验总结及心…

来玩,前端性能优化(+面试必问:宏任务和微任务)

前端性能优化相关的“技能点”笔者之前也写过几篇,但是大多都是小打小闹。我重新整理了曾经使用过的性能优化手段。本文介绍三种方案:页面资源预加载、服务请求优化和非首屏视图延迟加载。 页面资源预加载 页面是不可能真正预加载的,但是有…

Linux | PCIe Hotplug | 概念及工作原理的不完全总结

本文对 PCIe 热插拔的概念及工作原理进行不完全总结。 更新: 2022 / 12 / 31 Linux | PCIe Hotplug | 概念及工作原理的不完全总结热插拔组成部件实现代码通知式热插拔线程中断功耗管理意外移除错误处理整合移除BAR参考链接参考这里 1’ 2’ 3‘ 4’ 5 1992年初始…

postgresql数据库安装,备份还原

一.postgresql数据库安装 1.下载软件包 地址:PostgreSQL: File Browser 2.解压安装 [rootpostgresql u01]# tar -zxf postgresql-14.2.tar.gz安装环境 yum install -y perl-ExtUtils-Embed readline-devel zlib-devel pam-devel libxml2-devel libxslt-devel op…

(深度学习快速入门)第一章:深度学习概述、应用、学习路线和框架选择

文章目录一:基本概念(1)神经网络(2)感知器(3)深度学习(4)前向运算和反向传播二:DeepLearning学习路线三:深度学习应用(1)生…

基于Stream的Redis消息队列

目录一、消息队列二、基于List结构模拟消息队列基于List的消息队列的优点:基于List的消息队列的缺点:三、基于PubSub的消息队列基于PubSub的消息队列的优点:基于PubSub的消息队列的缺点:四、基于Stream的消息队列1、XADD语法2、XR…

C++ Primer笔记——allocator、unique_ptr和release、智能指针与动态数组、阻止拷贝

目录 一.P418 unique_ptr和release 二.P426 智能指针与动态数组 (一).unique_ptr (二).shared_ptr 三.P428 allocator (一).申请空间 (二).初始化构造 (三&#…

活动星投票少儿模特大赛网络评选制作一次图文分组投票怎么制作

关于微信投票,我们现在用的最多的就是小程序投票,今天的网络投票,在这里会教大家如何用“活动星投票”小程序来进行投票。我们现在要以“国际车展少儿模特大赛”为主题进行一次投票活动,我们可以在在微信小程序搜索,“…

aws cloudformation 使用模板配置 ecs 蓝绿部署

参考资料 Perform ECS blue/green deployments through CodeDeploy using AWS CloudFormationAWS::CodeDeployBlueGreen 在之前的文章中,使用codepipeline中通过控制台的方式创建了ecs蓝绿部署的demo。实际上可以单独通过codedeploy完成ecs服务的蓝绿部署 参考官…

【ARMv8 SIMD和浮点指令编程】Libyuv I420 转 ARGB 流程分析

Libyuv 可以说是做图形图像相关从业者绕不开的一个常用库,它使用了单指令多数据流提升性能。以 ARM 处理为主线,通过 I420 转 ARGB 流程来分析它是如何流转的。 Libyuv 是一个开源项目,包括 YUV 的缩放和转换功能。 使用邻近、双线性或 box…

QThread、moveToThread用法详述

1.吐槽 QThread类提供了一种平台无关的方法对线程进行管理。但对于QThread类的熟练使用,即使是从事Qt开发多年的程序猿们,往往也会踩雷、入坑。总之:QThread类不好用、如果对该类理解不透,很容易导致程序崩溃。本人强烈建议&#…

(函数介绍)puts()函数

功能介绍 1. puts()函数用来向标准输出设备屏幕输出字符串并换行。 2. 函数的参数就是一个起始的地址,然后就从这个地址开始一直输出字符串,直到碰到\0就停止,然后这个\0是不进行输出的,是不能够算在里面的。与此同时&#xff…

十、字节缓冲流、字符流、转换流、对象操作流、对象序列化流

字节缓冲流 构造方法 字节缓冲流介绍 BufferedOutputStream:该类实现缓冲输出流.通过设置这样的输出流,应用程序可以向底层输出流写入字节,而不必为写入的每个字节导致底层系统的调用BufferedInputStream:创建BufferedInputStream将创建一个内部缓冲区数…

2022年为什么要学习C语言?

为什么学习c语言 为什么学C语言逻辑? 为什么要学习C语言? 学习C语言的主要理由有以下几点: C语言可以作为学习计算机程序设计语言的入门语言; C语言是编写操作系统的首选语言,与计算机硬件打交道时灵巧且高效&…

labelImag安装与使用及构造数据集

在做目标检测任务时,需要进行标注,选择了LabelImg作为标注工具,下面是安装及使用过程。 我们使用Anconda的虚拟环境进行安装,激活环境后,执行: pip install labelimg -i https://pypi.tuna.tsinghua.edu.c…

代码随想录算法训练营第四天 java : 24. 两两交换链表中的节点 ,19.删除链表的倒数第N个节点 ,面试题 02.07. 链表相交,142环形链表II

文章目录Leetcode 24. 两两交换链表中的节点题目链接本题思路需要注意的点AC 代码Leetcode 19.删除链表的倒数第N个节点题目链接需要注意的点AC代码Leetcode面试题 02.07. 链表相交题目链接这个略了Leetcode 142环形链表II题目链接难点:AC代码今日收获**一朵玫瑰正马不停蹄地成…