在之前的文章中,简要陈述了一些软件的外部质量因素,但这毕竟只是纸上谈兵的介绍,那么在实际开发中,这些因素是怎么与软件开发过程和产品相互作用的呢?重要的是,用户视角下这些因素究竟对产品表现有何影响呢?下面会通过游戏《炉石传说》的例子详细陈述。

1.正确性

《炉石传说》的正确性一直受人诟病,例如,按照隐式的游戏规则,如果卡牌的描述语句中有多个行为,它们将按照卡牌描述中的顺序执行,但是,存在一些文本描述顺序与实际的方法执行顺序不同的情况,这会让玩家规划自己的行动时变得困惑。

2.鲁棒性

《炉石传说》曾经在程序层面最引人注目的特质就是极强的鲁棒性,无论发生了什么异常情况,游戏竟然都能(以一种诡异的方式)进行下去并且直到这局游戏结算,但随着程序变得越来越臃肿,这样的特质就一去不复返了,例如,在今年的一个bug中,仅仅简单地使用 布莱恩·铜须 重复 艾萨拉女王 的效果会导致游戏崩溃,这可能是因为 艾萨拉女王 的效果触发需要一个计数器,而这个计数器的值在被复制时没有正确地传递给新的对象,导致了异常。

3.可扩展性

可扩展性可能是《炉石传说》程序做得最差劲的地方。大多数bug都是因为差劲的可扩展性导致的,而它们中的很多其实完全可以通过更有前瞻性的开发避免。例如,在最初的游戏机制中,手牌上限为10张,当涉及到对全体手牌的操作时,一些卡牌的实现就没有使用手牌上限这个变量作为参数,而是直接用了10作为参数。于是,在后来推出卡牌 瓦迪瑞斯·邪噬 将手牌上限变为12张时,如果使用一些卡牌触发复制对方手牌或抽牌至手牌上限的效果,就只会复制10张牌或抽至有10张牌。

4.可复用性

《炉石传说》的可复用性也相当糟糕,有着大量描述相同却在结算时表现出不同行为的牌,这显然是因为此前为某张牌设计的方法没想到会在未来被大规模应用而没有考虑复用性,后来新的方法实现相同描述时会在特定情况下展现出差异,甚至更愚蠢的是,新推出的卡牌有着bug,而之前类似的卡牌却没有问题,这些都是可复用性差的体现。比如 双弓积骇纳迦 可以让 海盗将领钩牙 的效果错误的重复一次,但之前推出的 日蚀 就不会有这个错误。

5.可移植性

《炉石传说》可能是移植工作量最大的游戏,因为它的PC端与IOS/安卓共用一个服务器,玩家的数据,资产都互通而游戏玩法完全相同,还需要每两周全平台同步更新版本,为此,暴雪将其程序部门的很大一部分投入进来,一定程度上影响了开发效率,但鉴于它全平台的互通取得了游戏界前所未有的成功,这绝对是值得的。

6.易用性

此时,《炉石传说》的易用性与功能性可以合起来讨论,为了不引入复杂的交互,在很长一段时间内,一张牌最多只能选择一个目标,直到 哥利亚·斯尼德的杰作 发布,很大程度上改变了其UI的交互逻辑。

7.功能性

尽管在对战内容上《炉石传说》以卡牌游戏最简单直观的操作和UI交互闻名,但商业角度其功能性简直是彻头彻尾的失败。在一个原本成功的卡牌游戏内植入一个除了美术资源,其余几乎都无法复用的宠物对战游戏无论怎么想都是一个糟糕的决策。

8.及时性

我们会注意到,对程序员而言,尽早在时间限制前完成任务是职责,及时性或许是不需要思考的因素,而对于决策者,这其实已经超出了开发的技术知识,而变成了商业问题。例如,有谁能想象在自走棋模式的热度似乎已经过去的时候,姗姗来迟的 酒馆战棋 会成为《炉石传说》的救命稻草呢?(甚至在此之后《英雄联盟》也推出了自己的自走棋才证明这一玩法并未过气)但是,同样是暴雪旗下产品,姗姗来迟的《风暴英雄》最终成为一款失败的竞品,这背后涉及的商业原理非常复杂,就不在这里赘述了,而重要的是我们在参与决策的过程中要记得不要想当然,因为这可能是超出我们知识范围的事情。

9.经济性

作为一款卡牌游戏,《炉石传说》的优势在于其低廉的开发成本,然而,同样因为一个基本的团队就能维持现有频率的更新,其在听取玩家社区意见改善功能方面做得异常缓慢,这就是其经济性上的取舍,可以看出对于微软暴雪这样的大企业而言,经济性不是妥协,而是抉择,这是一个新的视点。

希望这些例子能让读者对软件的开发质量目标有更清晰的体会。

HIT软件构造——从一个实际案例考察开发质量目标相关推荐

  1. HIT软件构造Lab1--过程分析

    HIT 软件构造Lab1–过程分析 由于实验中要求代码必须是个人完成,所以这里仅提供方法和部分代码. 文章目录 HIT 软件构造Lab1--过程分析 1 实验目标概述 2 实验环境配置 3.1 Mag ...

  2. HIT 软件构造 lab3实验报告

    2020年春季学期 计算机学院<软件构造>课程 Lab 3实验报告 姓名 赵旭东 学号 1180300223 班号 1803002 电子邮件 1264887178@qq.com 手机号码 ...

  3. HIT 软件构造 Lab1

    2022年春季学期 计算学部<软件构造>课程 Lab 1实验报告 姓名 艾浩林 学号 120L021917 班号 2003006 电子邮件 2017869860@qq.com 手机号码 1 ...

  4. HIT软件构造lab1

    目录 1 实验目标概述 1 2 实验环境配置 1 3 实验过程 1 3.1 Magic Squares 1 3.1.1 isLegalMagicSquare() 1 3.1.2 generateMag ...

  5. HIT 软件构造 lab2实验报告

    2020年春季学期 计算机学院<软件构造>课程 Lab 2实验报告 学号 1180300223 班号 1803002 目录 1 实验目标概述 1 2 实验环境配置 1 3 实验过程 1 3 ...

  6. 哈尔滨工业大学hit软件构造实验lab1

    文章目录 1 实验目标概述 2 实验环境配置 3 实验过程 3.1 Magic Squares 3.1.1 isLegalMagicSquare() 3.1.2 generateMagicSquare ...

  7. HIT 软件构造LAB2

    2022年春季学期 计算学部<软件构造>课程 Lab 2实验报告 姓名 薄文 学号 120L020513 班号 2003004 电子邮件 604094538@qq.com 手机号码 181 ...

  8. HIT 软件构造 过程、系统、工具

    软件构造的一般流程 编码,重构,调试,测试,性能分析,代码评审,构建,发布 coding 从用途上划分:编程语言.建模语言.配置语言.构建语言 从形态上划分:基于语言学的构建语言.基于数学的形式化构造 ...

  9. HIT 软件构造 多维度视图

    本节目标 从三个维度看软件构造的构成 用什么杨的模型/视图描述软件系统 将"软甲构造"看作"不同视图之间的转换" 软件构造的多维度视图 按阶段划分:构造时.运行 ...

最新文章

  1. 4块硬盘做raid几_HP-P4500存储RAID硬盘离线数据恢复案例
  2. 这里有个自学数据分析并拿到大厂offer的文科小姐姐
  3. mysql事务手写笔记_兴奋了!阿里技术官手写“MySQL笔记”,传授你年薪百万级干货...
  4. .NET Framework 4.0-RequestValidationMode
  5. 不简单的 SimpleDateFormat
  6. python读取本地文件-python解析本地HTML文件
  7. 开发中使用UEditor编辑器的注意事项
  8. java8函数式接口_java8的函数式接口
  9. L1-031 到底是不是太胖了 (10 分)
  10. 【java学习之路】(java SE篇)(练习)常用类和异常的简单练习
  11. 第四章 ASP.NET MVC HTML辅助方法生成表单标签具体用法
  12. iOS 打电话 发短信功能的实现
  13. Java语法基础学习DayTwo
  14. 设置用户计算机的ip地址,电脑动态IP地址怎么设置
  15. python爬取高清动图
  16. mysql grant授权用户_mysql grant 用户权限总结
  17. 详解变频器、逆变器工作原理
  18. No tracked branch configured for branch dev-rongtong or the branch doesn‘t exist.
  19. 计算机网络技术—知识点汇总
  20. Linux 修改虚拟机IP地址

热门文章

  1. RNG 3-2力克DK,夺得MSI冠军
  2. Ubuntu上为Android编写驱动程序
  3. Android 使用CountDownTimer实现定时任务
  4. 测量平差第三周课后作业
  5. JsonArray用法(二)
  6. nmap报tcpwrapped
  7. jupyter notebook中新建cell的方法与快捷键
  8. 华林证券“换帅”:赵卫星出任新CEO,后者一个月前多了个新领导
  9. 2019-8-9 考试总结
  10. termius 链接树莓派显示乱码锟斤拷�⊠