Jika kita ingin abstrak dari bahasa tertentu, kerangka kerja dan interpretasinya sendiri, hierarki granularity perangkat lunak abstrak adalah sebagai berikut:
Product - application, library, service
Module - GUI, core logic, data, etc...
Component - purpose specific collection of objects
Object - collection of primitives
Primitive - numbers, functions, etc...
Polos dan sederhana, Produk adalah kumpulan modul fungsional yang terhubung.
Seperti namanya, motivasi Modul adalah modularitas. Bertentangan dengan apa yang diklaim banyak orang, itu tidak benar-benar menyiratkan penggunaan kembali kode. Ada banyak modul yang tidak benar-benar dapat digunakan kembali, dan tidak cocok dengan apa pun yang tidak dirancang untuk itu.
Adalah penting untuk memisahkan lapisan perangkat lunak yang berbeda, yang membuat perangkat lunak lebih mudah untuk diimplementasikan dan dipelihara, dan jika perlu untuk mengimplementasikan sesuatu seperti ujung depan ke kerangka kerja GUI yang berbeda, modularitas memungkinkan hal itu terjadi dengan cara yang mudah dan aman, tanpa merusak kode di semua tempat.
Modul merangkum kumpulan komponen yang semuanya melayani tujuan yang sama seperti yang didefinisikan oleh persyaratan modul. Modul harus mandiri dan lengkap, dan meskipun tidak benar-benar dapat digunakan sendiri, modul harus dapat bekerja bersama dengan implementasi yang sesuai.
Dalam hal granularity, Komponen terletak di antara Modul dan Objek. Tujuan suatu komponen adalah untuk mengumpulkan kumpulan objek tujuan umum untuk membentuk unit tujuan tertentu.
Seperti namanya, tidak seperti Modul, Komponen tidak "mandiri", itu adalah bagian dari keseluruhan fungsional yang lebih besar.
Objek adalah blok bangunan komponen yang lebih kecil. Objek adalah kumpulan primitif dan dipasangkan bersama-sama untuk melayani tingkat yang lebih rendah, lebih universal sementara masih agak spesifik.
Primitif adalah tingkat granularitas pengembangan perangkat lunak terkecil, paling sederhana dan terendah. Ini pada dasarnya hanya bilangan bulat dan nyata serta fungsi / operator, meskipun sebagian besar bahasa memiliki "warga negara kelas satu" tambahan.
Ada sangat sedikit yang dapat Anda lakukan dengan primitif, dan pada saat yang sama, itu adalah pada tingkat yang sangat rendah sehingga Anda dapat melakukan hampir semua hal dengannya. Itu hanya sangat, sangat verbose, sangat rumit dan tidak mungkin membosankan untuk diselesaikan saat bekerja secara langsung dengan primitif.
Seperti yang telah disebutkan di atas, bekerja dengan primitif secara langsung adalah ide yang sangat buruk. Bukan hanya karena itu sangat rumit, lambat dan membosankan untuk dilakukan untuk pengembangan perangkat lunak modern, tetapi juga sangat mengganggu dan menghalangi untuk pengujian dan pemeliharaan.
Memiliki semua bagian konseptual yang dimasukkan ke dalam pengembangan perangkat lunak membuatnya lebih mudah, lebih cepat, lebih sederhana dan lebih aman. Anda tidak membuat rumah dari atom, terlepas dari seberapa fleksibel dan universalnya atom. Itu akan menjadi latihan sia-sia. Atom Anda adalah primitif Anda, tanah liat adalah objek Anda, batu bata adalah komponen Anda, dinding, lantai dan atap adalah modul Anda, dirakit bersama-sama mereka mewujudkan produk akhir.
Manusia tidak benar-benar menciptakan sesuatu, kita hanya menemukan hal-hal yang sudah ada di alam semesta, dan kemudian menyalin dan menerapkannya dalam kehidupan kita. Hirarki granularitas yang sama intrinsik dengan alam semesta itu sendiri, dari atom dan bahkan di bawah, ke molekul organik, protein, jaringan, organ, organisme dan di atas, realitas itu sendiri mematuhi prinsip yang sama - menggabungkan hal-hal kecil, sederhana, terbatas fungsi dan tujuan abstrak ke dalam lebih besar, lebih kompleks, lebih fungsional, dan lebih spesifik.
Secara teknis mereka semua adalah "objek", mereka semua adalah "komponen" pengembangan perangkat lunak, mereka semua "modular" cukup untuk dapat cocok bersama, mereka semua adalah "produk" dalam arti bahwa mereka telah diproduksi dan sebagainya. ..
Ini bukan tentang terminologi atau nomenklatur, ini tentang bagaimana meningkatkan dan memengaruhi berbagai aspek kreativitas dan produktivitas. Dan tentang pentingnya tidak hanya menggunakan semua level yang berbeda itu, tetapi juga pentingnya tidak berusaha mencapai tujuan pada level yang salah, yang hanya bisa menjadi kontraproduktif.