Якщо ми хочемо абстрагуватися від певних мов, фреймворків та власних інтерпретацій, то ієрархія абстрактної програмної деталізації полягає в наступному:
Product - application, library, service
Module - GUI, core logic, data, etc...
Component - purpose specific collection of objects
Object - collection of primitives
Primitive - numbers, functions, etc...
Простий і простий, Продукт - це робоча колекція підключених функціональних модулів.
Як випливає з самої назви, мотивація модуля - це модульність. На противагу тому, що багато хто стверджує, це насправді не передбачає повторного використання коду. Є багато модулів, які насправді не можуть бути використані повторно, і не підходять до того, що вони не були розроблені.
Важливо відокремити різні версії програмного забезпечення, що значно спрощує програмне забезпечення у впровадженні та технічному обслуговуванні, а у разі необхідності повторного втілення чимось на кшталт переднього кінця в інший графічний інтерфейс, модульність дозволяє легко і безпечно відбуватись, не порушуючи код у всьому місці.
Модуль включає в себе сукупність компонентів, які служать спільному призначенню, визначеному вимогами модуля. Модуль повинен бути автономним і повним, і хоча він не є дійсно корисним самостійно, він повинен мати можливість працювати в поєднанні з будь-якою відповідною реалізацією.
Що стосується деталізації, то Компонент знаходиться між Модулем та Об'єктом. Мета компонента - скласти колекцію об'єктів загального призначення, щоб сформувати цільову одиницю.
Як випливає з назви, на відміну від Модуля, Компонент не є "автономним", він є частиною більшого функціонального цілого.
Об'єктами є більш дрібні будівельні блоки компонентів. Об'єкти - це колекції примітивів і поєднуються їх разом, щоб служити нижчому рівню, більш універсальному, але все ще дещо конкретному призначенню.
Примітиви - це найменший, найпростіший і найнижчий рівень деталізації розробки програмного забезпечення. Це в основному просто цілі та дійсні числа та функції / оператори, хоча більшість мов мають свої додаткові «першокласні громадяни».
З примітивами ви можете зробити дуже мало, і в той же час, це на такому низькому рівні, що ви можете виконати з ним практично все. Це просто дуже, дуже багатослівний, шалено складний і неможливо виснажливий під час прямої роботи з примітивами.
- Який сенс у всьому цьому?
Як вже було сказано вище, робота з примітивами безпосередньо - вкрай погана ідея. Не тільки тому, що це неможливо складно, повільно і нудно зробити для розробки сучасного програмного забезпечення, але це також надзвичайно нав’язливо і перешкоджає тестуванню та обслуговуванню.
Включення всіх цих концептуальних частин у розробку програмного забезпечення робить простішим, швидшим, простішим та безпечнішим. Ви не робите будинок з атомів, незалежно від того, наскільки універсальними і універсальними є атоми. Це було б вправою у марності. Ваші атоми - це ваші примітиви, глина - ваш предмет, цегла - ваші компоненти, стіни, підлога і дах - це ваші модулі, зібрані разом, вони виявляють кінцевий продукт.
Люди насправді нічого не вигадують, ми лише відкриваємо речі, які вже є у Всесвіті, а потім копіюємо та застосовуємо їх у нашому житті. Ця ж ієрархія зернистості є властивою самій Всесвіту, від атомів і навіть нижче, до органічних молекул, білків, тканин, органів, організмів і вище, сама реальність підпорядковується тому ж принципу - поєднуючи невеликі, прості, обмежені функції і цілі абстрактні речі в більші, складніші, більш функціональні речі та конкретніші речі.
- Застереження щодо термінології
Технічно вони всі "об'єкти", всі вони "компоненти" розробки програмного забезпечення, всі вони "модульні", щоб можна було поєднатись, вони всі "продукти" в тому сенсі, що вони були вироблені тощо. ..
Йдеться не про термінологію чи номенклатуру, це про те, як масштабування речей впливає на різні аспекти творчості та продуктивності. І про важливість не лише використання всіх цих різних рівнів, а й важливості не намагатися досягти мети на неправильному рівні, що може бути лише контрпродуктивним.