Zanim przejdziemy do pytania, dlaczego warto inwestować w dobrą architekturę, musimy najpierw wyjaśnić, czym właściwie jest Architektura Oprogramowania.
Definicja Architektury Oprogramowania
Architektura oprogramowania to zbiór kluczowych decyzji architektonicznych, których istotność determinuje trudność w ich zmianie. Innymi słowy, architektura to to, co naprawdę się liczy.
Przykłady istotnych decyzji dla systemu:
Moduł zamówień
Rodzaj bazy danych dla zamówień (Czy relacyjna czy nie relacyjna) Trade off: skalowalność czy spójność danych
Czy proces zamówienie dzieje się asychrnicznie czy synchroniczne Trade off (natychmiastowy rezultat czy odporność na awarie)
Wymagania Niefunkcjonalne
Należy również omówić wymagania niefunkcjonalne. Obejmują one cechy, które nie dotyczą bezpośrednio funkcjonalności oprogramowania, lecz mają kluczowe znaczenie dla sukcesu produktu.
Przykłady wymagań niefunkcjonalnych to:
Aplikacja musi wspierac 1000 użytkowników w jednym czasie (Charakterystyka Performance)
Moduł zamówien musi być dostepny przez 99.9 procent czasu (Charakterystyka Dostęptność)
Atrybuty Jakościowe Systemu
Podobnie ważne są cechy systemu, które wpływają na jego łatwość utrzymania, elastyczność i możliwość testowania:
- Maintainability: Możliwość łatwej konserwacji systemu poprzez wprowadzanie zmian i naprawianie błędów.
- Flexibility: Elastyczność systemu, umożliwiająca łatwe dostosowanie się do zmieniających się wymagań.
- Testability: Możliwość przeprowadzania testów systemu w celu zapewnienia jego poprawności i niezawodności.
Tutaj wstaw obrazek z ilities
Kompromisy i Odpowiedzialność Architektów
Należy pamiętać, że nie zawsze możliwe jest osiągnięcie wszystkich wymaganych cech na najwyższym poziomie. Często musimy dokonywać kompromisów, na przykład zwiększając wydajność kosztem łatwości utrzymania systemu lub skalowalności kosztem spójności danych.
Odpowiedzialność architektów polega na znalezieniu najmniej szkodliwej kombinacji kompromisów, która zapewni jak najlepszą jakość produktu.
Dlaczego Inwestować w Dobrą Architekturę?
Długoterminowy Rozwój Produktu
Aby osiągnąć sukces, produkt musi być rozwijany długoterminowo, a jego utrzymanie musi być łatwe. Inwestycja w dobrą architekturę jest kluczowa, ponieważ koszty związane z brakiem utrzymanialności mogą przewyższyć zyski.
Konkurencyjność i Satysfakcja Klientów
Dobra architektura oprogramowania umożliwia skuteczne rozwiązywanie problemów, dodawanie nowych funkcji i konkurowanie na rynku. Zapewnia również bezpieczeństwo danych i aplikacji oraz ułatwia zarządzanie projektem.
Unikanie Pułapek Technologicznych
Inwestowanie w dobrą architekturę pozwala uniknąć pułapek technologicznych, takich jak zbyt skomplikowany kod czy zależność od przestarzałych technologii.