Architektura oprogramowania wyjaśniona: Kluczowe koncepcje dla programistów

software architecture
Czy ktokolwiek potrafi wyjaśnić czym jest architektura oprogramowania? Niezależnie od tego, czy jesteś doświadczonym programistą, czy dopiero rozpoczynasz swoją przygodę z tworzeniem aplikacji, ten artykuł jest dla ciebie. Pokażę Ci koncepcje, które stanowią fundament każdego udanego projektu oprogramowania. Dzięki temu zyskasz pewność siebie i wiedzę potrzebną do projektowania i tworzenia aplikacji, które będą działać zgodnie z oczekiwaniami i spełniać wymagania zarówno użytkowników, jak i biznesu.

Robert C. Martin wspomina w swojej książce „Czysta architektura” o takim podziale, że architektura to wysokopoziomowe sprawy, a projekt to szczegóły i sprawy niższego rzędu. Architekt robi architekturę, a programiści robią projekt. Idąc dalej można zaryzykować stwierdzenie, że architekt to wielmożny gość, który jest ponad programistami.

Rzeczywistość nie jest tak kontrowersyjna. Architektura i projekt to jedno i to samo. Architekt to też programista, często najlepszy, który prowadzi zespół w wytyczonym kierunku. Architekt też dalej pisze kod, na pewno mniej niż wcześniej, pomimo tego musi to dalej robić, żeby nie wypaść z gry i móc rozmawiać technicznie z programistami.

Każdy system składa się z wysokopoziomowych decyzji i niskopoziomowych szczegółów. Jest to nierozłączne. Bardzo ważne jest tutaj, żeby system powstawał przy współpracy architektów i programistów, a nie w izolacji.

Pomyśl i projekcie domu, w którym architekt projektuje niemal każdy element od od kształtu, wyglądu, rozkładu pomieszczeń, aż do tego, gdzie mają być rozmieszczone gniazdka. Są to właśnie wysokopoziomowe decyzje.

Na etapie budowy takiego domu, gdy nie ma już architekta, to inwestor sam może zdecydować, jakie dokładnie mają być te gniazdka albo jaki tynk ma być położony na ścianach. To są właśnie niskopoziomowe szczegóły,

Czym więc jest ta architektura?

Przeanalizujmy kolejny znany podział. Podział systemu na wartości:

  • jak system ma działać, co ma robić (zachowanie)
  • jak łatwo można ten system zmienić (architektura)

Z powyższego podziału można wywnioskować, że architektura opisuje jak łatwo można zmienić dany system. Sprowadza się to do tego, że architektura definiuje koszt zmiany, koszt całego systemu i nakład pracy potrzebny do jego wdrożenia.

Czyli architektura to opis systemu mający na celu minimalizację nakładu pracy potrzebnego na wdrożenie i późniejsze utrzymanie systemu.

Cel architektury

Celem architektury jest zachowanie otwartych możliwości jak najdłużej. Architektura koncentruje się na wysokopoziomowych decyzjach, nie na frameworkach, bazach danych, protokołach komunikacyjnych i narzędziach. Celem architektury jest wyznaczenie reguł pozwalających na realizację wymagań biznesowych. Architektura skupia się na regułach, a nie na szczegółach. Celem dobrej architektury jest ułatwienie:

  • realizacji przypadków użycia
  • wdrożenia systemu
  • konserwacji i utrzymania systemu
  • dalszego rozwoju systemu
  • łatwej zmiany wcześniej podjętych decyzji

Składowe architektury

Architekturę można podzielić na kilka składników:

  • charakterystyki architektury (nazywane inaczej atrybuty jakościowe) — są to kryteria sukcesu systemu np. scalability, observability, performance, availability.
  • Decyzje architektoniczne — decyzje określające jak system ma działać.
  • Design principles — różnią się od decyzji architektonicznych tym, że są to wskazówki jak coś powinno być zrealizowane. Nie są to twarde reguły jak decyzje architektoniczne.

Podsumowanie

Jeśli miałbyś zapamiętać jedno zdanie z tego tekstu, to zapamiętaj to:

Architektura to opis systemu, a celem architektury jest minimalizacja nakładu pracy potrzebnego na wdrożenie i utrzymania tego systemu. Dobra architektura to taka, która ułatwia pracę nad oprogramowaniem i zachowuje otwarte możliwości jak najdłużej jest to możliwe.

Jeśli chciałbyś zagłębić się w sprawy opisane w tym artykule, to zachęcam do przeczytania książek podlinkowanych w źródłach poniżej. Kupując przez te linki wesprzesz też mojego bloga/newsletter.

Żródła

Udostępnij post:

Możesz także polubić

Kariera w branży technologicznej: Jak rozwijać swoje umiejętności

Jesteś programistą i chciałbyś się rozwijać? W internecie znajdziesz pełno materiałów o tym, jak to zrobić. Pomimo tego nie uciekaj — mam coś, co Cię zaciekawi. Czy wiesz, że Adam Małysz — legendarny polski skoczek, zanim został mistrzem latania, to był dekarzem? Nie śmiem się porównywać z Panem Adamem, natomiast są dwie rzeczy, które nas łączą.

Ja też byłem dekarzem i też udało mi się przebranżowić. Może nie w tak spektakularny sposób, ale jednak. W tym artykule podzielę się z Tobą moim osobistym doświadczeniem, które zdobyłem na drodze od dekarza przez programistę do tech leada i dam Ci wskazówki, które będziesz mógł zastosować, aby się rozwijać i awansować, a może nawet zmienić diametralnie swoją karierę.

Czytaj więcej
AHA stack przywróćmy prostotę frontendu

AHA! Przywróćmy prostotę Frontendu

Czy zastanawiałeś się, dlaczego w dzisiejszych czasach, gdy mamy dostęp do najnowszych technologii i rozwiązań, projekty IT nadal kończą się fiaskiem? Czy nie uważasz, że w wielu przypadkach zamiast upraszczać to komplikujemy sobie życie i pracę? Czasami mniej znaczy więcej, zwłaszcza w świecie frontendu! Czytaj dalej i dowiedz się czym jest AHA stack i jak robić frontend prościej.

Czytaj więcej