很多同学有误解,软件项目管理是否就是理论课?或者是几个牛人拼命写代码,其他人打酱油的课?要不然就是学习一个程序语言,搞一个职业培训的课?都不对,软件项目管理有理论,有实践,更重要的是分析,思辨,总结。在课程中,自己组织团队写一个软件,然后分析,的确是学习的一个好方法;但我们也可以从别人的成功/失败中学到很多。我们生活中很多时候要和软件打交道,大家上课开小差时候玩的手机游戏,买火车票的网站,互相联系用的微信、QQ,等等都是软件,都很值得分析。你为何成为它们的用户?它们的团队做对了什么,做错了什么?如果你来做,会做得更好么?
        通过各种案例分析,评测,辩论,总结,我们就能看到软件工程的原则在实践中的种种体现,也帮助我们在实践中做得更好。
 
产品
 
     微软小娜-智能助手,IOS(pc、安卓都有)
 
第一部分 调研, 评测
  1. 下载软件并使用起来,描述最简单直观的个人第一次上手体验。

    在IOS应用商店搜索微软小娜,出来Cortana,是软件的真实的名字,界面很简洁清晰,注册登录之后开始愉快的调戏小娜。

  1. 按照《构建之法》13.1节描述的 bug 定义, 找出几个功能性的比较严重的 bug。    

    *在《构建之法》13.1节描述的 bug 有如下定义:
      Bug:软件的缺陷,bug可以分解为:症状(Symptom)、程序错误(Fault)、根本原因(Root Cause)。

      1)症状:即从用户的角度看,软件出了什么问题。例如,微软小娜,无论让它谁的号码,它都无法从我的通讯录中找到该联系人。
      2)程序错误:即从代码的角度看,代码的什么错误导致了软件的问题。
      3) 根本原因:错误根源,即导致代码错误的根本原因。

    *发现问题:  

    (1)小娜必须在手机解锁状态下运行。锁屏状态下无法打开小娜,需要指纹密码认证。

    (2)使用微软小娜拨打已有联系人电话时,若联系人名字中存在生僻字,不能识别拨打,只是打开拨打电话界面提示输入号码或是打开与生僻字读音相近的联系人的拨打电话界;并不会自动拨打联系人的电话。

    (3)在语言的识别上有时会出现错误。例如系统语言是中文,若用英文进行语音操作,微软小娜不能对操作进行应答,只是对所说英文内容翻译。

  1. 用专业的语言描述 (每个bug 不少于 40字),如有必要, 配图更佳。

    (1)锁屏下不能直接直接唤醒打开,且锁屏状态下的语音操作不能直接完成,需要解锁手机。

    (2)使用微软小娜拨打联系人电话时,只是打开电话界面提示输入电话号码(图1)或是联系人的电话(图二),但是拨打还是需要点击“呼叫”才能拨打电话(图三)。

               

          图1                        图2                     图3

    (3)用英文进行语音操作,微软小娜不能对操作进行应答,只是对所说英文内容翻译(图4)。

                                

                                  图4

  1. 选择一个朋友(用户)进行采访,并加以记载。

    我采访的对象是宿舍室友石同学。由于他曾经也研究过微软小娜,所以我认为采访一个使用过微软小娜的人,比采访一个新手更有价值。

      采访时间:2017年10月03日  采访地点:宿舍

      采访对象:宿舍室友石同学   记录:小曾

      采访者:小曾

      采访摘要:

       我:小石你好,能采访你使用微软小娜的一些问题吗?

      宿舍室友石同学:好,你问吧!

      我:你为什么要用智能助理的相关应用呢?

      宿舍室友石同学:因为智能助理这样的应用,“能够通过了解用户的喜好和习惯”,帮助我进行日程安排,进行一些问题的解答。

      我:那你为什么用微软小娜呢?

      宿舍室友石同学:觉得挺好用的,和siri比起来,更智能一些。

      我:你都会使用微软小娜的哪些功能呢?

         宿舍室友石同学:拨打电话、阅读短信、调整闹钟、搜索信息、语音问答。

         我:那你说的这些功能,是siri、百度都可以做的事情啊?你认为微软小娜和siri、微软小娜比,好在哪里?是功能方面,操作方面,还是视觉方面?

      宿舍室友石同学:首先,第一个问题,小娜可以说是微软在机器学习和人工智能领域方面的尝试,与小娜的智能交互,不是简单地基于存储式的问答,而是对话,没有siri那些那么死板。第二个问题,我觉得更多的是功能方面吧。一个很简单的例子就是,假如手机中记录的日程显示将要参加会议,那么不需任何操作,小娜到时就会自动将手机调至会议状态。

        我:意思就是微软小娜更人性化一些?

      宿舍室友石同学:相对吧。可以说手机能够理解我将要做什么

      我:还有最后三个问题。使用这个产品的过程,你的问题都能解决么?

      宿舍室友石同学:肯定不都能解决呀!

      我:能举个例子吗?

      宿舍室友石同学:比如说有时候我查询一些专业的缩写,它上边就没有,只能查一些专业的词汇。现在肯定做的不完美吧。有些还需要谷歌和百度。

      我:下一个问题,软件在数据量、界面、功能、准确度上、用户体验上各有什么优缺点?

      宿舍室友石同学:这个我不太懂。

      我:就说你觉得界面怎么样?

      宿舍室友石同学:蛮简洁的。操作起来也很顺手。

      我:你有需要的新功能吗,你觉得页面怎么改会更好?

      宿舍室友石同学:新功能?界面背景颜色如果能多一些亮色就好了 。

      我:你对产品有什么改进意见?

      宿舍室友石同学:暂时没有吧。语音库或许能多一些选择会更好吧。

      我:好的。采访结束了,谢谢!

  5.5. 结论:经过这么多工作,你一定有充分的理由给这个软件下一个评价: 

    •   非常不推荐
    •   不推荐
    •   一般
    •   好,不错  
    •   非常推荐
第二部分 分析
(参考《构建之法》 8.6 节 对工作的估计, 和14.1 节 软件工程的质量)
  1. 尽可能地使用软件的所有功能 。

    已完成

  1. 分析这个软件目前的优劣 (和类似软件相比), 推理出这个软件团队在软件工程方面可以提高的重要方面 (具体建议)。要求把对比的结果列出一个表格,对比每个软件各自的优点和缺点。

    

  1. [附加题]根据理解和体验,画出整个软件所有功能逻辑框图,根据重要度标识出各模块的重要度、完成度、出发点及效果;
  1. [附加题]针对不同的维度评分,对用户体验方面、UI界面美观度、核心功能,分别打分(能给出更详细的评分更优)。
第三部分 建议和规划
(参考《构建之法》第8章功能的定位和优先级;第9章项目经理)
  1. 如果你是项目经理,如何提高从而在竞争中胜出?

    ①考虑市场,面向群众,定制其他需要的功能。

     ②提高UI设计,统一界面框架风格,多设计些皮肤。

     ③提高交互设计,更加方便快捷使用软件。

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

    siri、Google now等。

  1. 你要设计什么样的功能?

    UI界面优化,交互更加友好。功能不必过于复杂,应以主功能语音为主不断优化,给用户更好的体验。

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

    UI和交互如果过于繁琐,一个刚接触不熟悉软件功能的人是不会很想去使用的,这样反而使用户量减少;对于语音助手,更应该从初始去提高语音的优化,才能让更多的人去使用软件。

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

    用户使用一个软件的直接原因就是软件的功能,而主功能很完美强大的时候,良好的人机交互将会给用户带来更好的体验,把软件推荐给别人。

  1. 你的创新在哪里? 请使用 NABCD 分析(http://www.cnblogs.com/xinz/archive/2010/12/01/1893323.html).

    ①N (Need 需求)

      每个人的手机都有很多不同功能的app应用,但是如果存在一个可以汇总它们或者说集中调用这些app的功能的手机助手存在,会很便捷。如果有更人性化的人机交互,这也会给大家带来很多好感。

     ②A (Approach 做法)

      UI界面优化,交互更加友好。功能不必过于复杂,应以主功能语音为主不断优化,给用户更好的体验。

     ③B (Benefit  好处)

      操作简单,可以在一个app里打开很多app,有时候用户的手机里软件非常多,需要用到其中哪个的时候不好找到,而微软小娜可以直接语音打开进行操作。

     ④C (Competitors 竞争)

      为能够竞争得到优势,调研市场是必须的,学习别人的,同时也要创新自己特色,构建成良性发展圈,使自己的产品不断地被用户主动接受和选择。

     ⑤D (Delivery 推广)

      推广的途径有很多,可以设置一个互动平台让用户体验后提出好的想法,如果想法不错可以给予一定的奖励等。

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

    如果要我来领导这个团队,得力的助手是不可少的。另外,不管是需求分析,还是UI设计,或是代码实现,我都希望能参与。细致的问题不需要参与,但对于一些重要决策,还是需要把关的,比如使用什么样的算法作为语音识别的方法等等。这样才能对项目的进程及功能有个清晰地认识,对才能把握住大方向。能够更加清楚团队每一个角色的工作,方便日后的工作安排。还要和用户打成一片,知道他们需要什么,就努力做好什么。

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

    • 第1周           需求分析
    • 第2~3周       框架设计 功能逻辑设计
    • 第4~10周     代码开发、美工设计
    • 第11~13周   测试、该BUG、提高软件性能
    • 第14~15周   内测、修订
    • 第16周    发布

APP的案例分析的更多相关文章

  1. 作业2——英语学习APP的案例分析

    英语学习APP的案例分析 很多同学有误解,软件工程课是否就是理论课?或者是几个牛人拼命写代码,其他人打酱油的课?要不然就是学习一个程序语言,搞一个职业培训的课?都不对,软件工程有理论,有实践,更重要的 ...

  2. 第2次作业——APP的案例分析

    APP的案例分析 网易有道词典APP,使用这个软件有三年之久.唯独最爱的一点就是我每天都能听到不一样的英文歌看到创作歌手的来历,当然偶尔也会有其他国家的歌.起初使用这个软件的目的是用来查单词,每天积累 ...

  3. 个人作业2————英语学习APP的案例分析

    必应词典案例分析 第一部分 调研, 评测 1.下载并使用 第一次使用必应词典,安装完打开便是这样的界面,第一印象还行,界面平平无奇,比较简洁,上面分四个模块,这样一眼看去感觉功能比较单一 使用了下例句 ...

  4. 个人作业2 — 英语学习APP的案例分析

    一.调研准备:   1.软件:必应词典   2.平台:安卓   3.bug定义:(引用自<构建之法>13.1节)    Bug:软件的缺陷    Bug可以分解为:症状(Symptom). ...

  5. 英语学习APP的案例分析

    第一部分 调研, 评测 1.第一次上手体验 首界面友好,因为该软件面向的用户有一大部分是想提升自己英语水平的学生,所以每日例句放在首页以便一打开就能看见,同时配以图片展示,让色彩显得比较丰富,让学生从 ...

  6. 个人作业2——英语学习APP的案例分析

    第一部分:调研.评测 1.刚刚打开必应词典的时候,它给我的第一反应就是界面美观,最上面是一个查询框,下面有一些经典的句子.单词以及一些精选的文章,所有的功能都可以一目了然,看一眼就知道要怎么去使用,这 ...

  7. APP的案例分析-美团外卖

    大一才开始用软件订外卖了,很方便  ,上手快只要注册个账号登陆即可,支付时自动跳转到其他支付应用.严重的bug也没有,只有之前一段时间通过首单可以刷优惠,之后也修复了. 身边的同学也很多都在用.方便省 ...

  8. 个人作业二——英语学习APP 案例分析

    英语学习APP的案例分析 我们生活中很多时候要和软件打交道,大家上课开小差时候玩的手机游戏,买火车票的网站,互相联系用的微信.QQ,等等都是软件,都很值得分析.你为何成为它们的用户?它们的团队做对了什 ...

  9. 第二次作业:APP案例分析

    App案例分析 产品:三国杀-页游手游双通 选择理由 当今社会手机已经渐渐取代了电脑在人们日常生活的需求,既然要选择APP进行案例分析,首推的估计就是手机APP了.三国杀是陪伴我高中时代的主要娱乐方式 ...

随机推荐

  1. SQLAlchemy之SQL Expression

    SQLAlchemy是一个强大的Python SQL工具箱, 提供了包括ORM在内的各种支持. 首先使用pip安装; pip install SQLAlchemy SQL Expression Lan ...

  2. 常用算法1 - 快速排序 & 二分查找

    1. 二分查找法: 二分查找法是对一组有序的数字中进行查找,传递相应的数据,进行比较查找到与原数据相同的数据,查找到了返回对应的数组下标,没有找到返回-1. 二分查找法要求数据为一组有序的序列(大到小 ...

  3. VS2013 项目项目安装和部署

    版权声明:本文为博主原创文章,未经博主允许不得转载. 1.release 模式下生成项目 2.解决方案   右键  添加   新建项目 其他项目类型 安装和部署 3.操作前将待打包项目发布路径指向上述 ...

  4. layer 中的 layer.alert layer.msg layer.confirm

    1.layer.alert layer.alert('见到你真的很高兴', {icon: 6}); 效果图 layer.alert('墨绿风格,点击确认看深蓝', { skin: 'layui-lay ...

  5. BG.VM--CentOS

    1. CentOS 更改IP 局域网配置: 在虚拟机的[网络]连接方式中选择:仅主机(Host-Only)网络. 路径:vim /etc/sysconfig/network-scripts/ifcfg ...

  6. 图片切换(手动切换,imagelist的单独使用)

    //当前图片的索引 private int currIndex = 0; //判断上一个按钮和下一个按钮是否可用 private void SetEabled() { //如果当前显示的是第一张图片, ...

  7. T-sql 编程

    ---------------------------T-SQL编程--------------------------1.声明变量--declare @name nvarchar(50)--decl ...

  8. dynamic结合匿名类型 匿名对象传参

    首先说明下,我一般很少用dynamic关键字(类)的,因为毕竟是由反射实现的,所以对于性能方面还是吃亏不少(注:由于心里没底,查了一些资料得知,dynamic实质上好像不是由反射实现的,其性能也比直接 ...

  9. 为什么不要 "lock(this)" ? lock object 并是readonly(转载)

    一. 为什么要lock,lock了什么?   当我们使用线程的时候,效率最高的方式当然是异步,即各个线程同时运行,其间不相互依赖和等待.但当不同的线程都需要访问某个资源的时候,就需要同步机制了,也就是 ...

  10. 【学习笔记】--- 老男孩学Python,day18 面向对象------抽象类(接口类), 多态, 封装

    抽象类,接口类 Python没有接口这个概念 抽象类(接口类): 目的是制定一个规范 要学会归一化设计,有重复的东西就要想把它们合并起来 from abc import ABCMeta, abstra ...