您的位置:首页 > 其它

个人作业——软件产品案例分析

2017-12-02 19:57 239 查看
作业链接:https://edu.cnblogs.com/campus/fzu/FZUSoftwareEngineering1715W/homework/1300

第一部分 调研,评测

评测:

软件的bug,功能评测,黑箱测试

下载并使用,描述最简单直观的个人第一次上手体验。

注册后进入主页,第一眼看过去,界面清新简洁、美观大方。新建项目后,点开我的项目,网页的左侧显示了一系列的功能,主要有项目规划,代码检查,代码测试,云端部署等,功能丰富,提供了敏捷开发的一整套流程。建完的每个项目都有不一样的涂鸦背景,不仅美化了界面,还方便用户查找相应的项目。按需求写完项目规划后,会自动按层级生成Epic,Feature,Backlog,很方便。总的来说,软件一开始给我的感觉是界面美观,功能丰富的,集成了敏捷开发的整个流程,非常的方便高效。





bug的定义

按照构建之法十三章的定义,BUG是软件的缺陷。

Bug可以分解为:症状、程序错误、根本原因

1).症状:即从用户的角度看,软件出了什么问题

2).程序错误:即从代码的角度看,代码的什么错误导致了软件的问题

3).根本原因:错误根源,即导致代码错误的根本原因

按照描述的bug定义,找出几个功能性比较严重的bug(至少两个)。用专业的语言描述(每个bug 不少于 40字),如有必要,可以配图.

1.T功能作为S功能的子功能,所有的T功能完成后应该等价于S功能的完成。但是在操作过程中发现,它们之间的关系好像并没有遵从上下级的关系,而是平级的,将S功能关闭后,归属于S功能的子功能还处于新建状态,不符合常理。



2.尝试用一个不存在的手机号注册华为云,结果显示号码已经被注册过了。然而,在国内还没有以123开头的手机号码。



3.上传文档的层数受到了限制,经测试发现,文档最多只能传到第3层,超过3层就无法上传了。



你觉得为什么这个产品组的人没有发现这些bug?

1.可能开发软件的人觉得用户会按照工作流程,先关闭下级功能,再关闭上级功能,因此没有自动检测上下级功能之间的冲突问题。

2.可能是号码不存在和已经注册过的号码在判断时做出的反应是一样的,才会显示已经注册过了。

3.开发人员可能觉得没有必要上传那么复杂的文件,层级多了也不方便,就限制了层数,而且git上面也还可以传一些文件。这里的文件主要传一些简单的。

假设你们团队需要开发这套系统,需要注意哪些方面(架构、部署运维、微服务等)。

开发这套系统要注意以下几个方面:

1.架构:要充分考虑软件架构的可靠性、安全性、可扩展性、可定制化、可伸缩、可维护性、客户体验、市场时机。

2.部署:应尽可能单调、直接、毫无压力。

3.运维:产品对外提供服务最重要的一点是用户体验,用户体验中最重要的是产品的可用性和响应速度。所以要注意用最合理的资源支持产品提供高可用和高速度的用户体验。

4.微服务:应考虑如何更好地将应用程序部署在云环境中。

采访:


第8章 用户调研,12 章 软件的用户体验,


相信每个同学的朋友中一定有人需要用这样的软件,记载你对这位用户的采访。例如使用下面的采访提要:

1.介绍采访对象的背景和需求(他们有没有用过这个APP或类似的APP,除了现有的功能还有别的需求么)

采访对象:学生

背景:信息安全专业小白,没有用过类似的APP。

需求:写代码,需要大量参考代码学习。

2.让采访对象使用华为软件开发云(请上传照片证明用户的确正在使用,远程采访的同学请让别人帮忙照相)



3.描述用户使用这个产品的过程, 用户的问题解决了么?软件在数据量/界面/功能/准确度上各有什么优缺点?用户体验方面有问题么?

软件中的代码广场模块有仓库代码可以参考学习,解决了一部分的问题。

优点:

1).软件功能丰富,界面清新亮丽。

2).很新颖的代码编译定制,算是一个很大的亮点,解决企业内代码审核的繁琐。

3).单个平台多种平台开发测试工具,算是比较周全。

4).项目实践性的启动、管理、开发、测试、反馈、修改一体化流程 而且拟态了真实的企业环境 。

5).解决不同风格之间的代码差异,能够增强团队之间的协作和增加便利性。

6).大量的基础环境配置和搭建,大幅度降低入学门槛和启动门槛,能够快速进行项目启动。

7).比拟性的星级判定,算是另一个更新点,能够让团队之间的人吸收他人代码之所长,互相学习促进。

8).基础办公功能具备,能够较为全面解决研发需求。

9).在大终端的情况下,代码能够在某端口上传到终端后另一端马上能进行获取。

10).代码BUG的修改提供在线搜寻的推荐修改方案。

11).能够在终端下把大团队的代码进行同时运行&部署。

缺点:

1).是在网页上操作而不是在本地操作,需要网页的加载,一旦网速慢,测试和部署费时。

2).如果是企业的代码,不适合发布在github上,那么使用华为云代码不方便,需要保密的项目也是不适合托付给云端。如果是小组合作的代码,使用github就已足够。

3).开发模式单调,缺少个性化。

用户体验方面暂时没有什么问题。

4.用户对产品有什么改进意见?

1).所有云端数据可加密存储,可以在本地操作,然后再上传云端。

2).项目管理能否根据不同工程或项目可定制化。

5.结论:整体感受一般

第二部分 分析


参考 8.6 节 对工作的估计, 和14.1 节 软件工程的质量



使用此软件的大部分功能,联系第二部分的分析,估计这个项目做到这个程度大约需要多少时间(团队人数6人左右,计算机大学毕业生,并有专业UI 支持)。 分析这个软件目前的优劣(和类似软件相比),并推理出团队在软件工程方面可以提高的一个重要部分(具体建议)。

阶段周数
开发前的计划1
需求分析2
生成设计文档2
设计复审2
代码规范0.5
具体设计4
具体编码15
代码复审3
测试1.5
测试报告1
计算工作量0.5
事后总结,改进0.5
优势:

1).相比于其它的项目管理工具,如Teamlab、Redmine等,华为软件云目前的优势主要体现在对于配置管理、代码检查、编译构建以及发布管理这几个方面,这些功能能够大大提升开发效率,适合中小型企业进行项目开发。

2).与其它软件不同的是,华为云是建立在云服务的基础上的,具有云的一些优点和特性。

3).软件提供了一套完整的开发流程,从项目启动到项目发布全都覆盖了,功能全面丰富。

劣势:

1).开发模式单调,不利于个性化开发。

2).只有中文,不支持多语言。

3).云端开发受网速限制,不像在本地一样操作方便。

4).云端的安全性得不到保障。

建议:我觉得可以提升的一个重要部分是功能的创新。现在市面上类似的软件比比皆是,要想在众多的软件中占领一席之地,就必须要有所创新,给用户带来不一样的体验,设计出一些能让用户感到眼前一亮的功能,会极大提高用户的满意度。

根据理解和体验,画出整个软件所有功能逻辑框图,根据重要度标识出各模块的重要度、完成度、出发点及效果;

华为软件开发云的基本操作流程图:



项目主要功能:



各功能逻辑框图:

1.看板



2.工作



3.代码



4.检查



5.构建



6.测试



7.部署



8.发布



9.流水线



10.设置



因为这是一款集成了各个阶段开发工具的软件,每个功能都是一整套流程中不可或缺的部分,所以每项功能都挺重要的,因此我将重要度按照功能对用户的需求程度分为2个等级。

非常重要:核心需求功能,方便用户

重要:辅助功能

模块重要度完成度出发点效果
看板非常重要90%能够一目了然查看项目进度及相关信息能很直观的显示出当前项目的进度
工作非常重要85%提供项目立项,需求创建,计划安排,任务设计等子功能操作简便,项目规划完成后会自动生成各层级相对应的Epic,Feature,Backlog
代码非常重要85%提供代码托管功能类似github,适合团队开发,效果不错
检查非常重要80%方便用户检查代码提高了用户的开发效率,降低了代码的错误率
构建非常重要85%开发阶段的设计和实现还不错
测试非常重要85%提供测试计划、测试用例、问题记录与分析等功能方便团队成员进行测试
部署非常重要85%将开发好的软件拿给用户正常使用还不错
发布非常重要85%提供软件发布的云服务还不错
流水线重要75%设计整个开发的流程开发人员清楚地知道下一阶段的任务是什么,不会显得手足无措
设置重要85%项目的基本信息设置,管理项目成员可以设置基本信息属性。给团队成员安排任务方便
针对不同的维度评分,对用户体验方面、UI界面美观度、核心功能,分别打分。

1.用户体验方面

维度维度说明评价用户体验
易上手性(10’)初次使用不存在困难 ,并可以知道APP所有的核心功能以及如何使用比较荣容易上手,很快知道某些功能的使用,但有些功能从未接触过,不知如何使用8‘
最小记忆负担(10’)使用简单,不费脑力使用起来还算简单,对于之前接触过的功能很容易操作8.5'
流畅性(10’)功能使用流畅,不会感到缺少功能造成操作不便使用起来挺流畅的,功能很强大,没有感觉缺少了什么10'
可靠性(10’)稳定的,安全的云端的数据还是存在一定的安全问题的8'
效率(10’)操作响应速度响应速度时好时慢,可能跟网速有关8'
可理解性(10’)信息可理解都是些开发中常见的词汇,而且是中文,理解起来很容易9'
总分:60.0分; 得分:51.5分; 百分制:85.83分;

2、UI界面美观度

维度维度说明评价UI界面美观度
布局和谐性(10’)排版合理排版清晰简洁,各功能块分布合理9.5'
色彩愉悦性(10’)配色合理颜色搭配让人舒适,没有较强烈的对比色出现,背景的搭配增加了用户体验的愉悦感10'
视觉清晰性(10’)字、图片大小适中字、图片的大小适中,没有出现密集堆砌在一起的情况,也没有很松散的情况9.5'
总分:30.0分; 得分:29.0分; 百分制:96.67分

3、核心功能

维度维度说明评价核心功能
有效性(10’)满足需求开发过程中的主要需求都能得到满足9'
完整性(10’)达到预期效果功能完整丰富,包括了整个开发流程9.5'
可用性(10’)使用过程流畅易操作,使用起来也很流畅,但网速会影响页面的响应8'
新颖性(10’)是否有创新建立在云端的项目管理软件,代码检查部分也比较新颖9.5'
总分:40.0分; 得分:36.0分; 百分制:90.00分

第三部分 建议和规划


参考《构建之法》第8章 功能的定位和优先级;第9章 项目经理


这个软件有很多可以提高的部分。

如果你是项目经理,如何提高从而在竞争中胜出?

根据《构建之法》8.5小节的内容,我觉得可以从以下几个方面提高:



目前市场上有什么样的产品了?

1、Redtime

Redmine 是一个开源的、基于Web的项目管理和缺陷跟踪工具。它用日历和甘特图辅助项目及进度可视化显示。同时它又支持多项目管理。Redmine是一个自由开放 源码软件解决方案,它提供集成的项目管理功能,问题跟踪,并为多个版本控制选项的支持。



2、OpenProject

OpenProject 是一个开源的、基于Web的项目管理应用程序。OpenProject 为项目团队提供了整个项目生命周期的支持,通过插件,OpenProject 支持:

协同项目计划、进度报告、任务管理、时间和成本报告、Scrum 等



3、OpenProj

项目管理软件,权威的自然是 P3(primavera project planner),但是 P3 极其昂贵,用起来也较为复杂。OpenProj 做的较为出色的是它是跨平台的,Windows, Linux, Unix, Mac(这个 Unix 版本较为特殊,一直是专门列出来的)下都能使用。小工程项目可以考虑使用 OpenProj,可以节省一大笔开支。



4、DotProject

DotProject是一个基于Web的项目管理工具,采用 PHP 开发。它包含的模块有:公司管理,项目管理,任务进度跟踪(运用甘特图),论坛,文件管理,日历,通信 录,备忘录/帮助桌面,用户与模块的权限管理,主题管理。DotProject已被翻译成17种语言并采用模块化设计以便于扩展。



你要设计什么样的功能?

即时消息功能:可以在软件开发过程中进行实时的交流互动,类似微信那样可以和固定的成员进行交流,也可以建一个群在群里进行讨论。

为何要做这个功能,而不是其他功能?

团队开发中的交流非常重要,每个人都有自己的开发风格和特点,要通过频繁的交流协调各成员之间的差异,最终才能实现一个完整高质量的项目。开发期间遇到的各种问题也需要队员之间协商解决。而且每个人平时用的聊天工具可能也都不太一样,所以可以在该软件中进行统一,不用再打开别的软件进行聊天。

华为软件开发云中有讨论的功能,可以在特定的需求模块中进行讨论,但是操作起来并不是很方便,必须要先找到特定的模块,才能进行讨论。对于需求之外的问题,就没有对应的需求模块进行讨论。

为什么用户会用你的产品/功能?

团队在进行开发的时候,沟通交流是非常重要的。高效率的团队在企业经营活动中显示了强大的生命力,团队自身要想提高效率的运作,在很大程度上依赖于团队内部成员的构成和沟通的有效性等因素。成员彼此之间需要进行强有力的沟通才能了解各自的想法,能够互相了解,并能通过协作共同解决问题。即时消息的功能就挺符合团队开发人员的需求的。即时消息功能不仅能够增进成员之间的感情,还能促进团队的开发效率,这种形式的交流相比于讨论来说更加轻松,也更方便。

你的创新在哪里?可以用 NABCD 分析。

1、N(Need,需求)

团队成员之间需要进行频繁的沟通交流。

2、A(Approach,做法)

增加即时消息的功能,类似微信那样可以跟固定成员对话,也可以建一个群,进行讨论。收到消息后会有提示。

3、B(Benifit,好处)

增强成员之间的沟通,提升开发效率,提高产品质量。

4、C(Competition,竞争)

Teamlab项目管理软件有提供即时消息的功能,但是配置管理、代码检查、构建、发布这些功能是没有的。其他的项目管理软件大多没有即时消息的功能,所以这个功能相比于其他类似软件还是有一定的差异性的,具有一定的竞争力和优势。

5、D(Delivery,推广)

既然是华为的软件,推广可以采用召开发布会的形式或者是在各大技术网站或App市场进行推广。

如果你来领导这个团队,会有什么不一样?

1、前期做足充分的市场调研,开发过程中时刻站在用户的角度考虑,注重用户体验。

2、充分调动队员的积极性,经常跟进队员进度。

3、合理安排每个成员的分工,尽量让每个人能的工作量相差不大。

4、加强后期的测试,保证软件的质量。

如果你的团队有5个人, 4个月的时间,你作为项目经理,应该如何配置角色(开发,测试,美工等等)?

1个人负责美工——进行原型设计,并在项目开发过程中不断完善UI设计,编码期间可进行非核心代码的编写

2个人负责开发——进行核心模块代码的编写

1个人负责文档的设计——阶段文档的编写,编码期间可进行非核心代码的编写

1个人负责测试——进行后期测试,编码期间可进行非核心代码模块的编写

描述你的团队在16 周期间每周都要做什么,才能在第16周如期发布软件,大小里程碑绩点设定。

时间任务
第一周需求分析,用户调研;会见客户,明确客户需求
第2周(小里程碑)需求复审,设计原型,编写需求规格说明书
第3周搭建开发环境,确定编码规范,进行系统概要设计
第4周-第5周(小里程碑)进行系统的详细设计(包括系统的基本处理流程、模块划分、接口设计等等)
第5周-第10周进入编码开发阶段,每个开发者根据设计要求分别实现各个模块的功能。开发过程中遵守编码规范以及注释规范,开发期间涉及到的命名、接口等等需要严格按照设计文档执行。
第11周测试阶段,对各功能模块进行单元测试和集成测试
第12周(中里程碑)发布
alpha
版本,在小范围内进行测试
第13周-第14周(小里程碑)修复测试过程中发现的
bug
,若有需求变更也要进行更新
第15周撰写各项文档
第16周(大里程碑)正式发布产品,交付使用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: