Architektura oprogramowania a architektura systemu a diagramy klas?


11

Jestem dość zdezorientowany następującymi warunkami:

Architektura oprogramowania

Architektura aplikacji to proces definiowania rozwiązania strukturalnego, które spełnia wszystkie wymagania techniczne i operacyjne, przy jednoczesnej optymalizacji wspólnych atrybutów jakości, takich jak wydajność, bezpieczeństwo i łatwość zarządzania. Obejmuje szereg decyzji opartych na szerokim zakresie czynników, a każda z tych decyzji może mieć znaczący wpływ na jakość, wydajność, łatwość konserwacji i ogólny sukces aplikacji. ( Microsoft )

Architektura systemu

Architektura systemu jest modelem koncepcyjnym, który określa strukturę, zachowanie i więcej widoków systemu. 1 Opis architektury to formalny opis i przedstawienie systemu, zorganizowane w sposób, który wspiera rozumowanie dotyczące struktur i zachowań systemu ( wiki )

Diagramy klas

W inżynierii oprogramowania diagram klas w Unified Modeling Language (UML) jest rodzajem diagramu struktury statycznej, który opisuje strukturę systemu, pokazując klasy systemu, ich atrybuty, operacje (lub metody) oraz relacje między obiektami. ( wiki )

Jeśli przeczytam te opisy, wszystkie opisują interakcje między różnymi modułami aplikacji. Jakie są jednak różnice między nimi?
Co myślę / próbowałem porównać te warunki :

  • Diagramy klas nie są formą architektury systemu, ponieważ powyższy opis ( structure, behavior, and more views of a system) sugeruje, że w architekturze nie ma żadnych szczegółów implementacji, podczas gdy diagramy klas opisują implementację i prawdopodobnie są raczej w kierunku projektowania niż architektury?
  • Myślę, że architektura systemu to architektura obejmująca również interakcje zewnętrzne (takie jak baza danych), podczas gdy architektura oprogramowania koncentruje się na samej aplikacji?

1
Może Diagramy klas stanowią wyjście z działalności Software Architecture, w podobny sposób, że plany budynku są wyjście architekta budynku ...
FrustratedWithFormsDesigner

Odpowiedzi:


7

Architektura systemu opisuje komponenty systemu. Na przykład możesz mieć system wprowadzania zamówień, który składa się z:

Interfejs internetowy, usługa warstwy biznesowej i magazyn danych.

Powinieneś więc pokazać schemat wysokiego poziomu.

Architektura aplikacji opisuje architekturę określonego komponentu. Na przykład jednym z elementów systemu wprowadzania zamówień jest interfejs WWW. Architektura aplikacji pokaże różne warstwy i interakcje tego komponentu. Responsywny interfejs użytkownika, kontroler widoku modelu, wywołania usługi internetowej, sposób rejestrowania itp. Daje i konstruuje każdy komponent oraz warstwy w tym komponencie, który jest częścią większego systemu.

zwykle tworzony jest bardziej szczegółowy schemat (schematy) pokazujący, w jaki sposób ten komponent zostanie zbudowany.

Wreszcie, diagramy klas zagłębiają się w architekturę aplikacji. Na przykład, jak wygląda umowa na interfejs logowania? W jaki sposób View będzie współpracować z kontrolerem ... i tak dalej. Sprecyzują one architekturę aplikacji dla konkretnego komponentu systemu.

Powinno być ich wiele, jeśli dany składnik jest duży i złożony.


2

Niektóre dodatkowe punkty:

  • System to najszerszy termin i zazwyczaj najwyższy poziom, najmniej szczegółowy.
  • Część systemu można zaklasyfikować jako oprogramowanie.
  • Część oprogramowania można opisać za pomocą diagramów klas.

Last but not least: architektura polega na jednorazowych wyborach, które są trudne lub niemożliwe do odzyskania później bez odbudowywania wszystkiego. Najlepsza definicja architektury, która odróżnia ją od designu, to „wszystko, co jest naprawdę drogie do zmiany”. Tak więc w architekturze zazwyczaj wybierasz język programowania, system operacyjny, markę relacyjnej bazy danych, cokolwiek blokuje cię w rodzaju rozwiązania. To, co klasyfikuje się jako architektura, zależy również od samego systemu i tego, jak (nie) jest elastyczny w odniesieniu do aspektu.


0

Diagramy klas różnią się znacznie od pozostałych dwóch terminów - pokazują, jakie klasy oferują innym klasom i jak współdziałają ze sobą. Jednak pojęcia „architektura systemu” i „architektura oprogramowania” powodują zamieszanie i wymagają dalszych wyjaśnień.

Ważne jest, aby zdawać sobie sprawę, że „system” odnosi się nie tylko do komponentów oprogramowania, ale także innych komponentów, takich jak komponenty sprzętowe. Jeśli system zawiera tylko system oprogramowania, nie ma różnicy między oboma warunkami. Oczywiście, jeśli system zawiera inne elementy niebędące programami, architektura oprogramowania będzie znacznie różnić się od architektury systemu.


Czy architektura systemu powinna również zawierać coś w rodzaju modułu GUI? @Tushar
KingBoomie

Tak, może i nie musi być komponentem oprogramowania. @RickBeeloo
Tushar

Ale potrzebujesz klasy w oprogramowaniu, aby zaakceptować dane wejściowe użytkownika i wyświetlić coś użytkownikowi? Więc powinien to być również komponent oprogramowania?
KingBoomie

Tak i nie. Nie wszyscy konsumenci oprogramowania to ludzie :)
Tushar
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.