个人作业——软件产品案例分析
个人作业——软件产品案例分析
华为软件开发云
第一部分 调研,评测
1.评测:
软件的bug,功能评测,黑箱测试
Q:下载并使用,描述最简单直观的个人第一次上手体验。
首先声明这是我第一次使用这么完整的涉及软件开发全生命周期的这么一款管理软件,初次上手体验,从创建项目到各种工作项的创建,UI体验感十足,而且项目左边菜单栏也是十分方便的。但是有一点不得不说,找华为软件云的手机APP真是花了不少时间,各种应用商店,各种百度都没有给出答案,最后是在华为软件云官网右上方偶然找着的。再者,由于华为云涉及的业务太广,盯着华为云官网才懂得个大概,华为软件开发云应该是华为云的一个子模块吧?(最后在华为云官网的产品模块里面找着软件开发云)。总之,第一次体验就是觉得web端ui体验感是挺好的,但是进入华为云官网后再去找软件开发云有点摸不着方向,华为云首页提供的是各种云计算产品,云服务器等。
Q:按照描述的bug定义,找出几个功能性的比较严重的bug。至少两个。用专业的语言描述(每个bug 不少于 40字),如有必要,可以配图.
- 首先,部分体验了web端以及android端app后。对于web端,这里我新建了3个项目,一个精简流程的项目,两个Scrum流程的项目
我的工作项如下(看起来可能有点混乱)
这里是不是可以考虑区分不同项目的工作项?- 另外手机app上新建工作项,目前对于Scrum项目的工作项类型是Bug,Feature,Story,而对于精简流程项目的工作项类型是需求任务和缺陷,但是在手机端的Scrum项目里却有Task分类如下在代码检查栏目下看见了个任务,但是新建代码检查任务好像也不是归属于Task
Q:你觉得为什么这个产品组的人没有发现这些bug?
作为一个菜鸟,我不是很懂上述是否属于bug考虑的范围,或者说它是不是bug,也可能是我个人理解错误因而误认为上述属于bug。但是上过栋哥软工课之后,我充分了解到软件测试是非常重要的,可以说比开发或者与开发同等重要,在黑盒测试阶段,软件测试员必须以客户的角度去看待产品,找出在功能或者ui体验方面的不足和缺陷,提出问题并进行改进。
Q:假设你们团队需要开发这套系统,需要注意哪些方面(架构、部署运维、微服务等)。
- 首先,在软件系统架构这一方面,业务逻辑层要注重各种功能的实现,并且还要提供完全的业务接口供展示层调用。数据访问层应该考虑怎样提高数据操作的效率。并且在总的架构层面需提取公用组件供各层调用。如果要与其他系统交互或者集成,需增加一个服务层封装业务接口,供其他系统调用。
- 其次,个人理解,软件的部署应该是指软件的安装方面吧,而运维的话应该是软件部署之后,运维人员对软件系统的监控和维护吧。因此就我而言,我觉得在这方面应该做到安装快捷方便,不捆绑太多软件的安装。而在后期监控和维护方面,应该能够提前发现问题,及时解决问题。
- 另外,在微服务方面,如果软件涉及非常多的业务,尝试着将整个应用程序拆分成多个微服务,各个微服务之间相互独立。并且每个微服务的提供可以独立部署,这样子可以提高计算资源的利用率。 (Ps:个人理解:如果不采用微服务架构,则若有一天软件功能扩展了,可能需要在重新部署一个完整的应用程序的全新迭代;如果整个应用程序分为多个独立的服务模块,则若部分微服务模块有更新或者增加新的微服务,也只是需要为重新部署相应模块)
2.采访:
第8章 用户调研,12 章 软件的用户体验。
Q:介绍采访对象的背景和需求(他们有没有用过这个APP或类似的APP,除了现有的功能还有别的需求么)
采访者没有用过类似的APP,目前正在接触和了解学习github版本控制。
Q:让采访对象使用华为软件开发云(请上传照片证明用户的确正在使用,远程采访的同学请让别人帮忙照相)。
Q:描述用户使用这个产品的过程, 用户的问题解决了么?软件在数据量/界面/功能/准确度上各有什么优缺点?用户体验方面有问题么?
用户使用过这个产品之后,解决了云仓库代码托管的问题。软件在界面上是非常好的,功能也是十分全面。(目前还没有在华为软件开发云上体验过整个项目开发的过程,只是使用了部分的功能。)总体上,用户的评价是挺高的。
Q:用户对产品有什么改进意见?
能够完善手机APP对软件开发的管理,比如增加工作项创建之后手机端的提醒,以及任务超期或者即将超期的提醒。(github对于团队每个成员的一系列动作以及自己的任务分配都有邮件的提醒方式。)
Q:结论:经过这么多工作,你一定有充分的理由给这个软件下一个评价:
推荐使用。
第二部分 分析
参考 8.6 节 对工作的估计, 和14.1 节 软件工程的质量
Q:使用此软件的大部分功能,联系第二部分的分析,估计这个项目做到这个程度大约需要多少时间(团队人数6人左右,计算机大学毕业生,并有专业UI 支持)。 分析这个软件目前的优劣(和类似软件相比),并推理出团队在软件工程方面可以提高的一个重要部分(具体建议)。
- 大概半年到一年的时间吧
- 由于我只用过github,那就说说这个软件和github的比较吧,首先华为软件开发云平台的看板,燃尽图,迭代,缺陷管理,需求管理等功能都是支持敏捷开发模式吧。并且华为软件开发云集成了软件开发中常用的大部分工具,贯穿软件开发的整个生命周期,我觉得github的功能可能只是华为软件开发云的一个子集,更大的优势是华为软件开发云有对应的中文版,这是国内程序员的福音。其中,华为软件云和github都实现了版本控制,也加强了团队成员之间的协作。但是github历史悠久,使用人数非常多,我觉得华为软件云应该加大后期推广力度。
Q:根据理解和体验,画出整个软件所有功能逻辑框图,根据重要度标识出各模块的重要度、完成度、出发点及效果;
图中有笑脸的功能是我认为比较重要的,其中百科和文档几乎在开发的每个阶段都需要使用到,我觉得这个也是非常重要的。开发中每次生成的各种文档可以保留在云上,这也是非常安全以及方便的。
Q:针对不同的维度评分,对用户体验方面、UI界面美观度、核心功能,分别打分。
用户体验方面:90分
UI界面美观度:95分
核心功能:90分
第三部分 建议和规划
参考《构建之法》第8章 功能的定位和优先级;第9章 项目经理
这个软件有很多可以提高的部分。
Q:如果你是项目经理,如何提高从而在竞争中胜出?
我觉得一款软件需要有自己的一个亮点,然后实现自己的一些必要的需求,最后才是关注自己的辅助需求以及外围功能。而我觉得这款软件最大的亮点在于它集成了很多软件开发中必要的工具,云开发便捷程序员日常的软件工作。然而我觉得集成度可能还不够高,可以在搜寻探索软件中的必要的工具进行集成或者丰富各个模块的内容,比如代码检查模块完善各种可能用到的规则集。并且提供一个模块,可以给用户提交反馈的,大多用户的反馈如果能给我们一种新的思路,并予以实现,我觉得这对于加强我们的竞争力也是非常可观的。
Q:目前市场上有什么样的产品了?
github,JIRA等等
Q:你要设计什么样的功能?
对于软件开发而言,还有许许多多的工具还没有集成,比如需求分析常用的UML类图,原型制作工具等等,另外若有业余,团队交流方面在软件开发云上也应该跟进。
Q:为何要做这个功能,而不是其他功能?
- 首先,我认为集成软件开发中必要的工具是这个产品的一大亮点,因此我会不断将它完善,因为我相信这个给我们带来的是非常可观的用户使用量以及用户满意度的提升。用户为什么用这款软件呢?大家也都体验过在软件开发过程中到处找各种软件制作类图,燃尽图,原型图等等吧,方便程序员的开发是该软件的一大初衷,因此我觉得在这方面多下功夫是不亏的,不忘初衷。
- 其次,我觉得,如果添加一个团队交流模块在这软件上面,是不是可以摆脱团队成员对QQ,wechat等聊天平台的依赖,更加方便的做开发呢?
Q:为什么用户会用你的产品/功能?
使用这款产品的应该大多是程序员吧,程序员日常的工作是十分繁忙的,时间宝贵,是不应该浪费在各种工具的下载和查找方面的,因此这款产品能够满足他们的需求,所以用户会使用这款产品。
Q:你的创新在哪里?可以用 NABCD 分析
NABCD 分析
- N:用户的需求是当我做开发的时候,各种工具在这款产品上都能够找到。
- A:解决用户痛点的方法就是上述所说的尽最大可能的集成各种工具,聊天工具也可以考虑。
- B:用户能够得到的好处就是方便用户的开发过程。
- C:在我现在所认识的范围内,华为软件开发云是我看过第一个管理软件开发全生命周期的产品,集成度也是非常高了,这是比起其他软件的一大优势。
- D:华为是国内非常著名的公司,因此加大推广让目标用户最多我们的产品,不是难事。
Q:如果你来领导这个团队,会有什么不一样?
就如上述所说,实现更高的集成度,聊天功能,并且在UI上改进一些不太合理的地方,将控制权交给用户,同时开放多个途径听取用户的心声,尽最大努力满足用户的需求。
Q:如果你的团队有5个人, 4个月的时间,你作为项目经理,应该如何配置角色(开发,测试,美工等等)?
- 在需求以及项目规划讨论完毕猴,美工应该投入到软件原型开发中并跟进UI界面设计,在美工每天工作有进展之后,前端开发人员跟进,设计可跳转无功能空壳的APP,后端开发人员应该完成各项业务逻辑的设计,功能的接口的实现,并完成数据访问接口的设计。
(美工一人,前端一人,后端两人,数据库一人)
Q:描述你的团队在16 周期间每周都要做什么,才能在第16周如期发布软件,大小里程碑绩点设定。
- 前两周进行必要的采访调查,发现用户的需求。
- 第三周进行软件架构的设计。
- 4 - 6周美工与前端配合,完成界面图的设计,以及无功能实现有交互的空壳软件,在此期间,后端以及数据库方面可以实现必要的功能以及数据库访问接口。
- 7 - 10周实现各个模块,前端界面,业务逻辑以及数据库的对接。
- 11 - 16周:软件测试,bug修改,软件发布。
Q:项目发布后,有没有考虑过项目该怎么部署才能满足需求。依据下图(某校教务处系统的部署)作为参考,分析16周后你所完成的项目上线需要哪些配套设备(服务器、带宽、数据库需求数量与配置) 。
- 应用服务器配置:4核8G * 4
- 后端服务器配置:8核16G * 4
- 关系型数据库数量:5(备份2)
- 缓存数据库数量:3(备份1)
- 网站安全性:WAF、DDOS