Desain di tingkat sistem. Bagian 1. Dari ide ke sistem

Halo semuanya. Saya sering menerapkan prinsip-prinsip rekayasa sistem dalam pekerjaan saya dan ingin berbagi pendekatan ini dengan masyarakat.

Rekayasa sistem - tanpa standar, tetapi dengan cara sederhana, ini adalah proses pengembangan sistem sebagai komponen yang cukup abstrak, tanpa referensi ke model perangkat tertentu. Selama proses ini, sifat-sifat komponen sistem dan hubungan di antara mereka terbentuk. Selain itu, diperlukan untuk membuat sistem konsisten dan optimal dan sistem memenuhi persyaratan. Dalam tutorial ini, saya akan menunjukkan teknik teknik sistem dengan menggunakan contoh merancang sistem kontrol akses yang cukup sederhana (ACS).

Kami membentuk arsitektur awal


Ketika suatu sistem, tidak peduli yang mana, baru mulai dikembangkan, persegi panjang dengan panah muncul di kepala kita atau di atas kertas. Persegi panjang seperti itu adalah komponen dari sistem. Dan panah adalah koneksi antar komponen. Dan sangat sering kita tidak punya waktu untuk duduk dan berpikir tentang bagaimana semua komponen yang kita tentukan akan bekerja satu sama lain, dan pada akhirnya kita mulai membuat banyak kruk, menciptakan desain yang berlebihan.

Penting untuk diingat bahwa dari sudut pandang sistem dan arsitekturnya, komponen adalah hal yang agak abstrak. Sebagai contoh, jika ada mikrokontroler di sistem kami, maka pada tingkat arsitektur hanya penting bagi kami bahwa itu adalah mikrokontroler, dan bukan bahwa itu adalah STM32, Arduino atau Milander. Selain itu, seringkali kita bahkan tidak mengerti apa yang sebenarnya akan ada dalam sistem, dan kita beralih ke rekayasa sistem untuk mengembangkan persyaratan untuk peralatan, perangkat lunak, dll.

Sebagai contoh kami dengan ACS, kami akan mencoba merumuskan tujuannya. Ini akan membantu kami dalam mengidentifikasi komponen-komponennya. Jadi, tugas sistem kontrol akses adalah membiarkan lingkaran orang terbatas memasuki ruangan. Artinya, itu adalah kunci yang cerdas. Karena itu, kami memiliki komponen pertama - sejenis perangkat yang mengunci dan membuka kunci pintu! Sebut saja DoorLock

Dan bagaimana kita tahu bahwa seseorang bisa masuk? Kami tidak ingin menjaga dan memeriksa paspor? Mari kita beri orang kartu khusus dengan tag RFID, di mana kita akan menulis ID unik atau data lain yang memungkinkan kita mengidentifikasi seseorang secara akurat. Kemudian, kami membutuhkan beberapa perangkat yang dapat membaca tag ini. Hebat, kami punya komponen lain, Pemimpin RFIDR.

Mari kita lihat lagi apa yang kita dapat. RFIDReader membaca beberapa data, sistem ACS melakukan sesuatu dengan mereka, dan berdasarkan ini, DoorLock dikontrol. Kami mengajukan pertanyaan berikut - di mana menyimpan daftar orang dengan hak akses? Terbaik dalam database. Oleh karena itu, sistem kami harus dapat mengirim permintaan dan memproses tanggapan dari database. Jadi kami memiliki komponen lain - DBHandler . Jadi, kami mendapatkan yang sangat abstrak, tetapi cukup untuk memulai dengan deskripsi sistem. Kami memahami apa yang harus ia lakukan dan bagaimana cara kerjanya.

Alih-alih selembar kertas, saya menggunakan System Composer, alat khusus untuk memodelkan arsitektur sistem di lingkungan Simulink dan membuat 3 komponen. Di atas, saya menggambarkan hubungan antara komponen-komponen ini, jadi segera hubungkan mereka:



Memperluas Arsitektur


Mari kita lihat diagram kita. Segalanya tampak baik-baik saja, tetapi tidak juga. Lihatlah sistem ini dari sudut pandang pengguna - pengguna membawa kartu ke pembaca dan ...? Bagaimana pengguna tahu bahwa mereka diizinkan atau ditolak akses? Penting untuk memberi tahu dia tentang hal ini! Oleh karena itu, kami menambahkan komponen lain - pemberitahuan pengguna, UserNotify :



Dan sekarang kami turun ke tingkat abstraksi yang lebih rendah. Mari kita coba lukis beberapa komponen dengan sedikit lebih detail. Mari kita mulai dengan komponen RFIDReader. Dalam sistem kami, komponen ini bertanggung jawab untuk membaca tag RFID. Keluarannya harus berupa beberapa data (UID, data pengguna ...). Tapi tunggu, RFID, seperti NFC, terutama perangkat keras, bukan perangkat lunak! Oleh karena itu, kita dapat mengasumsikan bahwa kita secara terpisah memiliki chip untuk RFID itu sendiri, yang mentransfer data mentah ke preprosesor tertentu. Secara total, kami memiliki sepotong abstrak besi yang dapat membaca tag RFID, dan perangkat lunak abstrak yang dapat mengonversi data ke format yang kami butuhkan. Kami akan memanggil mereka RFIDSensor dan RFIDParser, masing-masing. Bagaimana cara menampilkan ini di System Composer? Anda dapat menghapus komponen RFIDReaderdan menempatkan dua komponen pada tempatnya, tetapi lebih baik tidak melakukan itu, jadi kami akan kehilangan keterbacaan arsitektur. Sebagai gantinya, mari masuk ke dalam RFIDReader dan menambahkan 2 komponen baru:



Hebat, sekarang mari kita lanjutkan untuk memberi tahu pengguna. Bagaimana sistem akan memberi tahu pengguna bahwa ia ditolak atau diizinkan mengakses tempat tersebut? Seseorang merasakan suara dan sesuatu yang berkedip paling baik. Karena itu, Anda dapat mengeluarkan sinyal suara tertentu, sehingga pengguna akan memperhatikan, dan mengedipkan LED. Tambahkan komponen yang sesuai ke UserNotify :



Kami menciptakan arsitektur sistem kami, tetapi ada yang salah dengan itu. Apa? Mari kita lihat nama-nama koneksi. InBus dan OutBus bukan nama yang cukup normal yang akan membantu pengembang. Mereka harus diganti namanya:



Jadi, kami melihat bagaimana metode rekayasa sistem diterapkan dalam perkiraan paling kasar. Muncul pertanyaan - mengapa menerapkannya sama sekali? Sistem ini primitif, dan tampaknya pekerjaan yang dilakukan tidak perlu. Anda dapat segera menulis kode, mendesain basis data, menulis kueri, atau menyolder. Masalahnya adalah bahwa jika Anda tidak memikirkan sistem, tidak mengerti bagaimana komponennya saling terkait, maka integrasi komponen sistem akan berlangsung untuk waktu yang lama dan cukup menyakitkan.

Kesimpulan utama dari bagian ini adalah sebagai berikut:

Aplikasi teknik sistem dan metode pemodelan arsitektur dalam desain sistem memungkinkan pengurangan biaya integrasi komponen dan meningkatkan kualitas sistem yang dikembangkan.

All Articles