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