『编程题全队』需求分析与设计
需求分析
1.访问用户
本次用户访问,我们结合了调查问卷和线上线下采访老师朋友的方式。
-
线上采访:
-
线下采访:(emmm应要求厚码)
因为好友圈子的限制,我们所调查的用户年龄职业范围相对小,基本是二十岁左右的在校学生↓
调查中可以发现被调查人对这种个人事务软件还是很需要并对市面上已有软件进行使用↓
问卷反馈中,我们相对于市面上已有软件的不足之处及用户需要的功能进行采集↓
“我觉得以日历界面显示任务很有必要,有的软件的日历界面可以看到一天的任务,但是一个日历(比如一个月)就没有那么直观;奇妙清单里的文件夹里不能再分文件夹,清单没有分子清单的功能;最重要的一点,不能收费!”
——不肯透露身份姓名的大佬
“希望支持多平台同步,手机和web电脑客户端;操作不要太复杂;支持简单的分类(自建列表);日程提醒相结合;支持事件紧迫度的选择(比如:紧急(48小时内)、一般、长远计划),将原型中的下拉框换成互斥性的选择按钮,简单操作;软件的特殊标志做到用得恰到好处(如:五角星有收藏等意义,不要用于装饰)。”
——郑如滨老师
被调查用户表示,希望新开发的软件能够实现日常事务管理和提醒、多人任务共享和协作编辑、并支持备忘录功能。
我们将继续开放调查问卷便于搜集更多的信息。
2.需求规格说明书
3.竞争性需求分析
杀手功能见第一象限
4.NABCD分析
列举出项目的NABCD
NABCD:
- Need 需求
当需要处理的任务事项等多到一定程度时,就需要一个个人任务管理工具来帮助管理。它能从混乱的事项团中筛选出最主要的部分,引导使用者逐步完成计划;同样,人们也有与团队之间分享、或者是共同承当一些任务的需求。 - Approach 实现
使用C++/QT 设计桌面客户端,使用python设计服务器端,即不失开发效率,也保证了软件性能。 - Benefit 收益
• 个人事项管理+提醒事项收纳+团队协作分享+甚至是计划流程kanban模式,全部合为一体,让你的生活井然有序。
• 避免了用户面对许多的待办事项而无从下手的情况
• 同时避免了用户忘记重要的提醒事项 - Competition 竞争
并没有找到能将团队协作,团队开发流程,以及个人事项管理等合为一体的软件 , 而设计中还有很重要的一点是将提醒事项这一特殊的任务抽取出来,成为独立的一部分,同时学习了"石墨文档","kanban开发方法"等技术的优点,增强了产品的团队属性 - Delivery 交付
发布计划是先部署在git云仓库的release模块,后期在服务器上提供web端下载链接
进一步分析
-
N(Need):经过我们的访问和调研,了解到不管是高校学生、教师、公司职员、创业者等,每天、每周或者每月都有一些或者繁多的事务需要处理,他们通常采用手动制定计划、编写电子备忘录,他们希望通过安排简单但内容详细的事务安排来增加自己的工作效率,提高自己的工作质量。许多年轻人也开始使用相应的事务安排软件来进行管理,同时许多轻量级的团队也有着团队协作的需求,可以提供给团队有效的合作平台,体验合作带来的乐趣、便利和高效。
-
A (Approach 做法):我们PM擅长编程语言和工具C++/QT,对于中小型项目有一定的经验,其他前端开发的人员也有小型项目的基础,对于前端的设计基本没有什么问题,具体的bug会由开发人员和测试人员共同协作修改;后端的主要负责人对于MySQL的运用和管理有一定的基础,后端我们决定用python实现。我们在有一定实例的基础上,能够在项目进行的同时不断学习新知识点以完善项目。进过我们团队的协商,决定本产品的客户端版本需要连接到本地的SQLite数据库,数据库软件已内置在桌面端的编程语言工具C++/QT中,使用版本为QT5内置版本SQLite。服务器方面使用的为MySQL数据库,使用版本为 MySQL 5.0.10。服务器与客户端之间网络通信协议为HTTPS,采用的同步通信机制为客户端和服务器之间的连接时无状态的,服务器架设模式类似网站服务器。客户端在需要数据的时候向服务器发出POST请求,服务器通过本地中央数据库查询返回结果,之后关闭该次短连接。在需要实时同步数据的情况下,客户端启用轮询的方法,每过一段时间向服务器发起更新请求。直接采用加密由HTTPS协议内部的TLS协议负责来实现通信安全。
-
B (Benefit 好处):具有很高的可用性和稳定性(系统在一些异常情况下有恢复能力),产品内部使用技术为编程语言C++的跨平台库QT,该GUI库致力于跨平台性,在跨平台方面有着天然优势,实现多平台的使用给用户带来便利性。我们提供人性化的GUI界面,有个人任务界面,也有团队管理界面,让个人和团体用户都能轻松使用。具有同步功能也有离线功能,用户可以随时随地使用,保证用户按时完成任务。同时因为我们自己团队也在使用这个软件,相当于边测试边开发,肯定会做到更完美。
-
C (Competitors 竞争):市场上有一些功能与该产品部分重叠的产品,有微软旗下的Wunderlist,评价很高的TickTick等,但是本产品结合了个人管理软件和团队协作软件的特点,在设计理念上,分离出了提醒事项这一特殊类型的任务事项,不仅有个人事项管理功能,还兼顾了轻量级的团队协作需求。我们最大的优势就是跨平台性,现在的人都有各种不同的设备,保证用户在持有不同设备的同时也能享受服务。我们后期还是提供个性化设计,为不同的人群提供不同的版本。
-
D (Delivery 交付): 首先,我们会利用自己已有的社交平台(微博、微信、集大通)进行宣传,我们会制定相应的动画演示视频上传 大型视频网站,通过互联网信息的传播性,介绍产品的特点和特色,给网友以辨识度,尽量提高产品的知名度。我们还将走进校园,通过摆点介绍和让用户实际体验,学生用户的好评将会是一个无形的广告;我们还会通过街头测试,让行人体验事务管理软件,并同时给出评价和建议,制作成相应的视频,上传到网站,让潜在的用户看到我们用心和诚心。
5.NABCD电梯演说
各位领导/投资人/用户/合作伙伴:我们的产品事项管理系统Gugua是为了解决有事务管理需要的人群的痛苦, 他们需要 一个便利和高效的个人和团体事务管理平台,但是现有的方案并没有很好地解决这些需求,我们有独特的办法是提供跨平台的软件和完善的事务管理安排逻辑设计,它能给用户带来随时随地使用同时具有高可用性和稳定性的体验,远远超过目前市场上的竞争对手TickTick。 同时,我们有高效率的社交宣传、视频宣传、实地宣传的方法,能很快地让大部分用户知道我们的产品,并进一步传播。
下面来看我们团队的知名up主、声优主播WW进行的演说视频 点一下,玩一年
原型设计
原型设计展示
主要界面展示
- 登录界面
- 个人任务界面
主要由任务框和列表框组成,右侧的彩色小点是提醒事项的形象化表现
- 团队管理界面
这里采用了一个三级目录结构
每一个团队都有多个项目,而每个项目都有多个看板
看板上的团队任务就是团队界面下的最小单位
演示界面:墨刀-Gugua prototype
原型工具介绍
使用的原型工具为墨刀
可以很容易地使用拖拽控件的方法构建原型界面,而且可以模拟出交互的效果,最重要的是分享演示原型十分地容易,支持导出为各种演示包(例如可以直接在手机上运行的apk安装包、可以在本地通过浏览器演示的html包等等)
任务分解
1. 给出团队项目的WBS(Work Breakdown Structure)
使用工具为: ProcessOn-在线作图网站
2. 团队成员估计各自任务的所需时间
成员 | 任务模块 | 估计时间(hour) |
---|---|---|
孙志威 | 客户端GUI模块以及网络通信等 | 105 |
孙慧君 | 客户端GUI模块以及数据库等 | 100 |
黄华林 | 服务器端的事务逻辑实现 | 80 |
王威 | 服务器端的架构和通信协议等 | 83 |
连燕波 | 负责产品的测试和审核 | 103 |
倪兢飞 | 服务器的数据库设计实现 | 82 |
编码规范
1. 制定团队的编码规范
- 具体规范
- C++部分使用Google C++规范
- Python部分遵循Google python规范
- 总结要求
- 能够让队友迅速理解代码
- 经过很长一段时间后代码依然可以让人容易理解
2. 上传至Git
系统设计
1. 系统架构
总体架构图
分层架构图
2. 数据库设计
本项目在服务端和客户端使用了两种数据库:
- 服务端使用MySQL
- 维护所有用户的信息
- 负责同用户多设备之间的信息同步
- 负责协作用户之间的数据交流
- 客户端使用SQLite
- 主要充当离线缓存数据库
- 可作为中央数据库关于本地用户的数据备份
因此,客户端数据库其实是中央数据库的子集,故在此主要介绍服务端数据库设计
-
数据库关系表图
-
ER图
团队分工
成员 | 角色 | 分工 |
---|---|---|
孙志威 | PM/Dev | 主要编写了需求规格说明书,参与了系统架构设计等 |
孙慧君 | UI/Dev | 主要设计了软件的原型,参与用户采访等 |
黄华林 | Dev | 主要对产品进行了NABCD的需求分析,参与了用户采访等 |
王威 | Dev | 主要设计了数据库,参与了系统架构等 |
连燕波 | QA | 主要编写了需求规格说明书,参加了用户采访等 |
倪兢飞 | Dev | 主要对数据库进行设计,参与了任务分解过程 |
完成情况
everybody | 100% |
---|
作为PM,我很高兴地看到我的队友们都十分的积极,分配的任务也都较快地完成了,希望在之后的学习过程中我们依然能保持活力和激情。
个人感想
-
孙志威(201521123077):
感想:
本周我们团队对我们的产品进行了需求分析和设计。
作为团队的PM,这周我做了很多规划和架构的工作,这让我对我们的项目有了更深的认识,学习到了很多软件工程的知识和方法,可以说是受益匪浅。
在大家的协作下,我们还算优雅地完成了这次的众多任务。学习到了很多知识,更重要的是体会到了与队友们一起怀着共同的目标一起协作的感觉。
-
孙慧君(201521123098):
感想:本周,我完成了软件原型的设计,并参与了用户的采访。
这是我第一次较为完整地完成一个软件原型设计,使用了墨刀原型设计工具,很顺利地完成了任务,值得高兴的是也得到了队友们的肯定。
团队的每一个人都积极参与了项目的制作,队友之间都能相互探讨研究,提出自己的意见和建议,努力完成好自己的部分,尽量做到最好。
能够在这样资一个共同进步、相互鼓励的团队里成为其中的一员,我感到很骄傲,这是一个好的开始,希望能够继续合作,顺利走好项目的每一步。
下周开始就是第一次七天冲刺了,有一点紧张又有一些期待,不能因为自己一个人拖了队员们的后腿,要加油啊!
-
倪兢飞(201521123061):
感想:这周我的任务是与另一位同学一起设计我们这款GTD软件的数据库,设计数据库的过程分为几个部分,首先要进行需求分析,与团队内的成员进行进行交流,确定当前计划内需要的基本数据;其次进行概念设计,把所需数据通过ER图表现出来;接下来就是实现将ER模型到关系模型的转换;最后通过MySQL建立数据库;在概念设计阶段,要遵循设计数据库时的范式准则,并考虑周全。
-
连燕波(201521123081):
感想:这周要做的事项比上周多了,每个人也都开始忙碌起来,经过简单的商议之后,每个人都投入到紧张的工作当中。
我也开始着手市场需求调查以及需求规格说明的编写。对于市场调查,我们想到了许多需求,也收到了反馈,在不使产品失去核心功能的前提下筛选精华。
用户的需求正是产品的走向;
而产品的规格说明是建立在总体的系统架构设计上完成的,我们参考了老师的模板以及上网查询了相关资料,能够比较顺利地完成。
整个过程,团队分工明确,有条不紊的进行着各自的工作。
-
黄华林(201521123082):
感想:本周,我的任务主要是负责NABCD的需求分析。我在我们PM的安排和帮助下,将我们项目的NABCD写出来。在此过程中考虑了产品的前景、考虑产品应该具有的产品功能和特色,根据不用用户的习惯和需求,提供不同的服务,提高给用户尽量完美的体验。同时我们也对比市场已有的产品,取其精华,去其糟粕;我们也认识到一个好的产品需要有好的宣传方法和一定的用户数量,才能证明其价值,所以讨论了几种可行的宣传方式。特别感谢王威同学提供其悦耳的声音,流畅的介绍,给我们的产品的宣传带来的正面影响。
-
王威(201521123076):
感想:这周我的任务主要是数据库的设计,目前只是把最基本的核心模块的数据组成架构好了,让我们有一个比较完整的概念,还不能够适应接下来的动态需求,下周开始还需要与前端人员进行沟通交流,完善数据库的设计。