Jeśli mamy wyodrębnić poszczególne języki, frameworki i ich własne interpretacje, hierarchia szczegółowości oprogramowania abstrakcyjnego jest następująca:
Product - application, library, service
Module - GUI, core logic, data, etc...
Component - purpose specific collection of objects
Object - collection of primitives
Primitive - numbers, functions, etc...
Prosty i prosty produkt to działająca kolekcja połączonych modułów funkcjonalnych.
Jak sama nazwa wskazuje, motywacją modułu jest modułowość. Wbrew temu, co twierdzi wielu, tak naprawdę nie oznacza to ponownego użycia kodu. Istnieje wiele modułów, które nie nadają się do wielokrotnego użytku i nie pasują do niczego, do czego nie zostały zaprojektowane.
Ważne jest, aby oddzielić różne warstwy oprogramowania, dzięki czemu oprogramowanie jest znacznie łatwiejsze do wdrożenia i utrzymania, a jeśli zajdzie potrzeba zaimplementowania czegoś takiego jak interfejs do innej struktury GUI, modułowość umożliwia to w łatwy i bezpieczny sposób, bez zerwania kod w dowolnym miejscu.
Moduł zawiera zbiór komponentów, które służą wspólnemu celowi zdefiniowanemu w wymaganiach modułu. Moduł powinien być samowystarczalny i kompletny, i chociaż sam tak naprawdę nie nadaje się do użytku, powinien być w stanie współpracować z dowolną zgodną implementacją.
Pod względem ziarnistości komponent znajduje się między modułem a obiektem. Celem komponentu jest zebranie kolekcji obiektów ogólnego przeznaczenia w celu utworzenia jednostki określonej dla określonego celu.
Jak sama nazwa wskazuje, w przeciwieństwie do modułu, komponent nie jest „samodzielny”, jest częścią większej funkcjonalnej całości.
Obiekty to mniejsze elementy składowe komponentów. Obiekty są kolekcjami prymitywów i łączą je ze sobą, aby służyć niższemu poziomowi, bardziej uniwersalnemu, a jednocześnie nieco bardziej specyficznemu celowi.
Prymitywy to najmniejszy, najprostszy i najniższy poziom szczegółowości programowania. Zasadniczo są to liczby całkowite i rzeczywiste oraz funkcje / operatory, chociaż większość języków ma swoich własnych „obywateli pierwszej klasy”.
Niewiele można zrobić z prymitywami, a jednocześnie jest na tak niskim poziomie, że można osiągnąć z nim praktycznie wszystko. Jest to po prostu bardzo, bardzo szczegółowe, niesamowicie skomplikowane i niemożliwie nużące do osiągnięcia podczas bezpośredniej pracy z prymitywami.
- Jaki jest sens tego wszystkiego?
Jak już wspomniano powyżej, bezpośrednia praca z prymitywami jest bardzo złym pomysłem. Nie tylko dlatego, że jest niemożliwie skomplikowany, powolny i żmudny w tworzeniu współczesnego oprogramowania, ale jest również niezwykle natarczywy i przeszkadza w testowaniu i konserwacji.
Włączenie wszystkich tych części pojęciowych do rozwoju oprogramowania sprawia, że jest to łatwiejsze, szybsze, prostsze i bezpieczniejsze. Nie budujesz domu z atomów, niezależnie od tego, jak wszechstronne i uniwersalne są atomy. To byłoby ćwiczenie na próżno. Twoje atomy są twoimi prymitywami, glina jest twoim przedmiotem, cegły są twoimi komponentami, ściany, podłoga i dach to twoje moduły, połączone razem ukazują produkt końcowy.
Ludzie tak naprawdę niczego nie wymyślają, odkrywamy tylko rzeczy, które już istnieją we wszechświecie, a następnie kopiujemy i stosujemy je w naszym życiu. Ta sama hierarchia ziarnistości jest nieodłączna dla samego wszechświata, od atomów, a nawet poniżej, do cząsteczek organicznych, białek, tkanek, narządów, organizmów i wyżej, sama rzeczywistość przestrzega tej samej zasady - łącząc małe, proste, ograniczone funkcje i cel abstrakcyjnych rzeczy w większe, bardziej złożone, bardziej funkcjonalne rzeczy i rzeczy bardziej szczegółowe.
- Ostrzeżenia terminologiczne
Z technicznego punktu widzenia wszystkie są „obiektami”, wszystkie są „komponentami” rozwoju oprogramowania, wszystkie są na tyle „modułowe”, że można je ze sobą połączyć, wszystkie są „produktami” w tym sensie, że zostały wyprodukowane i tak dalej. ..
Tu nie chodzi o terminologię ani nomenklaturę, chodzi o to, jak skalowanie w górę i w dół wpływa na różne aspekty kreatywności i wydajności. I o tym, jak ważne jest nie tylko stosowanie tych wszystkich różnych poziomów, ale także o tym, jak ważne jest, aby nie próbować osiągnąć celu na niewłaściwym poziomie, co może przynieść efekt przeciwny do zamierzonego.