202207-夏日限定 实验六 团队作业3:团队项目需求调研与原型开发
夏日限定 实验六 团队作业3: 团队项目需求调研与原型开发:
项目 | 内容 |
---|---|
课程班级博客链接 | 2019级计算机科学与技术 |
这个作业要求链接 | 实验六 团队作业3:团队项目需求调研与原型开发 |
团队名称 | 夏日限定 |
团队成员分工描述 |
|
团队的课程学习目标 |
|
这个作业在那些方面帮助团队实现学习目标 |
|
团队博客链接 | 202207-夏日限定 |
团队项目Github仓库地址链接 | Summer-limit |
任务1的完成情况如下:
1. 团队组长主持企业微信(截图):
2. 团队协作学习:
-
《现代软件工程—构建之法》第8章:
-
软件需求
-
人们(用户)的需求五花八门,作为一个软件团队要准确而全面地获取这些需求主要有以下四个步骤:
- 获取和引导需求:这一步骤也被叫做“需求捕捉”。软件团队需要为用户着想,设身处地,为用户引导出需求。
- 分析和定义需求:从各个方面获取的需求进行规整,定义需求的内涵从各个角度将需求量化。
- 验证需求:软件团队要跟利益相关者沟通,通过分析报告、技术原型、用户调查或演示等形式向他们验证软件团队对于这些需求的认知。
- 在软件产品的生命周期中管理需求:在软件的生命周期过程中,需求的变化、技术的发展和团队成员能力的提升,都在要求我们不断对需求进行重新审核并作出相应的调整。
-
对软件的需求,也可以从不同角度做以下的划分:
- 对产品功能性的需求:要求产品必须实现某些功能。
- 对产品开发过程的需求:要求软件开发流程必须满足某些约束条件。
- 非功能性需求:即服务质量需求。
- 综合需求:有些需求并不是单单一个软件模块就能满足,还需要各种系统来实现不同部门的功能和执行能力。
-
-
软件产品的利益相关者
-
很多人或机构都是某个软件的利益相关者,软件团队在分析软件需求时要考虑如下这些利益相关者:
- 用户(或称最终用户):是直接使用软件系统的人。取决于软件的特点,一个软件也许有多种不同的用户。
- 顾客(或称客户):是购买这个软件或者根据合同或规定接收软件的人。这些人不一定是软件系统的直接使用者,但是他们的利益和软件直接相关。
- 市场分析师:代表“典型用户”的需求。他们或许是市场部门的成员或者是独立的市场分析人员。
- 监管机构:在一些行业,软件必须符合许多行业和政策规定(如银行、公共交通、通信等)
- 系统/应用集成商:负责给客户提供咨询、服务、基础等工作,有些集成商会把客户的需求分解,交付给下一级的服务团队来完成。
- 软件团队:具体完成某一个特定软件或特定软件功能的团队。
- 软件工程师:是软件需求阶段的一个重要角色,软件的各种约束、特性会影响工程师的工作效率、开发难度和软件维护的难度。
-
-
获取用户需求——用户调查
-
以下是几种常用的用户调研方法:
- 焦点小组:找到一群目标用户的代表,加上项目的利益相关者来讨论用户想要什么,用户对软件的评价等等。
- 深入面谈:通过详细的面谈,广泛而深人地了解用户的背景、心理、需求等。这通常是一对一的采访。
- 卡片分类:在收集反馈时利用“卡片分类”的办法,把各种需求做成便于规整的小卡片(也可以写在小贴纸上),然后反复进行下列活动:讨论-明晰定义→归类→排序。
- 用户调查问卷:这种方法是向用户提供事先设计好的问题,让用户回答。
- 用户日志研究:这种调研方式要求用户记录自己日常工作或生活中与所用软件相关的行为,供软件团队分析。
- 人类学调查:可以解释为-和目标用户 “同吃同住同劳动”。
- 眼动跟踪研究:研究发现用户通常浏览通栏标题,然后目光沿着左侧下行,再平行浏览下面的子标题。可以将重要内容放置在用户习惯查看的位置。
- 快速原型调研:制作快速原模型(如纸张),让用户去使用,及时得到反馈,降低调研成本。
- A/B测试:是一种新兴的网页优化方式。简单来说,就是为同一个目标制定两个方案(比如两个页面),让一部分用户使用 A 方案,另一部分用户使用 B 方案,记录下用户的使用情况,看哪个方案更符合设计。
-
-
NABCD模型
-
什么是NABCD法:
- “NABCD”是由Need、Approach、Benefit、Competitors、Delivery五个单词的首字母组成,分别指需求、做法、好处、竞争、推广五部分。通过这五部分,可以清楚简明的把项目的特点概括出来。
-
竞争性需求分析的框架:
-
N(Need,需求):客户需要什么
-
A(Approach, 做法):我该怎么满足客户
-
B(Benifit,好处):我的产品给用户带来什么
-
C(Competitors,竞争):如何与他人竞争
-
D(Delivery推广):如何推广我的产品
-
-
-
-
团队合议成果:
-
N(Need,需求):
- 提供一个讨论背包问题知识社区系统
- 能够进行资源上传、检索
- 能够进行资源的审核与管理
- 资源中有背包问题典型算法源代码、开源数据集、背包问题相关文献资源
- 由管理员用户,用于系统用户管理、资源有效性审核
-
A(Approach,方法):
- 前端采用HTML、CSS、jQuery
- 数据库采用Mysql5.7
- 项目采用基于Spring、Spring MVC框架实现
-
B(Benefit,好处):
- 用户可以畅所欲言,在背包问题专题下讨论相关问题
- 用户可以在自己感兴趣的专题下进行学习
- 设置专门入口,用户可以提出对老师适当的建议
-
C(Competitors,竞争)
- 优点:
- PC端,美观简洁
- 操作简单方便
- 集合了市场上某些软件的优点
- 缺点:
- 前期用户数不足
- 需要多数管理员来处理系统上传资源
- 优点:
-
D(Delivery,推广)
- 线上推广
- QQ、微信等社交软件
- 推文推广
- 线下推广
- 贴宣传海报
- 人脉朋友间的推广
- 线上推广
-
任务2的完成情况如下:
- 真实用户:
-
问卷调查结果:
第一题分析:根据调查问卷所反映的接受调查的人群中,调研用户18岁以上占91.89%,说明在实际调查的人群中有可能接触到背包问题的群体居多,调查符合问卷有效调查范围。
第二题分析:调查结果显示,填写问卷的用户学历在本科及本科以上占89.19%,说明调研用户知识水平较高,对于背包问卷填写有一定的数据准确性,其他学历占10.81%,这也对调研提供了很高的参考价值,数据具有多元性。
第三题分析:在反馈得到的数据报告中,可以看到计算机相关专业的调研用户有40名,占54.05%,非计算机相关专业的调研用户有34名,占45.95%,二者数据基本数量持平,数据不具有局限性,这对团队开发论坛社区有更好的分析价值,背包论坛社区的建立也不局限在仅计算机相关专业。
第四题分析:数据显示,调研用户希望在网页论坛获取知识的人数有32名,占调研人数的43.24%,希望通过手机APP获取知识的人数有35名,占调研人数的47.3%,更愿意用其他方法获取知识的有7人,占本次调研的极少数。可以看到在现代网络媒体的当下,通过网页论坛来获取知识依旧十分普遍和广泛,网页论坛依旧有其自身的优势之处。
第五题分析:根据得到的反馈,可以看到此次接受问卷调研的人群中,了解背包问题的人数的有32人,占43.27%,相比之下,不了解背包问题的用户更多,人数有42人,占56.76%。结合此前对是否为计算机相关专业的调研,计算机相关专业的调查用户有不了解背包问题的情况,这可以看到此次项目有潜在的用户需求,有一定的开发价值。
第六题分析:数据显示,在了解背包问题的32人群体中,调研用户中认为有必要开发背包问题知识社区系统的占据主体,有31人,说明项目的开发具有一定的价值。而认为没有必要开发背包问题知识社区系统的只有1人,数据存在一定有存在的道理,这对此次项目的开发也有一定的启示作用。
第七题分析:从收集的数据中可以看到,了解背包问题的32人群体中,对于所了解到的背包问题类型,了解0-1背包问题的百分比为100%,说明0-1背包问题是背包问题最基础的知识部分;了解部分背包问题和完全背包问题的百分比都为90.63%,说明调研用户对背包问题的了解有一定的知识基础和系统的学习经历;了解多重背包问题的百分比为50%,说明调研用户群体绝大部分是没有再深入的学习研究背包问题,这可能是与用户的学习研究方向有关;了解二维费用背包问题的人数最少,占调研的43.76%。从数据总体来看,调研用户对于背包问题有一定的学习基础,有系统的认识学习。调研数据对于问卷调查的准确性提供了保证。
第八题分析:数据显示,了解背包问题的群体中,调研用户解决背包问题的算法选择占比情况为:递归与分治策略、动态规划算法的占比均为81.25%,接下来是贪心算法,占比为65.63%,然后是蛮力法的选择,占比为53.13%,选择最少的是分支限界法和回溯法,占比均为31.25%。算法选择的占比反映了用户的知识需求,对于项目的开发内容有一定的指导作用。
第九题分析:数据显示,在不了解背包问题的44人群体中,调研用户中认为如果有有关背包问题的网页论坛,有32人愿意花时间去了解,占71.43%,不愿意去了解的有12人,占28.57%。愿意花时间去了解的人数占比3/4,说明项目的开发具有一定的实际意义。
第十题分析:根据词云图显示,调查对象希望专题知识社区系统具有这些功能:完善的社区交流功能、免费的资源知识共享平台、方便搜索与背包问题相关的文章专栏、答案文本、能够按照关键词快速高效查找、有专业的技术人员对相关问题进行解析、相关知识点通俗易懂以及界面简约舒适等。
- 《学生“创新能力提升计划”项目申请表》:
任务3的完成情况如下:
- 以团队成员姓名命名的墨刀安装界面截图:
|
-
墨刀原型设计工具简介:
-
墨刀工具介绍:
- 墨刀是一款在线原型设计与协同工具,借助墨刀,产品经理、设计师、开发、销售、运营及创业者等用户群体,能够搭建为产品原型,演示项目效果。墨刀同时也是协作平台,项目成员可以协作编辑、审阅 ,不管是产品想法展示,还是向客户收集产品反馈,向投资人进行Demo展示,或是在团队内部协作沟通、项目管理。
-
墨刀发展历史:
- 2017年6月,墨刀推出3.0版本,主打团队协同方向, 从3.0开始,墨刀不再是一个只给产品经理用的,用来画产品原型的工具,而是变成了一个覆盖整个产品的设计和开发流程 。
- 2018年1月推出Sketch插件2.0版本,Sketch设计稿可以导入墨刀,进行交互设计,自动获取标注信息,推进开发进程。
- 2019年1月,墨刀启动To B 战略上线企业版,提供诸如企业项目及成员管理、基本数据统计等功能。
-
功能介绍:
- 操作简单:简单拖拽和设置,即可将想法、创意变成产品原型。
- 演示:真机设备边框、沉浸感全屏、离线模式等多种演示模式,项目演示效果逼真。
- 团队协作:与同事共同编辑原型,效率提升;一键分享发送给别人,分享便捷;还可在原型上打点、评论,收集反馈意见,高效协作。
- 交互简单: 简单拖拽就可实现页面跳转,还可通过交互面板实现复杂交互,多种手势和转场效果,可以实现一个媲美真实产品体验的原型。
- 自动标注及切图:将 Sketch 设计稿墨刀插件上传至墨刀,将项目链接分享给开发人员,无需登录可直接获取到每个元素宽高、间距、字体颜色等信息,支持一键下载多倍率切图。
- 素材库:内置丰富的行业素材库,也可创建自己的素材库、共享团队组件库,高频素材直接复用。
-
-
团队协作学习墨刀的会议截图或照片:
- 《现代软件工程—构建之法》第10章:
-
典型用户的价值
-
Persona,即典型用户。在产品开发的过程中,我们经常需要描述一组典型的用户。在以前大家通常是以一些抽象的名词来表示用户,如“家用电脑初学者”、“经验丰富的系统管理员”,现在我们建议用一个“典型用户”来代表,典型用户不再是一个抽象的概念,而应该是一个活生生的人物。
-
典型用户一般有哪些特性?一个典型用户往往描述了一组用户的典型技巧、能力、需要、想法、工作习惯和工作环境。
-
在设计软件的过程中,我们(设计/开发者)往往会以自己使用产品的习惯和对软件行业的熟悉程度出发设计,忘记了我们的软件是给千千万万个不那么会用电脑的人使用的。在这种情况下,分析“典型用户”会使我们在考虑问题时从用户的角度出发。
-
-
怎样定义典型用户?
-
定义用户的角色,若用户有不同的安全需求,要定义不同的角色来适应这些需求;
-
受欢迎的典型用户----指那些按设计者的期望使用系统的用户;
-
不受欢迎的典型用户----指那些有不正当目的的用户(这些用户也许在别的系统中是受欢迎的);
-
-
典型用户的模板可以包括以下内容:
-
姓名
-
年龄
-
收入(不同年龄和收入的用户有不同的需求)
-
代表的用户在市场上的比例和重要性(比例大不等同于重要性高,如付费的用户比例较少,但是影响大,所以更重要)
-
使用这个软件的典型场景
-
使用本软件/服务的环境(在办公室/家里/沙发/床上/公共汽车/地铁……)
-
生活/工作情况
-
知识层次和能力(教育程度,对电脑、互联网的熟悉程度)
-
用户的动机、目的和困难(困难=需要解决的问题)
-
用户的偏好
-
-
-
从典型用户到场景
-
有了典型用户之后,我们还得决定每一个典型用户的目标——他/她使用系统想要达到什么目的(如:购物、卖产品、滥发广告……)。对于每一个目标,列出达到目标所必须经历的过程,这就是场景,也可以叫作故事(Story)。
-
场景怎么写?
-
首先针对每一个场景,设计一个场景入口(描述场景如何开始);
-
接着描述典型用户在这个场景中所处的内部和外部环境(内部环境指心理因素等);
-
然后给场景划分优先级,按优先级排序写场景。
-
-
场景之间如何区分?
-
找到这个场景的特殊之处,对于共同的流程可以一笔带过,重点描述场景中特殊的因素。
-
把场景组织成一个故事,这样就能把一个完整的用户与系统交互的流程记录下来,在以后进行产品演示或验收中都可以以此为基础。
-
-
-
从场景到任务
-
在有了场景的基础下,就可以由架构设计师和各个模块的负责人一起沿着子系统/模块的所属关系把场景划分开。例如Stone项目的用户登录场景,就可以分为以下几项:
-
UI层
子任务为:界面设计,货物资料处理,文件上传处理,编辑控件等。 -
逻辑层
子任务为:用户输入字段合法性处理,上传图像逻辑和缩略图处理,资料保存逻辑等。 -
数据库
子任务为:资料读取的存储过程,图像的索引建立和维护等。
-
-
不同的任务会把一个场景编织起来,虽然有多个开发者参与这项工作,但是应该有一个开发者对整个场景负责。在得到开发任务后,开发者们就可以创建和分配测试任务。
-
-
任务4的完成情况如下:
- 系统设计:进入之后的开屏显示:
登录界面设计:登录界面 ——> 设置昵称 ——> 选择性别 ——> 输入验证码 ——> 推荐关注 ——> 首页面。
首界面设计:接登录界面跳转即首界面,将其滑动后继续显示 ——> 每日学习打卡界面 ——> 搜索界面。
学习界面设计(一):学习界面 ——> 点击对应的学习界面的卡片,进入算法学习界面 ——> 点击对应的算法学习界面的卡片,进入动态规划算法的学习。
算法学习界面:点击对应的算法学习界面的卡片,进入动态规划算法的学习 ——> 滑动页面继续查看 ——> 返回算法学习界面,点击对应的卡片,进入贪心算法的学习 ——> 返回算法学习界面,点击对应的卡片,进入回溯算法的学习 ——> 返回算法学习界面,点击对应的卡片,进入遗传算法的学习——> 滑动页面继续查看。
学习界面设计(二):学习界面 ——> 点击对应的卡片,进入背包问题学习界面 ——> 滑动页面继续查看。
背包问题学习界面:点击查看相关文献 ——> 点击对应的相关文献界面的卡片,进入0-1背包问题的学习 ——> 返回相关文献界面,点击对应的卡片,进入完全背包问题的学习 ——> 返回相关文献界面,点击对应的卡片,进入多重背包问题的学习 ——> 返回相关文献界面,点击对应的卡片,进入二维问题背包问题的学习——> 返回相关文献界面,点击对应的卡片,进入分组背包问题的学习。
学习界面设计(三):学习界面 ——> 点击对应的卡片,进入算法源码界面 ——> 点击对应的算法学习界面的卡片,进入动态规划算法代码的学习。
算法源码界面:点击对应的算法源码界面的卡片,进入贪心算法代码的学习 ——> 滑动页面继续查看 ——> 返回算法源码界面,点击对应的卡片,进入回溯算法代码的学习 ——> 滑动页面继续查看 ——> 返回算法源码界面,点击对应的卡片,进入遗传算法的学习——> 滑动页面继续查看。
资料界面设计(一):资料界面 ——> 点击对应的资料界面的卡片,进入算法分析界面 ——> 返回资料界面,点击对应的资料界面的卡片,进入背包问题详情界面。
资料界面设计(二):上传界面 ——> 创建内容界面 ——> 改变字体界面。
资料界面设计(三):缩回键盘界面 ——> 管理界面 ——> 检索界面。
资料界面设计(四):审核界面 ——> 审核通过界面 ——> 审核不通过界面。
圈子界面设计(一):圈子界面 ——> 点击对应的图标,进入发送帖子界面 ——> 返回圈子界面,点击对应的圈子界面的“21天算法学习招募令”卡片,进入活动详情界面。
圈子界面设计(二):点击圈子界面的帖子,进入帖子详情界面 ——> 点击帖子详情界面的对应的图标,进入添加评论界面 ——> 返回圈子界面,点击对应的圈子界面的“21天算法学习招募令”卡片,之后点击对应页面的“进入活动”按钮,即可进入进入活动详情界面。
圈子界面设计(三):点击圈子界面的求解答文字,进入求解答详情界面 ——> 点击求解答界面的对应的卡片中的“回答”按钮,进入求助详情界面 ——> 点击求助详情界面的“排行榜”按钮,进入排行榜界面。
圈子界面设计(四):在求解答详情界面中,点击书写内容的小图标,即可进入发布求助界面 ——> 在圈子主界面中选择审核,进入审核界面 ——> 点击审核界面的响应的按钮,进入审核通过界面。
个人界面设计(一):个人主界面 ——> 在个人主界面中点击头像,进入个人主页界面 ——> 在个人主界面中点击“编辑资料”卡片,进入编辑资料界面。
个人界面设计(二):在个人主界面中点击“个人资料”卡片,进入编辑个人资料界面 ——> 在个人主界面中点击“消息”卡片,进入消息界面 ——> 在个人主界面中点击“关于我们”卡片,进入关于我们界面。
个人界面设计(三):在个人主界面中点击“账号与安全”卡片,进入账号与安全界面 ——> 在个人主界面中点击“学习报告”卡片,进入学习报告界面 ——> 在学习报告界面中点击“分享学习报告”按钮,进入学习报告分享界面界面。
- 仓库截图:
任务5的完成情况如下:
-
各项任务的时间花费情况:
完成本次作业的感受和体会:
-
在团队分工方面,通过前两次的团队作业的合作学习,我们团队在分工与协作方面有了明显的进步:
- 组长能够在任务下发之后进行合理的分配,针对不懂的问题大家一起探讨、解决;
- 各位成员各司其职,每个人在完成自己负责的部分后,会进行小组讨论,对完成的部分进行评价以及修改和完善;
-
在实施原型开发工具学习的过程中,我们通过查阅材料,根据其提供的步骤学习使用墨刀,并通过会议的方式进行团队学习,达到了较高的学习效率;
-
在需求调研过程中,我们是通过调查问卷的形式来完成的,其中除了我们周围的同学还包括部分其他学校的同学;
-
通过本次实验我们深刻的意识到,作为一个团队,每个成员都是极其重要的,每一次的任务,都离不开大家的团结协作,希望在以后的合作中更有默契。