精华内容
下载资源
问答
  • 软件隐喻
    2015-04-14 15:15:30
    1.隐喻或者称为“类比”,“建模”通过把你不太理解的东西和一些你较为理解的,且十分类似的做比较,可以对那些不太理解的东西产生更深刻的理解,这种隐喻的方法叫做“建模”
        2.隐喻是一种启发式的方法,告诉我们如何去发现这些引导信息,哪里去寻找,是激发思维灵感。算法是比较严谨的,直接解决问题引导
        3.书中举例四种常见的软件隐喻
          1)书写代码:对写作而言最重要的是原创性,但是对于软件构建来说,努力创造真正的原创成果的开发效率,往往低于专注于重用(reuse)以往项目的一些设计思想,代码以及测试用例的开发效率。这些说明了写作代码还不是一个恰当的的隐喻,容易产生延伸和误导,使用隐喻不能说是错误,而是贴切不贴切之分吧
          2)培植系统:将软件创造想象成类似播种和耕种的情形,每次设计一点,写出一段代码,做一点测试,小步前进。这种增量式的技术很有价值,很不错。可这个隐喻也同样存在弱点,它暗示人们将无法对开发软件的过程和方式进行任何的直接控制。在春天播下代码的种子,秋天收获丰盛的代码。很难将耕作这个隐喻恰当地引申到软件开发中
          3)系统生成:以牡蛎孕育珍珠的历程来形容软件开发。先做出软件系统的一个尽可能简单,能运行的版本,构成一个强壮的骨架,支撑起为来将要开发的真实系统。把真实的数据替换到进去,而形成了真实完整的系统,这也是增量式开发,敏捷编程的基础,作为一个隐喻而言,增量式开发的优势在于未做过度的承诺。

          4)建造软件:建造软件和盖房子相似点很多,从建筑的角度去理解软件开发.在开发软件的时候如果高级语言所提供的功能可以直接使用而不会自己去编写操作系统层次代码,比如软件中用户界面组件和数据库访问组件,建造房子装修的家电也不会自己去制造道理一样,按照房屋建筑所作的这一隐喻,可以向许多其他方向引申这也是隐喻这一方法如此强有力的原因

                建造什么类型的房子--->问题定义、

                 画出详细的蓝图,雇佣一个承包人--->软件的详细设计、
                 开工打地基,搭建房子等--->软件的构建、
                 装修房子美化--->软件优化、
                 监察框架,地基--->软件评审和详查
    更多相关内容
  • 隐喻

    2018-11-27 19:35:16
    创造往往源于想象力,写代码也是如此,计算机科学的语言可能是所有科学领域中最丰富的。通过编程可以创造出你想要的世界,只要你够能想象。

    隐喻的重要性

    我之前认为事物的逻辑性,只有对错之分,但是读完这一节带给我许多新的思考,咱们一起来品读。

    重要概念的产生往往通过类比产生,比如将分子类比为保龄球一样的小球;光和声音的传播类比等等。这些类比有好有坏,但没有绝对的对错之分,其实看待任何事物不能只是狭隘地区分对错,而应该从多个角度深入地去看。

    模型之所以容易被接受,是因为它生动形象,我们从认知上来讲最容易接受图像信息,就是因为直观,生动形象。模型有好有坏,而且对于同一事物的不同角度也能分出不同的模型,也能有不同的理解。

    比如一个悬在铁链上来回晃动的大石头。在 Galileo 之前,Aristotelian 看到它时想到的是重物必然要从高处落下来停在低处,他认为石头是在克服阻力下落,而当 Galileo 看到同一现象时,他认为自己看到了一个单摆,他认为石头是在不断地重复同一运动。

    1973年的图灵奖颁奖演说中,Charles Bachman 叙述了从地心说向日心说转移的过程。Bachman 把天文学中从地心说向日心说的转变,与 70 年代前期在计算机编程中的变化作了个对比。在当时,数据处理正从以计算机为中心向以数据库为中心进行转变。Bachman 指出,在旧的处理模式中,数据被当成是一个连续流过计算机的卡片流(以计算机为中心);而在新的模式中,数据好比是一个水池,而计算机则偶尔涉足其中(以数据库为中心)。

    旧理论一旦被抛弃就很难再捡起来,具有讽刺意味的是,旧理论的相信者认为新理论荒唐可笑,就像我们今天看旧理论一样。

    当然我们不能一味地评判对错,科学史并不是由一系列从“错误”模型到“正确”模型开关组成的,而是逐渐由“坏”模型变为“较好”的模型,从包含面较窄到包含面较宽,从覆盖领域较少到覆盖领域较多。

    事实上很多被替代的旧理论还在发挥作用,像数学理论、基础力学等。

    在软件科学中,拥有的是大量相互矛盾的模型,对于模型的理解决定了对于软件开发的理解。

    使用软件隐喻

    隐喻对于软件的作用更像是灯塔,给人以启发性的思考。

    公式是一套规则,你的所有行动必须在公式的限定下进行,而启发往往与运气相关,更具有趣味性和未知性。公式与启发的区别是微妙的,他们之间的主要区别是:公式直接指令,而启发会告诉你如何找到这些指令,至少你知道去哪里寻找。

    编程中最富于挑战性的问题便是将问题概念化,编程中许多错误往往都是概念性错误,因为每个程序在概念上都是独特的,所以创立一套可以指导每一个问题的规则是非常困难,甚至是不可能的。这样,从总体上知道该如何解决问题,便几乎和知道某一特定问题的答案一样重要了。

    你是怎样使用软件隐喻的呢?应该用它来帮助你获得关于编程过程的内在理解,利用它们来帮助你考虑编程活动,想象解决问题的更好办法。

    常用的软件隐喻

    Writing Code(写代码)

    开发软件最原始的隐喻出自“写代码”一词。这个写的隐喻说明开发一个程序就像随便写封信,你准备好纸、笔和墨水,坐下从头写到尾就算完成了。这不需要任何正式计划,你只是把你要说的都写出来。

    Jon Beitle 说,你应该准备好一杯白兰地,一支上等雪茄,与你喜欢的猎狗一同坐在火边,像一个优秀小说家一样享受一次“自由编程”。

    在一些小问题中,写代码隐喻可以充分描述他们,但是随着软件的发展,开发一个主要系统的投资已经相当于建一幢十层办公楼或造一艘远洋客轮的费用了。这种写代码隐喻已经不适用了。

    Growing a System(软件播种)

    与刻板的写隐喻相反,一些软件开发者认为你应该把创建软件当作播种或培植庄稼。你设计一小部分,编码一小部分,测试一小部分,然后在某个时候把它加到系统上,通过小步走,你减小了每次可能遇到的错误。

    但是软件种植隐喻的弱点是你对于软件开发失去了直接控制。你在春天播种代码,最后在秋天收获一大堆代码。所以不合适

    System Accretion(系统积累)

    有时候,人们在谈论种植软件而事实上他们指的是软件积累。这两个隐喻是密切联系的,但是软件积累更深刻一些。“积累”这个词,含有通过外加或吸收,缓慢生长的意思,就像河蚌逐渐分泌酸钙形成珍珠一样。在地质学上,水中悬浮物逐渐沉积形成陆地的过程也与此相似。

    另外一个与积累密切相联的词是增量。增量设计、构造、测试是软件开发的最强有力工具之一。“增量”一词在设计者心目中还远未达到“结构化”或“面向对象设计”等的地位,所以迄今为止也没有一本关于这方面的论述,这实在是令人遗憾的,因为这种书中所收集的技术将具有极大的潜力。

    在增量开发中,你首先设计系统可以运行的最简单版本。不需要输入输出,只需要成为一个坚实的骨架结构,以便承受在其之上的系统。就像河蚌刚开始产生珍珠的核——一粒沙子。

    当你搭好骨架后,逐渐地往上添加肌肉和皮肤。你把每一个伪子程序变成真正的子程序。

    增量隐喻的力量在于:作为一个隐喻,它并没有过分作出许诺,它不像耕种隐喻那样容易被错误延伸。河蚌育珍珠的联想对理解增量发展法或积累法有很大帮助。

    Building Software(创建软件)

    “建造”一词的想象比“写”或者“种植’软件的想象更为贴切,它与“增量”软件的想法是基本一致的。建造隐喻暗示了许多诸如计划、准备、执行等工作阶段。如果你仔细研究这个隐喻,你还会发现它还暗示着其它许多东西。

    建造不同的事物所需的集合是完全不同的,如建造沙滩上的一个小土堆和建造一个摩天大楼。

    较大的规模和复杂性往往意味着可以产生较大的成果。在修房子的时候,材料可能比较贵,但更大的花费是劳动力。拆掉一面墙并把它移到六英尺之外是很昂贵的,但并不是因为你浪费了许多钉子,而是因为你需要付出劳动。你应该尽可能精心设计,以避免那些本可避免的错误,以降低成本。在开发软件过程中,材料更便宜,然而劳动力成本却更高。改变一个报告的格式,可能与移走一幢房子里的墙壁一样昂贵,因为二者成本的主要部分都是劳动力。

    这两个活动之间还有什么类似之处呢?在建房子中,你不会去建造那些你可以现成买来的东西,比如洗衣机、烘干机,电冰箱、吸尘器等,除非你是个机械迷。同时,你也会去购买已经做好的地毯、门、窗和浴室用品,而不是自己动手建。如果你正在建造一个软件,你也会这样做。你会推广使用高级语言的特点,而不是去编写操作系统一级的代码。你也会利用已经存在的显示控制和数据库处理系统,利用已经通过的子程序。如果样样都自己动手是很不明智的。

    如果你在盖办公楼时工作做得不好,那么在楼内办公的人便可能面临危险。同样,如果你在创建医药、航空电子、空中交通管制、加工控制等软件时工作做得不好,后果也可能是灾难性的。危及别人生命是劣质软件的最可怕后果,但并不是它的唯一危害。如果公司的股东们因为你编写了错误软件而赔钱,那也是令人遗憾的。无论如何,无辜的人们没有义务为你的工作失误而付出代价。

    这两者之间的相似还可以推广到其它方面,这就是为什么建筑物创建隐喻是如此强有力的原因。许多常用的软件词汇来源于建筑学,如:软件体系结构、搭结构架、构造、分割代码、插入子程序等等。

    The Intellectual Toolbox(智能工具箱)

    在过去的十几年中,优秀的软件开发人员们积累了几十条关于开发软件的技术和技巧,有些像咒语般灵验,这些技术不是规则,它们是分析工具。一个优秀的工匠知道用什么样的工具干哪一样工作,而且知道该如何使用它们。程序员也是如此,关于编程你理解得越深入,你的工具箱里的工具也就越多,何时何地该如何运用它们的知识也就越多。

    把方法和技巧当作工具是很有益处的,因为这样可以使我们对其有一个正确的态度。不要把最新的“面向对象设计技术”当作上帝赐予的法宝,它不过是一件在某些场合下有用,而在某些场合下又无用的技术。

    在软件开发中,常常会有人告诉你用一种方法来代替另外一种方法。这实在不幸,如果你仅仅采用一种方法,那你就会把整个世界都当成那个工具的作用对象。你会失去用更适合的方法解决问题的机会。工具箱隐喻有助于我们保留一切方法、技巧、技术等,并在适当的时候使用它们。

    Combing Metaphors(复合隐喻)

    隐喻从本质上来说就是一种启发性思维,各种隐喻之间有相互联系的地方,这就需要你的想象力,去找到合适的隐喻。

    总结

    • 生动形象去联系事物之间的关系
    • 要找到好的隐喻
    • 要充分理解创建软件和智能工具箱隐喻
    展开全文
  • 软件隐喻It’s 2020. Technology trends continue to accelerate, thanks to a massive transition to remote work. Meanwhile, people across the world face social and economic uncertainty amid a global ...

    软件隐喻

    It’s 2020. Technology trends continue to accelerate, thanks to a massive transition to remote work. Meanwhile, people across the world face social and economic uncertainty amid a global pandemic.

    我 T公司的2020年技术趋势继续加快,得益于到远程工作一个巨大的转变。 同时,在全球大流行中,全世界的人们都面临着社会和经济的不确定性。

    How did we get here? What happens next?

    我们是怎么来到这里的? 接下来发生什么?

    As human-centred designers, one way we can make sense of complexity is via the use of metaphor. Metaphors are a part of everyday life. When we use metaphors to access unfamiliar situations, we can make better sense of them and be better able to chart a path forward.

    作为以人为本的设计师,我们可以通过一种隐喻来理解复杂性。 隐喻是日常生活一部分 。 当我们使用隐喻访问陌生的情况时,我们可以更好地理解它们,并能够更好地规划前进的道路。

    To help us make sense of our current world, I’d like to tell a story using our analog world as a metaphor for our digital one. This is a story about our internet in 2020.

    为了帮助我们理解当前的世界,我想讲一个故事,将我们的模拟世界用作数字世界的隐喻。 这是有关2020年互联网的故事。

    1.道路和目录的世界 (1. A world of roads and directories)

    Our story begins with two worlds: analog and digital. Let’s start with analog.

    我们的故事始于两个世界: 模拟数字 。 让我们从模拟开始。

    Back in the analog world, when a business was established, it needed to have an address and be listed on a directory in order to be found. In that sense, our roads were a public good that enabled people to travel to businesses, while directories helped people to find the businesses they want.

    回到模拟世界,当一家公司成立时,它需要有一个地址,并在目录中列出才能被发现。 从这个意义上讲,我们的道路是一种公共物品,使人们能够出差旅行,而目录帮助人们找到了他们想要的业务。

    In the new digital world, things were different, but the structure was largely the same: the internet became the “roads” of virtual space. Like our roads, the internet was a public good. Meanwhile, private companies provided search engines that served as directories for those roads.

    在新的数字世界中,情况有所不同,但结构基本相同:互联网成为虚拟空间的“道路”。 就像我们的道路一样,互联网是一种公共物品。 同时,私营公司提供了搜索引擎,作为这些道路的目录。

    2.数据经济 (2. The data economy)

    A comparison of the analog world where people pay with money, versus digital where some people pay with data

    Over time, a difference emerged between these two worlds. In the analog world, businesses accepted money as a form of payment. In the digital world, some providers were happy to accept data instead.

    随着时间的流逝,这两个世界之间出现了差异。 在模拟世界中,企业接受金钱作为付款方式。 在数字世界中,一些提供商乐于接受数据。

    In the dollar sense, users who paid only with their data received digital services for “free”. However, every time they accessed those services, they also gave the provider something of immense value: personal information that the provider could use to improve their services, or re-sell for money later.

    从美元的角度来看,仅使用数据付费的用户将获得“免费”的数字服务。 但是,每次他们访问这些服务时,它们也为提供者带来了巨大的价值:提供者可以用来改善其服务或稍后转售金钱的个人信息。

    3.数据的热衷 (3. The great rush for data)

    A comparison of the analog world where higher prices deter users, vs digital where users don’t mind if more data is collected

    This is where the two worlds began to diverge.

    这是两个世界开始分歧的地方。

    In the analog world, if a business decided to increase its price, people would eventually be deterred and went to buy from another business instead. In that sense, price competition kept the markets balanced.

    在模拟世界中,如果一家企业决定提高价格,那么人们最终将受到阻挠,转而从另一家企业购买商品。 从这个意义上讲,价格竞争使市场保持平衡。

    In the digital world, if a business asked for more data, people were barely deterred. To an average user, there may have been a bit more reading and scrolling through T&C’s, but the cost felt the same: click on “I Agree”. This data helped businesses to improve their services, which led to more business, in a virtuous cycle for both businesses and users.

    在数字世界中,如果企业需要更多数据,人们几乎不会感到震慑。 要在普通用户,可能已经有点多读,到T&C的滚动,但成本有同感:“我同意”点击。 这些数据有助于企业改善其服务,从而为企业和用户带来良性循环。

    Over time, digital businesses who collected the most data and made the best use of it improved their services the most. Some of those businesses became monopolies in their space.

    随着时间的流逝,收集最多数据并充分利用数据的数字业务可以最大程度地改善其服务。 这些企业中有一些在其领域内成为了垄断企业。

    4.输入新闻 (4. Enter the news)

    In both worlds, public interest information is disseminated through news. People need news in order to know what’s going on with their society and government, so that they can make informed decisions in their day-to-day.

    在这两个世界中,公共利益信息都是通过新闻传播的。 人们需要新闻来了解其社会和政府的动态,以便他们能够在日常工作中做出明智的决定。

    A comparison of the analog world where people read newspapers, versus digital where people read news sites

    However, in the digital world, as the directories consolidated and grew, people stopped going to news websites for their news. Instead, they went straight to news directories such as Google. People started to go through the directory to get to the news.

    但是,在数字世界中,随着目录的合并和增长,人们不再访问新闻网站来获取新闻。 相反,他们直接进入了新闻目录,例如Google。 人们开始浏览目录以获取新闻

    Internet users all going through a news directory to read the news, rather than the news providers themselves

    This continued until a handful of directories such as Google, Facebook, Apple, Twitter and YouTube became the main ways that people accessed their news.

    这种情况一直持续到Google,Facebook,Apple,Twitter和YouTube等少数目录成为人们访问新闻的主要方式。

    To increase the visibility of their content, news businesses started to tell stories that would better serve the algorithms of the directories. However, they also started facing competition from everywhere. Suddenly, a lot more businesses were competing to have their content seen.

    为了增加其内容的可见性,新闻企业开始讲故事,以更好地服务于目录算法。 但是,他们也开始面临来自世界各地的竞争。 突然之间,越来越多的企业开始争相查看其内容。

    Internet users all going through a news directory to read the news, as more providers join while saying “I have news too”

    5.数字网关 (5. The digital gateways)

    As the digital world expanded, this pattern unfolded not only in news, but across all industries. Examples included:

    随着数字世界的扩展,这种模式不仅在新闻领域而且在所有行业都得到了体现。 示例包括:

    • Amazon — books, e-commerce.

      亚马逊-书籍,电子商务。
    • Netflix — film and television.

      Netflix-电影和电视。
    • Spotify — music.

      Spotify-音乐。

    And so on.

    等等。

    Over time, each directory became a singular gateway to its own unique ecosystem. Those ecosystems became the cities of the digital world, each with its own rules of exchange defined by the directories who govern them.

    随着时间的流逝,每个目录都成为通向其自己独特生态系统的唯一门户 。 这些生态系统成为了数字世界中的城市,每个城市都有各自的交换规则,这些规则由管理它们的目录定义。

    Unique ecosystems in the digital world including Google, Apple, Facebook, Amazon and so on

    6.繁荣的世界? (6. A thriving world?)

    The digital world brought massive benefits to society. Thanks to the directories, people could access almost anything quickly and conveniently. For businesses, directories enabled them to sell goods and services to more customers than ever before.

    数字世界为社会带来了巨大的利益。 多亏了目录,人们几乎可以快速方便地访问任何内容。 对于企业而言,目录使他们能够向比以往更多的客户出售商品和服务。

    The digital world thrived, fuelled by the expansion of the data economy.

    在数据经济发展的推动下,数字世界蓬勃发展。

    However, things weren’t smooth for everyone. As more businesses transitioned to digital, competition intensified. Meanwhile, in order to maintain their ecosystems, directories charged businesses a toll — up to 30% of their revenue — in order to be listed in their cities.

    但是,情况并非所有人都顺利。 随着越来越多的企业过渡到数字化,竞争加剧。 同时,为了维护其生态系统,目录向企业收取了一定的通行费-最高收入的30%-以便在其城市中列出。

    Some businesses tried to challenge this arrangement. Epic Games, owner of Fortnite, tried to sell virtual goods directly to users within a city called Apple iOS. This meant Apple wouldn’t receive a toll even as iOS users made purchases in Fortnite. Apple responded in kind, and removed Epic from their ecosystem. As a result, Epic lost access to the city and its hundreds of millions of visitors.

    一些企业试图挑战这种安排。 Fortnite的所有者Epic Games试图将虚拟商品直接卖给一个叫做Apple iOS的城市中的用户。 这意味着,即使iOS用户在Fortnite购买商品,苹果也不会受到影响。 苹果做出了回应,并从其生态系统中删除了Epic 。 结果,史诗失去了进入这座城市及其数亿游客的通道。

    Illustration of the iOS ecosystem and its many visitors, while businesses are paying a toll to be listed in the ecosystem

    As all this happened, something else became apparent: the directories were now being accessed by people across the planet.

    发生了所有这些事情之后,其他事情变得显而易见了:地球上的人们现在正在访问目录。

    7.遍布全球 (7. Across the globe)

    A cloud containing many digital ecosystems, all connecting down into countries on a world map

    While roads in the analog world connected entire countries, the internet connected the entire globe.

    在模拟世界的道路连接整个国家的同时,互联网连接了整个地球。

    To a consumer, traveling the internet wasn’t costly at all. Directories made the whole world convenient and accessible from anywhere. However, a cost had been slowly accruing across parts of society.

    对于消费者来说,上网根本不花钱。 目录使您可以从任何地方方便地访问整个世界。 但是,整个社会各部门的成本一直在缓慢增长。

    As the digital world grew, people began to find their homes within different digital suburbs. Some started to divide based on where they lived in the digital world, rather than where they lived in the analog world. At times, this led to conflicts in the analog world between those who had previously shared the same interests as neighbours.

    随着数字世界的发展,人们开始在不同的数字郊区中找到自己的家。 有些人开始根据他们生活在数字世界中的位置而不是他们生活在模拟世界中的位置进行划分。 有时,这在模拟世界中导致了先前与邻居有着相同利益的人们之间的冲突。

    Meanwhile, entire industries in the analog world faded. Amazon led to the decline of bookstores. YouTube led to the decline of television. News directories, like Google and Facebook, led to the decline of traditional news.

    同时,模拟世界的整个行业都在衰落。 亚马逊导致书店的减少。 YouTube导致电视销量下降。 Google和Facebook等新闻目录导致传统新闻的衰落。

    As this happened, directory businesses accumulated a lot of money via their tolls. The biggest ones became trillion-dollar companies. However, because their business models were based on the digital world, governments across the analog world couldn’t extract much in the form of tax. Not even the government in the home state of those companies — the United States.

    发生这种情况时,目录业务通过通行费积累了很多钱。 最大的公司变成了数万亿美元的公司。 但是,由于他们的商业模式基于数字世界,因此模拟世界中的政府无法以税收的形式提取很多东西。 那些公司所在国的政府甚至都不是美国。

    8.进入人民 (8. Enter the people)

    A group of people including designers, developers and content creators has been a key part of this story.

    包括设计师,开发人员和内容创建者在内的一群人是这个故事的关键部分。

    Working alongside businesses, our mission has been to make services accessible and convenient for people. We do this by applying our collective expertise to create positive experiences in the digital world.

    与企业一起工作,我们的使命一直是使人们可以访问和方便地使用服务。 我们通过运用我们的集体专业知识在数字世界中创造积极的体验来做到这一点。

    Meanwhile, as everyday users, we also add to the digital world via our consumption, engagement with content and support for the things we enjoy.

    同时,作为日常用户,我们还通过消费,对内容的参与以及对我们喜欢的事物的支持来增加数字世界。

    However, as the digital world flourishes, parts of our analog world are in decline. So, let’s all take a step back to see why.

    但是,随着数字世界的蓬勃发展,模拟世界的某些部分正在减少。 所以,让我们都退后一步看看为什么。

    How might we make it so that both of these worlds can thrive together?

    我们如何才能使这两个世界共同成长?

    Designers viewing a poster, which is the previous image of the digital world connecting down into the analog world
    Image for post
    Bay Area Black Designers: a professional development community for Black people who are digital designers and researchers in the San Francisco Bay Area. By joining together in community, members share inspiration, connection, peer mentorship, professional development, resources, feedback, support, and resilience. Silence against systemic racism is not an option. Build the design community you believe in. 海湾地区黑人设计师 :一个专业的黑人开发社区,他们是旧金山湾区的数字设计师和研究人员。 通过在社区中团结起来,成员可以共享灵感,联系,同伴指导,专业发展,资源,反馈,支持和韧性。 对系统性种族主义保持沉默是不可行的。 建立您相信的设计社区。

    翻译自: https://uxdesign.cc/visual-metaphor-for-the-internet-7ba3fea5b0d1

    软件隐喻

    展开全文
  • Herbert A. Simon 和 Alan Newell 因在人工智能方面的... 最后,大致基于计算复杂理论提供的隐喻的“组织难以处理”的概念可能有助于确定哪些分析决策技术在受时间和管理注意力限制的真实组织中实际上是难以处理的。
  • 如果通过隐喻的方式让探索式测试方法理解起来更加直观方便的话,这样应用的难度就会降低。本文参照探索式软件测试(James A.Whittaker著)一书,书中以旅游者要去新的目的地探险隐喻,称为“漫游测试”,来阐述探索...

    探索式测试是需要探索的测试方法。如果通过隐喻的方式让探索式测试方法理解起来更加直观方便的话,这样应用的难度就会降低。本文参照探索式软件测试(James A.Whittaker著)一书,书中以旅游者要去新的目的地探险隐喻,称为“漫游测试”,来阐述探索式测试的方法,非常的诙谐幽默,大家同样可以参照。

    1、先简述下漫游测试:

    局部探索式测试:主要将决策分为5部分,分别为输入、状态、代码路径、用户数据和执行环境。

    输入:用户输入可能有无穷大,判断合法输入和非法输入,输入筛选器(防止非法输入),输入检查(牢牢抓住错误显示信息),使用异常(异常消息可以给测试非常多的思路),常规输入还是非常规输入(都比较重要),默认输入或用户提供的输入(加强测试并改变测试思路),使用输出指导输入(逆向思考)。

    状态:软件接收输入后状态变化,注意累计效应;状态可以临时,也可以长期;状态变化及其关联;输入和状态之间关系相当关键。

    代码路径:路径总量非常大;知道程序分支,理解代码走向;分支未测试到即可能有缺陷;

    用户数据:真实数据量大;真实数据结构和关系;数据存储可能有问题;注意用户隐私的问题;

    执行环境:环境本身就是输入源;新环境下可能失效;提供输入,接收输出;

    全局探索式测试:各种测试类型,分别为商业区(测试核心及重要特性)、历史区(测试遗留代码)、旅游区(快速测试各个特性,重在广度)、娱乐区(测试辅助特性)、旅馆区(测试被忽略或次要的特性)和破旧区(破坏软件特性)一共六个部分。

    商业区测试类型包括指南测试法(重在文档测试,如各种手册)、卖点测试法(重要销售特性的测试)、地标测试法(关键特性指标测试,隐喻为地标)、极限测试法(提困难/找麻烦测试法)、快递测试法(重在数据的测试)、深夜测试法(夜间各种维护任务等测试)、遍历测试法(A最短路径的所有对象);

    历史区测试类型包括恶邻测试法(缺陷横行代码段测试)、博物馆测试法(遗留代码测试)、上一版测试法(向上-向下兼容性测试);

    娱乐区测试类型包括配角测试法(测试辅助特性尤其是紧邻主要功能的特性)、深巷测试法(测试最不可能被用到或最不吸引用户的特性)、通宵测试法(长时间测试,不要关闭程序);

    旅游区测试类型包括收藏家测试法(最多收集输出)、长路径测试法(A到B的最长路径)、超模测试法(只关注外面/界面)、测一送一测试法(程序不断拷贝);

    旅馆区测试类型包括取消测试法(取消操作攻击软件)、懒汉测试法(啥也不干);

    破旧区测试类型包括破坏者测试法(操纵环境,破坏程序)、反叛测试法(恶意数据输入,其中反叛测试法引申出逆向测试法--输入最不可能的数据、歹徒测试法--非法输入、错序测试法--错误顺序)、强迫症测试法(重复同样操作);

    混合探索式测试:把探索式测试与传统测试场景相结合,有两类,分别是通过场景操作引入变化和通过故事漫游引入操作。

    通过场景操作引入变化重在场景变化,主要包括插入步骤、删除步骤、替换步骤、重复步骤、替换数据、替换环境;

    通过故事漫游引入操作类似顺路游,在原有基础上调整或改变测试场景,主要包括卖点测试法(加入一个或多个功能,不断探索)、地标测试法(打乱场景地标顺序)、极限测试法(提出困难)、深巷测试法(最不可能或没用到的功能)、强迫症测试法(重复多次)、通宵测试法(不断运行)、破坏测试法(破坏资源调用)、收藏家测试法(不断收藏输出)、超模测试法(关注界面)、配角测试法(测试最近的邻居功能)、取消测试法(取消/启动/停止)、混票测试法(跟随场景);

    2、简述下种植测试:

    局部探索式测试(类包产到户):主要分为五部分,分别为种子(类用户输入,包括类型、质量、饮食结构、气候、地理位置等)、长势(类状态,包括芽、苗、杆、长高成熟等)、成长路径(类代码路径,包括耕种、浇水、除草、施肥、收获、晾晒、加工等)、成长过程和结果数据(类用户数据,包括种植密度、面积、种类、产量、价格、特性、用途等)、成长环境(类运行环境,包括自然环境、土地环境、政策环境等,主要有阳光、水分、土质、耕作方式、肥料、自然变化等)。

    全局探索式测试(类集体劳作):

    主粮测试类型(类商业区测试类型):包括水稻、小麦和玉米等作物,是我们种植的主要粮食作物,也是基本的战略农作物。

    种植要求测试法(类指南测试法):以文档测试为主,包括经验传授、模仿学习等,按照要求进行种植,包括播种、日常培育、收割、加工等一系列环节。

    种植理由测试法(类卖点测试法):以重要特征测试为主,偏对外特性,如营养特性(能量/热量/碳水化合物/维生素等)、销售特性(价格合理/品种多样/老少皆宜/便于携带/利于存储等)、用途特性(应用广泛/产量高/代价小等)等;

    关键特性测试法(类地标测试法):以关键特性测试为主,偏对内特性,如成长特性(外观/状态/检测属性等)、作物特性(耐寒/耐汗/盐碱地等)、自然特性(温度/湿度/土壤特性等)、果实特性(能量/热量/碳水化合物/维生素等)、性能特性(产量/品质等、用途特性:人食用/动物食用/回归土地等)。

    极限种植测试法(类极限测试法):思路拓展如下,一块地只种1颗种子/N颗种子、集体全部种植某一种类型农作物、浇水(不浇水/吃当浇水/浇水过量)、除草(不除草/经常除草/除草过量)、施肥(不施肥/适当施肥/施肥过量)、喷药(不喷药/适当喷药/喷药过量)、天气(天气很差/天气适当/天气很好)、无土栽培|温室种植|气候复杂地区种植等。

    养料水分测试法(类快递测试法):思路拓展如下,N块地/N种作物/N个作物都需要看护、全周期内定期检测成长状况、全周期内不定期维护(施肥/打药/除草/浇水等,记录数据)、记录对比产量/类型/投入产出比等。

    清晨黑夜测试法(类深夜测试法):思路拓展如下,清晨/深夜定期检测成长状况、清晨/深夜不定期维护(施肥/打药/除草/浇水等)、记录对比深夜/白天数据情况等

    全部访问测试法(类遍历测试法):思路拓展如下,所有作物/所有阶段/所有状态等、遍历维护(施肥/打药/除草/浇水等);

    谷物测试类型(类历史区测试类型):包括小米等种植量小的植物,因为我们国家谷物的种植时间很久,另外此类谷物的产量小,耕作困难,相对主粮来说,比较小众,故以此类比。

    招鸟测试法(类恶邻测试法):种植小米有几个非常明显的特点,招鸟、假人、招虫、坏东西多、种植收割加工等麻烦、需要加强保护等等;鸟类容易积聚,种子经常被吃,所以会做一些假人来吓唬鸟类;谷子本身种子比较小,抗自然能力比较差,外加上种植收割加工等等比主粮麻烦多了;所以这块的问题经常比较多,需要加强对待耐心保护;

    稀罕测试法(类博物馆测试法):特点是易储存、不易坏、便于携带、补充营养、稀罕作物;加强种植维护(施肥/打药/除草/浇水等,保证与主粮待遇一样);

    老身测试法(类上一版本测试法):以前怎么种植的,以后也怎么种植,前后都能适配上。

    油类蔬菜测试类型(类娱乐区测试类型):主要包括花生、大豆等油类植物和各种蔬菜,因为他们是饮食中的配角,也是种植作物里不可缺少的一部分。

    辅料测试法(类配角测试法):辅料必不可少,与主粮一起,构成了美味的饭食;有几个特点(油类、必需品、需要爱护、门面、有时盖过主粮、价格贵、投入大等);

    白菜测试法(类深巷测试法):白菜是最不吸引人的东西,但是论营养论性价比也许是各种蔬菜里最好的,最流行和最不流行的一起测试;

    长期测试法(类通宵测试法):经常吃同一种油类或者同一种蔬菜;

    花草树木测试类型(类旅游区测试类型):目标非常明确,就是游玩,所以以此类比。

    标本测试法(类收藏家测试法):珍藏、收藏所有花朵;

    满园测试法(类长路径测试法):欣赏满园所有风光,不惜长途跋涉,也要欣赏到所有美景;

    花瓶测试法(类超模测试法):只能欣赏外表,不可触摸太多;隐喻界面测试;

    一花一木测试法(类测一送一测试法):采花一朵送一个枝叶;隐喻运行多个拷贝程序测试;

    薯类测试类型(类旅馆区测试类型):红薯、山药等在日常中经常被忽略或者不重视,其实是日常饮食中必不可少的,甚至在抵御一些疾病时非常重要。红薯在种植的过程中有两个非常明显的特点,作为隐喻再适合不过了。

    翻秧测试法(类取消测试法):红薯秧长到一段时间时,必须进行翻秧,这样才能保证营养一直输送到果实那;正如测试中经常进行程序的取消操作,不断的启动/停止;如此隐喻非常适合;

    放置测试法(类懒汉测试法):红薯种植还有一个非常重要的特点,就是成长过程中基本不用管它;这就类似于程序运行过程中测试人员尽量少的干预;如此隐喻也非常适合;

    高粱青稞测试类型(类破坏测试类型):高粱以前耕作的很多,大多是喂牲口食用,人也可以吃,比较粗糙;青稞是高原地区的一种作物,比较耐寒,产量也比较少;现在的人很少接触这些作物了。

    强迫测试法(类破坏者测试法):强迫食用高粱,使得饮食变得更差;强迫软件处理一些更为恶劣的情况;

    糟糠测试法(类反叛测试法):也许在极度饥寒的情况下,我们会吃树皮,吃野草,做出一些逆人类的举动,这就是糟糠测试法:我们逆向测试软件、输入非常数据、按照不同顺序输入数据等;

    巡回测试法(类强迫症测试法):不断重复地处理事情,如高粱仔磨粉;测试软件对待重复动作时的反应;

    混合探索式测试(类两者混合):在传统种植的基础上,做适当的改变和修正。

    秧苗种植(类通过场景操作引入变化):插入秧苗(类插入步骤)、荐秧苗(类删除步骤)、换补秧苗(类替换步骤)、重复种苗(类重复步骤)、替换秧苗品种(类替换品种)、替换土地种植(类替换环境)等

    种植成长(通过漫游测试引入操作):在原有的种植方式上稍作调整。参考全局探索式测试。

    3、总结:

    以种植作为隐喻,是比较直观的一种,尤其是亲自在农村呆过的,已经熟悉这些作物及其日常的耕作方式,就会对这些隐喻有更深的理解。在这里也没有贬低那种作物好与不好,只是为了隐喻方便,有些隐喻也未必合理恰当,大家权做拓展测试思路。测试工作本身是极具思考力的,而探索式测试又是测试技术中思考最灵活的,这里面可以隐喻到多个领域,最主要的还是通过这种方式来保证软件的质量,这是最终的目的。

     

    展开全文
  • 隐喻的重要

    2008-05-21 18:38:00
    通过把你不太理解的东西和一些你较为理解、且十分类似的东西做比较,你可以对这些不太理解的东西产生更深刻的理解。这种使用隐喻的方法叫做“建模(modeling)”。科学史中到处都可以看到借助隐喻的力量而产生的新...
  • 然而,科学却偏爱希腊天文学家创造的推测,这种推测大胆且充满隐喻性的意象:充满了火焰的圆管、天火透过小孔被视作星星以及半球状的地球骑在龟甲上。正是这种大胆的建模策略,而不是巴比伦的外推,震惊了...
  • ——通过把你不太理解的东西和你一些较为理解、且十分类似的东西作比较,你可以对这些不太理解的东西产生更深刻的理解。(这种隐喻的方法也叫“建模(modeling)”) 隐喻是对概念进行内在化(internalizing)和抽象...
  • 不要滥用架构隐喻

    2015-08-28 14:42:37
    无论是与其他队员沟通,还是与最终用户讨论架构全局,找到有形实物作为正要构建的东西隐喻,都是十分诱人的。 开始这很有效,使用一种共同语言,也能让大家都感觉到正确的方向,不断演化前进。随着时间推移,隐喻...
  • 第二章 隐喻的重要

    2009-05-08 23:05:00
    隐喻可以用苏轼的这首诗来看的话,是对同一个事物以不同角度建模得到的这么一个东西。同样是钟摆,有的人以自由落体的观点看他,有的人会以单摆定律来看。隐喻的使用方法:使用它来提高你对编程问题和编程过程的洞察...
  • 1.3.1橡胶用户:所谓橡胶制品的隐喻就是简单可变。导致产品不能用的常见原因之一就是“用户定义失败”。 1.3.2产品使用背景:产品使用背景是产品可用的关键因素。 例1:转接非常麻烦的公司分机 例2:...
  • 重要的科学发现常常来自 analogy(类比),也即把你不太理解的东西和一些你较为理解,且二者之间存在相似东西作比较,由此可对那些你不太理解的东西产生深刻的理解。 这种隐喻的方法,也叫“建模”(mod...
  • 公共存储的名字听起来也缺乏专有,很像是把东西直接堆放在那里而不会得到有序的管理。并且说实话,“公用”这个词听起来还是没有“云”来的酷。 私有云和公有云有何不同? 名字的改变不会改变其本质,它仍然是
  • 2.1隐喻的重要 隐喻: 用一种更容易理解的事物来说明一个不太容易被理解的事物(我这样认为) 通过把你不太理解额东西和一些你较为理解、且十分类似的东西作比较,你可以对这些不太理解的东西产生更深刻的理解...
  • 算法不再是需要隐喻东西,而是成为良好治理的隐喻。 当前对算法治理的幻想体现了隐喻所扮演角色的这种逆转:它们将所有治理概念简化为自动化,并减少了定义受原始寓言、思想实验和隐喻启发的新计算挑战的机会。 ...
  • 复杂,科学,方法论?

    千次阅读 2020-03-07 17:56:09
    石头兄弟希望我们可以从复杂的视角看一下微服务,但迟迟未能动笔。因为本着“澄清概念,判定标准,构建系统”的一般原则,虽然微服务已经有了很多的文字描述,那么复杂到底是什么呢?只是编程中所...
  • 就是暗示的告知用户,这个轮播共有几张,以及你在看第几张。 案例二: 还是我的这个朋友,还是他的店铺,依旧是点击率的问题。 在他的店铺内,消费者可以先领取代金券,再拿代金券去...
  • 移动界面隐喻设计

    2011-05-26 09:04:00
     对于一个产品来说,隐喻设计不仅仅是动画,各种即时状态细节的设计,更多情况下,我们需要按步骤的去完成整个隐喻的系统与结构化设计。他包含以下几项内容: 1.拟物化视觉外观与听觉反馈  隐喻设计的...
  • 有关人机交互的随语

    千次阅读 2020-05-25 00:03:33
    人的变化多端甚至无常大多植根与此… 概念的准确程序化使其内涵固化、外延滞化,集合的边界约束化使其定义域僵化、值域单一化,不能随机有机的灵活拓扑、辐射、迁移、隐喻、类比…… 自主~期望+选择+协调+控制+...
  • 2.1 隐喻的重要  重大发现往往是从类比中产生的。通过把一个你所陌生的事物与你所熟知的事物比较,你会对它有进一步的认识,从而形成你对它的独到的深刻理解,这种隐喻方法被称之为“模型化”。  模型的力量...
  • 公共存储的名字听起来也缺乏专有,很像是把东西直接堆放在那里而不会得到有序的管理。并且说实话,“公用”这个词听起来还是没有“云”来的酷。名字的改变不会改变其本质,它仍然是一种能提供更好服务的存储架构...
  • 尺度不变是指什么不变 在最近的几篇文章中,包括“ Getters / Setters。 邪恶。 期。” , “对象应该是不可变的”和“依赖注入容器是代码污染者” ,我普遍将所有可变对象标记为“ setter”(以set开头的对象...
  • 2.1隐喻的重要 通过把你不太理解的东西和一些你较为理解,且十分类似的东西做比较,你可以对这些不太理解的东西产生更深刻的理解。这种使用隐喻的方法叫“建模”。 2.2如何使用软件隐喻 2.3常见的软件隐喻 ...
  • 本节书摘来自异步社区《数字短片创作(修订版)》一书中的第2章,利用隐喻和符号讲故事,作者 【美】Sherri Sheridan ,译者 ACG国际动画教育,任秀静,郝佳,刘璐,更多章节内容可以访问云栖社区“异步社区”公众号...
  • 除非你知道自己在做什么-你的产品几乎没有什么复杂和风险,也许你已经完成了数百次此类工作-然后从头再来,在一切准备就绪之后交付。 但是,我见过的大多数产品开发工作都过于复杂且冒险,"完美的产品"方法经常...
  • 复杂是什么?

    2020-01-25 00:00:06
    ——复杂的词源学考量及其哲学追问当前复杂研究首先面临一个话语的“复杂丛林”。[1]复杂思想兴起已逾半个世纪,但到目前为止我们还没有形成统一的复杂概念,也无一个相对清晰的...
  • 代码大全之隐喻

    2011-04-16 21:26:00
     最近买了一本代码大全的书,堪称是软件工程中的字典呀,所以决定在每次阅读后写一些自己的读后感,也算是对知识的一种理解与回顾吧,今天看的是隐喻在构建程序的好处。  在构建程序时,有隐喻与算法之...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,841
精华内容 1,936
关键字:

性隐喻的东西