Halo semuanya. Saya sering menerapkan prinsip-prinsip rekayasa sistem dalam pekerjaan saya dan ingin berbagi pendekatan ini dengan komunitas.
Rekayasa sistem—tanpa standar—singkatnya, adalah proses pengembangan sistem sebagai komponen-komponen yang relatif abstrak, tanpa mengacu pada model perangkat tertentu. Selama proses ini, properti komponen-komponen sistem dan hubungan di antara mereka ditetapkan. Selain itu, penting untuk memastikan sistem konsisten dan optimal, serta memenuhi persyaratan. Dalam tutorial ini, saya akan mendemonstrasikan teknik-teknik rekayasa sistem menggunakan contoh perancangan sistem kendali akses (ACS) yang cukup sederhana.
Membentuk arsitektur awal
Ketika sebuah sistem, apa pun itu, baru mulai dikembangkan, persegi panjang dengan panah muncul di kepala kita atau di atas kertas. Persegi panjang ini komponen-komponennya sistem. Dan anak panahnya adalah koneksi antar komponen. Dan sering kali, kita tidak punya waktu untuk duduk dan memikirkan bagaimana semua komponen yang telah kita definisikan akan bekerja bersama, sehingga kita akhirnya menciptakan banyak trik, menciptakan desain yang berulang.
Penting untuk diingat bahwa, dari perspektif sistem dan arsitekturnya, sebuah komponen merupakan entitas yang cukup abstrak. Misalnya, jika sistem kita memiliki mikrokontroler, pada tingkat arsitektur, kita hanya peduli pada fakta bahwa sistem tersebut merupakan mikrokontroler, bukan pada STM32, Arduino, atau Milandr. Lebih lanjut, kita seringkali bahkan tidak memahami secara pasti apa isi sistem tersebut, sehingga kita beralih ke rekayasa sistem untuk mengembangkan persyaratan perangkat keras, perangkat lunak, dan sebagainya.
Untuk contoh kita dengan ACS, mari kita coba merumuskan tujuannya. Ini akan membantu kita mengidentifikasi komponen-komponennya. Jadi, tujuan ACS adalah untuk mengizinkan sejumlah orang terbatas masuk ke dalam ruangan. Dengan kata lain, ini adalah kunci pintar. Oleh karena itu, kita memiliki komponen pertama kita—perangkat yang mengunci dan membuka kunci pintu! Sebut saja Kunci pintu
Bagaimana kita tahu kapan seseorang bisa masuk? Kita tidak ingin ada petugas keamanan yang memeriksa paspor mereka, kan? Mari kita berikan kartu khusus dengan tag RFID yang merekam ID unik atau data lain yang memungkinkan kita mengidentifikasi mereka secara akurat. Lalu, kita perlu perangkat yang bisa membaca tag ini. Bagus, kita punya satu komponen lagi. Pembaca RFID
Mari kita lihat lagi apa yang kita punya. Pembaca RFID membaca beberapa data, sistem kontrol akses melakukan sesuatu dengannya, dan berdasarkan ini sesuatu dikontrol Kunci pintuMari kita ajukan pertanyaan berikutnya: di mana kita harus menyimpan daftar orang yang memiliki hak akses? Basis data adalah pilihan terbaik. Oleh karena itu, sistem kita harus dapat mengirimkan permintaan dan memproses respons dari basis data. Dengan demikian, kita memiliki komponen lain – Penangan DBJadi, kita punya deskripsi sistem yang sangat abstrak, tetapi memadai. Kita sudah memahami apa yang seharusnya dilakukan dan bagaimana cara kerjanya.
Alih-alih selembar kertas, saya akan menggunakan System Composer, alat khusus untuk memodelkan arsitektur sistem di Simulink, dan membuat tiga komponen. Saya telah menjelaskan koneksi antar komponen ini di atas, jadi mari kita langsung menghubungkannya:

Memperluas arsitektur
Mari kita lihat diagram kita. Kelihatannya bagus, tapi sebenarnya tidak. Bayangkan sistem ini dari sudut pandang pengguna—pengguna mendekatkan kartu ke pembaca dan...? Bagaimana pengguna tahu apakah aksesnya diizinkan atau ditolak? Mereka perlu diberi tahu! Jadi, mari kita tambahkan komponen lain—notifikasi pengguna. Pemberitahuan Pengguna:

Sekarang mari kita turun ke tingkat abstraksi. Mari kita coba menjelaskan beberapa komponen secara lebih detail. Mari kita mulai dengan komponen Pembaca RFIDDalam sistem kami, komponen ini bertanggung jawab untuk membaca tag RFID. Outputnya seharusnya berisi beberapa data (UID, data pengguna, dll.). Tapi tunggu dulu, RFID, seperti NFC, utamanya tentang perangkat keras, bukan perangkat lunak! Oleh karena itu, kita dapat berasumsi bahwa kita memiliki chip RFID terpisah yang mengirimkan data mentah ke suatu praprosesor. Jadi, kita memiliki perangkat keras abstrak yang dapat membaca tag RFID, dan perangkat lunak abstrak yang dapat mengonversi data ke dalam format yang kita butuhkan. Mari kita sebut keduanya. Sensor RFID и RFIDParser Bagaimana ini bisa ditampilkan di System Composer? Bisakah komponennya dihapus? Pembaca RFID Dan menggantinya dengan dua komponen, tetapi lebih baik tidak melakukannya, karena akan membuat arsitekturnya kurang mudah dibaca. Sebagai gantinya, mari kita masuk ke RFIDReader dan menambahkan dua komponen baru:

Bagus, sekarang mari kita beralih ke notifikasi pengguna. Bagaimana sistem akan memberi tahu pengguna bahwa mereka ditolak atau diizinkan masuk ke ruangan? Manusia paling peka terhadap suara dan lampu berkedip. Oleh karena itu, kita dapat memancarkan sinyal suara untuk memperingatkan pengguna, dan menyalakan LED. Mari kita tambahkan komponen yang sesuai untuk Pemberitahuan Pengguna:

Kami telah membuat arsitektur sistem, tetapi ada yang salah. Apa masalahnya? Mari kita lihat nama koneksinya. Dalam Bus и Bus Keluar —Ini bukan nama-nama normal yang akan membantu pengembang. Nama-nama ini perlu diganti namanya:

Jadi, kita telah melihat perkiraan paling kasar tentang bagaimana metode rekayasa sistem diterapkan. Pertanyaannya muncul: mengapa menggunakannya? Sistemnya primitif, dan pekerjaannya tampak tidak perlu. Mereka bisa saja mulai membuat kode, merancang basis data, menulis kueri, atau menyolder. Masalahnya, tanpa memikirkan sistem dan memahami bagaimana komponen-komponennya saling terkait, mengintegrasikan komponen-komponen tersebut akan menjadi proses yang panjang dan sulit.
Hal utama yang dapat diambil dari bagian ini adalah:
Penggunaan metode rekayasa sistem dan pemodelan arsitektur dalam pengembangan sistem memungkinkan kita mengurangi biaya integrasi komponen dan meningkatkan kualitas sistem yang sedang dikembangkan.
Sumber: www.habr.com
