需求分析:明确项目目标及产品功能树

前言

本专栏开设的目的是通过一个完整的项目开发过程来带领大家掌握前端、后端、数据库等各个模块的核心开发知识。在学习之前,重要的是选择一个合适的项目。本专栏选择了一个云笔记项目,命名为 Keller 云笔记,具体要需要什么功能呢?

无论项目大小,在动工之前,都是已经有了明确的目标,这个目标不是凭空想象的,需要经过一系列的分析与判断。百度百科上对项目需求分析做如下描述:

需求分析是指理解用户需求,就软件功能与客户达成一致,估计软件风险和评估项目代价,最终形成开发计划的一个复杂过程。

从广义上理解:需求分析包括需求的获取、分析、规格说明、变更、验证、管理的一系列需求工程。

分析原则 For what

在带着大家做云笔记项目需求分析之前,我们要掌握 4W1H 的分析原则,WhoWhatWhereWhenHow。这个原则是在做任何项目都适用的,具体解释如下。

1. Who 用户分析

  • 项目要面向什么样的用户群体、用户量有多大
  • 项目的用户是否需要分为不同的角色、需要分为哪些角色
  • 项目是否有合适的开发者、是否有足够数量的开发者
  • 项目是否用到不同技术类型的开发者、需要哪些不同类型的开发者

2. What 功能分析

  • 项目要实现什么样的功能、能满足用户什么样的需求
  • 项目的功能可以划分为什么样的功能模块
  • 项目的每个功能模块能拆分为什么样的功能点

3. Where 环境分析

  • 项目的使用环境是什么样的(用户角度)
  • 项目的运行环境是什么样的(运维角度)
  • 项目的开发环境是什么样的(开发者角度)

4. When 项目周期

  • 项目什么时候可以正式动工
  • 项目的开发周期有多久
  • 项目的每个功能预算的开发时间有多少

5. How 开发流程

  • 如何完成这个项目
  • 如何分配项目的工作量
  • 如何管理项目开发过程

Who

用户

云笔记项目面向的是广大有随时随地记录习惯的用户,对用户没有技能上的要求,角色分为两种:普通用户和管理员。普通用户可以记录、管理自己的笔记;管理员可以查看系统用户数、管理用户。单机可以同时支持上百位使用者并发使用场景,分布式部署方式可以支撑千万级用户量。

开发者

该项目需要的开发者有前端开发工程师、后端开发工程师、数据库管理员和系统运维人员,项目较小,各类工程师 1 枚即可。当然,也可以由 1 枚全栈工程师独立完成。

What

项目功能分析是项目需求分析的重点内容,在这一步能将抽象的需求描述转换为真实可见的项目功能说明书,即项目开发过程中的重要依据。

在工作中,我们可能接到老板或者甲方这样的需求描述:

我需要一款笔记类的应用,可以编辑富文本笔记,支持 MarkDown 格式,在安卓手机、苹果手机、平板电脑上都能使用。

或者是这样的:

开发一款类似微信的聊天软件。

我最近接了个项目,描述更加简单:

参照 www.xxx.com。

这个时候我们该怎么办呢?

功能分析流程

以第一个需求说明为例:

  1. 根据需求描述,我们知道老板或甲方想要一个云笔记项目
  2. 找当下使用量比较多的云笔记应用作为参考,做一个项目功能说明书的草稿
  3. 结合需求描述,判断草稿是否能满足需求:如果能满足,则以草稿为基础和老板或甲方沟通需求;否则,修改草稿
  4. 如果老板或甲方对草稿满意,以草稿为基础生成正式的项目功能说明书;否则,继续修改,继续沟通

流程图如下:

需求分析:明确项目目标及产品功能树

知道分析流程后,接下来我们实际做一下云笔记项目的功能分析。

登录功能分析

登录注册是使用应用的入口,我们来看下有道云笔记的登录页面:

需求分析:明确项目目标及产品功能树

我们可以看到在有道云笔记的登录页面提供了多种登录方式:账号密码登录、手机号验证码登录、QQ 账号快捷登录、微信账号快捷登录、新浪微博账号快捷登录。这些登录方式几乎是现有主流应用能用到的所有方式了,除此之外,还有一种在国外常用的登录方式:邮箱验证码登录。

我们分别对这几种登录方式进行分析,看哪些是适合我们的:

  • 账号密码登录:实现简单,适合所有应用使用
  • 手机号验证码登录:实现简单,只是发短信需要从短信服务提供商那里买短信包,以及企业级的身份认证,个人开发者很难实现
  • 邮箱验证码登录:实现简单,只要有个人邮箱都可以做,对于个人开发者和小量级的应用可以考虑
  • 第三方应用(QQ、微信、新浪微博等)快捷登录:需要使用第三方应用接口,适合在 PC、手机应用上使用,不太适合用在 Web 应用上

经过如上分析,云笔记项目可以使用两种登录方式:账号密码登录邮箱验证码登录

注册功能分析

确定好登录功能后,看注册。有道云笔记的注册功能,是在点击上图的“新用户注册”按钮后,跳转到网易邮箱账号注册页面:

需求分析:明确项目目标及产品功能树

观察这个页面,使用的是验证手机号的形式注册个新的邮箱账号,然后就可以用这个邮箱账号使用网易旗下的其他应用,包括有道云笔记。

和登录时我们做的分析一样,短信验证码方式对个人开发者来说不太容易实现。因此,云笔记项目使用邮箱验证码注册

登录注册效果预览

登录注册功能分析完毕后,我们就可以根据选用的登录注册方式来画出界面的原型图,参考原型图如下。

登录页面:

需求分析:明确项目目标及产品功能树

注册页面:

需求分析:明确项目目标及产品功能树

用户功能分析

有道云笔记登录后是这样的一个界面,我们来分析一下包含了多少功能。

需求分析:明确项目目标及产品功能树

这个界面是标准的上、左、中、右式布局。

上:

  • 用户头像:显示用户头像,点击后可以更换头像
    • 该功能保留
    • 登录后看到用户自己设置的头像,能增加用户体验度
  • 个人信息:显示用户昵称、性别、个人签名等
    • 该功能保留
    • 暂时不做用户简单互通,只保留用户昵称,其他信息暂不需要
  • 搜索功能:可以搜索笔记本、笔记标题、笔记内容
    • 暂不考虑

左:

  • 新建笔记/MarkDown 笔记/模板笔记/文件夹
    • 该功能保留
    • 将新建笔记与笔记本绑定,新建笔记时选择富文本或 MarkDown 格式的笔记
    • 去掉新建模板笔记功能
    • 新建文件夹功能改为新建笔记本功能
  • 最新文档:将笔记按笔记最后修改顺序倒序排列
    • 暂不考虑
    • 与我分享:查看其他用户分享的笔记
    • 暂不考虑
  • 我的文件夹:用户的个人文件夹,可以拖动文件夹改变父子级关系
    • 该功能保留
    • 我的文件夹改为笔记本,笔记本无父子级关系
    • 拖动笔记本可以改变笔记本的排列顺序
  • 回收站:保存删除的笔记本、笔记,可以恢复,也可以彻底删除
    • 该功能保留
  • 升级会员:会员功能
    • 暂不考虑
  • 给有道云笔记评分:打开应用商店链接,给应用评分
    • 暂不考虑

中:

  • 笔记列表:显示所选笔记本里的笔记列表,可以拖动笔记到其他笔记本
    • 该功能保留
    • 拖动不能改变笔记和笔记本的从属关系,但是可以改变笔记的排列顺序

右:

  • 预览笔记:可以预览富文本笔记和 MarkDown 笔记
    • 该功能保留
  • 编辑笔记:可以编辑富文本笔记和 MarkDown 笔记
    • 该功能保留

经过以上分析后,用户功能整理如下:

需求分析:明确项目目标及产品功能树

管理员功能分析

参照普通应用的管理员功能,对云笔记项目的管理员功能做如下设置:

  • 用户管理
  • 用户量统计
    • 用户总量
    • 日增长量
    • 月增长量
  • 用户活跃度统计
    • 日活统计
    • 月活统计
  • 日志管理

管理员功能整理如下:

需求分析:明确项目目标及产品功能树

Where

使用环境

云笔记项目的使用环境是浏览器,兼容 Firefox、Chrome、Safari 浏览器,不针对 IE 浏览器做特殊设置。

运行环境

云笔记项目的运行环境可以是 Windows、macOS、Linux,可运行在个人电脑、服务器、虚拟服务器上。

开发环境

  • 前端:HBuilderX
  • 后端:IntelliJ IDEA
  • 数据库:MySQL

When

项目动工日期

这里说的正式动工是指:已经对项目工作量和可行性有初步判断、开发人员初步确定、开发人员职责分配完成、可以开始项目编码工作。需要在完成前后端架构选择、数据库设计、接口文档设计后,正式动工。

项目开发周期

预计整个项目开发周期为 40 天,其中:后端 28 天,前端 12 天。

How

项目开发流程

  • 根据接口文档和数据库设计文档开发后端接口
  • 后端每个功能开发完成之后都进行单元测试
  • 后端所有功能开发完成之后进行综合测试
  • 根据接口文档开发前端页面
  • 前端页面开发过程中,每用到一个接口都要联调
  • 前端页面开发完成后进行综合测试

项目工作量分配

在本项目中所有设计、开发和部署工作,由全栈工程师独立完成。

小结

本篇通过参照目前市面上主流的云笔记《有道云笔记》,在其基础上进行相应的增减,来形成 Keller 云笔记项目的功能结构。本篇的功能树将指导整个项目开发过程,是后续数据库设计、接口文档设计、代码设计的基础。