Kompleksitas sistem dan metode "perjuangan" dengannya

Dengan satu atau lain cara, kita semua merancang dan mengimplementasikan sistem. Baik itu sistem perangkat lunak, solusi infrastruktur atau platform. Dan sebagai bagian dari pekerjaan ini, kami terus-menerus dihadapkan dengan konsep "sistem yang kompleks". Sebagai bagian dari posting ini, saya ingin membagikan visi saya tentang kompleksitas sistem dan โ€œperjuanganโ€ dengannya.


Mari kita mulai dengan mendefinisikan sistem. Saya suka definisi yang diberikan dalam buku Arsitektur Sistem . Strategi dan Pengembangan Produk untuk Sistem Kompleks . Terjemahan terdengar seperti ini:


Suatu sistem adalah seperangkat komponen dan hubungannya. Fungsionalitas dari keseluruhan sistem lebih besar daripada jumlah fungsionalitas masing-masing komponen.

Ini adalah definisi yang sangat penting. Ini menunjukkan bahwa sistem harus menghasilkan "utilitas". Jika sistem tidak menyediakan peningkatan "utilitas", dibandingkan dengan komponen yang membuatnya, maka mungkin sistem seperti itu tidak terlalu diperlukan.


Pertanyaan selanjutnya yang dapat Anda tanyakan pada diri Anda adalah apa itu "sistem yang kompleks". Anda dapat berbicara banyak tentang ini, tetapi menurut pendapat saya sulit untuk memanggil sistem yang sulit untuk dinilai dengan pikiran Anda, sulit untuk bekerja dengan, sulit untuk dipahami, sulit untuk mengingat semua interaksi yang terjadi dalam sistem ini.


Dan di sini bagi kita, sebagai insinyur, penting untuk memiliki mekanisme, cara untuk mengukur kompleksitas ini. Sebagai dasar untuk mekanisme ini, orang-orang dari MIT menyarankan untuk menggunakan "sihir angka tujuh plus minus dua yang terkenal." Ada penelitian asli tentang hal ini, serta artikel tentang presentasi Habrรฉ dan TED . Singkatnya, gagasan dari semua penelitian ini adalah bahwa "memori kerja" seseorang dapat secara bersamaan memegang dan bekerja dengan sejumlah objek yang berbeda. Di sini konsep "berbagai" objek sangat penting, karena otak berkutat dengan kompleksitas dengan mengelompokkan objek. Misalnya, koneksi antar objek dari jenis atau tipe yang sama dapat diingat sebagai satu koneksi. Atau, lebih jelas - Anda tidak perlu membayangkan sistem tumpukan bola campuran warna berbeda. Cukup kelompokkan di kepala Anda, katakan bahwa ada, katakanlah, lima bola merah, tujuh kuning dan tiga biru. Ini menyederhanakan bekerja dengan sistem, mengurangi jumlah objek dari lima belas menjadi tiga. Oleh karena itu, dalam konteks penilaian kompleksitas, kita berbicara tentang objek yang berbeda, atom, yang tidak dapat dikelompokkan.


Pada akhirnya, ada berbagai perkiraan kapasitas memori kerja. Seseorang berbicara tentang empat objek, seseorang - sekitar lima, seseorang - sekitar tujuh. Dalam alasan saya, saya akan mematuhi pendekatan klasik - "tujuh plus minus dua . "


Berdasarkan perkiraan ini, dapat dikatakan bahwa jika menjadi sulit untuk bekerja dengan suatu sistem, untuk menjaga komponen dan komunikasinya dalam memori, maka, tampaknya, itu melebihi batas kapasitas yang sama yaitu "tujuh plus minus dua." Ini pada gilirannya berarti bahwa "angka tujuh ajaib" ini dapat digunakan sebagai perkiraan dasar dari kompleksitas sistem. Saya pikir yang berikut, sejauh ini, definisi sementara, memiliki hak untuk hidup:


Sistem yang kompleks adalah sistem yang terdiri dari 7 + -2 komponen atom dan ikatannya dalam berbagai rasio.

Cara klasik untuk menangani kompleksitas


Sekarang mari kita mengingat secara singkat cara atau alat klasik untuk menangani kompleksitas pada tahap desain. Ada beberapa di antaranya: abstraksi, dekomposisi, hierarki, dan dekomposisi hierarkis.


  • Abstraksi - metode yang memungkinkan Anda untuk menyoroti fungsi utama suatu sistem atau subsistem dan menyembunyikan konten
  • Dekomposisi - cara membagi sistem menjadi blok atau komponen yang lebih kecil
  • Hierarki adalah cara membagi sistem ke dalam level, di mana level memiliki tempat tertentu dalam struktur dan terletak satu di atas yang lain
  • Dekomposisi hirarkis - metode yang menggabungkan hierarki dan dekomposisi

Semua alat ini pada akhirnya dirancang untuk menyederhanakan masing-masing subsistem sistem kami sehingga ketika bekerja dengan masing-masing unit, itu "cocok dengan kepala" secara keseluruhan.


Tentang apa semua ini


Apa yang diberikan semua hal ini kepada kita? Sederhananya, idenya adalah, menggunakan berbagai metode, untuk mengubah seperangkat komponen sistem yang tidak terstruktur menjadi semacam bentuk struktural. Selain itu, mengingat sihir tujuh, kita dapat mengatakan bahwa setiap blok dalam dekomposisi tidak boleh mengandung lebih dari tujuh plus / minus dua elemen. Kalau tidak, dengan pemeriksaan terperinci terhadap blok semacam itu, akan sulit dikendalikan.


Di sisi lain, jika kita memiliki sistem dengan sejumlah besar blok, dibagi menjadi level hierarkis, maka jumlah level tersebut, sebaiknya, tidak melebihi tujuh (plus / minus dua). Sebagai ilustrasi, saya ingin membawa slide dari Fundamentals of Systems Systems . Seperti yang dapat Anda lihat dari slide, kompleksitas sistem meningkat dengan jumlah level dekomposisi.


perhitungan kompleksitas


Dengan demikian, proses desain sistem yang benar dapat dijelaskan kira-kira dengan tesis berikut:


Jangan membangun sistem yang kompleks. Bangun sistem dengan tingkat kompleksitas yang diperlukan.

Sastra


Source: https://habr.com/ru/post/id425807/


All Articles