[TOC]

一、什么是信息架构

信息架构(information architecture),简称 IA。它是从数据库设计的领域诞生的,在百度搜索的时候,给出了一个定义,IA 的主体对象是信息,由信息建筑师来加以设计结构、决定组织方式以及归类,好让使用者与用户容易寻找与管理的一项艺术与科学。
讲的通俗一点,就是合理的组织信息的展现形式。

那么基于以上的概念,我认为在软件行业中常说的信息架构,就是设计出方便用户理解和查找的内容结构。

如果想知道什么的信息架构才是便于用户理解和查找的,那么我们首先要了解用户一般情况下会如何理解,如何查找信息内容。

1.1 查找的方式和方法

关于查找一般会有以下几个场景,知道自己要找什么、从查找A变成查找B、想要获取某一类的内容、再次查找之前查过的东西。

知道自己要找什么。
例如,小明今天想要去图书馆去借一本书回来看,那么他不知道去图书馆的路线,于是他打开地图软件,搜索图书馆,并按照路线去往图书馆顺利借到书籍。这就是日常生活中典型的知道自己要找什么。

从查找A变成查找B。 例如,小明从图书馆回家的路上,感觉走路很吃力,突然发现自己现在太胖了,需要减肥了,那么他又不知道如何减肥比较有效。于是他在网络上搜索相关的问题,发现跑步和游泳对减肥比较有效。于是他又搜索了关于跑步和游泳的相关信息,发现家附近只有一个游泳场所,收费较高。而楼下的公园刚好适合跑步。所以他决定放弃游泳,选择跑步。于是他又去搜索关于跑步的注意事项,适合跑步的时间,如何热身等等。那么,这就是比较典型的从查找A变成查找B。在开始的时候,小明想要要解决某个问题,但是不知道如何解决,于是通过获取的信息加上思考,不停的对搜索问题进行迭代。原本只是想要查询如何减肥,最后变成了查询关于跑步的注意事项。

想要获取某一类的内容。 我们继续小明的例子,小明快毕业了,在准备毕业论文,因为刚好最近在跑步,减肥效果明显,所以他想写一篇关于减肥的论文。那么小明在搜索网站上搜索了关于减肥这一类的信息。把所有有用的内容都进行了收藏或剪切。从而他了解到了,现在目前肥胖人群的占比,他们的困扰,他们大多数人选择的减肥方式,减肥效果等等。于是小明通过这些信息,很快完成了论文。这就是想要获得某一类信息的场景,通常情况下,会进行多次查找,使用类似且相关的关键词。

再次查找之前查过的东西。 来,继续小明的表演,不对,是举例。小明写完论文之后,在检查的时候发现有一个关于减肥者目前现状的内容给漏掉了,于是小明同进入搜索网站,在搜索记录中找到上次查询关于这方面信息的关键词,重新查询,找到上次相同的内容,并补全了这方面的信息。这就是再次查找之前查过的东西的场景。通常情况下会使用原来相同的关键词,查询相同的内容,获取相同的信息。

在查找的场景中,人们使用的常规方法是浏览、搜索、询问。这一类就比较好理解,再此就不做过多介绍。

1.2 理解的方式

理解尤其对于中国五千年的文化来说,是博大精深的,不同的话语,在不同的场景,使用不同的语境,表达的意思完全不同。

那么文字也是如此,在不同的场景中,不同的文字也表达着不同的意思。
那我们如何理解呢?

首先,打造场景,有场所感。例如小明在写关于减肥的论文的时候,如果提到了茶,那么读者想到的一定是减肥茶相关的信息。这就是在文字场景中打造的场所感。

其次,要模块化。例如我们准备看小明的论文,那按照我们的常规思维,标题应该在最上面。下面是作者信息,目录,然后是正文。所以在这个过程中,要关注各个信息的位置、结构、外观、布局规划等。

除此之外,我们还可以借鉴物理环境的设计。写这篇文章的时候,刚好身在图书馆,在这里找了一本书。然后了解到,这边首先通过楼层来区分成人,青少年,少儿,展览等。期次是通过字母的排序来对书籍进行分类。比如IT类书籍就可以去I类的书架上去找。再然后是每个书架的两侧都对当前书架的书籍进行了分类说明,比如这个书架包含SQL,python等书籍。然后在找到书架对应的位置,根据每本书对应的唯一编号,来找到相应的书籍。这就可以理解为信息架构的设计,我们可以在日常生活中的很多场景中发现它们。

二、信息架构的介绍

信息架构一般分为自顶向下的架构和自底向上的架构

信息架构的组件一般包含:组织系统,标签系统,导航系统,搜索系统。

能够以一种预设的路径来协助我们更加清晰便捷的浏览网站的内容,我们叫它浏览帮手,主要包含:组织系统,全站导航系统,局部导航系统,站点地图/目录,索引,指南,网站向导,情景式导航系统。

可以让用户查询字串符,并显示给用户一组满足条件的查询结果。我们叫它搜索帮手,主要包含:搜索界面,查询语言,查询构造器,检索算法,搜索区域,搜索结果。

用户去达到目标,查看内容所需的组件,主要包含:标题,嵌入式链接,嵌入式元数据,块,清单,顺序式帮手,标识符。

除此之外还有不可见的组件,例如:受控词表和叙词表,检索算法,最佳匹配。以上的内容都会在下面做不同程度的介绍。本章就不做过多的说明了

三、组织系统

我们把信息组织起来,让人们能够找到问题的答案,并提供了了解这些答案的场景,并且支持随意浏览和定向搜索,这就是组织系统。它是由组织方案和组织结构组成的。

3.1 组织方案

我们就先来说说组织方案,我们可以理解为把信息归类、排序的方案就是组织方案。组织方案又分为精确的组织方案模糊的组织方案

精确的组织方案非常好理解。常用的有字母顺序,时间顺序和地理位置顺序方案例如我们的手机通讯录,按照字母来排序的。新闻软件中的新闻是按照时间来排序的。地图软件中的信息是按照距离来排序的。

那模糊的组织方案呢?常用的有主题组织方案,以任务为导向的组织方案,特定受众方案,隐喻驱动的方案,混合方案等。例如淘宝中对各个品类的分类,这就是主题组织方案;word中顶部功能区的分类就是以任务为导向的组织方案;手机中的儿童模式就是特定受众的方案。

3.2 组织结构

组织结构主要分为两种,一种是层级结构,它是一种自顶向下的方法。还有一种是数据库模式的,它是一种自底向上的方法。

层级结构主要是对信息的互拆。但是互拆时会需要注意它的深度和广度。如果不考虑深度,拆的层级过多,那么用户在浏览的时候,需要不停地点击才能查看到最终的内容。这是很不好的体验。所以要进行宽而浅的互拆。这样,将信息放在主要页面,用户进行浏览,只需点击一次或两次即可到达最终目标页。

数据库模式主要是通过数据库中的元数据来记性组织信息。在这个过程中,主要考虑的是元数据的映射关系,还有超文本中内容的关系。

四、标签系统

标签在日常中常见的就是日记本某一页的边上贴上相应的标签标注这是XX内容。软件中常见的就是某些文章中会有一个标签,我们通过便签可以搜索到所有贴有相同标签的内容。某些软件的话题也是一种标签,在发布内容时,添加一个话题。当我们查询该话题时,就可以看到所有添加该话题所发布的内容。以上都是标签,但也不止于此,例如网站或移动软件的菜单,或者手机顶部的图标等都是标签,下面就简单介绍一下常见标签的类型。

4.1 标签的类型

常见的标签类型有情景式链接的标签,标题的标签,导航系统内的标签,作为索引词的标签,图标的标签。

举例:当我们在看一篇文章时,文章可能讲到了某个专业的术语,同时这个术语可以点击跳转到对这个术语的详细介绍的页面,那么这种就是情景式链接的标签。它通常是出现在文本内容中的超链接,用来说明某些内容或引出一些相关的内容。

在我们手机应用市场中,经常会看到某些分类,例如下载榜,免费榜单等。这些都是属于标题的标签。它通常是用统一的编号、字号、颜色、样式、空白和缩进,或这些的组合来建立的。

我们打开一个网站,看到主页顶部有几个菜单,首页,产品简介,成功案例,关于我们。或者打开app,看到了菜单如首页,社区,个人中心。点击某一个菜单时,还会出现几个菜单选项。这些都是导航系统内的标签。它最主要的一点就是强调一致性。例如我在首页的时候,首页叫做首页,我点击个人中心,首页就叫做主页了,这样就会让用户产生误解,也会有不好的体验。

刚才我们提到的搜索某一个话题,就可以看到所有添加该话题所发布的内容。这就是作为索引词的标签。它可以对内容进行精确搜索,是很有价值的一种方法。

当我们手机静音时,我们的手机上方就会出现一个小铃铛的图标。当我们设定了闹铃,手机顶部也会有一个闹钟的图标。这就是典型的图标标签。它其实在生活中很常见,例如洗手间门口的男女标识。但是在图标的使用中要注意表达的准确性,即图标不会有异议,用户看到后,第一反应就可以准确理解它要表达的意思。

4.2 通用原则

在设计标签时,会有一些通用原则,可以为我们在设计标签时,提供很好的帮助。

尽可能的缩小范围。 在设计标签的时候,范围越小,就越可以明确有效的表达出它的含义。

一致性。 如前面提到的,一致性在这个过程中很重要,而一致性不止包含命名,还包含风格、版面形式、语法、粒度、全面性、用户。

除了以上信息之外,还有一点是最重要的,那就是要时常优化和调整你的标签系统。

五、导航系统

导航系统主要分为嵌入式导航辅助导航高层级导航的方法。
大多数网站中都会包含3种主要的嵌入式导航。辅助导航它可以提供查找内容和完成任务的辅助方法。

5.1 嵌入式导航

嵌入式导航常见的三种,分别是全局导航、局部导航、情景式导航
全局导航,就是要在网站的每一页都会显示的全域导航系统。局部导航一般会有一个或多个,我们可以称之为子网站或网站中的网站,例如点击全局导航的某个菜单,会弹出或显示相应的子菜单,这个子菜单就是局部导航。情景式导航可以是文章内的超链接,也可能是标题等,点击可以跳转新的网页、下载文件或指定某个对象。

5.2 辅助导航

辅助导航包括站点地图、索引、指南、配置器、搜索。 站点地图比较适合层级结构组织的大型系统,如果架构本身层次不强,建议使用索引或其他可视化的表示比较好。索引对于小型网站可以利用你对内容的了解来决定要引入哪些链接,然后手动创建索引。对于大型网站,在文件层次上可采用控词表编制索引来自动生成网站索引。指南包括导游,教程,以及针对特定用户、主题或任务的走查。配置器可以理解为指南的特殊形式。搜索是辅助导航的核心部分,在下一章我们会进行详细介绍。

5.3 高级导航

高级导航主要分为个性化和自定义、可视化、社会化导航
个性化和自定义可以针对个人的行为进行定制化,缺点在于不适用于较宽泛的研究。可视化即为图片或图标式,例如购买商品时图片式的列表。社会化导航主要是基于算法的导航。

六、搜索系统

搜索系统主要包含确定搜索区域、选择要建立索引内容的组件、搜索算法、显示结果、设计搜索界面。

6.1 确定搜索区域

首先来看看确定搜索区域,搜索区域其实就是信息环境的子集,在搜索的时候会把无关的内容剔除掉。一般常用的方式有导航/目标,为特定用户建立索引,按主题索引,索引最近的内容。

导航/目标中,至少包含两种网页或者屏幕,导航网页和目标网页。导航网页的目标主要是让你达到目标网页,而目标网页则存放着你想要搜索的实际信息。其实针对这种搜索,本质上是属于精确搜索。

为特定用户建立索引。 通俗的讲,其实就是了解该搜索引擎面对的几种用户群,并对相应的用户群设定针对性的功能或筛选条件。

按主题索引。 例如在电商平台搜索apple,出现了很多结果,那么按主题索引就是在结果中再次进行筛选,我可以选择手机、手机壳、电脑等。这就是按主题搜索

索引最近的内容。 生活中比较常见的就是搜索新闻的时候,因为新闻具有时效性,所以在搜索后,可以按照时间筛选。例如今天、昨天、近7天、近1个月等。或者在搜索其他内容的时候,可以选择搜索某一时间段的内容。

6.2 选择要建立索引的内容组件

在这个过程中,主要做的事情就是我们要确定什么内容是可以搜索的。例如大众点评网,可以搜索的内容有商户名、地点、菜名。只有确定要搜索的组件后,才不会在后面的使用中出现混乱的情况。

6.3 搜索算法

其实搜索引擎有很多算法,而且有的已经存在好几十年了。因为搜索算法属于搜索引擎的核心。那么这里主要介绍一下模式匹配算法

模式匹配算法是大多数搜索引擎都采用的算法之一。在这个算法中主要关注的是查全率和查准率。

查全率可以理解为,当我搜索吉他,那么所有关于吉他的信息都会被查询出来。

那么查准率就会只查询出准确率高的内容。
二者成反比。即若你想提高查全率,那么就会相应的降低查准率。反之亦然。

1
2
查全率=被检索的相关文档数量/系统中相关文档的总数
查准率=被检索的相关文档数量/被检索的文档总数

其他方法。还包括例如文件相似度、协同过滤、引文搜索等。在这里不做过多的介绍。

除此之外还会涉及到查询生成器。它偏向于后端,很少面对用户。它的主要作用是提高查询性能。它包含拼写查询工具、语音工具、词干提取工具、自然语言处理工具、受控词表和叙词表。

6.4 显示结果

关于显示结果,在这里我们要讨论关于要展示哪些组件、要显示多少文档、列出的结果如何排序、是否将结果进行分组、如何对搜索结果进行操作。

首先,我们要考虑,在搜索结果中,需要展示哪些组件。一般的建议是给那些知道正在查找什么的用户显示更少的信息,给那些不知道自己正在查找什么的用户提供更多的信息。除此之外还有一种方法,就是给那些知道自己要找什么的用户提供具有代表性的内容组件,例如标题、作者。对那些不确定自己要找什么的用户,则可以从描述性的内容组件中受益,例如摘要或关键词之类的。那如果出现例如标题相似的情况时,则可以显示更多的信息让用户进行区分。

然后我们在说要显示多少文档。说的简单一些,就是搜索结果页,每个页面展示多少条信息。这个主要和两方面的内容有关,一个是每个结果显示的信息的多少,还有一个是和我们使用的屏幕大小有关。我们在设计它的时候,需要从这两方面考虑。

然后再说列出的结果如何排序。关于结果排列方式,它应该区分为排序和排名。排序即我们常见的按照时间排序或按照字母排序。排名则是按照相关性排名、按受欢迎程度排名、按用户或专家的评价排名、按位置付费排名。通常情况下他们会一起使用。例如结果会按照时间和评价进行排序。

那么了解了排序之后,我们要考虑是否对结果进行分组呢?在考虑分组时,我们要考虑平台内容的多少,按照常理我们平台的内容只会越来越多,不会越来越少。当内容变多的时候,就会出现内容混乱,那这个时候就需要进行分组了。例如豆瓣中,搜索结果会进行用户,图书,电影,小组等区分。

我们对结果进行分组之后,还有一点是我们要考虑的,那就是我们要考虑对搜索结果进行如何操作。一般情况下是可以直接在结果上进行操作。例如app store中,可以对搜索的APP直接进行安装或打开。还有一种情况是可以选择结果的子集。例如电子商务网站中,可以将搜索结果中的任意商品加入购物车,然后在去购物车中进行批量操作。除此之外,还有一种容易被大家忽略的,就是保存搜索内容,而非结果。例如亚马逊上,在搜索完成后,会在页面的右上角看到保存搜索的选项。其实它也可以有另外一种表现形式,就像百度的搜索记录一样,具体如何实现,取决于实际的使用场景。

6.5 设计搜索界面

完成了上面的事情,现在可以开始设计搜索界面了,那在设计搜索界面时,也包含了以下几点:

搜索框。 常见的就是一个搜索框,用户可以直接搜索它想要的内容。那么也会有一些特殊的场景需要多个搜索框,例如购买机票,车票等。至少需要出发地、目的地和日期三个搜索框。所以在设计搜索框的时候,除非真的需要多个搜索框,否则最好只有一个搜索框。

自动完成和自动建议。 这个比较常见的就是当我们买机票的时候,例如我输入了北,则会出现所有与北相关的列表,北京,北海等可以让我们快速选择。还有一种就是在搜索网站中,例如我们输入W,立刻就会出现与w相关的内容,例如we、windows等。

高级搜索。 一般在较专业的网站中才会用到。常用的是布尔运算,包括and,or,not。

支持修改。 当我们搜索完成之后,发现搜索的结果好像不太符合我们想要找到内容,想对搜索内容做修改,这在我们的生活中很常见,可以随时搜索随时修改。还有就是当搜索的结果很多,例如刚才提到的豆瓣的搜索结果,那么我们应该可以让用户决定扩大或缩小搜索范围。还有一种情况,就是搜索的信息具有时效性时,我们应该考虑可以按照时间进行筛选。我们日常使用的产品设计大多都是整合了搜索与浏览的。有的是搜索后浏览,有的是浏览后搜索。那前者就是正常的搜索完成后浏览结果。后者则是浏览时进行筛选,排序等。

当用户被卡住。 这种问题一般会出现两种情况,一个是结果太多,用户突然不知道要做什么了。还有一种就是没有结果。针对前者,我们可以增加筛选的方式,让用户进行精确的搜索。针对后者我们可以给出优化搜索的建议或者推荐相关的结果。

七、叙词表、受控词和元数据

这一部分的内容,对于用户来说很少见,因为他们都是后端的内容。这部分就简单说一下元数据,受控词表,技术术语,叙词表类型,语义关系,多层级结构,分面分类法

7.1 元数据

元数据应该是产品经理和技术沟通时,见到的比较多的词了。这里一般指的就是描述数据的属性。例如性别,身高,年龄等。

7.2 受控词表

受控词表听上去不是很好理解,如果通俗的将,其实就是等价词表。它主要包含以下几个部分

同义词环。 同义词环就是把一组定义为等价关系的词汇连接起来。例如iPadtouch和iTouch。我们都知道它们代表的是同一个意思。那我们搜索的时候,怎么让搜索引擎知道呢?那就是利用同义词环这样的定义来编辑受控词表。

规范文档。类似于我们的日常写产品文档的格式一样。这里主要会规范它的术语,来定义它的首选术语和可接受的值。并会按照规则,列出清单。

分类方案。这种分类法就类似于我们的邮编。例如010代表北京。统一规则之后,进行首选术语的排列。

7.3 技术术语

这里的技术术主要是来传达定义和关系的核心术语。主要包含以下几种

首选属于(PT)。一般也叫做可接受属术语。所有的关系都是根据首选属于定义的。

异性术语(VT)。被定义为等价于首选术语,或大致上与首选术语的含义相同。

上位类术语(BT)。它是首选术语的上层术语,它位于层级结构的第一层。

下位类术语(NT)。它是首选术语的下层术语,它位于层级结构的最底层。

相关术语(RT)。就是通过关联关系链接到首先术语的。

使用(U)。异性术语使用首选术语,一般使用这样的语法作为索引者的工具。

用于(UF)。表示首选术语UF异性术语的相互关系。

范围注释(SN)。主要就是首选术语的特定类型,用于限定术语的含义。

7.4 叙词表

叙词表就是当你搜索某些内容的时候,可能内容中没有你搜索的关键词,但是却可以搜索的到,是因为在内容的主题或描述中有包含你搜索的词。叙词表也包含了如下的几种类型,而决策的依据是你准备如何使用叙词表,它将对你的设计产生重大影响。

1

7.5 语义关系

语义关系主要包含等价、层级、关联。

等价就是刚才提到的,即ipadtouch和iTouch是等价关系。

层级有三种类型,第一种是属于,即子继承了父的特性,例如喜鹊属于鸟类。第二种是整体-部分,即子是父的一部分,例如手指头是手的一部分。第三种是实例,一般是抽象的,例如江和长江。

关联即两个事物有关联,例如盐水和糖水的关联是水。

7.6 多层级结构

日常中我们见到的结构是每下一级都会比上一级的元素数量多或相等。而对层级结构则会出现,下一级比上一级元素数量少的情况。这种不规则的层级结果就是多层级结构。当你在处理大型信息系统时,这种多层级结构是无法避免的。

7.7 分面分类法

分面分类法其实就是从多个面来对内容进行分类。通常会从主题、产品、文档类型、用户、地理位置、价格这几个方面为纬度。

八、总结

关于信息架构,在日常的产品工作中举足轻重。也有一部分东西看似有形,实则无形。以上的这些内容只是从理论的角度,来给大家做一个简单的介绍。那在实际工作中该如何应用,相信大家结合实际的工作情况,经过不断的实践,都会总结出一套自己的方法论。

关于表达的逻辑

关于表达

在我们的日常生活和工作中,最重要的就是沟通,它最终的目的就是让自己更精准的表达自己的想法,并且能够让倾听者精准的理解你表达的内容。例如和家人沟通,协调工作、汇报工作、培训演讲、发邮件等等,都是属于沟通的范畴。

而对于沟通,相信大家这些年的成长,已经形成了自己的表达风格与习惯,认为自己很难改掉,情况也确实如此,但是不要担心。因为沟通时除了表达的内容以外,还有表达的逻辑也是很重要的,它会让你的表达更加完善,更加清晰。那么,本文就会帮助大家来梳理表达的逻辑,让你自己的表达能够在内容更加完整清晰的情况下,依然有自己的风格与习惯。

1表达的结构

当我们表达一段话,或一个观点时,哪怕篇幅很短,也要按照逻辑顺序来表达,才会让倾听者更加容易听懂你想表达的内容。

而在我们日常的沟通中,我们可能会发现,我们总是会在自己不知情的情况下,自动去把信息归类,放置到各个层级的各个位置,以至于让我们的倾听者更加容易理解我们所表达的内容。这就是表达的结构

1.1归类分组

其实在我们的日程生活中,我们的大脑是会自动将发现的某种事物以某种秩序组织起来的。例如古希腊人眺望星空时,看到的是由星星组成的各种图案,而不是散乱的星星;再有,当我们看到下图时,我们也会很自然的将下图中的6个黑点分为两组,每组3个黑点。
1
同样,当你听别人讲话或看文章时,也会发生类似的组织思想的现象。你会将同时出现的或位置相邻的几个思想相联系,努力用某种逻辑模式组织它们。这种逻辑模式必定是金字塔结构,因为只有金字塔结构才能够满足大脑的两个需求:
• 一次记忆不超过7个思想、概念或项目。
• 找出逻辑关系。

举个例子:
假设你决定离开家,出去买一份报纸。
“我想去买份报纸,你有什么要我带的东西吗?”
妻子在你走向衣架拿外衣时说:
“太好了,看到电视上那么多葡萄的广告,我现在特想吃葡萄,也许你可以再买袋牛奶。”
你从衣架上拿下外衣,妻子则走进了厨房。
“我看看咱们家的土豆够不够。对了,我想起来了,咱们已经没有鸡蛋了。我看看,对,是该买一些土豆了。”
你穿上外衣向门口走去。
“再买些胡萝卜,也可以买些橘子。”
你打开房门。
“还有咸鸭蛋。”
你开始按电梯。
“苹果。”
你走进电梯。
“再买点儿酸奶。”
“还有吗?”
“没有了,就这些了。”
如果不重新读一遍上面的文字,现在你还能记住妻子让你买的9样东西吗?大多数男人回家时可能只买了报纸和葡萄。
这种情况首先是数字“7”的规律。我们最多一次只能记住7±2个项目。

归类分组

但是为了方便记忆,为了说明前面说的组织归类。我们就可以将上面说的9中物品进行分类,这样很可能就会全部记住。物品包括葡萄、橘子、牛奶、咸鸭蛋、土豆、苹果、鸡蛋、酸奶、胡萝卜。我们下面将进行归类,如果你试着想象一下这个过程,就会发现,你已经建立了几个在各项目之间有逻辑关系的结构。

找出逻辑关系、抽象概括

以上我们虽然将9种物品进行了归类,但是这样还是不够的,因为这样你记住的还是9种物品。所以我们要做的是,要提高一个抽象层次,将大脑需要处理的9个物品,变成3个项目。这样一来你就无需在记住9种物品,只要记住有3个项目,同时9种物品都属于这3个项目组。因为较高层次的思想总是能够提醒下一个层次的思想,所以这样也就更容易记住。

如果你了解了这种思想的方式,以及表达的方法。那在与别人交流时,也同样要让对方了解这样的概念。但是,研究发现,最有效的表达方法是:先提出总的概念,再列出具体项目,即要自上而下地表达思想。
1

1.2自上而下表达,结论先行

理清表达思想的顺序,是写出条理清晰文章的最重要方式,而清晰的顺序,就是先提出总结性思想,再提出被总结的具体思想。先总结后具体的表达顺序,你必须牢记。

因为倾听者总是会不自觉的思考表达者所表达的内容的前后逻辑关系。所以我们要事先告知倾听者这种逻辑关系。否则,根据不同倾听者的不同背景,他们一定会有不同的解释,即便他们正确理解了你所表达的内容,也会给他们的理解增加难度。

例如:
早晨上班,你和我说,昨天晚上因为空调开得温度太低了,所以晚上被冻醒了。
那么我会想,你是感冒了?昨晚没睡好?哪里不舒服?还是想要做什么?无法明确你要表达的内容。
然后你继续说,早晨的时候鼻子不舒服,然后上班的路上去药店买了药。
这时,我会想,你应该是不舒服。感冒了。于是回应你说,注意身体,按时吃药。
然后你又继续说,但是因为去了药店,早晨没来得及吃早餐,所以等下要去买早餐,需要出去一下,如果有人问起,需要我帮忙说一下。
这个时候我才明白你要表达的内容。所以,我们要结论先行,而且条理清晰的文章,都是不断的自上而下的向读者传递信息的。

1.3自下而上思考

如果你将所有的信息进行归类分组、抽象概括,并以自上而下的方式表达出来,那么你的文章结构会如下图
1
你的思维从最下层开始思考,然后将几个句子按照逻辑顺序排列,组成了段落,而每一个段落只包含一个思想主题。同时你又把不同的段落按照逻辑顺序组成章节,让每一个章节只有一个思想主题。同理,你再将所有的章节按照逻辑顺序组织在一起,然后只有一个思想主题,就是该文章的主题。这样就形成了文章。读者阅读的时候,会发现整篇文章的思想都在支撑着这篇文章的主题,同时越往下读,就越具体。

在我们自下而上思考时,一般会以三种方式关联,向上、向下和横向。一般纵向(即向下或向上)必须是当前层次的思想概括了下一层次的思想。而横向必须是每组思想属于同一逻辑范畴,并且按照逻辑顺序组织。

而你选择的逻辑顺序,也代表了你思考的过程。如果是演绎推理,那么你的逻辑顺序就是演绎推理,例如大前提、小前提、结论。如果是因果关系,那么你的逻辑顺序就是时间(步骤)顺序,例如第一、第二、第三。如果你是对某种结构进行评论,那么就是结构(空间)顺序,例如北京、上海、广州。如果按类别组织思想,那么你的逻辑顺序就是重要性(程度)顺序,例如最重要、次要等。

2内部结构

关于上面描述的结构,我相信如果你一开始就知道你要表达什么内容,那么你一定可以轻易的将它梳理成规范的结构。倘若你对于你写的内容只有模糊的想法,并不那么明确的时候,你就需要梳理。而本段就是来帮你梳理文章的横向逻辑关系,纵向主题与子主题的关系以及序言的叙述方式。

2.1纵向关系

在我们日常阅读的文字当中,纵向关系主要的体现是疑问/回答的方式。当我们在传递信息的时候,读者对传递的内容产生疑问,我们将在下一个层次中,通过横向的方式来回答读者的疑问。同时,读者又会有新的疑问,我们则将继续回答新的疑问,直到读者不再有疑问。我们再继续表述我们的下一个观点。

这种方式能够很好的吸引读者的注意力。如果我们要想很好的吸引读者的注意力,我们就要避免在做好回答问题的准备之前,引起读者的疑问;也必须在引起读者疑问之前,避免先给出对该问题的答案。
以下是从G.K.切斯特顿所写的文章中摘出的一个幽默故事
1

切斯特顿说,猪应当被当做宠物养;读者当然会问“为什么这么说”。切斯特顿说:“有两个原因:首先,猪很漂亮;其次,猪可以培育出很多品种。”读者:“为什么说猪很漂亮?”切斯特顿:“猪很漂亮,因为猪很肥,而且具有典型的英国特征。”读者:“肥胖有什么漂亮的?”切斯特顿:“肥胖能够使其他人显得苗条,也能够使肥胖者更谦虚(因为有人比他还胖)。”

至此,虽然你显然不会同意切斯特顿的论述,但至少你可以了解他的论述过程。你能够清楚地了解切斯特顿为什么作出如上表述,也显然不需要再提出疑问以进一步了解其推理过程。再让我们继续。
读者:“为什么具有典型的英国特征就漂亮呢?”切斯特顿:“猪与大地是互相连接的;这种连接说明权力与仁慈并非不能共存;这种态度是很符合英国特点的,也非常美好,足以成为英国的国家象征。”

同样,你可能会对这种观点持不同意见,但是你能够很清楚地了解切斯特顿这样表述的原因。这种表述之所以清晰,是因为其思想的组织一直紧紧围绕着回答由主题引发的读者的疑问。最后一部分关于猪的品种的论述,也可以同样清楚地被读者理解。

2.2横向关系

在你考虑下一个层次的表述时,你首先要保证当前层次的表述能够回答上一个层次的问题。也就是说表述必须有明确的归纳和演绎关系。归纳关系和演绎关系,是在组织思想中仅有的两种关系。

演绎性思想组合是由几个承前启后的论述组成的。第一个思想是对当今世界上的某种现象的表述;第二个思想是对该句子的主语或谓语所作的表述;第三个思想则说明了以上两种表述同时在世界上存在时所具有的隐含意义。

归纳性思想是组合中的思想互相关联,你可以用同一个名词表示组合中所有思想,如支持的原因、反对的原因、步骤、问题,等等。

例如:
所有人都会饿,因为张三是个人,所以张三会饿。这是很明显的演绎关系。
张三饿了,李四饿了,王二饿了。通过该内容,你可以推断出类似于该吃饭了或大家都饿了等相关的思想,这就是归纳性总结。

2.3序言的结构

虽然疑问/回答的方式可以吸引读者的注意力,但是如果我们所讲的内容与读者无关,那么也很难吸引他们的注意力。所以我们要在开始就回答读者脑海中已有的问题。

所以序言可以从追溯问题起源和发展说起。开头应向读者说明“背景”(situation)的时间和地点。在这一背景中应当发生了某件事情,可称为“冲突”(complication),使读者提出(或将使读者提出)你的文章将要“回答”(answer)的“疑问”(question)。

这就是典型的讲故事式的呈现:背景、冲突、疑问、回答。能够让你在引导读者了解你的内容之前,和读者站在同一个位置上。

例如,再去年夏天,我和我的好朋友去钓鱼,因为这是我第一次钓鱼,所以钓了一下午,什么也没有钓到。那么是不是我钓鱼的方法不对呢?那么该如何正确的钓鱼呢?

3构建金字塔结构

当你开始写的时候,首先,你需要在金字塔的最顶端写下一个句子,而这个句子就是文章的主题。这个句子是对读者头脑中业已存在的某个疑问的回答。当在(读者了解的)某个“背景”中发生了(读者了解的)某种 “冲突”,就会引发读者的“疑问”,而回答这个“疑问”就是你写作的动机。所以,你要开始构建文章的结构。

3.1自上而下结构

1
当你确定了文章的主题的时候,你还不能立刻还是写作,建议你根据上图中流程,将头脑中的观点或想法梳理出来。
其实对于自上而下的思考来说,通常是一件很容易的事情。因为你是从文章最容易确定的主题开始思考。

而自上而下的方法:
首先,你要确定主题思想,并且设想受众的主要疑问,想清楚该文章主要回答读者的哪些疑问。
其次,写序言,即列出相关的背景,指出冲突。并遵循背景-冲突-疑问-回答的方式进行梳理及思考
然后,提出疑问,并且回答疑问。使用疑问/回答式对话。同时在提出新的疑问,再继续使用疑问/回答式对话。
最后,直到所有的疑问都被回答,受众没有疑问为止。

例如公司找你确定产品某个模块的流程。
1,我们可以先画一个方框,并问自己:“我将讨论什么主题?”;
2,我将回答读者头脑中已存在的关于该主题的哪些疑问?;
3,我的答案是什么?;
4,与序言相对照,检查该疑问和该答案是否仍然相对应。做出不会让读者或倾听者引起疑问的表述;
5,再文章中我们假定读者认可,我们就可以直接指出冲突;
6,作出该建议确实可行这样的表述后,根据金字塔结构继续向下思考,以确定读者看到这样的表述所产生的新的疑问;
7,针对为什么之类的问句回答原因,记住,回答的必须是原因;
8,在确定了以上要点都是正确且符合逻辑之后,下一步就是继续沿金字塔结构向下思考,提供能够支持以上观点的思想。

3.2自下而上结构

很多时候你会发现,你还没有想清楚这个文章的主题,你就要开始准备写了。这个时候,也没有关系,可以向下移一个层次,从关键句入手。分为三步走,来自下而上的组织你的思想。

首先,你可以列出你想表达的所有思想要点。例如我们在做一个调查,发现了一些问题,想要解决该类问题。那么我们就可以先把问题和解决方法分别列出来。

其次,找出各个点之间的逻辑关系。按照上面的例子,我们可以按照因果关系来找出各个点的关系,例如因为在某一点的浪费,导致成本过高。

最后,得出结论。你可以根据以上的内容,再自上而下进行梳理,列出主题、背景、冲突、疑问、回答。

3.3初学者的注意事项

对于刚开始使用这种方式的时候,一定会出现各种各样的问题。以下是一些常见问题的说明:
1)一定要先搭结构,先尝试自上而下法。不要试图一下子就把整篇文章梳理出来。
2)序言先写背景,将背景作为序言的起点。在整个序言中,你可以任意排序背景、冲突、疑问、回答的顺序。但是一定要先写背景,只有这样才更容易准确的找到疑问和冲突。
3)先多花时间思考,不要省略。当你开始写的时候,一定是已经想清楚了完整的主题思想。否则你会陷入一个混乱复杂的论证中。
4)将历史背景放在序言中。正文应该只包括思想,而历史背景不属于逻辑思考的结果。
5)序言仅涉及读者不会对其真实性提出质疑的内容。序言只告诉读者已经知道的信息以及很容易由客观的第三方进行检验验证的事情。
6)在关键句层次上,更宜选择归纳推理法而非演绎论证法。因为归纳法更容易被人理解,尽管有些思想是以演绎的形式发展,但还是可以尽可能的使用归纳法表达出来。

4序言的具体写法

文章的序言(前言、引言、导言)主要叙述已知的信息,以讲故事的方式,遵循背景、冲突、疑问,然后根据疑问给出答案。

4.1讲故事结构

序言总是向读者说明已知的信息,其意义是 :说明某种“背景”,这种“背景”中发生了某种“冲突”,从而引发了某种“疑问”,而整篇文章的目的就是回答该“疑问”。

我们之所以用讲故事的方式,是因为我们知道,我们的文字并不像一本口碑绝佳的小说一样吸引人。所以我们要用讲故事的方式开始,来给读者讲述一个与主题有关的故事,从而吸引读者的注意力,引起读者的兴趣。

那么何时引入背景呢?其实就是你能够作出关于文章主题独立的、无争议的表述的时候。表述的独立性是指,在此表述之前无须用其他表述以论述其准确含义;无争议性是指,你预计读者肯定能够理解并接受该表述。

而冲突,在文章中大多指的是不利的变化,但是对于我们来说更多的是指推动“故事”情节发展的因素,并且必须引发读者的“疑问”。有一些常见的冲突,我们可以看下图:
1

那为什么要采取“背景—冲突—疑问—解决方案”的结构呢?其实各个部分的顺序不同,文章的风格也会有不同。

基本结构:背景(S)—冲突(C)—疑问(Q)-回答(A)
标准式:背景—冲突—答案
开门见山式:答案—背景—冲突
突出忧虑式:冲突—背景—答案
突出信心式:疑问—背景—冲突—答案

我们可以自行尝试一个小的问题,或者将日常的沟通代入到上面的结构中,来感受一下各个方式的不同,在这里就不做举例了。

接下来我们再来说回答,在序言中,我们回答问题时,不仅要回答读者的疑问,还要呈现文章的框架,可以让读者在30秒内就能够了解你的全部思路,接下来的内容,只是为你的思路做更有力的支持。

那么序言要写多长呢?序言再写之前要确保你和读者站在同一个角度来看待问题。一般情况下序言的长度在2-3段就可以了。用来说明文章的背景和冲突。当然,有的只要一句话就可以了,有的可以也几页。这也取决于你的文章内容的长短。

基于此,写好序言还需要注意以下几点:
1,序言的目的是“提示”读者而不是“告诉”读者某些信息;
2,序言必须包含讲故事的3个要素,即“背景”、“冲突”和“答案”;
3,序言的长度取决于读者和主题的需要。

4.2常见模式

当实践久了之后,我们也许会发现,写文章的目的通常是回答以下4种问题之一:
1.我们应该做什么?
2.我们应该如何做(将如何做/是如何做的)?
3.我们是否应该这样做?
4.为什么会发生这种情况?

而同时又因为我们的工作性质,会让我们只关注某一个内容,下面将会介绍商务文章中的4种常见的模式:
1.发出指示式(针对“我们应该做什么”或“我们应该如何做”等问句)
2.请求支持式(针对“我们是否应该这样做”等问句)
3.解释做法式(针对“我们应该如何做”等问句)
4.比较选择式(针对“我们应该做什么”等问句)

发出指示式

指示一般的目的是要求或告诉某人要做某事。一般常见的呈现方式有两种。
第一种:
背景(S)= 我们打算做X。
冲突(C)= 需要你们做Y。
疑问(Q)= 我们如何做Y?
第二种:
背景(S)= 你做X。
冲突(C)= 必须按Y方式进行。
疑问(Q)= 什么是Y方式?
例如,我们打算优化我们产品的某个功能模块,需要你们收集客户对于该功能模块的意见,我们只需要将收集意见表发给客户,并再明天下午三点前回收并提交给我们即可。

请求支持式

一般是需要申请或者审批时使用的方式。一般结构如下:
背景(S)= 我们遇到了一个问题。
冲突(C)= 我们的解决方案需要___。
疑问(Q)= 我应该批准吗?
例如,我们在产品开发的过程中,客户突然要求提前交付,经过评估,我们的解决方案是需要增加三名技术人员一起进行赶工。需要领导批准。因为该项目是本年度公司最主要的项目,同时如果延期我们需要承担相应的违约金,还会出现不能按时回款的问题。

解释做法式

一般是解决一些问题,或在有人向你咨询时。它的关键句要点结构是有关“步骤”。一般的结构如下:
背景(S)= 必须做X。
冲突(C)= 还未做好做X的准备。
疑问(Q)= 如何做好准备?
例如,我们必须要增加服务器的容量才能保证产品不会总是服务器崩溃的问题。但是还没有发起申请增加服务器的审批。我们现在需要运维负责人张三,确定增加服务器的参数,并发起申请增加服务器的审批,然后需要王总审批完成后,按照张三提供的参数进行服务器的购买。

比较选择式

一般是在提供方案时,客户或领导想要多个方案来进行比较并选择。一般的结构如下:
背景(S)= 我们希望做X。
冲突(C)= 我们有各种不同的做X的方案。
疑问(Q)= 哪一种方案最合理?
例如,我们希望能够实现您说的人脸识别的功能,我们有各种不同的方案,a是xxx,b是xxx。我们认为a更加合理,因为xxxx。
那么对于如何使用,建议大家也可以尝试在某一个问题上,代入以上几种方式,来感受他们的区别。

5演绎推理与归纳推理

在建立思想逻辑关系中,只有两种方式,即演绎推理关系和归纳推理关系。演绎是一种线性的推理方式,最终是为了得出一个由逻辑词“因此”引出的结论。归纳推理是将一组具有共同点的事实、思想或观点归类分组,并概括其共同性(或论点)。在演绎过程中,每个思想均由前一个思想导出;而在归纳过程中则不存在这种关系。

5.1演绎推理

演绎推理比归纳推理更容易实现,尤其是在思考时,人们更愿意使用演绎推理,而在写作时,演绎推理就会显得有些笨拙了。

人们通常将演绎法解释为具有三段论的形式——即由一个大前提和一个小前提推导出一个结论的论述形式。但是这种术语解释反而让读者不好理解。下面我们用自己理解的三个步骤,来说明演绎推理。

我将演绎推理过程看做需要完成以下3个步骤:
1)阐述世界上已存在的某种情况。
2)阐述世界上同时存在的相关情况。如果第二个表述是针对第一个表述的主语或谓语的,则说明这两个表述相关。
3)说明这两种情况同时存在时隐含的意义。
例如,所有人都会饿,因为张三是人,所以张三也会饿。

演绎推理也可以是以下3个步骤:
1)出现的问题或存在的现象。
2)产生问题的根源、原因。
3)解决问题的方案。
例如,公司目前的状况需要降低成本,才能保证持续盈利。那么导致现在成本过高的主要原因是a,b,c,所以,我们现在需要做1,2,3。

在实际应用中,对文章结构较高的层次,可以使用演绎推理的方式进行思考,然后再归纳总结,使用归纳推理进行表达。演绎推理更适用于在较低的层次中使用。而如果在较低的层次中使用,需要注意两个问题,第一,演绎推理的过程不要超过4个步骤;第二,推导出的结论不要超过两个。

5.2归纳推理

归纳推理比演绎推理难度要大一些,因为归纳推理要注意到若干不同的事物(思想、事件、事实)具有共性、共同点。然后将其归类并说明共性。

在使用归纳推理时,必须要注意两个点:
第一,正确定义该组思想;
第二,准确识别并剔除该组思想中与其他思想不相称的思想。

同时,最重要的是找到一个能够表示该组所有思想的名词。这个词必须是一个单一名词,因为:
第一,所有表示一类事物的词都是名词;
第二,该组思想中必定有两个以上(含两个)该类思想。

如下图:
1
当我们使用归纳法抽象出共同点后,需要我们再根据结构自下而上的来进行验证我们的归纳是否准确。是否由以下的几个点可以直接推断出我们要表达的内容,或者我们抽象出的点是否不止包含了我们现有的内容,还有更多的内容没有罗列出来。

5.3演绎推理与归纳推理的区别

在演绎推理中,推理过程的第二个思想必须是对第一个思想的主语或谓语的评述。如果不具有这一特点,就不是演绎推理而是归纳推理,你就应当能够用一个单一的名词概括这两个思想,以检验你归的类、分的组是否恰当。
而在归纳过程中,你通常需要保持主语不变,改变谓语;或者保持谓语不变、改变主语。

6总结

以上的内容,可以说是一些理论,也可以说是经过实践而总结出来的经验。如果想要做好表达,需要在日常的工作和生活中不断的练习,终有所成。

常用的UML建模

关于UML,我相信在做B端的产品经理一定知道它的重要性。那么UML常用的图都包含哪些呢?它们又都在什么场景什么阶段使用呢?又如何使用呢?这篇文章主要帮助小伙伴们解答这些问题。

一、UML的分类及用途

首先简单给大家介绍一下什么是UML,UML的全称是Unified Modeling Language。翻译过来就是统一建模语言。它对产品经理最主要的作用是用于需求分析中更好的梳理逻辑,同时能够提升沟通效率。

UML主要包括图表中的十一种,那在本次的介绍中,只讲解类图、构件图、部署图、活动图、状态机图、顺序图、用例图。

1

通常对业务概念等静态结构进行系统化的梳理和提炼,我们叫它结构建模。而于对业务流程等动态内容进行系统化的梳理和提炼,我们叫它行为建模。而需求分析的核心目的是解决软件有没有用的问题。软件设计是解决软件用多大的成本做出来的问题。所以需求分析首要任务是保证软件的价值。

那么如何学好UML呢?其实UML的语法很简单,但是想要学好UML关键在于要改变思维习惯。要在平时多培养自己的书面表达能力、归纳总结能力、思维能力和抽象能力。

二、类图

装逼的讲,类图(Class diagram)是显示了模型的静态结构,特别是模型中存在的类、类的内部结构以及它们与其他类的关系等。那它其实就是用来帮助我们识别出人、事、物和业务的概念,并理清它们的关系的一种方法。

2.1 类图的基础知识

在聊类图之前先让我们理清几个概念。

首先,什么是类?将某类东西归纳在一起就可以成为一个类。例如,本文的读者,我们就可以分为初级产品经理,高级产品经理。或者分为产品经理和非产品经理。这些都可以叫做类。

然后,什么是类图?类图就是一个矩形的方框,上面是类的名字,中间是属性,下面是操作。比如这篇文章的读者是产品经理,那产品经理的属性就有性别,年龄,级别等。如果要列举当然会有很多属性,但是我们只找出相关且对我们有用的属性。

那一般如何用类图获取需求呢?首先要识别出类。其次识别出类的主要属性。然后描述出类之间的关系,最后在对各类进行分析、抽象、整理。

2.2 类之间的关系

  • 直线关系

直线关系其实就是我们常说的关联关系,如下图。A关联B

1

那如果在直线两端加上数字1,那就是1对1的关系,如下图:

1

同样,如果将B旁边的1改成*,那就是1对多的关系,如下图:

1

那如果将*改成0..3,那就是0到3的意思。如果是1..4那就是1到4的意思。下入就是1对0..3的意思

1

如果把数字换成了上司和下属,那么他们就是角色关系了,就代表a是b的上级,b是a的下属。如下图:

1

如果把数字换成箭头,那就变成了导航关系,即由A可找到B,如下图:

1

  • 包含关系

包含关系有两种表示方法,一种是空心菱形,一种是实心菱形。空心菱形可以表示为弱包含的关系,实心菱形可以表示为强包含的关系。弱包含关系即部门没有了,员工可以继续存在。强包含关系是部门没有了,员工也就不存在了。以下图中表示的为,一个部门可以包含多个员工。
1

  • 继承关系

继承关系是谁继承了谁的属性。例如香蕉,苹果,葡萄他们继承了水果的属性,同时又拥有自己的属性。我们用一个三角来表示,如下图:

1

  • 依赖关系

所谓的依赖关系,依赖程度是相对而言的,不一定是A没有B就不能生存了。在实际的业务逻辑当中,对于某个事情,A需要B来协助完成,也是一种依赖关系。依赖关系使用虚线箭头表示。

1

2.3 类图的进阶

  • 递归关系

我们常用的电脑系统中,如果用类图表示出文件夹与文件的关系,那么该如何表达呢?是文件夹包含文件吗?那文件夹和文件夹的关系呢?使用递归关系,我们就可以更好的表达出来。递归关系分为自包含和自关联,和字面的解释一样,就是自己包含自己,自己关联自己。下图分别是自包含和自关联。
1

  • 三角关系

当某些属性值并不是由该类本身就可以确定的时候,我们可以使用三角关系,例如员工的薪资,职位等,并不是由公司可以确定的,而是由劳动合同来确定的,那么我们的表达方式如下:
1

三、活动图

活动图是用来表达流程最常用的一种UML图,它和流程图很类似。

3.1基本语法

  • 基础流程图

流程中一般只有一个开始,会有一个或多个结束。箭头表示流程的走向。一个圆角矩形表示一个活动,活动可以理解为流程中的一个步骤,需要用主动宾的形式来表达。例如员工填写工时,项目经理审批工时。菱形代表判断,会有两个或两个以上的分支。判断一般有三种表达方式:在判断菱形旁写下判断的句子;直接通过监护来表示这个判断;在菱形判断之前加一个活动来表明判断动作。分支流程汇合时,也会使用菱形,然后会合并成一条路线。如下图:

1

  • 泳道图

上面的流程图当中,如果流程简单,那么就可以很好的表达,如果流程很长,涉及到的角色很多,且很复杂时,看到就会非常乱,不止画的人觉着乱,看的人也会感觉很乱。那么,这个时候我们就可以用泳道图。泳道图一般是会按照角色进行分区,那么在画和浏览时都非常清晰。如下图:
1

3.2活动图的进阶

  • 并行的活动

当遇到需要并行的活动或分支时,我们可以使用粗短棒。短粗棒会有两个同时出现。第一个是有一个箭头指入,多条箭头指出,这个叫做分叉。第二个是多条箭头指入,一条箭头指出,这个叫汇合。如下图:
1

  • 对象流

当我们用矩形框来表示某个节点,并将矩形框的文字标注下划线,那它就代表对象。每个活动都有可能有一个或多个输入或输出。与输入输出直接相连的箭头叫对象流,而活动和活动之间相连的叫控制流。如图:
1

  • 连接件

有的时候活动图很大,一张纸画不下,我们可以使用另一张纸继续画,这个时候,我们可以使用连接件。(其实现在的画图软件大多都不会出现这种情况),如下图,左边的图是箭头指向A,则是活动图到这里转向另一张图。右边的图是A指出一个箭头,表示从A开始继续这个活动图:

1

3.3 关于活动图的其他问题

对于活动图的粒度是如何控制的呢?其实这个是没有标准答案的,下面只是一些实践建议。首先要清楚活动图要表达什么内容,表达的重点是什么。以此来确定合适的粒度。其次,可以先用粒度比较大的活动图,大致搞清楚流程的总体情况。最后在逐步细化,需要重点说明的部分,活动的粒度应该足够细,足够说明问题。

那如何画好活动图呢?建议你一个活动图只表达一个事情。同时在画之前要明确该流程要达到怎样的业务目的,有什么角色参与,哪些是主要角色。先画出主流程,明确主流程中涉及到的角色。然后在逐步增加分支流程,这里主要表达出关键的分支即可,同时异常流程也不用全部表达出来,必要的时候,可以用文字来说明。控制好粒度,然后分别画出当前的流程和优化后的流程。对照差异,整理出需要调整的地方。

四、状态机图

状态机图其实和大家常说的状态图是一个东西,只是它的专业名称叫做状态机图。

4.1 基本语法

状态机图的开始状态和结束状态与活动图的一致。活动机图用一个圆角矩形来代表一个状态。与活动图不同,活动图是用圆角矩形代表一个活动。而且状态机图一般使用名词或形容词来表示某种状态。如下图:

1

4.2 其他问题

关于状态数量的问题。在使用状态机图时,若流程不合理,可以考虑通过增加、减少、修改状态来完善。增加一个新的状态会解决很多问题,但是也会增加流程的复杂度,可能会出现其他问题。

关于状态图的实践会有一些建议可供大家参考。流程围绕某一事物开展时,可以考虑使用状态机图来分析。同样也需要弄清楚它的目的,参与的角色,以及这些角色是如何推动流程的发展。并且列出流程中存在的问题。同时要考虑事物在流程不同阶段有什么变化。然后列出当前的流程,在根据流程的目的和存在的问题进行调整。

五、顺序图

当流程设计到多种角色,并且通过多个角色交互展开时,顺序图是不二选择。

5.1基本语法

角色可以用一个小人的图标来表示,下面写明角色。也可以用一个矩形来表示,但是需要在矩形里面说明角色。生命线是角色下面的那条虚线。激活框也叫会话,是生命线中细长的矩形。消息用箭头表示,并在上面说明做了什么事情。箭头可以从A指向B,也可以指向自己。返回值用虚线箭头表示,并在上面说明返回的内容。一般是反馈某个东西给相应的对象。如下图:

1

5.2 顺序图的进阶

循环分支属于业务流程中比较常见的特殊结构。loop,也叫循环,是满足循环条件的前提下,不断地重复做某些事情。alt,条件分支,是根据不同的条件选择不同的分支。opt,可选分支,是满足一定条件则执行该分支,否则就跳过。如下图:

1

上图的流程中,loop,中括号内是循环条件的内容,表示如果满足循环条件,则重复执行本框的内容。alt,如果满足条件1则执行上半部分,如果满足条件2则执行下半部分。opt,如果满足条件,则执行框中的内容,否则跳过。

5.3 其他问题

关于顺序图使用的一些建议。先从复杂的业务中整理出一条一条的流程。然后分析参与的角色,角色担任的职责和专业特色。然后在将流程分解成角色与角色的交互,想清楚各个角色之间是如何交互的,然后用顺序图把它组织起来,在这个过程中要不断的进行优化。

活动图,状态机图和顺序图,被称为流程分析的三大利器,那么每种图都有不同的特点和应用场景。
顺序图,强调角色之间的交互,强调按时间顺序分别发生了什么事情。不太适合表达复杂的特殊流程。活动图,强调每个角色做了什么事情,这些事情的先后关系,适合表达各种特殊流程,如分支,并发等。状态图,主要是事情围绕某东西开展,并且有不同的状态。

那么在实际工作中如何选择呢?通过上面说明的特点我们可以很清楚的知道。如果事情围绕某个东西开展,就可以考虑使用状态机图。如果不是,则可以考虑顺序图或活动图。如果没有复杂的特殊流程,可以考虑顺序图。如果有负责的特殊流程,则可以考虑活动图。当然,在实际工作中,不要被上面的条条框框所限制,有的时候可以有两种甚至三种图来表示,可以从多个角度来分析问题,再做适当取舍。

六、用例图

用例图对于很多人来说只是给一些角色配置一些权限。其实用例图是可以帮我们搞清楚这个产品是谁在用,通过这个系统能做什么事情。

6.1 基本语法

小人(actor,执行者),执行者可能是人也可能是系统。如果是人的话,可称之为角色。如果是系统的话,可以将另外一个系统画成执行者就可以了。圈圈(用例,use case)圈圈里面的文字是动词加名词,这个就代表了系统能做什么事情。大框框(系统边界,system boundary)这个框只框住了用例,没有框住执行者,这个就叫系统边界。线条(关联,association)线条指用例和角色之间的线条,一般有三种,无箭头的,指向用例的箭头,指向执行者的箭头。同时,一般情况下也会有两种解释,一种是数据流向,还有一种是谁启动谁。如下图:

1

6.2 进阶语法

用例的进阶语法主要包括继承、include(包含)、extend(扩展)

  • include(包含)

包含一般有两种用法,一种是以树的方式组织各种用例,用包含来组织好父子用例,子用例可以再次包含自己的子用例,这样层次分明。还有一种是某些用例的一部分可以抽离出来成为子用例,该子用例同时也被其他用例包含。如下图:

1

  • extend(扩展)

扩展的意思就是在某用例的基础上,还能做什么事情。例如用户在查看报表的时候,还可以导出报表,打印报表。如下图:

1

  • 继承

继承与类图中的继承性质是一样的,但是一般在画用例图的时候很少用,都会用其他的方式替代,因为不太好理解,而且还会降低沟通效率。如下图:

1

6.3 用例图的其他问题

那么我们日常工作中,如何画好用例图呢?下面是一些在实践中的建议。首先,在客户能全面理解的基础上,越精简越好。同时用例应该使用客户的语言,让客户能够看得懂。要全面的表达用例,对于重点的地方要详细描述,非重点的地方不要过多描述。通过使用扩展和包含来细化用例图,但要灵活把握,用例图只是一种表达方式,必要时可以结合其他方式来表达。

七、部署图、构件图

部署图和构件图一般用来获取和描述非功能需求。非功能性需求,一般包括两个方面,一方面的软件技术的架构要求。另一方面是安全性、易用性、性能等方面的要求。

7.1部署图

在实际环境中的电脑、服务器或硬件设备,在部署图中用节点(Node)来表示,就是图中一个个立体矩形。每个节点都有一个名字,如图中的财务的pc等。门店的pc中有标记,标记(Tags)用来详细说明节点的配置情况,如Number=50-70,说明有50到70台门店的pc。节点与节点直接有物理联系,则直接拉条直线,在直线上写上连接的方式。如下图所示。

1

7.2 构件图

构件图也叫组件图,构件指的是物理上独立的一个东西,它可以单独维护、升级、替换。下图展示了构件和构件的接口。

1

下图中的A和B表示依赖关系,表示A依赖于B,A需要调用B提供的一些服务。而C和D则是接口对接,D提供的服务是C所需要的,也可以画成C依赖D。如图

1

7.3部署图和构件图结合使用

通常部署图和构件图需要综合使用,才能表达清楚在架构设计上的要求。如下图

1

7.4关于部署图和构件图的实践建议

首先不要写放在任何地方都可用的东西。要根据项目的业务需求,IT架构环境写出针对性的要求。其次,抓住主要问题,列出具体要求。主要考虑正常使用情况下系统应达到的要求,出现几率低的情况可不考虑。最后,要文字表达准确,内容应该是可被验证的。

八、一些实践

本章主要为前面所讲的内容,通过一个案例,将部分串联起来。

我们的需求是做一个考勤系统。主要目标是规范员工的上下班、请假、外出工作等行为,同时方便计算员工薪资,方便管理各种带薪假期。

在整个过程中,需要遵循战略分析、相关方与目标分析、业务分析、需求细化这样的流程。那在业务分析阶段可以通过使用类图来分析业务概念,使用活动图、顺序图、状态机图来分析业务流程。在需求细化阶段可以使用用例图来整理用例。同时也可以使用部署图和构件图来分析整理非功能性需求。

那在这里直接省略战略分析、相关方与目标分析阶段,直接进入到业务概念分析。假设已经目标清晰,且明确了相关方。那么下一步进入到业务概念分析。

  • 业务概念图

这个考勤系统主要涉及到考勤,请假,外出。考勤和请假很好理解,外出是指外出工作,性质仍然是工作。这三类事情全都涉及到流程。流程的问题咱们后面在分析。通常我们管理一个事情,除了管理流程,还要对一条或多条记录进行管理。打卡不是会留下打卡记录吗?请假不是会有请假申请吗?外出不是会有外出申请吗?管理这些记录,就是管理这些事情了。如下图,列出了关键的业务概念,业务概念的重要属性,业务概念之间的关系,相关业务信息通过注解来补充。每个人所在的公司情况不一样,理解的角度不一样,业务概念图自然就会不一样。

1

  • 外出申请审批流程分析

这里只对外出申请做举例,分别画出它的活动图和状态机图。当然,也可以用顺序图来表达,但是此处用活动图和状态机图更合适,所有省略了顺序图。

1

活动图

1
状态机图

  • 普通员工的用例分析

这里只对普通员工做举例,进行了用例分析。这里考虑到用户需要拥有管理自己外出的权限,管理自己请假,包含可休年假的权限。同时为了方便安排工作,所以增加了可以查看所有员工请假的权限,以及查看自己打卡记录的权限。如下图

1

  • 其他

关于部署图和构件图,一般情况下是由架构师来完成。所以在这里就不进行举例了。

九、总结

关于UML,是我们日常工作中,最常见的一种手段。它很简单,也很复杂。简单的原因在于一学就会,容易上手,便于理解。复杂的原因是要画好uml建模需要不断的思考,反复验证,重复修改,才能达到最终的目的。所以以上只是基于前者,来简单的说明常用的UML。若要提高建模能力,需要在日常的工作,生活中,不断的练习思考,终有所成。

湘ICP备17003881号-2