需求分析

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

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

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

由于我们的项目是新项目,所以我们采用了问卷调查的调查方面收集用户的需求数据。
问卷链接:https://www.wjx.cn/report/22393231.aspx
调查过程:

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推出,可是某宝上的纸质英语资料还是卖得火得不得了,我们经过讨论,采访发现纸质的优点:可以对自己熟知,不认识的词做不同的标记,也可以在一个单词旁进行拓展记忆。形成自己的单词网。
对于需求量分析后我们认为,将来对移动端“单词记忆”的需求量会变大,并且也是学习英语的趋势。因为它方便快捷,可以做到“碎片化”学习。辅助需求是一种枯燥学习的调剂,也是让用户坚持的一种方式,毕竟背单词逃不出枯燥的怪圈。

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

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

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

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

  • 请分析自己项目的杀手功能是什么?参考教材的第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.如何才能最大限度地实现这些需求,这就是架构设计要解决的问题。请给出系统的架构设计

小程序架构参考(https://juejin.im/post/59b631d0f265da0649241368):

  • 微信小程序的框架包含两部分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汇总成一句话成电梯演说 ,就要把我们项目最精华的部分提取出来,能在电梯到达楼层之前准确并一语中的的争取到机会,而编码规范部分不太 了解,上网也好查书也好,做了很多工作,慢慢地制定了一套还算详细完整的编码规范。这周感觉到了关于一个项目起 始阶段的完整内容,不单单只是开发,需求分析原型设计也是有必要的,虽然很多东西都才接触到,但这也是一个学习 的过程,相信都会越来越好

 posted on 2018-04-15 21:10  哈哈哈1112  阅读(958)  评论(3编辑  收藏  举报