Mencampur tingkat abstraksi menempatkan bom di dasar proyek Anda

Selama bertahun-tahun sebagai seorang arsitek, saya telah melihat pelanggan yang berbeda, dan salah satu kesalahan paling umum dalam merumuskan spesifikasi teknis dan keinginan pelanggan adalah mencampurkan berbagai tingkat abstraksi. Seseorang datang dan berkata:



- Saya memerlukan perangkat keras yang akan mengontrol penggerak pintu dan menunjukkan keadaan saat ini pada layar tujuh segmen, dan selalu dengan server eksternal untuk kendali jarak jauh, sehingga dapat berkomunikasi dengan server ini melalui TCP, dan menggunakan VueJS untuk panel kendali.



Tampaknya jelas apa yang diinginkan orang tersebut. Seseorang bahkan memiliki TK seperti itu menyebabkan antusiasme - seseorang, tampaknya, jelas mengerti apa yang diinginkannya. Seringkali bahkan menunjuk ke pengontrol / komponen / kerangka / protokol tertentu.



Dan untuk pesanan seperti itu, tentu saja, Anda dapat membuat potongan besi yang diperlukan. Dan bahkan akan berfungsi jika komponen yang dipilih tidak saling bertentangan. Tetapi jika perhitungannya bukan untuk proyek, tetapi untuk produk, dan kemudian perlu didukung, maka jauh lebih berguna untuk menghabiskan waktu dan dengan hati-hati membagi keinginan ini menjadi beberapa level, untuk memahami mengapa layar seperti itu, mengapa TCP, dan di mana VueJS masuk. Mungkin ternyata ini adalah teknologi yang membuat pelanggan merasa senang karena sindrom bebek. Atau dia hanya tidak tahu bahwa ada jenis layar lain.



Dalam hal ini, pertama-tama kita berbicara tentang level pertama: perangkat yang mengontrol drive, dengan indikasi dan remote control.



Kemudian kami mulai menentukan persyaratan (tetapi bukan teknologi khusus).

Perangkat dalam casing IP68, dengan catu daya 230V, yang mengontrol drive asinkron 800W melalui konverter frekuensi melalui modbus, memiliki indikator yang terlihat jelas, empat statusnya (buka / tutup / dalam proses / kerusakan) harus dikenali oleh seseorang dari jarak 10 meter, dengan remote control, tersedia dari peramban modern melalui Internet.



Dan hanya setelah itu Anda dapat mulai memilih tingkat implementasi untuk persyaratan. Ini pengontrol seperti itu, ini adalah transceiver rs485, ini catu daya seperti itu, ini indikator seperti itu.



Memisahkan kedua tingkat (persyaratan dan penerapan) ini mudah - dalam banyak kasus, Anda dapat memilih penerapan yang berbeda untuk persyaratan yang sama, dan ini tidak akan mengubah tingkat persyaratan dengan cara apa pun. Tingkat persyaratan dapat berubah karena kenyataan bahwa penerapannya terlalu mahal, atau Anda tidak menyukainya secara visual, tetapi tidak boleh berubah karena pilihan pengontrol yang lebih nyaman bagi pengembang, jika tidak, Anda melihat terlalu dalam ke persyaratan atau terlalu malas untuk mencari tahu mengapa itu dirumuskan persyaratan seperti itu.



Katakanlah pelanggan menginginkan layar dengan karakter 8 sentimeter. Pada titik ini, arsitek atau manajer produk harus bertanya mengapa tepatnya 8 sentimeter? Dalam kebanyakan kasus, ternyata pelanggan memiliki persyaratan "visibilitas dari 10 meter" di dalam, tetapi ia memutuskan untuk menyederhanakan tugas tersebut dan segera menyatakan persyaratan tertentu. Atau dia tidak bisa melihat secara abstrak, karena dia berpikir tentang proyek dalam objek yang lebih bisa dimengerti: “layar abstrak yang terlihat dari 10 meter” lebih rumit daripada “tampilan segmen yang besar, dalam sebuah kotak, saya di sini Aku akan menggantungnya di dinding. "



Tetapi pelanggan, menurut definisi, tidak memiliki kompetensi untuk mengembangkan proyek, jika tidak, dia tidak akan datang kepada Anda. Dan bahkan jika dia memiliki kompetensi ini, dia tidak dapat menerapkannya dalam pengembangan proyek khusus ini, karena mengapa dia mendatangi Anda?



Keputusan dalam proyek harus dibuat oleh orang yang akan bertanggung jawab untuk itu. Jika pelanggan tidak bertanggung jawab atas waktu pengembangan kode untuk layar tertentu yang dia pilih, maka dia tidak boleh memilih layar ini. Tugas pelanggan adalah mengatakan persyaratan apa, menurut pendapatnya, yang diterapkan oleh model layar yang dipilih.



Tantangan bagi pengambil keputusan arsitektural adalah memilih solusi yang paling tepat untuk memenuhi persyaratan ini. Ini bisa berupa layar LED, LCD, atau hanya lampu lalu lintas 4 warna, dan papan dengan tulisan tempel.



Tetapi arsitek tidak boleh menerima begitu saja semua yang dikatakan pelanggan: jika dengan cara ini dimungkinkan untuk membuat spesifikasi teknis yang memadai untuk pengembangan, maka pelanggan tidak akan membutuhkan perantara antara dia dan pengembangan.



Deskripsi persyaratan tidak pada tingkat arsitektur tempat mereka berasal adalah hal berbahaya yang dijamin akan mengubur arsitektur proyek, mereduksinya tidak hanya menjadi deskripsi keinginan, tetapi menjadi campuran gas berbahaya yang aman saja, tetapi siap meledak saat tercampur. Dan sistem yang diimplementasikan sesuai dengan arsitektur ini cepat atau lambat akan meledak - dengan abstraksi saat ini, modifikasi kompleks, atau kruk yang jatuh dengan perubahan fungsionalitas apa pun.



Bayangkan Anda sedang membangun rumah. Elemen dasar rumah adalah batu bata. Anda tidak dapat membeli setengah batu bata, tetapi membeli lima truk sampah batu bata tidak membeli rumah. Dan bahkan seratus batu bata tidak berubah menjadi dinding. Untuk membangun, pada level terendah, Anda harus mengoperasikan tepat dengan satu bata, tidak lebih dan tidak kurang.



Tetapi mendesain rumah dari batu bata, dan bahkan dalam konglomerat bata, adalah ide yang sangat buruk.



Pertama, kompleksitas tumbuh. Memori dan sumber daya apa pun terbatas, dan lebih baik membelanjakan lebih sedikit daripada lebih banyak. Rumah, yang menggambarkan lokasi setiap bata, terlalu sulit untuk dilihat, terdiri dari terlalu banyak elemen. Sulit untuk menggambar (alih-alih menggambar setiap kamar dengan cepat, kami menggambar setiap bata), gambar sulit dibaca, model 3D membutuhkan waktu lama untuk dirender, daftar pembelian beroperasi dengan jumlah batu bata yang tepat, bukan ton.



Kedua, fleksibilitas hilang: memindahkan satu batu bata sudah merupakan kesalahan. Kami tidak memberikan ruang untuk bermanuver pada tingkat perkembangan yang rendah, yang memaksa kami untuk melakukan pekerjaan orang lain, dan menerima pesan kesalahan yang tidak penting bagi kami. Jika tugasnya kita tetapkan sebagai “membuat tembok dari batu bata setebal 30 centimeter”, maka pembangun berkesempatan untuk meletakkan batu bata tersebut sesuai keinginannya, sepanjang tidak melanggar kekuatan atau batasan lainnya. Jika kita memberinya gambar yang tepat dari lokasi batu bata, maka pada pemeriksaan berikutnya, akumulasi perbedaan ketebalan lapisan beberapa milimeter akan memberi kita kesalahan setengah sentimeter di lokasi batu bata tertentu, yang akan menyebabkan ketidaksesuaian antara dinding dan TK-nya. Terkadang ini adalah kesalahan, tetapi dalam banyak kasus, posisi salah satu batu bata tidak mempengaruhi apa pun, dan ditentukan oleh keadaan,yang tidak dapat kami pertimbangkan saat mendesain: misalnya, dimensi batu bata yang salah dari produksi. Anda dapat kembali, Anda dapat membangun dari itu, akan lebih mudah dan lebih murah. Mendesain pada tingkat bata individu merampas pilihan ini, memaksa kita untuk mencocokkan hasil yang ideal atau membuang semua pekerjaan.



Ketiga, kita tidak bisa pindah ke tingkat lain, mulai memikirkan ruangan, selama kita hanya memiliki sekumpulan batu bata yang mengalir tanpa batas satu sama lain dan semacam ruang di antara mereka. Bagi kita, batu bata lebih penting daripada jarak di antara mereka, itu hanyalah ketiadaan batu bata, dan bukan tempat untuk hidup. Tampaknya sebuah rumah dibangun demi kamar, tetapi setiap keinginan untuk mengganti dinding di sebuah ruangan begitu sulit, menyebabkan begitu banyak operasi untuk memindahkan batu bata dan membangun tatanan baru dari pasangan bata sehingga kita hampir berhenti melakukan ini: lebih mudah untuk menyetujui dinding yang tidak nyaman daripada terus-menerus memindahkan batu bata ke sana -di sini dalam rencana.



Keempat, gagasan mengganti elemen dasar tidak tertahankan. Semuanya dibangun di atas batu bata, Anda menghitung jarak dalam batu bata, Anda menghitung biaya dalam batu bata, Anda menghitung berat dalam batu bata, Anda menghitung konduktivitas termal dinding dalam batu bata. Ini nyaman, karena tidak membuat unit pengukuran yang tidak perlu, abstraksi yang tidak perlu. Konduktivitas termal dalam batu bata mudah diterjemahkan ke dalam jarak, dan biaya mudah didapat dari jarak.



Tetapi tidak mungkin menangani rumah yang terbuat dari bahan lain: Anda harus berhenti berfokus pada batu bata, dan ini menghancurkan gambaran dunia secara keseluruhan. Meskipun, dengan pemisahan lapisan abstraksi yang benar, Anda akan merancang ruangan dengan sempurna dalam meter, menghitung biaya dalam rubel, beban pada tumpukan dalam ton, menghitung konduktivitas termal dalam W / (m K), dan hanya pada tingkat desain terakhir Anda memutuskan apa yang akan diambil - batu bata , beton aerasi atau panel beton. Dan jika pelanggan tidak menyukai solusinya, ubah tanpa menyentuh bagian proyek lainnya.



Bekerja pada arsitektur adalah tentang berjalan melalui level abstraksi. Visi tingkat ini adalah properti penting untuk arsitek yang baik.



All Articles