Modułowość w oprogramowaniu
Modułowość w oprogramowaniu może ułatwiać rozwój systemu, porządkować odpowiedzialności i zmniejszać złożoność pracy zespołu. Dobrze wydzielone moduły mogą też ograniczać skutki zmian i usprawniać testowanie. W praktyce temat łączy projektowanie granic systemu, organizację interfejsów oraz podejście do weryfikacji działania.
Projektowanie modułów
Dodanie nowej funkcjonalności jako osobnego modułu może zmniejszać obciążenie poznawcze 1 i ograniczać ryzyko regresji 1.
Fasada może:
- być publiczną klasą modułu 1
- upraszczać dostęp do złożonej logiki ukrytej wewnątrz modułu
- stabilizować interfejs używany przez inne części systemu
Modułowość może też polegać na takim podziale systemu, aby każdy element miał możliwie jedną, czytelną odpowiedzialność, co może ułatwiać rozwój, wymianę komponentów i utrzymanie kodu.
Testowanie i rozwój zmian
Testy w podejściu TDD mogą:
- wykonywać się w mniej niż sekundę 1
- unikać I/O w testach jednostkowych 1
- wspierać szybki cykl informacji zwrotnej podczas rozwijania modułów
Testy BDD mogą:
- służyć jako dokumentacja działania aplikacji 1
- pomagać zweryfikować prawidłowość logiki biznesowej 1
- służyć jako lista zmian w aplikacji 1
Testy automatyczne mogą pomóc przepisać mikroserwis 1, ponieważ mogą ograniczać niepewność przy zmianie architektury i mogą ułatwiać zachowanie zgodności działania po wydzieleniu lub przebudowie modułów.
Praktyki wspierające projektowanie
Technika programowania w tył może pozwolić skupić się na celu 1, co może ułatwiać wyznaczenie granic modułu na podstawie oczekiwanego efektu, a nie przypadkowej struktury implementacji.
Usuwanie własnego kodu może pomóc dojść do właściwego rozwiązania 1, ponieważ upraszczanie implementacji może ujawniać lepszy podział odpowiedzialności i może eliminować zbędne zależności między modułami.
Utrzymanie i ograniczenia
Logi aplikacji mogą:
- pomagać rozwiązywać problemy na produkcji 1
- ułatwiać analizę zachowania modułów po wdrożeniu
- wspierać diagnozowanie błędów na granicach między komponentami
Modułowość nie eliminuje wszystkich problemów projektowych, ponieważ zbyt drobny podział może zwiększać liczbę zależności i utrudniać zrozumienie przepływu danych. Skuteczny podział może wymagać równowagi między izolacją odpowiedzialności a prostotą współpracy między modułami.