Architektura oprogramowania - wstęp


Każdorazowo kiedy mowa o architekturze oprogramowania, to wielu z nas pojęcie to kojarzy się z organizacją czy budową oprogramowania i w gruncie rzeczy jest to poprawne rozumowanie. Uściślając jednak,  architektura oprogramowania (ang. software architecture) to wysokopoziomowa organizacja systemu, obejmująca jego podstawowe moduły i interakcje między nimi oraz środowiskiem. Dodatkowo do architektury zalicza się także reguły jej budowy i rozwoju. Przytoczona definicja jest zgodna z definicją (IEEE1471). Więcej na temat standardów dotyczących architektury znaleźć można w dziale: standardy architektury

Z kolei przez system rozumiemy oprogramowanie i sprzęt, na którym to oprogramowanie jest zainstalowane i działa. Z punktu widzenia architektury system to twór abstrakcyjny pozbawiony szczegółów implementacyjnych, np. algorytmów. Wytworzenie architektury systemu jest pierwszym krokiem do zaprojektowania systemu spełniającego określone wymagania.

Architektura oprogramowania jest to stosunkowo nowa dziedzina informatyki i w praktyce nie zawsze jeszcze dostrzega się jej potrzebę - zwłaszcza w przypadku niewielkich programów, gdzie wszystko wydaje się oczywiste. Bez zbędnego projektowania można zabrać się za pisanie kodu. Jednak zdecydowanie inaczej wygląda to z perspektywy większych systemów, gdzie bez przeprowadzenia analizy, stworzenia architektury raczej nie jest możliwe wytworzenie, poprawnie funkcjonującego i spełniającego określone wymagania, rozwiązania. Należy jednak pamiętać, że każde oprogramowanie, mniejsze lub większe ma swoją architekturę nawet jeżeli nie jest ona opisana (udokumentowana). 

Relację pomiędzy Architekturą Oprogramowania, Systemem i Dokumentacją architektury przedstawiono na rysunku poniżej.




Kto tworzy architekturę?

Tworzenie architektury jest procesem dosyć skomplikowanym. Wynika to przede wszystkim z następujących czynników:
  • złożoności rozwiązania, dla którego opracowywana jest dana architektura;
  • wielu różnych grupy interesariuszy (ang. stakeholders) danego rozwiązania.

W organizacjach, w których buduje się złożone systemy informatyczne wyznacza się osobę lub tworzy stanowiska architekta oprogramowania. Głównym zadaniem takiej osoby jest wytworzenie architektury oprogramowania i zarządzanie nią w trakcie realizacji projektu. Więcej na temat roli architekta oprogramowania znaleźć można w dziale: architekt oprogramowania.

Na jakiej podstawie tworzy się architekturę?

Architekturę tworzy się po zebraniu wymagań. Jeżeli mowa o wymaganiach to na kształt architektury sytemu mają wpływ:

  • wymagania funkcjonalne
  • wymagania niefunkcjonalne (w szczególności atrybuty jakościowe)
  • ograniczenia

W praktyce przeważnie jest tak, że oprogramowanie może być zbudowane na kilka sposobów - mówimy o architekturach alternatywnych (ang. candidate architecture) danego rozwiązania. To na jaką wersję się decydujemy zależy od wielu czynników. Do najważniejszych z nich zalicza się: 

  1. otoczenie biznesowe (profil działalności, strategia firmy, czas potrzebny na implementację danego rozwiązania, koszt rozwiązania, oczekiwania klienta); 
  2. dotychczasowe doświadczenie i wiedzę architekta;
  3. zespół projektowy, który będzie implementował dane rozwiązanie (kompetencje zespołu).