1、2022-12-191第二部分第二部分 建模建模2022-12-192022-12-192 2模型模型p模型模型:对问题的书面上的无歧义文字或图形的描对问题的书面上的无歧义文字或图形的描述述.简言之简言之,模型是对现实的简化模型是对现实的简化.通过模型通过模型,人们人们可以了解所研究事物的本质可以了解所研究事物的本质.p最杰出的模型最杰出的模型:地图地图2022-12-192022-12-193 3p建模建模n建模建模:对现实系统进行适当的过滤对现实系统进行适当的过滤,用适当的表现用适当的表现规则描述出简洁的模型规则描述出简洁的模型.n建模是一种深入解决问题的方法建模是一种深入解决问题的方法.
2、p建模的原则建模的原则p(1).选择建立什么样的模型对如何发现和解决问选择建立什么样的模型对如何发现和解决问题具有重要的影响。正确的模型有助于提高开发题具有重要的影响。正确的模型有助于提高开发者的洞察力。者的洞察力。p(2).每个模型可以有多种表达方式每个模型可以有多种表达方式.使用者的身份使用者的身份和使用的原因是评判模型好坏的关键和使用的原因是评判模型好坏的关键。2022-12-192022-12-194 4p(3).最好的模型总是能够切合实际最好的模型总是能够切合实际.模型是现实的模型是现实的简化,必须保证简化,必须保证简化过程简化过程不会不会掩盖任何重要的细掩盖任何重要的细节节。p(4
3、).孤立的模型是不完整的。孤立的模型是不完整的。2022-12-192022-12-195 5p软件建模的实现过程软件建模的实现过程p软件建模的作用软件建模的作用是把来源于现实世界的问题转化为是把来源于现实世界的问题转化为计算机可以理解和实现的问题计算机可以理解和实现的问题.p软件建模的实现过程软件建模的实现过程是从需求入手是从需求入手,用模型表达分用模型表达分析设计过程析设计过程,最终将模型映射成软件实现最终将模型映射成软件实现.现实世界现实世界计算机世界计算机世界映射映射需求需求模型模型编码编码2022-12-196第四章第四章 理解需求理解需求2022-12-192022-12-197
4、7p最恐怖的噩梦:最恐怖的噩梦:p 一个客户走进你的办公室,坐下,正视一个客户走进你的办公室,坐下,正视着你,然后说:着你,然后说:“我知道你认为我说的是我知道你认为我说的是什么,但你并不理解的是:我所说的并不什么,但你并不理解的是:我所说的并不是我想要的。是我想要的。”2022-12-192022-12-198 84.1 需求工程需求工程p构建一个软件系统最困难的部分是确定构建什么。其他部构建一个软件系统最困难的部分是确定构建什么。其他部分工作不会像这部分工作一样,在出错之后会如此严重地分工作不会像这部分工作一样,在出错之后会如此严重地影响随后实现的系统,并且以后修补竟会如此的困难。影响随后
5、实现的系统,并且以后修补竟会如此的困难。pFred Brooksp需求工程(需求工程(Requirement Engineering,RE)是指致力于是指致力于不断理解需求的不断理解需求的大量任务和技术大量任务和技术。从软件过程的角度来看,。从软件过程的角度来看,需求工程是一个需求工程是一个软件工程动作软件工程动作,开始于沟通活动并持续到,开始于沟通活动并持续到建模活动。他必须适应于过程、项目、产品和人员工作的建模活动。他必须适应于过程、项目、产品和人员工作的需要。需要。2022-12-192022-12-199 9p需求工程为设计和构造奠定了坚实的基础。如果需求工程为设计和构造奠定了坚实的基
6、础。如果没有需求工程,那么实现的软件很有可能无法满没有需求工程,那么实现的软件很有可能无法满足客户的需求。足客户的需求。p需求工程过程通过执行七个不同的活动来实现:需求工程过程通过执行七个不同的活动来实现:起始、导出、精化、协商、规格说明、确认和管起始、导出、精化、协商、规格说明、确认和管理。理。2022-12-192022-12-191010p起始起始n建立基本的理解,包括对问题、谁需要解决方案、建立基本的理解,包括对问题、谁需要解决方案、所期望解决方案的性质、与项目利益相关者和开所期望解决方案的性质、与项目利益相关者和开发人员之间达成初步交流合作的效果。发人员之间达成初步交流合作的效果。2
7、022-12-192022-12-191111p导出导出 n询问客户、用户和其他人,系统或产品的目标询问客户、用户和其他人,系统或产品的目标是是什么,想要实现什么什么,想要实现什么,系统和产品如何满足业务,系统和产品如何满足业务的要求,最终系统或产品如何用于日常工作,这的要求,最终系统或产品如何用于日常工作,这些问题是非常简单的。但是,实际上并非如此简些问题是非常简单的。但是,实际上并非如此简单单“这非常困难。这非常困难。n为什么导出需求这么困难?为什么导出需求这么困难?p范围问题范围问题p理解问题理解问题p易变问题易变问题2022-12-192022-12-191212p精化精化n精化是由一
8、系列的用户场景建模和求精任务驱动精化是由一系列的用户场景建模和求精任务驱动的。这些用户场景描述了如何让最终用户和其他的。这些用户场景描述了如何让最终用户和其他参与者与系统进行交互。参与者与系统进行交互。解析每个用户场景解析每个用户场景以便以便提取分析类提取分析类最终用户可见的业务域实体。应该最终用户可见的业务域实体。应该定义每个分析类的属性,确定每个类所需要的服定义每个分析类的属性,确定每个类所需要的服务,确定类之间的关联和协作关系务,确定类之间的关联和协作关系,并完成各种,并完成各种补充图。补充图。n精化是件好事,但你必须知道何时可以停止精化。精化是件好事,但你必须知道何时可以停止精化。关键
9、是能采用为设计监理一个坚实基础的方式说关键是能采用为设计监理一个坚实基础的方式说明问题。如果超出这个点就是在做设计。明问题。如果超出这个点就是在做设计。2022-12-192022-12-191313p协商协商n需求工程师必须通过协商过程来调解冲突。应该需求工程师必须通过协商过程来调解冲突。应该让客户、用户和其他利益相关者对各自的让客户、用户和其他利益相关者对各自的需求排需求排序序,然后按优先级讨论冲突。使用,然后按优先级讨论冲突。使用迭代的方法迭代的方法给给需求排序,需求排序,评估评估每项需求对项目产生的每项需求对项目产生的成本和风成本和风险险,表述内部冲突,删除、组合和(或)修改需表述内部
10、冲突,删除、组合和(或)修改需求求,以便参与各方均能达到一定的满意度。,以便参与各方均能达到一定的满意度。n在有效的协商中没有赢家也没有输家,而是双赢。在有效的协商中没有赢家也没有输家,而是双赢。这是因为双方合作才是这是因为双方合作才是“交易交易”的坚实基础。的坚实基础。2022-12-192022-12-191414p规格说明规格说明n规格说明的形式和格式随着待开发软件的规模和规格说明的形式和格式随着待开发软件的规模和复杂度的不同而变化。复杂度的不同而变化。n一个规格说明可以是一份写好的文档、一套图形一个规格说明可以是一份写好的文档、一套图形化的模型。一个形式化的数学模型、一组使用场化的模型
11、。一个形式化的数学模型、一组使用场景、一个原型或上述各项的任意组合。景、一个原型或上述各项的任意组合。n例:湖南省轻工盐业集团人力资源系统需求分析例:湖南省轻工盐业集团人力资源系统需求分析说明书说明书 2022-12-192022-12-191515p确认确认n在确认这一步将对需求工程的工作产品进行在确认这一步将对需求工程的工作产品进行质量质量评估评估。需求确认要检查规格说明以保证:。需求确认要检查规格说明以保证:已无歧已无歧义的说明了所有的系统需求;已检测出不一致性、义的说明了所有的系统需求;已检测出不一致性、疏忽和错误并得到纠正;工作产品符合为过程、疏忽和错误并得到纠正;工作产品符合为过程
12、、项目和产品建立的标准项目和产品建立的标准。n正式的技术评审时最主要的需求确认机制。确认正式的技术评审时最主要的需求确认机制。确认需求的评审小组包括软件工程师、客户、用户和需求的评审小组包括软件工程师、客户、用户和其他利益相关者,他们检查系统规格说明,查找其他利益相关者,他们检查系统规格说明,查找内容或解释上的错误,以及可能需要进一步解释内容或解释上的错误,以及可能需要进一步解释澄清的地方、丢失的信息、不一致性、冲突的需澄清的地方、丢失的信息、不一致性、冲突的需求或是不可实现的需求。求或是不可实现的需求。p需求确认检查表需求确认检查表2022-12-192022-12-191616p需求管理需
13、求管理tortoise SVNtortoise SVN2022-12-192022-12-1917174.2 建立根基建立根基p理想情况是:利益相关者和软件工程师在同一个理想情况是:利益相关者和软件工程师在同一个小组工作。小组工作。p现实情况:往往很难做到。现实情况:往往很难做到。p启动需求工程所必需的步骤启动需求工程所必需的步骤n1.确认利益相关者确认利益相关者n2.识别多重观点识别多重观点n3.协同合作协同合作n4.首次提问首次提问2022-12-192022-12-191818p4.2.1 确认利益相关者确认利益相关者n利益相关者:直接或间接地从正在开发的系统中利益相关者:直接或间接地从
14、正在开发的系统中获益获益的人。的人。n在开始阶段,需求工程师应该创建一个在开始阶段,需求工程师应该创建一个人员列表人员列表,列出哪些有助于诱导出需求的人员。最初的人员列出哪些有助于诱导出需求的人员。最初的人员列表将随着接触的利益相关者人数的增多而增加,列表将随着接触的利益相关者人数的增多而增加,因为每个利益相关者都将被询问因为每个利益相关者都将被询问“你认为我还应你认为我还应该和谁交流该和谁交流”。2022-12-192022-12-191919p4.2.2 识别多重观点识别多重观点n把三个利益相关者请进一个房间,然后问他们想把三个利益相关者请进一个房间,然后问他们想要什么样的系统,你很有可能
15、会得到四个或更多要什么样的系统,你很有可能会得到四个或更多的不同观点的不同观点n作者不详作者不详n需求工程师的工作就是把所有的利益相关者和提需求工程师的工作就是把所有的利益相关者和提供的信息(包括不一致或是矛盾的需求)供的信息(包括不一致或是矛盾的需求)分类分类,分类的方法应该便于决策制定者为系统选择一个分类的方法应该便于决策制定者为系统选择一个内部一致的需求集合。内部一致的需求集合。2022-12-192022-12-192020p4.2.3 协同合作协同合作n需求工程师的工作是标需求工程师的工作是标识公共区域识公共区域(即所有利益(即所有利益相关者都同意的需求)和相关者都同意的需求)和矛盾
16、区域或不一致区域矛盾区域或不一致区域(即某个利益相关者提出的需求和其他利益相关(即某个利益相关者提出的需求和其他利益相关者的需求相矛盾)。很明显,后者更具有挑战性。者的需求相矛盾)。很明显,后者更具有挑战性。n协作并不意味着必须由委员会定义需求。在很多协作并不意味着必须由委员会定义需求。在很多情况下,利益相关者的协作是情况下,利益相关者的协作是提供提供他们各自关于他们各自关于需求的观点,而一个强有力的需求的观点,而一个强有力的“项目领导者项目领导者”(例如业务经理或高级技术员)可能要对删减哪例如业务经理或高级技术员)可能要对删减哪些需求些需求做出最终决策做出最终决策。2022-12-19202
17、2-12-192121p4.2.4 首次提问首次提问n问问题的人是五分钟的傻瓜,而不问问题的人将问问题的人是五分钟的傻瓜,而不问问题的人将永远是傻瓜。永远是傻瓜。n中国谚语中国谚语n什么问题有助于你获得对问题的初步认识?什么问题有助于你获得对问题的初步认识?p在需求导出时的提问应该是在需求导出时的提问应该是“与环境无关的与环境无关的”。第。第一组与环境无关的问题集中于客户和其他利益相关一组与环境无关的问题集中于客户和其他利益相关者、整体目标、收益。者、整体目标、收益。p下一组问题有助于软件开发组更好的理解问题,并下一组问题有助于软件开发组更好的理解问题,并允许客户表达其对解决方案的看法允许客户
18、表达其对解决方案的看法p最后一组问题关注与沟通活动本身的效率。最后一组问题关注与沟通活动本身的效率。2022-12-192022-12-1922224.3 导出需求导出需求p导出需求(又称为导出需求(又称为需求收集需求收集)是与问题求解、精)是与问题求解、精化、谈判和规格说明等方面的元素结合在一起的。化、谈判和规格说明等方面的元素结合在一起的。为了鼓励合作,一个包括利益相关者和开发人员为了鼓励合作,一个包括利益相关者和开发人员的团队共同完成如下任务:的团队共同完成如下任务:确认问题,为解决方确认问题,为解决方案的要素提供建议,商讨不同的方法并描述初步案的要素提供建议,商讨不同的方法并描述初步的
19、需求解决方案的需求解决方案。n1.协作收集需求协作收集需求n2.质量功能部署质量功能部署n3.用户场景用户场景n4.导出工作产品导出工作产品2022-12-192022-12-192323p4.3.1 协作收集需求协作收集需求n主持一个协作需求收集会议的基本原则是什么?主持一个协作需求收集会议的基本原则是什么?p会议由软件工程师和其他的利益相关者共同举办和参与。会议由软件工程师和其他的利益相关者共同举办和参与。p制定筹备和参与会议的规则。制定筹备和参与会议的规则。p建议拟定一个会议议程,这个议程既要足够正式,使其涵盖所建议拟定一个会议议程,这个议程既要足够正式,使其涵盖所有的重点;但也不能太正
20、式,以鼓励思想的自由交流。有的重点;但也不能太正式,以鼓励思想的自由交流。p由一个由一个“调解人调解人”(可以是客户、开发人员或其他人)控制会(可以是客户、开发人员或其他人)控制会议。议。p采用采用“方案论证手段方案论证手段”(可以是工作表、活动挂图、不干胶贴(可以是工作表、活动挂图、不干胶贴纸或电子公告牌、聊天室或虚拟论坛)。纸或电子公告牌、聊天室或虚拟论坛)。n目的:目的:p识别问题,提出解决方案的要素,协商不同的方法以及在有利识别问题,提出解决方案的要素,协商不同的方法以及在有利于完成目标的氛围中确定一套解决需求问题的初步方案。于完成目标的氛围中确定一套解决需求问题的初步方案。2022-
21、12-192022-12-192424p4.3.2 质量功能部署(质量功能部署(Quality Function Deployment,QFD)n一种将客户要求转为成软件技术需求的一种将客户要求转为成软件技术需求的质量管理技质量管理技术术,目的是最大限度的让客户从软件工程过程中感,目的是最大限度的让客户从软件工程过程中感到满意。为了达到这个目标,到满意。为了达到这个目标,QFD强调理解强调理解“什么什么是对客户有价值的是对客户有价值的”,然后在整个工程活动中部署,然后在整个工程活动中部署这些价值。这些价值。QFD确认了三类需求:确认了三类需求:p正常需求:正常需求:特定的系统功能特定的系统功能
22、p期望需求期望需求:人机交互的容易性,软件安装的简易性:人机交互的容易性,软件安装的简易性p令令人兴奋的需求:人兴奋的需求:多重触控技术的触摸屏多重触控技术的触摸屏2022-12-192022-12-192525p4.3.3 用户场景用户场景n当收集需求时,系统功能和特性的整体愿景开始当收集需求时,系统功能和特性的整体愿景开始具体化。但是在软件团队弄清楚不同类型的最终具体化。但是在软件团队弄清楚不同类型的最终用户如何使用这些功能和特性之前,很难转移到用户如何使用这些功能和特性之前,很难转移到更技术化的软件工程活动。为实现着一点,开发更技术化的软件工程活动。为实现着一点,开发人员和用户可以人员和
23、用户可以创建一系列的场景创建一系列的场景(场景可以识(场景可以识别对将要构建系统的使用线索)。场景通常称为别对将要构建系统的使用线索)。场景通常称为用例用例,它提供了将如何使用系统的描述它提供了将如何使用系统的描述。2022-12-192022-12-192626p4.3.4 导出工作产品导出工作产品n什么样的信息是需求收集产生的?什么样的信息是需求收集产生的?p要求和可行性要求和可行性陈述陈述p系统或产品范围的系统或产品范围的界限说明界限说明p参与需求导出的客户、用户和其他利益相关者的参与需求导出的客户、用户和其他利益相关者的名单名单p系统技术环境的系统技术环境的说明说明p需求需求列表列表(
24、最好按照功能加以组织)以及每个需求适(最好按照功能加以组织)以及每个需求适用的用的领域限制领域限制。p一系列一系列使用场景使用场景,有助于深入了解系统或产品在不同,有助于深入了解系统或产品在不同运行环境下的使用。运行环境下的使用。p任何能够更好的定义需求的任何能够更好的定义需求的原型原型n所有参与需求导出的人员需要评审以上的每一个工所有参与需求导出的人员需要评审以上的每一个工作产品。作产品。2022-12-192022-12-1927274.4 开发用例开发用例p从参与者的角度定义用例。参与者是人员(用户)从参与者的角度定义用例。参与者是人员(用户)胡设备在和软件交互时所扮演的较色。胡设备在和
25、软件交互时所扮演的较色。n参与者和最终用户并非一回事。典型的用户可能参与者和最终用户并非一回事。典型的用户可能在使用系统时扮演了许多不同的较色,而参与者在使用系统时扮演了许多不同的较色,而参与者表示了一类外部实体,在用例中他们仅扮演一种表示了一类外部实体,在用例中他们仅扮演一种较色。较色。n主要参与者和次要参与者主要参与者和次要参与者n开发用例开发用例2022-12-192022-12-1928284.5 构建需求模型构建需求模型p4.5.1 需求模型的元素需求模型的元素n基于场景的元素基于场景的元素p功能说明功能说明处理软件功能的描述处理软件功能的描述p用例用例描述描述“参与者参与者”和系统
26、之间的交互作用和系统之间的交互作用n基于类的元素基于类的元素p由场景暗示由场景暗示n行为元素行为元素p状态图状态图n面向数据流元素面向数据流元素p数据流图数据流图2022-12-192022-12-192929p一组用户场景,描述系统的线程使用一组用户场景,描述系统的线程使用p从从“参与者参与者”的点的点-视角来描述每一个场景视角来描述每一个场景人或设备以某种方式人或设备以某种方式与软件交互与软件交互p每一个场景回答以下问题:每一个场景回答以下问题:n谁是主要参与者、次要参与者?谁是主要参与者、次要参与者?n参与者的目标是什么?参与者的目标是什么?n故事开始前有什么前提条件?故事开始前有什么前
27、提条件?n参与者完成的主要工作或功能是什么?参与者完成的主要工作或功能是什么?n按照故事所描述的还可能需要考虑什么异常?按照故事所描述的还可能需要考虑什么异常?n参与者的交互中有什么可能的变化?参与者的交互中有什么可能的变化?n参与者将获得、产生或改变哪些系统信息?参与者将获得、产生或改变哪些系统信息?n参与者必须通知系统有关外部环境的改变吗?参与者必须通知系统有关外部环境的改变吗?n参与者希望从系统获取什么信息?参与者希望从系统获取什么信息?2022-12-192022-12-19303030用例图用例图hom eow nerArm s/di sarm s systemAccesses sy
28、stem vi a I nternetReconfi gures sensors and rel atedsystem featuresResponds toal arm eventEncounters anerror condi ti onsystem adm i ni stratorsensors房主安装/接触系统通过因特网访问系统报警事件的响应遇到错误条件重新配置传感器以及相关的系统特性传感器系统管理员2022-12-192022-12-19313131类图类图Sensorname/id type location area characteristics identify()enabl
29、e()disable()reconfigure()从从SafeHome 系统系统传感器2022-12-192022-12-19323232状态图状态图Reading CommandsSystem status=“ready”Display msg=“enter cmd”Display status=steadyEntry/subsystems readyDo:poll user input panelDo:read user inputDo:interpret user inputState nameState variablesState activities状态名状态变量状态活动读指令20
30、22-12-192022-12-19333333分析模式分析模式模式名称:模式名称:捕获模式本质的描述符。捕获模式本质的描述符。目的:目的:描述该模式实现了或代表什么。描述该模式实现了或代表什么。动机:动机:说明怎样用模式解决问题的一个场景。说明怎样用模式解决问题的一个场景。影响环境:影响环境:对外部问题(影响)的描述,即能够影响如对外部问题(影响)的描述,即能够影响如何使用模式,并当应用该模式时,影响即将被解决的外部何使用模式,并当应用该模式时,影响即将被解决的外部问题。问题。解决方案:解决方案:对如何应用模式来解决强调结构和行为问题的对如何应用模式来解决强调结构和行为问题的描述。描述。效果
31、:效果:解决了发生在应用模式时和应用过程中存在权衡解决了发生在应用模式时和应用过程中存在权衡的问题。的问题。设计:设计:通过使用已知的设计模式讨论如何实现该分析模通过使用已知的设计模式讨论如何实现该分析模式。式。已知应用已知应用:在实际系统中使用的例子。在实际系统中使用的例子。相关模式:相关模式:与命名模式有关的一个或更多分析模式,因为与命名模式有关的一个或更多分析模式,因为(1)(1)与命名模式共同使用;与命名模式共同使用;(2)(2)在结构上,与命名模式相在结构上,与命名模式相似;似;(3)(3)是命名模式的一个变化。是命名模式的一个变化。2022-12-192022-12-1934343
32、44.6 协商需求协商需求p确定关键的利益相关者确定关键的利益相关者n是即将参与协商的人是即将参与协商的人p确定每个利益相关者确定每个利益相关者“赢赢”的条件的条件n赢的条件并不总是显而易见的赢的条件并不总是显而易见的p协商协商n致力于导致致力于导致“双赢双赢”的一组需求的一组需求2022-12-192022-12-193535354.7 确认需求确认需求-Ip每项需求都和系统或产品的整体目标一致吗?每项需求都和系统或产品的整体目标一致吗?p所有的需求都已经在相应的抽象层上说明了吗?所有的需求都已经在相应的抽象层上说明了吗?换句话说,是否有一些需求是在技术细节过多换句话说,是否有一些需求是在技
33、术细节过多的层次上提出的,并不适合当前的阶段。的层次上提出的,并不适合当前的阶段。p需求是真正必须的,还是另外加上去的,有可需求是真正必须的,还是另外加上去的,有可能不是系统目标所必须的特性吗?能不是系统目标所必须的特性吗?p每项需求都有界定且无歧义吗?每项需求都有界定且无歧义吗?p每项需求都有归属权吗?换句话说,是否每个每项需求都有归属权吗?换句话说,是否每个需求都标记了来源(通常是一个明确的人)?需求都标记了来源(通常是一个明确的人)?p有需求和其他需求相冲突吗?有需求和其他需求相冲突吗?2022-12-192022-12-19363636确认需求确认需求-IIp在系统或产品所处的技术环境
34、下每个需求都能够实现吗?在系统或产品所处的技术环境下每个需求都能够实现吗?p一旦实现后,每项需求是可测试的吗?一旦实现后,每项需求是可测试的吗?p需求模型恰当反应了将要构建系统的信息、功能和行为吗?需求模型恰当反应了将要构建系统的信息、功能和行为吗?p需求模型是否已经使用合适的方式需求模型是否已经使用合适的方式“分割分割”,能够逐步地,能够逐步地揭示详细的系统信息吗?揭示详细的系统信息吗?p已经使用了需求模型简化需求模型吗?所有的模型都已经已经使用了需求模型简化需求模型吗?所有的模型都已经被恰当地确认了吗?所有的模式都和客户的需求一致吗?被恰当地确认了吗?所有的模式都和客户的需求一致吗?202
35、2-12-192022-12-193737小结小结p需求工程的任务是为设计和构建活动建立一个可需求工程的任务是为设计和构建活动建立一个可靠坚固的基础。需求工程发生在与客户沟通活动靠坚固的基础。需求工程发生在与客户沟通活动和为一般的软件过程定义的建模活动过程中。软和为一般的软件过程定义的建模活动过程中。软件团队成员要实施件团队成员要实施7个不同的需求工程只能:起个不同的需求工程只能:起始、导出、精化、协商、规格说明、确认和管理。始、导出、精化、协商、规格说明、确认和管理。p在项目起始阶段,项目利益相关者建立基本的问在项目起始阶段,项目利益相关者建立基本的问题需求,定义最重要的项目约束以及陈述主要的题需求,定义最重要的项目约束以及陈述主要的特征和功能,必须让系统表现出这些特征和功能特征和功能,必须让系统表现出这些特征和功能以满足目标。在此阶段中利用有主持人的会议、以满足目标。在此阶段中利用有主持人的会议、QFD和使用场景的开发进行需求的收集活动。和使用场景的开发进行需求的收集活动。