Flup menuju ke arah yang benar. "Prinsip tanggung jawab tunggal" awalnya diterapkan pada prosedur. Sebagai contoh, Dennis Ritchie akan mengatakan bahwa suatu fungsi harus melakukan satu hal dan melakukannya dengan baik. Kemudian, dalam C ++, Bjarne Stroustrup akan mengatakan bahwa sebuah kelas harus melakukan satu hal dan melakukannya dengan baik.
Perhatikan bahwa, kecuali sebagai patokan, keduanya secara formal memiliki sedikit atau tidak ada hubungannya satu sama lain. Mereka hanya melayani apa yang nyaman untuk diekspresikan dalam bahasa pemrograman. Ya, itu sesuatu. Tapi itu cerita yang sangat berbeda dari apa yang mendorong flup.
Implementasi modern (yaitu, tangkas dan DDD) lebih fokus pada apa yang penting bagi bisnis daripada pada apa yang bisa diungkapkan oleh bahasa pemrograman. Bagian yang mengejutkan adalah bahwa bahasa pemrograman belum menyusul. Bahasa FORTRAN seperti menangkap tanggung jawab yang sesuai dengan model konseptual utama saat itu: proses yang diterapkan pada masing-masing kartu saat melewati pembaca kartu, atau (seperti dalam C) pemrosesan yang menyertai setiap interupsi. Kemudian muncul bahasa ADT, yang telah matang untuk menangkap apa yang kemudian ditemukan kembali oleh orang-orang DDD sebagai penting (meskipun Jim Neighbours sebagian besar sudah tahu, diterbitkan, dan digunakan pada 1968): apa yang sekarang kita sebut kelas . (Mereka BUKAN modul.)
Langkah ini kurang evolusi daripada ayunan pendulum. Saat pendulum berayun ke data kami kehilangan pemodelan use case yang melekat dalam FORTRAN. Tidak masalah ketika fokus utama Anda melibatkan data atau bentuk pada layar. Ini adalah model yang bagus untuk program seperti PowerPoint, atau setidaknya untuk operasi sederhana.
Apa yang hilang adalah tanggung jawab sistem . Kami tidak menjual elemen-elemen DDD. Dan kami tidak menggunakan metode kelas dengan baik. Kami menjual tanggung jawab sistem. Pada tingkat tertentu, Anda perlu merancang sistem Anda berdasarkan prinsip tanggung jawab tunggal.
Jadi jika Anda melihat orang-orang seperti Rebecca Wirfs-Brock, atau saya, yang dulu berbicara tentang metode kelas, kita sekarang berbicara dalam hal kasus penggunaan. Itu yang kami jual. Itu adalah operasi sistem. Kasus penggunaan harus memiliki satu tanggung jawab. Kasus penggunaan jarang merupakan unit arsitektur. Tapi semua orang berusaha berpura-pura begitu. Saksikan orang-orang SOA, misalnya.
Inilah sebabnya saya senang tentang arsitektur DCI Trygve Reenskaug - yang dijelaskan dalam buku Arsitektur Lean di atas. Ini akhirnya memberikan kedudukan nyata pada apa yang dulunya merupakan pengabdian yang sewenang-wenang dan mistis terhadap "tanggung jawab tunggal" - seperti yang ditemukan dalam sebagian besar argumen di atas. Perawakannya berhubungan dengan model mental manusia: pengguna akhir pertama dan programmer kedua. Ini berkaitan dengan masalah bisnis. Dan, hampir secara kebetulan, itu merangkum perubahan sebagai tantangan menantang kita.
Prinsip tanggung jawab tunggal seperti yang kita tahu adalah dinosaurus yang tersisa dari masa asalnya atau kuda hobi yang kita gunakan sebagai pengganti pemahaman. Anda perlu meninggalkan beberapa kuda hobi ini untuk melakukan perangkat lunak yang hebat. Dan itu membutuhkan pemikiran di luar kotak. Menjaga segala sesuatunya sederhana dan mudah dipahami hanya akan berhasil bila masalahnya sederhana dan mudah dipahami. Saya tidak terlalu tertarik dengan solusi-solusi itu: mereka tidak tipikal, dan bukan di mana tantangannya.