极限编程 | 合格的系统隐喻实践是什么样的?

2020-12-23 10:00:00
yanruiyu
原创
4060
摘要:系统隐喻作为极限编程中的一个工程实践,是用日常可见的、符合团队认知的事物或活动类比于软件开发中的某一过程,帮助团队更好地理解软件开发的过程。
系统隐喻作为极限编程中的一个工程实践,是用日常可见的、符合团队认知的事物或活动类比于软件开发中的某一过程,帮助团队更好地理解软件开发的过程。简单来讲,就是用通俗易懂的语言将原本晦涩难懂的概念或开发过程阐释出来,达到“一说就懂,一听就会”的效果。

隐喻就如同小分队交接的暗号,只有同一阵营中的成员才能明白隐喻指代的是什么。在电影《智取威虎山》中,解放军杨子荣就利用土匪间通用的黑话彻底打消了几个匪徒的怀疑,顺利地混入土匪老巢,最终活捉匪首“座山雕”。
  
实际上,系统隐喻的实践就是为了缩减交互人之间的沟通成本、提高沟通效率。在极限编程中,客户以及最终用户需要参与到软件开发过程中,所以为了让这类人员能够真正了解流程,在沟通时要避免使用技术术语以及公司内部的行话,代之以通俗易懂的隐喻。

敏捷宣言合著者——Bob大叔就曾分享过这样一个例子:
 
20世纪70年代初期,他开发了一个分时系统,这个系统可以在有限的内存空间中置换应用程序。当某个应用程序占据内存时,它会把文本加载到缓冲区,里面是要发送到慢速传电打字机的内容。缓冲区满了之后,应用程序将进入休眠状态,并将被置换出来的内存保存在磁盘上,同时缓冲区也被慢慢地清空。Bob的团队将这些缓冲区比喻为垃圾卡车,其在垃圾制造者和垃圾场之间来回穿梭。团队在开发过程中都在用“垃圾”的隐喻,并将客户称为垃圾商人。
当然,这种行为的后果就是不能在团队私密空间以外的场合谈论这一隐喻,因为它会让客户感到不满。

因此,一个合格的隐喻不仅需要清楚地描述开发过程,还要遵循以下内容:
  • 一个隐喻只涉及一种过程
假设团队A称看板为即时贴,而团队B称看板为白板,当团队A与团队B进行交流的时候,就会产生交流障碍。所以,在软件开发过程中,共享这一过程的开发团队之间要用统一的、被所有人认可的隐喻。
  • 隐喻要得到特定范围内的所有人认可
隐喻是建立在团队的共同认知的基础上的。在某一团队、某一公司甚至某一行业中,隐喻应是这一特定范围内所有人员都熟知的事物或活动,并且需要得到所有人的认可。在此基础上,我们才能在潜意识中将日常活动与软件开发过程相关联,通过概念融合形成具有启发性、指导性的系统隐喻。
  • 隐喻要与对象有高度相似性
隐喻并非是简单地将一个日常活动与软件开发过程进行类比,它不仅要找出两者之间的类同之处,还要将软件开发过程与我们日常熟悉的活动联系起来,从而帮助我们更好地认知软件问题域。
  • 隐喻要解决问题而不是产生更多问题
隐喻的设置要考虑各方面的因素,比如:日常化、普遍化等,以防止它造成不必要的误解,从而产生更多的问题。上文中所说的“垃圾”的例子就会给团队于客户的沟通带来诸多不便,因此是一个典型的反例。
  • 隐喻能够为设计提供清晰的指导
一个合格的隐喻,应该能够清晰地传达设计决策、背景和基本原理,为实现这一开发过程提供指导。
 
总之,隐喻不像算法那样是可预测的、确定的、不可变化的,相反,隐喻具有随意性。同样,系统隐喻不是银弹,因此,在具体实践中不仅需要用形象的隐喻来描述系统或功能模块是怎样工作的,还需要根据不同的实际情况来更新隐喻,以帮助所有相关人员都能清楚地理解要完成的主要需求、要开发的系统功能以及开发的总体流程。
文章分类
联系我们
  • 联系人:阿道
  • 联系方式: 17762006160
  • 地址:青岛市黄岛区长江西路118号青铁广场18楼
投稿邀请

如果您有优秀的原创文章,欢迎添加联系人直接与我们联系,或通过下方邮箱发送投稿文章,一经采用,我们会付以一定的稿件报酬。

  • 投稿邮箱: yanruiyu@easycorp.ltd
  • 投稿标题:向 [敏捷开发] 网站投稿
  • 稿件要求:与敏捷开发相关的任何内容

更多投稿相关请点击 更多进行了解~