Co właściwie kryje się pod tym pojęciem?
Architektura to istotność
Duża część naszego codziennego życia, od korzystania ze smartfona po wysyłanie wiadomości e-mail, w dużej mierze zależy od architektury oprogramowania systemów, z których korzystamy.
Definicja architektury oprogramowania jest od dawna przedmiotem niezakończonej dyskusji. Dla niektórych jest to podstawowa organizacja systemu. Pod tym względem abstrakcyjna koncepcja zaproponowana przez Ralpha Johnsona, profesora nadzwyczajnego Uniwersytetu Illinois, wydaje się nie tylko zabawna ale i sensowna: W architekturze chodzi o to, co ważne. Cokolwiek to jest.
Na pierwszy rzut oka może zabrzmieć banalnie. Ale faktycznie, architektura oprogramowania odnosi się do frameworka najwyższego poziomu, szkieletu systemu oprogramowania. To jeden z pierwszych wyborów dokonanych przy tworzeniu nowego systemu. Ten wybór może znacząco wpłynąć na przepływ pracy, jakość kodu, utrzymanie, wdrażanie i łatwość programowania.
Składowe sukcesu
Przede wszystkim architektura oprogramowania opiera się na zestawie kluczowych decyzji związanych z tworzeniem oprogramowania. Każda z tych decyzji ma znaczący wpływ na ogólny rezultat projektu i wydajność produktu końcowego. Chodzi tu o:
- Dobór elementów konstrukcyjnych i ich interfejsów.
- Współpraca między tymi komponentami.
- Konfiguracja komponentów tak aby tworzyły poszczególne podsystemy.
- Decyzje architektoniczne zgodne z wymaganiami biznesowymi.
Czy architektura oprogramowania to to samo, co projektowanie systemu oprogramowania?
Chociaż większość ludzi uważa, że architektura oprogramowania i projektowanie oprogramowania to różne pojęcia, zasadniczo jest to to samo. Podział wynika z poglądu, że projektowanie systemu oprogramowania to szczegóły niskiego poziomu podczas gdy architektura oprogramowania to kwestie najważniejsze, strategiczne.
Bez znajomości szczegółów wysokiego poziomu programista może pracować niskopoziomowo ale odwrotna sytuacja nie jest możliwa. Architekt systemu musi w pełni zrozumieć, w jaki sposób decyzje podejmowane na jego – umówmy się - wysokim szczeblu wpłyną na szczegóły implementacji poszczególnych modułów czy funkcji. Poza tym projektowanie oprogramowania jest jedną z początkowych faz cyklu rozwoju oprogramowania (Software Development Cycle, SDLC). Z drugiej strony architektura oprogramowania to pewien plan postępowania, który ogranicza projektowanie systemu oprogramowania, aby uniknąć różnych, typowych błędów. Osiąga strategię technologiczną i biznesową dla konkretnej organizacji.
Krótko mówiąc:
- to, jak tworzysz, to projektowanie oprogramowania
- to, co tworzysz, to architektura oprogramowania
Wzorce architektury oprogramowania
Pomyśl o projekcie rozwoju aplikacji do zakupów online. Najważniejszą rzeczą, której potrzebujesz, jest zdefiniowanie architektury programowania i założeń projektowych, aby zbudować tę aplikację. Na przykład, w jaki sposób algorytm będzie działać w przypadku sugestii dotyczących produktów? Jak będzie działał koszyk? Lista będzie bardzo długa. I tu wchodzą do gry wzorce architektury.
Wzorce architektury oprogramowania można zdefiniować jako rozwiązania typowych i powtarzających się problemów inżynierii oprogramowania. W aplikacji do zakupów online możemy ponownie korzystać z algorytmów, które zostały już opracowane, aby sugerować produkty i wprowadzać poprawki zgodnie z wymaganiami naszej aplikacji. Architektura zawarta w implementacji modułu sugestii jest bowiem tylko częścią ogólnego wzorca architektonicznego.