Architektura
Architektura oprogramowania to połączenie wysokopoziomowej struktury z niskopoziomowymi szczegółami, relacje między nimi, reguły ich rozbudowywania oraz środowisko pracy. Jej celem jest zminimalizowanie liczby ludzi wymaganych do stworzenia, utrzymywania i rozbudowywania systemu.
Zasady programowania nie zmieniły się od swoich początków. Ciągle używane są te same komendy (np. if’y i while). Są one uniwersalne. Z tego też powodu reguły architektury oprogramowania są uniwersalne i nie zależą od żadnej zmiennej.
Dobra architektura ma następujące zalety:
- Potrzeba niewielu programistów do utrzymania i rozwoju systemu.
- Koszty pracy programistów są minimalizowane.
- Elastyczność i funkcjonalność oprogramowania jest maksymalizowana.
- Łatwo jest wprowadzać zmiany.
Niejednokrotnie programiści dochodzą do wniosku, że muszą przepisać system, ponieważ obecny jest trudny w utrzymaniu i rozwijaniu. Mają przesadną pewność siebie, że teraz, budując od nowa, stworzą idealny system. Po jakimś czasie znowu wpadają w ten sam sposób. Problemem nie jest stary system, lecz nieodpowiednia architektura i praktyki programistyczne. Należy poświęcić im sporo czasu. Pomocne jest w tym zasady SOLID, GRASP, rysowanie diagramów UML, oraz proces TDD.
Systemy mają dwie cechy:
- Zachowanie — system ma zarabiać lub oszczędzać pieniądze.
- Struktura (architektura) – system ma mieć możliwość łatwego zmieniania się i dostosowywania do zmian oczekiwań i jego otoczenia.
W pracy trzeba znaleźć balans między rozwijaniem zachowania (dodawania nowych funkcji) a poprawianiem struktury (ułatwiania rozwijania systemu). Zazwyczaj pilne jest, ale nie ważne, aby nowa funkcja została zaprogramowana. Prace nad strukturą są zaś często ważne, ale nie pilne. Można to przedstawić w macierzy Eisenhowera:
pilne i ważne — architektura i zachowanie | niepilne i ważne – architektura |
pilne i nieważne -zachowanie | niepilne i nieważne |
Podczas rozwijania oprogramowania trzeba dodawać wartość do systemu, ale nie można zapominać o poprawianiu jego struktury. Proces refaktoryzacji (usprawniania struktury kodu) musi być ciągły i być codzienną praktyką programistyczną.
Wszystkie posty związane z mini projektem: Budowa czystej architektury:
- Początek mini projektu: Budowa czystej architektury
- Architektura
- Paradygmaty programowania
- Zasady SOLID w kontekście architektury
- Spójność komponentów
- Łączenie komponentów
- Struktura oprogramowania
- Zasady i poziomy
- Czysta architektura
- Budowanie Czystej architektury
- Podsumowanie projektu: Budowanie czystej architektury
- Moje notatki z nauki szybkiego czytania
Źródła
Obrazy
Materiały
- Czysta architektura. Struktura i design oprogramowania. Przewodnik dla profesjonalistów — Robert C. Martin.
- https://pl.wikipedia.org/wiki/SOLID_(programowanie_obiektowe)
- https://pl.wikipedia.org/wiki/Architektura_oprogramowania
- https://architektura-oprogramowania.blogspot.com/p/strona-gowna.html