产品案例分析 - 华为软件开发云
PART1 - 调研,评测
一、评测
1. 第一次上手体验
在对“华为软件开发云”这个名字抱有极大期望的情况下,第一次使用这个产品的时候,说老实话,给我的感觉其实并不太好。
首先在web端,当我第一次点击“立即体验”的时候,突然一片灰:
拖动滑动条往下翻了半天终于找到了这个框居然在这!
(当时使用的是火狐浏览器56.0,后来似乎没有复现成功,但是因为第一次点开这网站所以印象很深,初体验是很懵逼的。)
并且登录只能选择记住登录名而不能记住密码。虽说可以理解为出于公司项目的安全考虑,但是对于小团队或者是只在自己的PC机上使用,不能记住密码感觉十分的不方便,至少可以是诸如“7天内记住密码”这样。
不过web端的UI是真的精美啊~ 城市剪影、涂鸦画风、细节精致的动画效果,给人一种很年轻、很有活力的感觉,令人很愿意继续体验。这也是即使第一次试用不太顺利,但仍对这款产品抱有好感的原因。
其次是Android端,我在11月10号左右从官网扫二维码下载了这个app。由于用的是手机注册,于是输入了手机号码和密码试图登录,结果意外的弹出提示“请输入有效的用户名和密码”,反复折腾了半天才反应过来“输入账号”是真的只能输入用户名来登录,而只有web端才可以支持输入用户名/手机号/邮箱登录,况且app登录页面的文本框标签提示“输入账号”和输错时弹出toast的提示“用户名”两者称呼不一致,很令人费解,并且和web端登录方式不一致,也感到体验不太好。
好不容易登录进去了,结果展示在面前的是一片空白,然后弹窗提示“当前网络连接异常,请稍后重试”,无论点底部栏的哪一个,都是一样的弹窗提示(确认了一下我的网络是正常的)。到这时候作为对这个产品还不是很了解的初体验用户,我已经很想卸载了。
后来隔了一周又点进去看了一眼还是一样的情况,就果真卸 · 载 · 了orz。直到前几天(11月30左右)我突然想起评测作业快要截止了,才又从官网扫二维码,重新下载了这个app(小米应用市场没有DevCloud),这时候发现可以使用。
于是在这一个月,使用十分不顺畅的情况下,我仍然把它反复几次下载到手机上的原因,是因为有个作业等我评测。而如果作为普通的用户而言,我想基本上恐怕就不会再想碰它了。况且相比起web端的精致完善,这款app还是简陋太多了。
2. 几个功能性的比较严重的Bug
测试主体:
测试工具:
- web端:Firefox 57.0.1(64)
- 移动端:MIUI 9.0 | Android 7.1.1
一些零零碎碎的Bug其实还挺不少,可能是还在公测期的原因。下面对web端和移动端各举出1个我认为相对严重的Bug。
Bug1(web端): 测试模块中,“移动应用测试”的“测试次数”错误
复现步骤:
前提:本账号已创建了两个项目,一个项目中已建立了 3 个“移动应用测试”,此时在另一个项目中建立 1 个“移动应用测试”之后:
- 打开“测试”页面(显示“移动应用测试”的“测试次数”为 3 );
- 点击“移动应用测试”(显示出的测试项有 1 个);
- 点击菜单“服务” -> “测试”(显示“移动应用测试”的“测试次数”为 0 );
- 点击“移动应用测试”(显示出的测试项有 1 个)。
gif动图:
出了这个Bug的原因,我的猜测是:1. 当有多项目时,菜单栏“服务”的子菜单到底是跳转到哪个项目的具体服务没有判断清楚。2. 当新建一个测试项时,没有及时刷新“测试次数”。
为什么这个产品组的人没有发现这个bug? 可能是测试人员只测试了一个账号一个项目的情况,而没有测试一个账号多项目吧。
Bug2(移动端) : “新建工作项”的“重要程度”非单选
复现步骤:
- 点击底部栏“+”号;
- 选择“工作项”;
- 点击“重要程度”;
- 勾选任意项;
- 点击“重要程度”;
- 勾选与前一次不同的任意项(有时会出现两个√同时存在的情况)。
gif动图:
出了这个Bug的原因,我猜:给工作项标记“重要程度”的处理方式,是把该工作项的名字加入这一“重要程度列表”里,而不是工作项有一个“重要程度”字段(也更方便在漏斗中筛选)。这样就可能会在用户勾选另一个“重要程度”时,还没来得及把之前那个“重要程度列表”里的该工作项删了。
为什么这个产品组的人没有发现这个bug? 复现“修改 \'重要程度\' 出现多勾选”这个bug的几率大概是点击三四次出现一次,可能测试的时候没有去反复多修改几次。
3. 假设我们团队需要开发这套系统,需注意的方面
首先要明确这套系统的用户是谁,要解决的是什么问题。我想用户群体其实是比较明确的了,就是那些有项目管理需求的企业/团队。对于项目经理,希望对项目有个可视化的进度把控;对于开发人员,使用方便和成熟的代码检查、测试、部署都是非常亟需的。但同样能看到,既然是SAAS,用户对这套系统的要求会是非常之高的,如果不能给团队带来切实收益,也就不会去付出高昂费用使用这套系统(若按需计费,21-100的团队估算费用是240元/人/30天)。
要完成这样一套模块多、功能完善且又质量高的产品,那必须要分为多组协同开发了,于是就涉及了微服务架构:业务拆分,服务治理,自动测试,自动运维。
在采访中我也询问了那位项目经理这个问题,然而他也只是简单的提到“注意版本管理和运维部署”。但其实我觉得我们这样的小团队怕是没办法开发这个项目,因为需要好多资源啊...orz
二、采访
被采访人: 黄华强(建发房地产集团有限公司信息部项目经理)
采访过程:
-
华为软件开发云目前集成了项目管理、配置管理、代码检查、编译、构建、测试、部署、发布等功能,您作为项目经理,是否有这方面的需求?或者对于软件云现有的功能还有别的需求吗?
答:是有这方面需求的。这些基本已经够用了。 -
在使用这个产品的过程, 您的需求/问题解决了吗?
答:需求已经解决。 -
软件在数据量/界面/功能/准确度上各有什么优缺点?
答:我体验了一下项目管理工具,感觉还不错,尤其在界面的数据展示方面让我印象深刻,有燃尽图,趋势图,工作项完成率图等,项目情况一目了然,非常直观,有利于项目管理者对项目进度,质量,成本做整体的把控。 -
用户体验方面有问题么?
答:用户体验上感觉还不错,功能比较完善,无需花太多时间研究,感觉挺容易上手的。 -
您对产品有什么改进意见?
答:如果项目管理工具能够实现:项目中具体的某一个工作事项的状态发生变化的时候,能在第一时间及时的告知项目管理者,这样便是极高的。 -
若要给这个软件下一个评价,请选择一个结论:
a 非常不推荐
b 不推荐
c 一般
d 推荐
e 非常推荐答: d
PART2 - 分析
-
使用此软件的大部分功能,估计这个项目做到这个程度大约需要多少时间(团队人数6人左右,计算机大学毕业生,并有专业UI支持)。
(
什么,要完成这么庞大的项目而我的团队只有 6名 本科毕业生(人少且极有可能0项目经验) !老板我辞职...)时间:10个月发布第一版稳定版本。感觉已经是极限了...
-
分析这个软件目前的优劣(和类似软件相比),并推理出团队在软件工程方面可以提高的一个重要部分(具体建议)。
同类竞品:软件开发云、Redmine、teamlab、DotProject的对比(转载)
具体建议:从上表中可以看出,华为软件开发云对于中小型、初创型的企业或团队的项目开发还是有极大的优势和吸引力的。但是对于已有一定规模的企业来说,很可能已早有自己的一套开发工具,想要使他们的目光转移到软件开发云上,可能会在性能方面提出更高的期望。
-
根据理解和体验,画出整个软件所有功能逻辑框图,根据重要度标识出各模块的重要度、完成度、出发点及效果
功能图
重要度标识(按“重要”、“较重要”、“一般重要”排序):
完成度标识(按“完善”、“较完善”、“不太完善”排序):
出发点&&效果
模块 出发点 效果 项目总览 作为软开云的使用入口页,展示加入的项目、工作项、历程、消息 能够对大部分的需求情况一目了然 项目管理 展示项目看板、展示项目列表、新建项目的入口 通过柱状图的看板和卡片式列表,很好展示用户所参与的项目的总体情况 代码托管 类似Github的功能,将代码托管到云 在Github或其他托管平台使用习惯了的情况下,用户可能比较难适应 代码检查 实现一些简单的代码质量管理,帮助监测源代码质量 挺好的,精准定位代码缺陷,提供示例和修复建议,被不少用户赞过 编译构建 与代码托管无缝对接,提供云端编译构建服务 挺好,能够实时监控构建状态 测试管理 提供了一体化的测试功能,覆盖测试需求、用例管理、测试执行、缺陷管理 挺好,支持自定义用例,能够辅助高效的管理测试活动 部署 方便用户将项目部署到云服务器上 挺好,比较完善,而且也有引导性的介绍 发布 包括仓库初始化、软件发布、软件下载、软件查看 挺好,比较完善,而且也有引导性的介绍 流水线 自动执行一系列流水任务 似乎是比较边缘的功能,也没有引导性介绍,不太明白是做什么用的 移动应用测试 移动应用的兼容性测试,测试各机型对此移动应用的安装、启动、使用、卸载的情况 整体还不错,报表也很清晰,但是当选择机型比较多的时候排队会相当久,而且对于有账号的移动应用仅测试了成功登录 企业账户授权 支持子账号登录,方便企业项目开发人员的使用 挺好的,邮箱验证也很快捷方便 代码广场 作为代码仓库的开源共享和展示平台 完成度不高,看不太出效果 -
针对不同的维度评分,对用户体验方面、UI界面美观度、核心功能,分别打分
web端:
用户体验:★★★☆☆
UI美观度:★★★★☆
核心功能:★★★★☆移动端:
用户体验:★★☆☆☆
UI美观度:★★★☆☆
核心功能:★★☆☆☆根据上文的阐述,对于web端和移动端的各维度评判已经很明确了。对移动端的核心功能只给了2星的原因是,移动端的功能仅囊括了查看和编辑各项目的工作项和“消息”模块,且仍然十分不完善。
PART3 - 建议和规划
-
如果你是项目经理,如何提高从而在竞争中胜出?
答:我觉得作为中国市场上立足云服务的、一整套功能相对齐全的管理软件的SAAS项目,本身就已具有相当高的竞争力。可是纵观之软开云的呼声和期待很高,而企业中真正的使用者却相对稀薄。所以若我是项目经理,首先要抓住用户痛点,在第一次开放稳定版时就把服务模块做到功能齐全、易用精致,特别是国内其他家项目管理工具所不具备的功能,提高用户黏性;其次就是提高宣传和推广力度,为什么这么好用的产品大多数人都仍只停留在“听说过但没使用”的阶段呢? -
目前市场上有什么样的产品了?
答:微软全家桶Visual Studio Team Services ,Redmine,DotProject,禅道 -
你要设计什么样的功能?
答:在“代码广场”版块里,对每个仓库卡片都有一个“评价”的选项,但我点进去这个仓库也并没能找到评价模块在哪里...orz,猜测这估计是要放在后续实现的一个功能,但我认为还不如做个wiki,而去掉评价,因为这种评价感觉意义不是太大:1. 若是需要评判优劣直接看这个仓库的收藏数就能一目了然;2. 若是为了实现用户之间的交互手段,只能在一个个的仓库下面去评论太受限,不如做wiki更方便开发人员之间的资源共享、开发遇到的常见问题整理等等。 -
为何要做这个功能,而不是其他功能?
答:因为觉得其他功能以及相对成熟完善了,在采访过程中用户也对目前已有的项目管理服务评价说“能够满足需求”,但是“代码广场”版块就显得薄弱很多,如果能做好可能能成为中国的Github交友社区~(逃 -
为什么用户会用你的产品/功能?
答: wiki为一种开放、自由的交流方式,在用户除去日常使用这种工具类的项目管理功能之外,能有个地方起到共同维护资料整理、或者是公司/团队内部或之间的交流,会让工作也不那么乏味。 -
你的创新在哪里?可以用 NABCD 分析。
答:- N(Need,需求): 开发者希望在除去工具类功能之外能有一些方便友好的交流方式。
- A(Approach,做法): 在“代码广场”版块中,除去仓库的卡片式展示,另加入一个独立的wiki模块。
- B(Benefit,好处): 因为有了用户间的交互,使整个产品变得更有情怀而非一个单纯的工具,从而可以增加用户黏性。就像Github那样形成了一个社区,即使之后出了更好的代码托管平台,但我的following都在Github上又怎么舍得离开不用呢?
- C(Competitors,竞争): VSTS有“博客”版块,但却不支持评论。Redmine似乎是有wiki版块的,但相对简陋,使用度不高。总体看来竞争度不是太高。
- D(Delivery,推广): 可以在“代码广场”版块下的“推荐”、“分类”、“排行”菜单后面紧接着放一个“Wiki”,然后UI用不同于其他的更活跃的方式显示,比如带有涂鸦式的颜色等等,来引导用户使用。
-
如果你来领导这个团队,会有什么不一样?
答:- 在软件发布之前进行更充分的测试
- 加大宣传推广的力度
-
如果你的团队有5个人,4个月的时间,你作为项目经理,应该如何配置角色(开发,测试,美工等等)?
答:
(???不是吧,前面不是还有6人,又跑路了一个...orz)- 开发:4人
- 测试:1人
- 美工:没人手,另买界面设计方案...
-
描述你的团队在16 周期间每周都要做什么,才能在第16周如期发布软件,大小里程碑绩点设定。
答:
默认前提:团队人手和资源能保证在16周内能做完。|周数|具体分配|大小里程碑设定|
|:--|:--|:--|
|1周|需求分析,设计原型,撰写软件规格需求说明书、产品规格说明书|完成SPEC|
|2~3周|搭建开发环境,确定编码规范,架构设计,详细的开发设计,团队分工||
|4~11周|编码开发阶段,完成初版后进行测试|完成内测版本|
|12周|发布v1.0版本,交付用户试用,获取反馈,修复bug、完善已有功能||
|13~15周|对用户提出的其他需求进行分析,选择合适的需求,投入此阶段进一步开发||
|16周|进行严格的性能测试、压力测试、集成测试等|发布正式版本| -
项目发布后,有没有考虑过项目该怎么部署才能满足需求。依据下图(某校教务处系统的部署)作为参考,分析16周后你所完成的项目上线需要哪些配套设备(服务器、带宽、数据库需求数量与配置) 。
**答:**(通过采访已工作的同学获知可能需要如下服务器部署)
前提: 服务器与数据库均在同一内网互通集群下, 内网带宽 1Gbps
**数量**
- 应用/后端服务器各 * 1
- mysql * 4 (异地冷备 * 1、同地热备 * 1、读写分离 2 台)
- Redis * 1
**配置**
- 静态资源采用 CDN 就近分发, 减轻应用/资源服务器压力
- 所有请求采用 WAF 过滤, 防止 CC 攻击、SQL 注入、XSS 跨站、WebShell 上传、命令注入、非法 HTTP 协议请求、常见 Web 服务器 0day 攻击等
- 数据中心网络选择接入金盾、ChinaDDOS、傲盾、飞塔等硬件防火墙, 以便于清洗牵引 DDoS 攻击, 或采用电信云堤就近牵引清洗
- 请求进入应用层之前, 采用负载均衡平衡集群节点负载 (提前进行线上压力测试, 确认转发规模)
- 应用服务器采用 4C8T 8G 配置, 并与后端服务器采用内网通讯
后端服务器采用 8C16T 16G 配置, 并与数据库集群采用内网通讯
- 数据库集群中有 MySQL 与 Redis 两种类型数据库, 分别对应存储与缓存, MySQL 硬盘采用 RAID10, Redis 内存不低于 32GB
- MySQL 采用读写分离并同地主备, 异地冷备, 以保证数据可靠与一致性, 尽可能降低一切由崩溃、掉电等带来的数据丢失、宕机问题
- Redis 自动从 MySQL 热一部分常用数据到缓存中, 以便于快速读取