在系统级别进行设计。第1部分。从概念到系统

大家好。我经常在工作中应用系统工程原理,并希望与社区分享这种方法。

系统工程-没有标准,但是以简单的方式,这是将系统开发为相当抽象的组件的过程,而无需参考特定的设备模型。在此过程中,将建立系统组件的属性以及它们之间的关系。此外,还需要使系统保持一致和最佳,并且系统满足要求。在本教程中,我将以设计一个相当简单的访问控制系统(ACS)的示例为您展示系统工程技术。

我们形成初始架构


当一个系统(无论是哪个系统)刚刚开始开发时,带有箭头的矩形就会出现在我们的头上或纸上。这样的矩形是系统组成部分。箭头是组件之间连接。通常,我们没有时间坐下来思考我们确定的所有组件如何相互配合,最后我们开始创建拐杖,发明冗余设计。

重要的是要记住,从系统及其体系结构的角度来看,组件是相当抽象的东西。例如,如果我们的系统中有一个微控制器,那么在体系结构级别上,对我们来说重要的是它是一个微控制器,而不是STM32,Arduino或Milander。此外,通常我们甚至根本不了解系统中的确切内容,因此我们转向系统工程来制定设备,软件等的要求。

对于ACS的示例,我们将尝试阐明其目的。这将帮助我们确定其组成部分。因此,访问控制系统的任务是让有限的人进入房间。也就是说,它是一个智能锁。因此,我们拥有第一个组件-一种可锁定和解锁门的设备!我们称之为门锁

以及我们如何知道一个人可以进入?我们不想看守并检查护照吗?让我们给人们提供带有RFID标签的特殊卡,在上面我们将写上唯一的ID或其他数据,以使我们能够准确识别一个人。然后,我们需要一些可以读取这些标签的设备。太好了,我们还有另一个组件RFIDReader,

让我们再来看一看。RFIDReader读取一些数据,ACS系统对它们进行处理,并在此基础上控制DoorLock我们问以下问题-将具有访问权限的人员列表存储在哪里?最好在数据库中。因此,我们的系统必须能够从数据库发送请求并处理响应。因此,我们还有另一个组件-DBHandler因此,我们得到了一个非常抽象的内容,但是足以从对系统的描述开始。我们了解她应该做什么以及如何工作。

我不用纸,而是使用System Composer,这是一种在Simulink环境中对系统体系结构建模的特殊工具,并创建3个组件。上面,我描述了这些组件之间的关系,因此请立即连接它们:



扩展架构


让我们看一下我们的图。一切似乎都很好,但事实并非如此。从用户的角度看这个系统-用户将卡带到读卡器上……?用户如何知道他们被允许或拒绝访问?有必要以某种方式通知他!因此,我们添加了另一个组件-用户通知UserNotify



现在,我们将抽象级别降低了。让我们尝试更详细地绘制一些组件。让我们从RFIDReader组件开始。在我们的系统中,该组件负责读取RFID标签。它的输出应该是一些数据(UID,用户数据...)。但是,等等,RFID与NFC一样,主要是硬件,而不是软件!因此,我们可以假设我们单独拥有用于RFID的芯片,该芯片将原始数据传输到某个预处理器。总体而言,我们有一块可以读取RFID标签的抽象铁片,以及可以将数据转换为所需格式的抽象软件。我们将分别称为RFIDSensorRFIDParser。如何在System Composer中显示此内容?您可以删除RFIDReader组件并放置两个组件,但是最好不要这样做,否则我们将失去体系结构的可读性。相反,让我们进入RFIDReader并添加2个新组件:



太好了,现在让我们继续通知用户。系统将如何通知用户拒绝或允许其访问场所?一个人会感觉到声音和某些东西闪烁得最好。因此,您可以发出一定的声音信号,以便用户注意,并使LED闪烁。将适当的组件添加到UserNotify



我们创建了系统的体系结构,但是出了点问题。什么?让我们看一下连接的名称。InBusOutBus并不是对开发人员有用的普通名称。必须将它们重命名:



因此,我们研究了如何在最粗略的近似中应用系统工程方法。问题来了-为什么要全部应用它们?该系统是原始的,似乎完成的工作是多余的。您可以立即编写代码,设计数据库,编写查询或焊接。问题是,如果您不考虑系统,不了解其组件之间如何相互关联,那么系统组件的集成将持续很长时间,并且会非常痛苦。

这部分的主要结论如下:

系统工程和体系结构建模方法在系统设计中的应用可以减少组件集成的成本并提高开发系统的质量。

All Articles