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

举报
敏捷开发 发表于 2024/06/24 15:55:34 2024/06/24
【摘要】 关注敏捷开发,了解更多敏捷知识,提升职场竞争力!系统隐喻作为极限编程中的一个工程实践,是用日常可见的、符合团队认知的事物或活动类比于软件开发中的某一过程,帮助团队更好地理解软件开发的过程。简单来讲,就是用通俗易懂的语言将原本晦涩难懂的概念或开发过程阐释出来,达到“一说就懂,一听就会”的效果。隐喻就如同小分队交接的暗号,只有同一阵营中的成员才能明白隐喻指代的是什么。在电影《智取威虎山》中,解放...

关注敏捷开发,了解更多敏捷知识,提升职场竞争力!


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

隐喻就如同小分队交接的暗号,只有同一阵营中的成员才能明白隐喻指代的是什么。在电影《智取威虎山》中,解放军杨子荣就利用土匪间通用的黑话彻底打消了几个匪徒的怀疑,顺利地混入土匪老巢,最终活捉匪首“座山雕”。

实际上,系统隐喻的实践就是为了缩减交互人之间的沟通成本、提高沟通效率。在极限编程中,客户以及最终用户需要参与到软件开发过程中,所以为了让这类人员能够真正了解流程,在沟通时要避免使用技术术语以及公司内部的行话,代之以通俗易懂的隐喻。

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

当然,这种行为的后果就是不能在团队私密空间以外的场合谈论这一隐喻,因为它会让客户感到不满。

因此,一个合格的隐喻不仅需要清楚地描述开发过程,还要遵循以下内容:

  • 一个隐喻只涉及一种过程

假设团队A称看板为即时贴,而团队B称看板为白板,当团队A与团队B进行交流的时候,就会产生交流障碍。所以,在软件开发过程中,共享这一过程的开发团队之间要用统一的、被所有人认可的隐喻。

  • 隐喻要得到特定范围内的所有人认可

隐喻是建立在团队的共同认知的基础上的。在某一团队、某一公司甚至某一行业中,隐喻应是这一特定范围内所有人员都熟知的事物或活动,并且需要得到所有人的认可。在此基础上,我们才能在潜意识中将日常活动与软件开发过程相关联,通过概念融合形成具有启发性、指导性的系统隐喻。

  • 隐喻要与对象有高度相似性

隐喻并非是简单地将一个日常活动与软件开发过程进行类比,它不仅要找出两者之间的类同之处,还要将软件开发过程与我们日常熟悉的活动联系起来,从而帮助我们更好地认知软件问题域。

  • 隐喻要解决问题而不是产生更多问题

隐喻的设置要考虑各方面的因素,比如:日常化、普遍化等,以防止它造成不必要的误解,从而产生更多的问题。上文中所说的“垃圾”的例子就会给团队于客户的沟通带来诸多不便,因此是一个典型的反例。

  • 隐喻能够为设计提供清晰的指导

一个合格的隐喻,应该能够清晰地传达设计决策、背景和基本原理,为实现这一开发过程提供指导。
 
总之,隐喻不像算法那样是可预测的、确定的、不可变化的,相反,隐喻具有随意性。同样,系统隐喻不是银弹,因此,在具体实践中不仅需要用形象的隐喻来描述系统或功能模块是怎样工作的,还需要根据不同的实际情况来更新隐喻,以帮助所有相关人员都能清楚地理解要完成的主要需求、要开发的系统功能以及开发的总体流程。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。