个人作业——软件产品案例分析
关于 华为软件开发云 —— 案例分析
标签: 软工实践
简要目录
Part 1 : 调研,评测
Part 2 : 分析
Part 3 : 建议和规划
Part 1 : 调研,评测
评测
软件的bug,功能评测,黑箱测试
1.下载并使用,描述最简单直观的个人第一次上手体验
首先友好的中文界面和精美的UI设计都深得我心。
功能方面,集成了燃尽图、代码托管、代码检查、构建、测试、部署、发布等等一系列的软件开发流程工具,可以在开发云上进行整个软件开发流程的规划和管理。其中代码检查这个功能感觉非常强大,很大程度上减少了人工审核代码的时间花费。
高度集成的开发云使整个开发过程专业化,提高效率。
2.按照描述的bug定义,找出几个功能性的比较严重的bug
Web端:
(1)在Web端页面,部分模块功能无法进行分页内跳转,打开一个新功能往往需要刷新整个页面。测试和部署模块跳转时部分UI发生了
感觉不应该发生的变化。
如下图:
构建模块UI
测试模块UI
对比之后可以发现部分UI确实发生了变化。
(2)在Chrome浏览器下(其他浏览器貌似没有这个问题),华为云登陆界面,登陆时在用户名输入框内输入一个字符后,光标会直接跳至密码输入框
,非常神秘,一个微小的bug。
Android端:
(1)只能以用户名登录,不支持手机号或邮箱账号形式的登录,对于初次使用的用户会误以为账号密码发生错误,十分不友好。
(2)不支持项目删除功能。
(3)扫描二维码功能无法正常使用,尝试扫描的二维码均为无效二维码。
(4)新建工作项功能中,上传文件或图片功能无法使用。表现为进入新建工作项页面后,选择上传的文件或图片,会直接返回上个页面,丢失之前填写的信息,也没有成功创建新的工作项。
(5)全局响应速度缓慢,影响用户使用体验。
3.你觉得为什么这个产品组的人没有发现这些bug
Web端:
(1)前端人员只更新了部分UI,测试的时候忽略了这个问题。
(2)开发人员在测试时没有注意到这个细节。
Android端:
Android端的DevCloud定位只是Web端的附属品,只实现了简单的项目查看和工作项管理功能。开发人员在测试时没有做到面面俱到,遗留下了许多bug后期也没有及时进行修复。甚至可能在测试过程中就发现了bug,但是没有进行修复就发布了软件。
4.假设你们团队需要开发这套系统,需要注意哪些方面(架构、部署运维、微服务等)
对架构、部署运维、微服务这些方面不是很了解..
谈谈自己觉得比较重要的几个方面:
- 首先是最直观的UI和中文界面,对于这一点使用过Github进行代码托管的用户一定深有体会。
- 完善的新手指引也是重要的一环,让新手迅速上手,不要在学习软件的使用上耗费太多时间。
- 不同的用户群体对于开发云有着不同的需求,可能有的用户只需要其中的几个功能,最好能让用户在创建项目时对需要的功能做出定制。
- 优秀的网络环境,在使用Github时有时候
,由于不可说的原因,常常会出现网页加载缓慢甚至加载不出的情况,十分恼人。- 良好的用户体验,无需多言,需要注意许许多多的细节。
采访
1.介绍采访对象的背景和需求(他们有没有用过这个APP或类似的APP,除了现有的功能还有别的需求么)
背景:计算机专业就读学生,使用过Github进行代码托管,未使用过华为软件开发云。
需求:代码托管,友好的交互界面。
2.让采访对象使用华为软件开发云(请上传照片证明用户的确正在使用,远程采访的同学请让别人帮忙照相)
3.描述用户使用这个产品的过程,用户的问题解决了么?软件在界面/功能/用户需求上各有什么优缺点?用户体验方面有问题么?
用户的问题在华为云上可以得到基本解决。
界面: 华为云的界面简洁大方,UI较为精美,相比于Github的英文界面也更加友好。
功能: 就代码托管这一方面来说,Github更加专业,使用者也更加广泛。而华为云上的其他功能虽然十分强大,但是对用户自身来说,没有一个较为详尽的教程指引,难以上手。
用户需求: 现有的精简和Scrum两种项目类型并不能满足所有用户群体的不同需求。
用户体验: 文件上传和网页响应速度较慢,影响使用体验。
4.用户对产品有什么改进意见?
- 能自行定制需要的功能,方便不同需求的用户进行使用。
- 添加完善的新手指引,让用户更快上手。
- 网页跳转和文件上传响应较慢,希望能优化相应速度。
5.结论:经过这么多工作,你一定有充分的理由给这个软件下一个评价,请选择一个结论:
推荐,华为云上集成了整个开发流程中需要使用到的大部分工具,使用户不用在不同的软件之间来回切换,降低效率。对于普通学生群体而言,其中的部分功能甚至超出了一般情况下的需求,显得有些冗杂。但是总体还是十分优秀的软件开发云平台,推荐使用。
Part 2 : 分析
1.估计这个项目做到这个程度大约需要多少时间(团队人数6人左右,计算机大学毕业生,并有专业UI 支持)
30周,华为软件开发云上集成的功能可以说是非常之多了,仅仅6个大学毕业生的小型开发团队,个人认为需要花大量的时间才可能将这个项目做到如此完整的程度。
2.分析这个软件目前的优劣(和类似软件相比),并推理出团队在软件工程方面可以提高的一个重要部分(具体建议)
与Github进行对比。
优势:
+ 中文界面
+ 集成更多功能
+ 一体化开发流程
+ 价格较低
+ 适合于企业开发劣势:
- 用户群体较小
- 代码托管不够专业
- 上手难度高
- 不太适合个人用户建议:
- 对于不同的用户群体提供集成不同功能的开发云
- 添加完善的新手指引,让用户更快上手
- 加大软件宣传力度
3.根据理解和体验,画出整个软件所有功能逻辑框图,根据重要度标识出各模块的重要度、完成度、出发点及效果
评分标准:★ = 20 ☆ = 0
DevCloud总体模块逻辑图
看板
- 重要度: ★★★★★
- 完成度: ★★★★☆
- 出发点: 展示项目迭代周期的进度以及任务的完成率,提供工作进展的燃尽图。
- 效果: 提供了燃尽图、需求、任务、缺陷的报表和图形化统计,使用户对项目的进度一目了然。但美中不足的是在用户拥有多个项目时, 用户的工作项流程会略显混乱。
工作
- 重要度: ★★★★★
- 完成度: ★★★★★
- 出发点: 对工作流程进行规划并分配到个人,文档和词条管理。
- 效果: 工作项的内容非常详细,完整的历史记录信息,文档支持方便的拖拽上传,词条的管理也十分便捷。
代码
- 重要度: ★★★★★
- 完成度: ★★★☆☆
- 出发点: 在线代码托管,实现多人并行开发。
- 效果: 代码托管仍依赖于Github来实现,需要进行繁琐的配置。但是仓库代码可以与工作项进行关联,提高工作效率。
检查
- 重要度: ★★★★☆
- 完成度: ★★★★★
- 出发点: 对仓库中的代码进行按照给定的规则集进行检查,并给出评分和修复建议。
- 效果: 对于代码的检查十分有效,可以定位到具体的代码错误并给出修复建议。给出大量规则集的同时也支持自定义规则集,十分便捷。
构建
- 重要度: ★★★★☆
- 完成度: ★★★★★
- 出发点: 按照用户需求进行软件构建,生成构建包并进行管理。
- 效果: 可以进行详细的用户配置,配置完成后自动进行构建任务,相当便捷,对于构建包的管理也十分有效。
测试
- 重要度: ★★★★★
- 完成度: ★★★★☆
- 出发点: 对软件进行用例测试或移动应用测试,并生成测试报告。
- 效果: 对于测试用例管理非常完善,基本可以满足所有的测试需求,移动应用的测试也非常便捷,可以一次测试多个机型,生成的测试报告内容详细。但是在用户量较多时,进行移动应用测试往往需要排队等待。
部署
- 重要度: ★★★★☆
- 完成度: ★★★★☆
- 出发点: 实现软件的在线部署。
- 效果: 主机管理功能齐全且使用便捷,支持样例模板和自定义模板,定时部署。
发布
- 重要度: ★★★☆☆
- 完成度: ★★★★☆
- 出发点: 提供软件发布的云服务。
- 效果: 提供软件仓库、软件发布、发布包下载、发布包元数据管理等功能,包含Maven仓库,镜像仓库以及编译构建仓库。
流水线
- 重要度: ★★★☆☆
- 完成度: ★★★★☆
- 出发点: 使用流水线对任务进行更加有效的执行管理。
- 效果: 同个阶段可以执行多个任务,当代码发生变更,可通过流水线一键执行代码检查、编译构建、部署任务,支持定时执行。
4.针对不同的维度评分,对用户体验方面、UI界面美观度、核心功能,分别打分
用户体验: ★★★★☆
UI界面美观度: ★★★★★
核心功能: ★★★★☆
Part 3 : 建议和规划
参考《构建之法》第8章 功能的定位和优先级;第9章 项目经理
1.如果你是项目经理,如何提高从而在竞争中胜出?
- 对于不同的用户群体提供集成不同功能的开发云
- 添加完善的新手指引,让用户更快上手
- 加大软件宣传力度
2.目前市场上有什么样的产品了?
国外:
- Github
- Gitlab
- BitBucket
- SourceForge
- ...
国内:
- 码云
- 码市
- CSDN Code
- 百度效率云
- ...
3.你要设计什么样的功能?
- 社交功能
用户之间可以互相关注,查看近期动态和代码仓库等,支持用户在线交流,使用户可以分享自己的代码。加强用户间交互,从而扩大用户群体。
4.为何要做这个功能,而不是其他功能?
华为软件开发云目前集成的软件开发功能模块已经相当完善,无需对开发这一块增加新的功能。
目前存在的主要问题是用户群体较小,用户之间的互动缺乏,一般只存在于一个项目内的开发人员之间。开发社交功能可以加强用户交互,分享代码,达到扩大用户群体目的。
5.为什么用户会用你的产品/功能?
社交功能是从实际需求出发,促进用户之间的交流,增加活跃用户数。
大多数的开发人员在使用华为软件开发云之前也或多或少使用过Github进行代码托管,对于Github上已有的社交功能并不会排斥。社交功能可以让用户与他人进行交流,学习他人的技能,提高自己,何乐而不为。
6.你的创新在哪里?可以用 NABCD 分析
- N(需求): 用户希望在托管代码的同时,与他人进行交流,学习他人或者被他人学习。
- A(做法): 在原有的基础上增加社交模块,用户之间可以互相关注,查看近期动态和代码仓库等,支持用户在线交流,使用户可以分享自己的代码。
- B(好处): 加强用户间交互,从而扩大用户群体。
- C(竞争): 同类型产品中,Github的代码托管功能虽然胜出一筹,但是其他方面的功能华为云已经强出太多。实现了社交功能之后,增强用户粘性,可以在与Github的用户竞争中更进一步。
- D(推广): 可以与高校IT专业联系
(我怀疑...),在学生的软工实践课程中进行开发云的试用,让学生们从还在学校的时候就开始使用开发云,甚至在开始工作之后也离不开开发云的使用,从小开始培养用户(手动滑稽)。
也可以与IT企业合作,以价格优惠作为优势,进一步推广开发云的使用。
7.如果你来领导这个团队,会有什么不一样?
- 面向不同的用户群体提供集成不同功能更多版本的开发云
- 增加更加完善的新手指引
- 保证软件质量的同时,更加注重与提升用户体验
- 软件发布之前进行严格、完善的测试
8.如果你的团队有5个人,4个月的时间,你作为项目经理,应该如何配置角色(开发,测试,美工等等)
- 1个项目经理(兼文档)
- 2个开发
- 1个测试
- 1个美工
9.描述你的团队在16周期间每周都要做什么,才能在第16周如期发布软件,大小里程碑绩点设定
周数 | 任务 |
---|---|
1 | 用户调研,需求分析 |
2 | 原型设计,列出要开发的系统的大功能模块 |
3 | 编写功能需求文档,确认用户需求 |
4 | 概要设计,包括系统的基本处理流程、系统的组织结构、模块划分、功能分配、接口设计、运行设计、数据结构设计和出错处理设计等 |
5~6 | 在概要设计的基础上,进行软件系统的详细设计,描述实现具体模块所涉及到的主要算法、数据结构、类的层次结构及调用关系 |
7~12 | 软件编码阶段,根据详细设计中对数据结构、算法分析和模块实现等方面的设计要求,开始具体的编写程序工作,分别实现各模块的功能,从而实现对目标系统的功能、性能、接口、界面等方面的要求 |
13~14 | 测试编写好的系统,交给用户使用,用户使用后一个一个的确认每个功能 |
15 | 提交文档,在软件测试证明软件达到要求后,向用户提交开发的目标安装程序、数据字典、《用户安装手册》、《用户使用指南》、需求报告、设计报告、测试报告等 |
16 | 用户验收,交付使用 |
17~ | 后续维护,根据用户需求的变化或环境的变化,对应用程序进行全部或部分的修改 |
- 小里程碑:第3周、第6周、第12周、第14周
- 大里程碑:第16周
10.项目发布后,有没有考虑过项目该怎么部署才能满足需求,分析16周后你所完成的项目上线需要哪些配套设备(服务器、带宽、数据库需求数量与配置)
- 应用服务器配置: 4核8G x 8
- 后端服务器配置: 8核16G x 12
- 关系型数据库: SQL Server/Oracle/MySql数量:10(读写分离 x 8、备份 x 2)
- 缓存数据库: Redis 数量:6(主备)
- 网站安全性: WAF、DDOS
- 关注用户高频使用时段对服务器的压力并做出处理
ps:这部分不是很了解,按个人感觉,对比了下学生教务系统和华为云的用户使用情况,大概猜测的。