跳转到内容

4.1 - 功能分析与分配需求

来自维基教科书,开放世界中的开放书籍


功能分析

[编辑 | 编辑源代码]

功能分析是在设定目标和需求之后,系统工程过程中的下一步。功能分析将系统划分为更小的部分,称为功能元素,这些元素描述了我们希望每个部分做什么。我们还没有包括设计或解决方案的如何。在这一点上,我们不想限制设计选择,因为它可能会遗漏最佳答案。在后面的步骤中,我们将确定备选方案,对其进行优化,并选择最佳方案来构成完整的系统。名称功能来自数学函数,它作用于输入值并产生不同的输出值。类似地,在系统工程方法中,函数将一组输入转换为一组输出。

功能图

[编辑 | 编辑源代码]
图 4.1-1。具有标准流程位置的单个功能框。
图 4.1-2。MakerNet 位置的顶层功能。

有多种方法可以记录和显示构成系统设计的函数。功能流程图是一种流行的图形方法。它使用矩形框来表示每个功能(图 4.1-1)。箭头表示任何类型流向功能的流或状态。这些流程连接到其他功能或系统外部。按照惯例,输入显示在左侧,输出显示在右侧。功能框本身将输入转换为输出。机制是执行功能的实体,但本身不发生转换。它们通常以底部箭头显示,通常代表设备的使用。控制是命令、限制或指导功能操作的输入,通常显示在顶部。功能名称通常由动词和名词组成,如“砍柴”,总结了任务,并在框内显示。通常会包含一个功能编号以唯一标识它,因为类似的名称最终可能在项目的不同位置使用。最常见的编号方法取父功能的编号,并为每个子功能在其编号后添加一位数字。因此,2.2 有子功能 2.2.1、2.2.2 等。这使得只需查看编号就可以跟踪功能在整个系统中的位置。

这些图表可以是顺序的,例如显示生产过程的步骤;并行的,不同的活动可以同时发生;或者循环的,其中有反馈或迭代。更一般地说,任何功能的输出都可以导致任何其他功能的输入。


顶层图表 - 在设计工厂时,我们通常关注生产功能。然而,出于设计和分析目的,系统边界的放置可能不同。图 4.1-2 显示了 MakerNet 示例中完整位置的顶层框图。它包括一个生产功能,大多数制造活动都在这里进行,一个居住功能,即所有者居住和工作的房屋和其他建筑物,以及一个将实物从一个地方移动到另一个地方的运输功能。在这种情况下,工厂将产品交付给拥有和操作设备的个人网络以及他们相关的社区。它也可能将他们的废物运回进行再加工。由于生产的所有者与使用居住和运输的群体相同,因此这是一个足够集成的状况,因此在所有相关功能周围设置系统边界是有意义的。一个只生产出售产品的工厂与最终用户之间没有那么强的联系,因此在这种情况下,您可以排除生产功能以外的任何内容。从选定系统边界外部的输入和输出显示在图表的左侧和右侧,并按类型分类。从逻辑上讲,此图表与更高级别的图表相同,其中所有输入位置都表示为单个流箭头,如 4.1-1 图所示,整个项目简化为单个框,没有内部细节。在一个图表中一次显示所有项目的细节会使它变得太大且复杂,难以理解。相反,复杂性通过呈现多个级别的细节来降低,其中一个级别的框表示下一级别的更详细图表。这样,任何复杂程度的系统都可以被描述。


流程箭头 - 流程箭头表示项目的状态或任何类型的资源在功能之间移动。来自铸造工艺的生金属铸件和由该铸件制成的加工零件是正在制造的零件的不同状态。铸件将是“加工零件”功能的输入,该功能将一个转换为另一个,而加工零件将是其输出。资源是指诸如能源和人力等在用作输入时会消耗殆尽,或作为功能输出而产生的东西。流程可能在端点之间分支和合并,但应理解,从数学角度来看,连接点的两侧都是相等的。否则,你就会有从无到有的自发创造,或者存在某些项目未经核实的来源或处置。当低级图表上的流程显示更详细的组件时,它们的组合因此应该与高级图表上表示它们的单个流程相同。流程与功能一样,也具有名称和唯一编号来标识它们。随着设计的进展,流程和功能框都将被进一步分解成更详细的细节。


表示功能关系 - 图 4.1-2 未显示连接功能框的所有内部流程,原因有两个。首先,我们目前还没有在设计过程中定义它们。第二,由于线条过多,图表将变得不可读。更高级别的图表往往有更多的流程,因为它们一次显示了更多系统。处理这种复杂性的一种方法是使用带有多个工作表的较大图纸。可以理解,每个工作表仅显示部分流程,这些流程流向相同的功能,以使其更易读。处理复杂性的另一种方法是在电子表格和数据表中跟踪流程,这些表格和数据表可以拥有尽可能多的条目,每个条目代表一个流程。无论使用哪种方法来显示和跟踪功能和流程,它们都代表系统各个部分之间的相同关系。框图只是方便的视觉起点,用于理解和分析系统。


表示时间 - 在给定的图表中,连接两个功能的流程表明第二个功能在逻辑上遵循第一个功能。至少这意味着第二个功能不能早于第一个功能的开始开始。但是,它们可以同时开始。例如,便携式发电机及其供电的任何设备都可以同时启动,但设备不能早于发电机启动,因为它的一个必要输入,即电力,直到发电机工作后才可用。有时,一系列功能框代表严格的时间顺序,其中一个必须完成才能开始下一个,但这只有在流程包含相同项目的各个状态时才必要。例如,对于飞机,功能“从跑道起飞”必须在“飞往目的地”和“降落在目的地”之前完成,因为输入和输出是同一架飞机,分别处于“飞机在出发机场”、“飞机在飞离出发城市”等状态。当流程图中存在循环时,例如一个水处理单元从家庭收集污水并回送清水,则启动顺序应在设计中考虑。在这种情况下,由于最初没有污水可处理,因此必须在某个时间点将启动时供应的清水送入循环中。

当整个系统从一个阶段发展到另一个阶段,并且添加了新的功能元素和流程时,需要使用不同的时间表示。一种方法是为每个阶段准备相同图表的不同版本,并标记在先前阶段不存在的新项目。这可以通过突出显示或用颜色标记新项目来完成。更复杂的系统表示,如模拟,可以让新项目在指定的时间出现。


超越流程图 - 图表中使用的功能或流程名称不足以准确描述该项目应该是怎样的。它只是设计一部分的标签。随着更多细节的制定,它们可以作为注释包含在图表中,或者包含在各种单独的文档或文件中。通过使用相同的识别名称和功能编号,任何关于功能的额外数据都可以链接到它。唯一的跟踪标签有助于在一个一致的系统中组织项目的全部数据。功能描述扩展了图表标签,通常包含在图表本身或图表随附的补充工作表上。描述可以根据需要任意长,但通常是几句话到几段话。数学模型、不同选项的设计图纸或与该功能相关的任何其他数据也用相同的名称和编号标记以识别它们。

分析过程

[编辑 | 编辑源代码]

功能分析的目的是将一个复杂系统分解成更小、更简单的部分,以便最终可以单独设计这些部分。一种分解方法是沿着时间轴进行。一个大型项目可以划分为时间上顺序的阶段,每个阶段都添加新的功能或硬件。一个常见的例子是房地产开发,每个阶段开发一个房产的不同部分。技术项目通常也划分为几个设计阶段、生产、测试和交付,其中必须完成某个阶段的里程碑才能进行下一个阶段。在一个系统的一部分中,一些任务必须按时间顺序依次发生或流程化。因此,序列中的每个步骤都可以被识别为一个功能。另一种划分功能的方法是,当它们在同一时间做不同的事情时,但具有连接它们的输入和输出。因此,机器人手臂的控制电子设备可以向电机供电,并从传感器读取关节角度。电子设备与电机和关节轴承的不同程度足够大,因此可以合理地将它们视为不同的功能,并解决不同的设计问题。

对于如何最好地划分系统,没有一个单一的答案。通常,不同的替代设计将需要不同的功能分解。设计者应该运用良好的判断,将系统分解成具有内部关联性的元素,并遵循从一个元素到下一个元素的逻辑流程。一个功能应该有助于满足系统整体需求的某个部分,否则你就可以质疑该功能的必要性。在我们的 MakerNet 示例中,三个顶级功能分别用于不同的目的:改变事物(生产)、移动事物(运输)和使用事物(居住)。业主/最终用户是 MakerNet 建设的原因,他们被包含在系统设计中,因为他们与系统紧密相连。预计他们将成为系统的操作员,他们的废弃物将被回收利用,住房和商业建筑可能在物理上与生产功能的电力来源和其他公用事业连接在一起。仅设计用于制造待售物品的工业生产型工厂与客户之间的互动较少。在这种情况下,你可以合理地将系统边界只画在生产部分周围,并将最终用户和交付作为外部流程。

功能分析,就像设计过程的所有部分一样,不是完成一次就结束。它会随着设计的进展而不断演变和修改。图纸及其相关记录代表了某个时间点设计当前状态。版本号和日期有助于识别最新状态,变更历史说明了修改的原因。在小型项目或大型项目的早期阶段,这种正式跟踪并不那么必要。在一个大型项目中,每个人只能熟悉他们正在进行的部分,正式跟踪有助于协调整体工作,并且更为重要。

功能与硬件没有一对一的关系。给定的硬件项目可能执行多个任务,而给定的功能可能需要多个硬件项目在不同的地方才能完成。相反,功能是心理抽象。它们代表了系统构建的预期目的的各个部分。当达到足够详细的级别时,这些部分就足够简单,可以单独设计。

分析示例

[edit | edit source]
图 4.1-3。提供生产能力内的下一级功能。
图 4.1-4。生产功能输出矩阵。

我们将使用 MakerNet 位置的 **提供生产能力** 功能作为下一级详细说明的示例。


**功能和流程编号** - 一个名称和一个编号用于识别系统设计中的特定功能或流程。这些编号应唯一,并且由一系列包含数字和字母的组件组成,这些组件用句号隔开。这些组件代表系统设计中的层次结构级别。我们的示例使用了比目前需要的更长的功能编号,以便在将来需要更高级别的设计工作时,无需重新编号。重新编号既是额外工作,又会导致混乱。因此,花一点心思规划好在编号系统中保留空间是一个好主意。五组件编号“F.2.1.1.1”用于表示提供生产能力功能的整体,而初始 F 表示它是一个功能。外部流程、控制、输入、机制和输出分别使用 E、C、I、M 和 O 作为其第一个组件标签。

继续此示例,第二个组件表示项目级阶段,其中 1 表示第一个完整工厂单元之前的技术开发阶段,2 表示实际位置的第一代单元。更高数字将用于后续世代设计。在这种情况下,第三个组件表示设计环境,因为设计会根据外部条件发生变化。这里的 1 代表中等操作环境。更困难或更极端的环境将获得更高的数字。第四位数字是位置序列号,因为这是要设计的第一个项目位置,所以为 1。其他位置将获得顺序编号。因此,F.2.1.1 标识了第一个完整的 MakerNet 项目位置。该位置将以一系列施工阶段进行扩展。当我们考虑这些阶段时,我们将在位置序列号中附加字母,例如阶段 1A、1B 等。目前,我们正在考虑一般功能,而不考虑施工时间,因此第四个组件只是 1。最后的 .1 代表该位置的提供生产能力功能。请注意,这只是一个关于如何组装功能编号的示例,而不是特定项目实际的组件。


**下一级功能识别** - 图 4.1-3 显示了提供生产能力下下一级的子功能。子功能的特定集合由设计者决定,因此其他版本是可能的,但在这里我们遵循参考体系结构的划分。一般来说,子功能集应该是逻辑性的,并将更大的功能划分为在内部相关的不同任务,并且彼此区分。在此版本的图中,它们以对角线排列,便于在任何两个子功能之间绘制流程箭头。但是,功能框的放置和编号顺序可以是任何清晰和逻辑的顺序。将它们按任务执行的顺序或多或少地排列,允许一个任务的输出箭头连接到下一个任务的输入侧(从左到右),因此,这种布局经常被使用。

功能块可能不会严格按时间顺序发生。事实上,任何循环,例如废弃物被循环利用到早期阶段,意味着它们不能按确定的时间顺序排列。因此,图纸上的布局应该是在特定情况下最合理的布局。


**输出矩阵** - 图 4.1-4 展示了除了箭头之外的另一种显示功能之间流程的方法。这种方法适用于箭头过多会造成混淆的情况。功能本身放置在网格的对角线上。对角线上方的任何网格矩形表示从左侧同一行的功能流向下方同一列的功能。对角线下的矩形表示从右侧同一行的功能流回到上方同一列的功能。网格方法不适合显示返回到与起始位置相同的函数的输出,也不适合显示控制和机制输入的关系。它有助于作为一种组织方式来考虑功能之间的关系。网格中的每个方框都可以依次进行检查,并提出问题“这两个功能之间是否存在任何以这种方式传递的东西?”如果没有,该方框可以标记为“X”。如果有,则可以将流程输入到该方框中,并在以后详细地解决。

分配需求

[edit | edit source]

系统工程过程中的第三个主要步骤是 **需求分配**。为了确保所有顶层需求都能得到满足,它们被分配给一个或多个功能来实现。分配可以是整个需求,也可以将需求划分为部分,然后将这些部分分配给不同的功能。例如,美国法规要求航空座椅在撞击期间能承受 16 g 的前向加速度。这可以分配给限制乘客、支撑座椅负载和支撑地板负载功能,这些功能由安全带、座椅结构和地板结构设计元素实现。时间限制和其他参数也会传递到较低级别的功能。例如,一架飞机可能要求地面维护平均每架次不超过 4 个小时。该需求可能部分分配给提供推进力(发动机)和支撑飞行负载(结构)功能,即使这些功能在维护期间未使用。飞机发动机和结构的设计必须满足分配给它们的任务时间。

分配的需求记录在较低级别的需求文档或规范中,这些文档或规范适用于项目的各个部分。**可追溯性** 能够跟踪较低和较高级别需求之间的链接以及它们是如何产生的逻辑。在最低级别,需求的一个子集被分配给特定的硬件或软件项目、熟练人员、程序、设施、接口、服务或最终系统的其他单个元素。在那个级别,需求的子集和系统元素足够简单,可以实际设计。对于复杂项目,软件工具对需求分配和跟踪过程非常有用。它们可以帮助管理大量细节,并确保项目中的每个人都拥有最新信息。

需求分配不是一次性任务,尽管它主要集中在项目的早期阶段。随着设计和测试的进行,它们可以提供反馈并调整分配的需求。这些变化会传播到更高的级别,通过追溯它们的影响,你可以确定它们如何影响项目的目标。变化也可能在同一级别产生横向影响。例如,系统一部分重量的增加可能需要在其他地方进行减重工作,以不影响顶层性能。

华夏公益教科书