团队做业3-需求分析与设计

需求分析

软件的最终目的是用来解决用户的某些问题,需求分析就是要理解要解决的问题,真正明确用户需求。

1.访问软件项目的真实用户(至少10个),确保软件真正体现用户的需求,为软件最终可用奠基基础。

若是是原有项目,须要对旧项目的全部信息作一个调研,经过采访之前的开发者,造成采访文档,请参考《构建之法》的大马哈鱼巡回游的过程性介绍。
用户调研方法参考《构建之法》第8章获取用户需求——用户调研
http://www.cnblogs.com/xinz/archive/2013/02/03/2890786.html
http://www.cnblogs.com/xinz/p/3308608.htmlphp

因为咱们的项目是新项目,因此咱们采用了问卷调查的调查方面收集用户的需求数据。
问卷连接:https://www.wjx.cn/report/22393231.aspx
调查过程:html

2.参考《软件需求规格说明书》国标规范文本,撰写对应项目的软件需求规格说明书。提供《需求规格说明书》的Git连接。

  • 除形式上知足规范文本要求外,总体内容必须围绕项目实质展开,对所要开发的项目确保尽力作到清晰完整准确。
  • 使用一致的图形符号和文字描述内容。
    分析和设计方法:http://www.cnblogs.com/xinz/p/4525232.html
    在线做图工具ProcessOn:https://www.processon.com/
  • 全部的缩写须事先定义。
  • 须要有一个目录,word排版样式规范美观,图文并茂,通篇文档有一个统一的样式风格。
  • 将本身置于读者的立场——若是对软件项目不熟悉的人员,经过阅读这份文档,可否彻底读懂软件要作什么。

软件需求规格说明书连接:https://gitee.com/zyjjj/babaka/attach_files前端

3.NABCD 写做,视频

  • 请同窗们把本身项目的NABCD 都写出来。

N(Need,需求):咱们的项目是英语单词微信小程序。首先,知足“便携式”需求,它能够随时随地帮助用户记忆英语单词学习英语;其次,它附着在微信上,以一个小程序来运行,不须要用户切换界面来使用,做为大学生,在使用APP记忆单词的时候,切换到微信或其余社交界面,就会玩着玩着忘记了本身在作什么,这时候就会想着:若是在回复别人消息的时候不用切换整个界面就行了,就不会想着一刷就刷,避免其余事情的介入致使了咱们本在进行的活动。因此咱们也认为做为小程序,最大的好处也是它能够在与其余人交流的时候运行,切换很方便快捷,使用方面会舒畅不少。其实咱们自身也有在想,如今有不少的语言APP推出,但是某宝上的纸质英语资料仍是卖得火得不得了,咱们通过讨论,采访发现纸质的优势:能够对本身熟知,不认识的词作不一样的标记,也能够在一个单词旁进行拓展记忆。造成本身的单词网。
对于需求量分析后咱们认为,未来对移动端“单词记忆”的需求量会变大,而且也是学习英语的趋势。由于它方便快捷,能够作到“碎片化”学习。辅助需求是一种枯燥学习的调剂,也是让用户坚持的一种方式,毕竟背单词逃不出枯燥的怪圈。java

A(Approach,作法):上面也说过,咱们自身也是大学生,那咱们就更能理解学生在学习英语中的痛处,并能针对大部分学生在学习英语中遇到的各类难处来完善咱们的小程序。例如:①大部分学生缺乏自律性,这是不可避免的,可是你们都会有隐约的竞争性,那咱们就能够设置一个好友圈打卡功能,让你们本身加入一个圈子进行每日英语学习的打卡。②在学习英语的时候,咱们会有一个记忆周期,一而再再而三地重复练习十分有必要,那么如何重复,重复什么。这里咱们就能够加入纸质优点,设置“熟知”“陌生”“不肯定”等按钮记忆用户单词掌握度,并针对“陌生“不肯定”模块进行相应频率的重复。③设置“笔记”模式:可让用户在相应单词旁作本身个性化笔记,方便不一样用户的不一样记忆方式。也造成的咱们小程序的“个性化”。git

B(Benefit,好处):咱们项目这类应该会有不少相似的应用。首先,咱们从微信小程序和独立APP上来讲明优劣:微信小程序是近期来热度很高的话题应用,由于是用微信的平台做载体,无需再独立注册一个新用户,直接经过微信帐号来使用,而且能够直接得到微信好友圈来创建程序内的交互功能,微信小程序社交属性很是牛,实现了用户帮你推送微信小程序,达到了微信用户的流量裂变,而企业只须要花很小的成本,而不是巨大的广告费用。前段时间话题度很高的某多多平台就是靠这微信用户流量的裂变,使用量、关注度与用户数量迅速上升,靠这种形式在短短半年的时间内就积累了2亿用户,并已在电商领域排名第三,仅次于某猫某东。因此这也是咱们选择微信小程序的理由之一, 其次是成本低,这一点对于大学生来讲是十分诱惑的。而对于咱们这类程序中,咱们能从中脱颖而出的优点,我想在于咱们更能总结用户使用的痛处,对于界面、使用过程、学习模式、学习进度,能够根据其余小程序来克服痛处并完善程序,而且经过下面咱们要说的推广进行用户迁移。ajax

C(Competitors,竞争):竞争是必然的,首先市场上有不少独立的app,他们能够得到各方辅导机构的赞助,得到相应的词库如“恋恋有词”,“红宝书”等已经编排好的词库,并且能够根据不一样年份,更新相应的词库。而咱们初出茅庐,又基于微信平台,可能没法得到多方支持。而咱们能够赢在自己也可做为用户一员,可以更好的理解用户“说不出”的痛点,来优化程序实现程序的个性化。而且UI设计风格也更贴近用户的理想风格。同时咱们也具有环境优点:咱们基于微信自己开发,这样其余已有小程序能够与咱们的程序相互辅助,在一个app内实现用户多需求。后期竞争就是该如何在完善中不断提高用户体验,提升用户迁入量。算法

D(Delivery,推广):做为大学生,其实最好的推广方法,除了直接付广告费进行推广,就是经过大学生校园内进行推广,其实我还没见过对于这类小程序的校园推广,而且认为学生不必定会排斥这样的推广应用,经过朋友圈转发、口碑相传、相关社团宣传等方式在校园内传播,相信这样的宣传方法会颇有效。而如今不少年轻人也会被比较不同、简洁的UI界面吸引,咱们也准备经过这方面来进行推广。sql

  • 请分析本身项目的杀手功能是什么?参考教材的第8章:功能分析的四个象限

杀手功能:“个性化”单词记忆程序,生词记忆算法;好友圈打卡功能。数据库

外围功能:吸引年轻人的UI界面,支持不一样系统载体。编程

必要需求:单词发音释义准确度。

辅助需求:利用微信朋友圈,实现好友排名。以竞争方式,知足用户们娱乐需求

  • 把这些要点都组合成为一段话 -- 当你要向别人兜售你的项目的时候, 你一般只有很短的时间 (电梯演说),可否天然而有条理地把项目说清楚? 请用你产品中实际的元素代替 <> 中的抽象概念。

各位领导/投资人/用户/合做伙伴:咱们的产品“背背佳”基于微信开发的英语单词小程序 是为了解决 大学生各类英语等级考试,对于单词记忆方面 的痛苦, 他们须要 一个个性化的记忆单词小程序,可让他们实现“碎片化“学习的同时也能让他们坚持,而且逃离“今天背,明天忘”的怪圈,可是现有的方案并无很好地解决这些需求,咱们有独特的办法 在背诵单词的同时能够容许用户有本身的“笔记”,辅助用户造成本身的记忆方式。而且根据不一样用户需求,多频率出现 “生词”或“记忆模糊”的单词,同时设置“朋友圈打卡”“好友排名”等模块,加大程序趣味性。它能够加深用户对单词的记忆,同时不抹杀我的对英语的语感和个性化的记忆方法,以“游戏竞争”的方式更好的让用户坚持学习,激发斗志和学习英语的兴趣。远远超过目前市场上一些缺乏个性化,记忆方法单调无趣的单词app。 同时,咱们有高效率的宣传方法由于咱们自己就处于受众环境中,因此不须要大量投资广告费用,能够经过自身朋友圈的转发,校园社团的传播,能很快地让大部分用户知道咱们的产品,并进一步传播。

[附加题]把上面的这段话录制为视频,上传到视频网站,并把连接发到团队博客上。

http://v.youku.com/v_show/id_XMzUzMjgwNDA0NA==.html?spm=a2h3j.8428770.3416059.1

4.团队协做,增强分工,须要描述每一个成员的具体分工及占整个文档任务的工做量比例。

姓名 任务 工做量比例
吴玲 原型设计 100%
郭琪容 用户调研,软件需求规格说明书 100%
王兴 任务分解WBS,时间预估 100%
曾艺佳 系统设计 100%
祁泽文 徐璐琳 NABCD分析 制定编码规范,录制视频 50% 50%



原型设计

原型设计可以在表现层将设计合成一个逻辑总体,用户能和你一块儿看到将来交互的软件蓝图、功能和效果,得到较真实的感觉,在不断讨论的基础上完善将来的设计思想。所以,原型设计能起到有效沟通的做用,漂亮,直观的原型图更是让人赏心悦目。

1.不要等到全部代码写好以后再去验证需求,请用设计工具描述用户界面和需求。

2.原型设计不只要考虑主要功能的页面排布,同时也要考虑用户实际操做中的问题,提早为用户考虑得当并征求用户意见

3.系统是必须可运行的,可实际使用的——请抱着这样的同理心去考虑系统。

4.给目标用户展示原型,与目标用户进一步沟通理解需求。


  • 首页界面

  • 个人

  • 签到打卡

  • 单词本

  • 错题集

  • 设置

  • 生词本

  • 单词本中的单词

  • 删除单词本


任务分解WBS

一个团队项目要在一段时间内完成诸多任务,知足用户需求,实现团队目标,从哪里入手?
WBS(Work Breakdown Structure)即工做分解结构,是根据项目目标把工做分解成许多井井有条的、可交付成果的工做任务,而后用逻辑图形或树形结构表示出来。

作好WBS有如下几个要点:

  • 保证全部子节点覆盖了所有父节点包含的内容,咱们的单词小程序项目中的单词发音和释义、单词复习等子节点所有都包含在学习模块、打卡&和PK模块、统计模块以及复习模块的父节点中了。
  • 保证各个子节点不要相互覆盖,咱们每一个父节点下面的子节点划分算是比较清楚了,每一个子节点都没有相互覆盖。
  • 叶子节点要保证足够小,能在一个里程碑中完成,一个模块下的叶子节点划分得比较细,足够小,因此咱们是能够在一个里程碑中完成的。
  • 从结果出发构建WBS,而不是从团队的活动出发,“从结果出发”就是咱们想呈现给用户的样子,因此我在作任务分解时是站在用户的立场上去考虑的,因此咱们全部的父结点和叶子结点都是用户能看得懂的

1.请给出团队项目的WBS;

2.团队成员估计各自任务所需时间

队员 任务分配 所需时间
曾艺佳、王兴 学习模块 7天
徐璐琳、祁泽文 打卡&PK模块、统计分析模块 7天
郭琪容、吴玲 复习模块 5天



编码规范

根据结对编程的经验,你们已经意识到编码规范的重要性。
讨论制定团队的编码规范,知足代码风格规范和代码设计规范(参考书第4章4.1-4.3内容)http://www.cnblogs.com/xinz/archive/2011/11/20/2255971.html

编码规范:https://gitee.com/zyjjj/babaka/attach_files



系统设计

在设计阶段,咱们要清楚:软件是怎么解决这些需求的?
一个好的分层式结构,可使得开发人员的分工更加明确。一旦定义好各层次之间的接口,负责不一样逻辑设计的开发人员就能够分散关注,齐头并进。

1.如何才能最大限度地实现这些需求,这就是架构设计要解决的问题。请给出系统的架构设计

小程序架构参考(http://www.javashuo.com/article/p-szounwmq-eq.html):

  • 微信小程序的框架包含两部分View视图层、App Service逻辑层,View层用来渲染页面结构,AppService层用来逻辑处理、数据请求、接口调用,它们在两个线程里运行。
  • 视图层使用WebView渲染,逻辑层使用JSCore运行。
  • 视图层和逻辑层经过系统层的JSBridage进行通讯,逻辑层把数据变化通知到视图层,触发视图层页面更新,视图层把触发的事件通知到逻辑层进行业务处理。
  • view 模块和 service 模块的 WeixinJSBridge 都使用了 postMessage 接口与后台通讯。

系统模块结构设计:

咱们的view视图层有预估有5个page,包含单词学习页面,单词练习页面,自定义笔记页面,复习/错词页面,排行榜页面。

布局 实现 模块间数据传送及其调用关系
前端视图层 WXML 与 WXSS 编写,由组件来进行UI展现 产生事件,调用API发送至逻辑层处理,采用wx.navigateTo实现页面跳转
逻辑层 使用javascripe语言编写,微信提供各类小程序组件和API app()注册小程序实例,page()注册页面,将数据反馈至视图层,以ajax方式调用java建立的后端接口
后台服务器 使用java语言编写 建立Websocket 实现与小程序的通讯
后台数据库 使用sqlserver构建数据库 利用java的JDBC链接数据库

2.完成团队项目的数据库设计,并在随笔中提供相应ER图(若是必要)

表名 描述 备注
Update 版本信息 小程序更新版本,更新时间,功能等信息
User 用户信息表 存放用户的微信名(主键),昵称,地址等信息
Friendship 微信好友表 存放用户的微信好友信息,本用户微信名(主键,外键User
SearchHistories 搜索历史表 存放用户搜索历史,微信名(主键,外键User)
Lexicon 单词库表 各类单词库名,内容,库id(主键)
UserNodes 用户自定义笔记表 存放用户的笔记,微信名(主键,外键User)
StudyStatus 用户学习状况表 所选词库,已学,未学,错词,收藏词,微信名+词库id(主键),微信名(外键User),库id(外键Lexicon)
  • 触发器:修改用户id,词库id时触发,修改所有表格中的包含的相关id
  • 视图:User表+自定义笔记表 / 学习状况表 / 搜索历史表

ER图:

参考



合做状况

团队的分工:

姓名 任务 完成状况
吴玲 原型设计 100%
郭琪容 用户调研,软件需求规格说明书 100%
王兴 任务分解WBS,时间预估 100%
曾艺佳 系统设计 100%
祁泽文 NABCD分析 100%
徐璐琳 制定编码规范,录制视频 100%

每一个人的感想:

吴玲的感想:本次我负责的任务是原型设计,我用的软件是Mockplus,整体感受仍是挺有趣的。不足之处在于这个软件的一些图标要开通会员才能使用,好比在单词语音播放部分,原本应该用小喇叭图标的,可是迫于没钱开会员,只好将就用了音乐的图标。还有一些其余的图标,其实也都不是最满意的。作了有五六个小时了吧,辛苦是确定的,可是最后看到本身作出来的东西,仍是很开心,颇有成就感的。

曾艺佳的感想:本周我负责的是系统的设计,系统设计须要对系统进行分析,划分模块层次,对系统实现规划等进行合理的安排。小程序系统设计须要先了解微信开发环境的架构和通讯,才能据此作出所作系统的设计。在此过程当中,了解小程序较原先的前端语言语法上,方法上都有变化,发现本身对小程序架构总体的了解还不足。

王兴的感想:本周我负责的是任务分解WBS,作好WBS就须要对项目足够了解,作WBS时须要从用户的立场出发,还须要把叶子节点划分的足够小,由于一般的软件项目中,叶子节点的时间成本最好不要超过两周以保证项目能够在一个里程碑中完成,划分过程当中我发现有些功能多是重复的,好比复习模块的“选择复习题型”和“复习单词”、“复习例句”等子节点有重复,因此最后就把选择题型的子节点砍掉了。

郭琪容的感想:本周我负责的是用户调研以及软件需求规格说明书。调研部分,因为咱们的新的项目,因此咱们采用调研的方式,咱们针对咱们项目的预想实现的功能,提了几个相关的问题,看看你们对这些功能的接受程度以及他们偏好的功能。软件需求规格说明书,咱们对咱们项目开发过程一些参数以及实现功能,和用户及管理员的访问点作了规划,对开发者开发过程当中有个参考。

祁泽文的感想:本周和徐璐琳负责了NABCD的模块以及编码规范的模块,两人一块儿讨论了在英语纸质材料和各类单词app盛行的阶段,咱们如何让咱们的小程序可以脱颖而出,咱们去了解了周围同窗(主要受众:大学生)背单词的重难点,而且针对这些作出了一些总结和概括,去创新了一些个性化的功能。关于代码规范,咱们也参考了一些大公司的编码规范书写,进行学习借鉴造成了咱们团队的编码规范,但愿从此可以实现咱们如今所设计的所都指望。

徐璐琳的感想:这一周在团队内主要和祁泽文负责项目NABCD、杀手功能、录制视频与编码规范。在写NABCD的时候由于以前 我的做业提问那有仔细了解过,也仔细阅读了教材和搜集了参考材料,因此写的时候比较容易。杀手功能相对来讲比较 难找,但这也是咱们最须要解决的问题,因此在这里卡得比较久。录制视频方面由于要把NABCD汇总成一句话成电梯演说 ,就要把咱们项目最精华的部分提取出来,能在电梯到达楼层以前准确并一语中的的争取到机会,而编码规范部分不太 了解,上网也好查书也好,作了不少工做,慢慢地制定了一套还算详细完整的编码规范。这周感受到了关于一个项目起 始阶段的完整内容,不仅仅只是开发,需求分析原型设计也是有必要的,虽然不少东西都才接触到,但这也是一个学习 的过程,相信都会愈来愈好

相关文章
相关标签/搜索