从系列中:系统工程:管理系统复杂性
布莱恩•道格拉斯
介绍系统工程中的一个重要工具:需求。您将了解每个需求必须具备的三个要素,以及如何使需求有效。您还将看到需求和需求层次结构对系统设计过程的贡献。
在这段视频中,我想介绍一个在系统工程中非常流行的话题,如果不是臭名昭著的话;要求。现在,像系统工程中的大多数事情一样,有很多内容需要涵盖,还有很多细微差别,不幸的是,在像这样的短视频中必须跳过。因此,我们不应将此视为您需要了解的所有内容,而是将介绍需求背后的一些重要和有趣的想法。我们将讨论它们是什么,我们将描述什么构成了一个好的需求,然后我们将简要地展示它们对系统设计过程的贡献。我希望你能坚持下去。我是布赖恩,欢迎参加MATLAB技术讲座。
有句话可能被误读为阿尔伯特·爱因斯坦的名言:“给我一个小时来拯救世界,我会花55分钟定义问题,5分钟解决它。”尽管这有点夸张,但它的意思是,花在理解和同意问题是什么上的时间可能比花在实际解决问题上的时间更有用,因为这确保了你在解决正确的问题。我们已经讨论过系统工程过程是如何建立起来的,首先要花很多时间来定义问题。这就是需求出现的地方。需求及其相关的约束条件和假设是量化待解决问题的一种方法。它们是一种记录和描述需要设计的内容的方法,并提供如何确定项目成功的方法。
需求由三部分组成:对特定需求的描述、需求有效性的基本原理以及验证系统满足该需求的方法。因此,换句话说,我们写下系统需要完成的事情,我们确保我们写的东西确实值得去做,我们确保有办法证明系统满足它。
我们将在稍后详细介绍其中的每一项,但现在我想强调一些不同类型的需求,以便您能够感受到我们可能在整个项目中对系统征收的需求。
首先,我们可以编写需求来指定系统需要执行哪些功能,还有一些性能需求描述系统必须执行功能的程度。还有约束要求,包括系统不应超过的参数、环境要求、人为因素、可靠性和安全性等。它们涵盖了设计中必须满足的特定需求的各个方面。
让我们通过几个例子来说明我们在上个视频中介绍的烤面包机,来展示一些不同类型的实际需求。功能性需求指定了功能。对于烤面包机,我们可能有"烤面包机将把电能转换成热能"这是一个要求,我们可以通过检查烤面包机的设计来验证,并看到这个功能的存在。
对于性能要求,我们可以说烤面包机应能够将高达100瓦的电力转换为热能。同样,这一要求可以通过分析设计并最终在烤面包机建成后通过测试来验证。
约束要求可能类似于烤面包机质量应小于5 kg,我们通过在设计早期分析质量预算,然后通过称重实际烤面包机进行检查来验证。
这是我们声称烤面包机必须满足的三个要求还有一些不同的方法来验证设计是否满足这些要求。但除了描述和验证方法之外,我们还必须考虑它们的有效性。也就是说,这些需求是有效的吗?如果是,每个需求的基本原理是什么?为了使需求有效,一个需求必须满足两大类。首先,需求必须是我们实际想要向系统征收的东西,其次,需求必须以传达正确信息的方式编写。让我们都来研究一下。
我们需要确保我们正在设计和构建正确的东西,即利益相关者真正想要的东西。因此,需求必须指定有助于实现最终目标的需求。例如,对烤面包机的良好要求可能是烤面包机的体积必须小于1立方英尺。这是有效的,因为我们可以直接追溯到利益相关者的需求,即必须安装在标准厨房台面上。因此,我们对将设计限制在这个大小感到满意。另一方面,要求烤面包机能够同时烤10片面包可能是无效的。我的意思是,这是一个完全合法的要求,我们可以创建一个设计来实现这一点,但至少出于两个原因,我们不想对设计征税。它不能追溯到满足任何利益相关者的需求,因此我们没有更高层次的要求或目标来说明为什么会存在此要求,但更糟糕的是,它可能与烤面包机的容量要求不一致,因为它使我们满足此要求的能力变得复杂。
这是一个愚蠢的例子,但不幸的是,不一致的需求很容易创建,因为两个单独的需求本身似乎是有效的,甚至可以追溯到干系人的需求。但是,只有在查看整个需求集之后,我们才能确定系统定义中是否存在需要解决的不一致之处。作为需求验证工作的一部分,发现这一点比在设计系统后发现它更可取。
现在,即使我们对一个需求有一个有效的理由,它在技术上和编程上都是可行的,并且它们都是一致的,如果一个需求写得很差,它仍然可能是无效的。为了理解这意味着什么,让我们看一些例子。
需求必须清晰、简洁、明确。也就是说,它只传达一种思想,只能有一种解释,不包含不必要的信息。例如,一个写得不好的要求可能是“烤面包机应该有一个可移动的面包屑盘,重量应该小于5公斤”。这篇文章写得很糟糕,因为这里不仅有两个想法,面包屑盘和重量,而且还不完全清楚是盘子还是烤面包机必须在5公斤以下。最好将其分为两个需求,这两个需求是明确的,并且每个需求都可以独立验证。
另一种可能导致需求写得不好的方法是,如果它无法验证。无法验证可能来自于使用诸如最小化、最大化和用户友好的词语来描述需求。我的意思是,你可以写一个要求,说烤面包机应该是用户友好的,但验证这将是非常主观的。更好的方法是提前进行产品研究,潜在用户根据用户友好程度对各种设计选择进行排序,然后编写所需功能的需求。任何无法验证的需求都应该被删除或修改,因为你没有办法保证系统最终满足它。
我想讨论的最后一项要求陷阱是指定实现的。如上最后一个视频的函数,通常描述系统应该做的,以及它受到限制的,而不是描述它应该如何完成的。例如,我们的要求说烤面包机应能够将高达100瓦的电力转换为热电。这定义了设计的特定方面。它必须做什么。它必须转换高达100W。但它是怎么做到的?好吧,要求没有说。它可以是线圈或一些其他加热元件。工程团队中的域名专家应该具有灵活性,以满足其选择的实施。
作为一个简短的补充说明,在使用需求指定实现方面,有一点进入灰色区域。这并不像说不要做那样直截了当。如果需要特定的实现,并且您不希望设计具有灵活性,那么可以将其指定为需求。例如,可能有一些政府法规规定,您只能在家用烤面包机中使用电加热线圈,在这种情况下,您可以将此作为一项要求。但一般来说,我们尽量避免通过需求强制特定的实现,而只关注定义设计的特征和特性。
好的,一旦我们有了经过验证和审查的需求,我们就将它们分配给实现。也就是说,我们将需求链接到它们定义其特性的特定小部件。相反,小部件的设计可以追溯到它实现的需求。因此,我们留下了一个可追溯性地图,将设计好的系统与需求联系起来。这种需求跟踪至少做了三件事,它提供了一种审核需求列表的方法,以确定设计中是否遗漏了任何需求,它提供了一种审核实现的方法,并确保每个小部件都有理由,它还提供了一个特定实现的需求列表,可用于设计验证测试。我们将在下一个视频中详细介绍。
好了,现在我们已经基本了解了什么是需求,以及它们如何对设计过程做出贡献,在这个视频中我最不想谈论的是需求层次结构。需求不是作为单个断开连接的实体存在的,而是经常分组并组织成一个层次结构。较低级别或子需求细化父需求的需求。
在顶层,在接近项目开始时,我们从关键的项目需求开始,这些需求形式化了干系人的需求。然后,我们将这些信息流到功能需求,在那里我们确定系统必须完成的功能。然后我们在系统级创建性能需求,然后开始向下流到子系统、组件和零件,直到我们有一个完整的集合。您的程序可能会用不同的名称来调用这些级别,但想法是一样的,通过编写更详细的低级需求来细化高级需求。
你可能会想,“等一下”!我想你说过需求不指定实现,那么我们如何在没有实现的情况下为较低级别开发需求呢?通过需求强制实现和定义特定选择的实现的需求是有区别的。需要确定一些设计工作和实施细节,以便继续细化需求。因此,我们可以将其视为一种迭代方法,其中高级需求允许设计团队调查并选择要追求的特定概念。一旦我们有了一个概念,我们就可以针对该概念编写较低级别的需求,从而允许设计团队进一步完善实现。
例如,在上一个视频中,我们讨论了烤面包机如何可以是家用烤面包机、商用烤面包机或露营烤面包机。利益相关者的高层次需求推动我们走上了创建住宅烤面包机的道路。这是我们选择追求的一个概念,一旦我们决定走这条路,我们就能够进一步细化功能需求。我们有一个功能要求,即烤面包机必须管理和储存面包放入烤面包机时产生的机械能。这一要求只对住宅烤面包机的设计征税是有意义的,因此它是具体实施的,但它仍然没有强制实施,因为它没有告诉我们如何管理和存储机械能。
我们可以更进一步。我们可以选择在弹簧中储存机械能。这是我们决定的一个实现。在这种情况下,我们可以为弹簧编写较低级别的要求,说明性能度量,如弹簧可以行驶的最大距离和需要存储的能量。这会让我们知道我们需要设计或购买什么样的弹簧。因此,希望您可以开始看到进一步细化需求和进一步细化设计之间的来回关系。
将所有这些父需求和子需求堆叠在一起形成一个层次结构。你可以看到弹簧长度和弹簧能量存储都是管理机械能的子要求。这个层次结构,我们已经提到过,可以帮助我们进行验证。需求的基本原理可以通过表明系统满足其父需求是必要的来确定。
但再次强调,验证不仅仅是查看单个需求。我们必须把验证看作一个系统,层次结构可以帮助我们,因为我们可以查看组件的需求集,并确定它们作为一个组是否有效。我们可以看到它们是否完整,也就是说我们没有在定义中遗漏一个需求。我们可以看到它们彼此是一致的-所以它们不会矛盾或导致其他不可行的。我们可以看到它们是必要的,也就是说,我们并没有通过过度限制设计来消除灵活性或强迫不一致。
好的,这是对需求的快速概述,以及需求层次结构和可追溯性的好处。然而,这里有一个更大的故事要讲。在下一个视频中,我们将扩展系统验证和确认,并展示系统工程和需求如何帮助确保我们构建了正确的系统。
所以,如果你不想错过那个或任何其他未来的科技谈话视频,别忘了订阅这个频道。此外,如果您对其他控制理论主题也感兴趣,请查看我的频道。谢谢收看,下次再见。
你也可以从以下列表中选择一个网站:
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家/地区网站未针对您所在地的访问进行优化。