システムレベルで設計します。 パート 1. アイデアからシステムまで

こんにちは、みんな。私は仕事にシステム エンジニアリングの原則を適用することが多く、このアプローチをコミュニティと共有したいと考えています。

システム エンジニアリング - 標準はありませんが、簡単に言えば、特定のデバイス サンプルを参照せずに、かなり抽象的なコンポーネントとしてシステムを開発するプロセスです。このプロセス中に、システム コンポーネントのプロパティとコンポーネント間の接続が確立されます。さらに、システムを一貫性のある最適なものにし、システムが要件を満たしている必要があります。このチュートリアルでは、非常に単純なアクセス制御システム (ACS) の設計例を使用して、システム エンジニアリングの手法を示します。

初期アーキテクチャの形成

システムが開発され始めたばかりのときは、何であれ、矢印の付いた四角形が頭の中や紙の上に現れます。このような長方形は、 コンポーネント システム。そして、矢印は、 接続 コンポーネント間。そして、多くの場合、定義したすべてのコンポーネントがどのように連携するかを座って考える時間がなく、最終的には冗長な設計を考え出し、大量の松葉杖を作成し始めます。

システムとそのアーキテクチャの観点から見ると、コンポーネントはかなり抽象的なものであることを覚えておくことが重要です。たとえば、システムにマイクロコントローラーが搭載されている場合、アーキテクチャ レベルでは、それがマイクロコントローラーであることのみが重要であり、STM32、Arduino、または Milander であることは重要ではありません。さらに、多くの場合、システムに正確に何が含まれるかがまったく明らかではないため、機器やソフトウェアなどの要件を開発するためにシステムエンジニアリングに頼ることになります。

ACS の例では、その目的を定式化してみます。これは、そのコンポーネントを特定するのに役立ちます。したがって、アクセス制御システムの役割は、限られた範囲の人々の入室を許可することです。つまりスマートロックです。その結果、最初のコンポーネントが完成しました。これは、ドアをロックおよびロック解除する何らかのデバイスです。彼に電話しましょう ドアロック

人が内部に侵入できることはどうやってわかるのでしょうか?監視員を置いてパスポートをチェックしたくないですよね? RFID タグが付いた特別なカードを人々に配布し、そのカードに固有の ID や個人を正確に識別できるその他のデータを記録しましょう。次に、これらのタグを読み取ることができるデバイスが必要になります。なるほど、コンポーネントがもう 1 つあります。 RFIDリーダー

得られたものをもう一度見てみましょう。 RFIDリーダー 何らかのデータを読み取り、アクセス制御システムがそれに対して何らかの処理を行い、これに基づいて何かが制御されます ドアロック。次の質問をしてみましょう - アクセス権を持つ人のリストをどこに保存するか?データベースでは最高。したがって、システムはリクエストを送信し、データベースからの応答を処理できる必要があります。したがって、もう 1 つのコンポーネントがあります - DBハンドラー。非常に抽象的ですが、まず最初に十分なシステムの説明を受け取りました。私たちはそれが何をすべきか、そしてそれがどのように機能するかを理解しています。

紙の代わりに、Simulink 環境でシステム アーキテクチャをモデリングするための特別なツールである System Composer を使用し、3 つのコンポーネントを作成します。上でこれらのコンポーネント間の接続について説明しましたので、すぐに接続してみましょう。

システムレベルで設計します。 パート 1. アイデアからシステムまで

アーキテクチャの拡張

図を見てみましょう。すべてがうまくいっているように見えますが、実際はそうではありません。このシステムをユーザーの視点から見てみましょう。ユーザーはカードをリーダーに持ってくると...?ユーザーはアクセスが許可されているか拒否されているかをどのようにして知るのでしょうか?これについて何らかの方法で彼に通知する必要があります。したがって、もう 1 つのコンポーネント、ユーザー通知を追加しましょう。 ユーザー通知:

システムレベルで設計します。 パート 1. アイデアからシステムまで

次に、より低い抽象レベルに進みましょう。いくつかのコンポーネントについてもう少し詳しく説明してみましょう。コンポーネントから始めましょう RFIDリーダー。私たちのシステムでは、このコンポーネントが RFID タグの読み取りを担当します。その出力には、何らかのデータ (UID、ユーザー データなど) が含まれている必要があります。しかし、待ってください。RFID は、NFC と同様、主にハードウェアであり、ソフトウェアではありません。したがって、「生」データをある種のプリプロセッサに送信する RFID チップ自体が別にあると想定できます。したがって、RFID タグを読み取ることができる抽象的なハードウェアと、データを必要な形式に変換できる抽象的なソフトウェアがあります。彼らに電話しましょう RFIDセンサー и RFIDパーサー それぞれ。これを System Composer で表示するにはどうすればよいですか?コンポーネントを削除できます RFIDリーダー 代わりに 2 つのコンポーネントを配置しますが、これは行わない方が良いです。そうしないと、アーキテクチャの可読性が失われます。代わりに、RFIDReader の内部に移動して、XNUMX つの新しいコンポーネントを追加しましょう。

システムレベルで設計します。 パート 1. アイデアからシステムまで

わかりました。次に、ユーザーへの通知に移りましょう。システムは、施設へのアクセスが拒否されたか許可されたことをユーザーにどのように通知しますか?人は音と点滅するものを最もよく知覚します。したがって、ユーザーに注意を促すために特定の音声信号を発し、LED を点滅させることができます。適切なコンポーネントを追加しましょう ユーザー通知:

システムレベルで設計します。 パート 1. アイデアからシステムまで

システムのアーキテクチャを作成しましたが、何か問題があります。何?接続名を見てみましょう。 バスの中で и アウトバス - 開発者にとって役立つような、まったく普通の名前ではありません。名前を変更する必要があります。

システムレベルで設計します。 パート 1. アイデアからシステムまで

そこで、システム エンジニアリングの手法がどのように適用されるかを大まかに検討しました。そもそもなぜそれらを使用するのでしょうか?という疑問が生じます。システムは原始的であり、行われる作業は不要であるように見えます。コードを書いたり、データベースを設計したり、クエリを書いたり、はんだ付けしたりすることがすぐにできます。問題は、システムをよく考えてそのコンポーネントがどのように相互に接続されているかを理解していないと、システム コンポーネントの統合に長い時間がかかり、非常に困難を伴うことです。

この部分の主な要点は次のとおりです。

システム開発においてシステムエンジニアリング手法とアーキテクチャモデリングを使用すると、コンポーネントの統合コストを削減し、開発されたシステムの品質を向上させることができます。

出所: habr.com

コメントを追加します