Architektura oprogramowania: typy, opis, rozwój

Obecnie niewielu ludzi będzie się spierać z twierdzeniem, że nasz świat jest coraz bardziej zależny od oprogramowania (oprogramowania). I nie jest to dziwne. Jest używany w telefonach komórkowych, zintegrowanych systemach kontroli ruchu lotniczego, komputerach osobistych, elektronice samochodowej i wielu innych. Wiele innowacji, które postrzegamy jako dane, a także wiele różnych organizacji, takich jak Yandex, Amazon czy Google, jest po prostu niemożliwe bez oprogramowania. Ale nawet w tradycyjnym handlu, sektorze publicznym i finansowym jest to bardzo trudne bez oprogramowania.

Informacje ogólne

Warto wspomnieć tylko o koncepcji architektury, więc jedno jest jasne od razu - brak definicji nie istnieje. Dlatego, aby nie mylić czytelników, standardy IEEE 1471 i IEEE Std 1472000 będą używane jako prototypy do rozważenia w artykule. A teraz spójrzmy na to, co reprezentuje architektura. Termin ten odnosi się do organizacji systemu zawartego w jego elementach, relacji między nimi a środowiskiem, a także zasad określających jego projekt i rozwój. Jednak najpierw przypomnijmy tych, którzy wnieśli znaczący wkład w rozwój teorii i koncepcji oprogramowania.


Przede wszystkim należy wspomnieć o Lance Bass. "Architektura oprogramowania w praktyce - dość stara praca tego autora (rosyjskie tłumaczenie zostało wydane w 2006 roku), ale mimo to pozwala uzyskaćwysokiej jakości zrozumienie procesu tworzenia oprogramowania. Kolejnym interesującym autorem jest Robert Martin i jego twórczość "Pure Architecture. Sztuka tworzenia oprogramowania ". Tłumaczenie i publikacja książki na język rosyjski zostały wykonane na początku 2018 roku. Dlatego można śmiało powiedzieć, że jest to dosłownie nowość, w której jest dużo świeżych i istotnych informacji. Książka "Czysta architektura. Sztuka rozwoju oprogramowania "mówi, jak osiągnąć poziom profesjonalizmu. Opisuje, co i jak należy zrobić oraz dlaczego rozwiązanie będzie miało kluczowe znaczenie dla sukcesu.


Trochę terminologii

Rozważmy kilka pojęć, które pomogą nam zrozumieć temat:
  • System - określony zestaw komponentów, które zostały połączone w celu wykonania określonej funkcji lub zestawu.
  • Misja - wniosek (działanie), które zamierza przeprowadzić jedna lub więcej zainteresowanych stron zgodnie z koniecznym zestawem warunków.
  • Komponent jest logicznym, fizycznym, technologicznie powiązanym (niezależnym), drobno lub gruboziarnistym systemem modułowym, który hermetyzuje jego zawartość.
  • Oraz kilka innych interpretacji na główny temat:
  • Architektura - zbiór znaczących decyzji, które wpływają na organizację systemu C. Zestaw elementów strukturalnych, a także ich interfejsy, za pomocą których układ.
  • Architektura programu (systemu komputerowego) - struktura, która zawiera określone elementy, widoczne z zewnątrz ich właściwości, a także połączenia między nimi. Składa się z wszystkich ważnychzaakceptowane decyzje projektowe. Zapewnia pożądany zestaw właściwości, które są niezbędne do udanego biznesu.
  • Architektura jest strukturą organizacji, a także związanym z nią zachowaniem systemowym. Może zostać rekursywnie zdemontowany na części, komunikację i warunki montażu.
  • Mimo że definicje te zawierają ułamek różnic, nietrudno zauważyć pewne podobieństwo. Dlatego uwaga skupia się na strukturze, zachowaniu i znaczących decyzjach. A to nie jest zmarnowane.

    Wpływ architektury na strukturę

    Tu jest jedna interesująca chwila. Warto poprosić o opisanie słowa "architektura", ponieważ większość ludzi odnosi się tutaj do struktury. I nie jest to dziwne. Wszakże architektura oprogramowania w praktyce często opiera się na schemacie, który obrazuje strukturalne aspekty systemu. Co więcej, nie ma znaczenia, o co chodzi w danym języku - o poziomach, komponentach lub rozproszonych węzłach. Struktura jest najważniejszą cechą architektury. Jego aspekty i cechy przejawiają się na wiele sposobów. Element strukturalny może być bazą danych, biblioteką, procesem, podsystemem, węzłem obliczeniowym i tak dalej. Ponadto należy zwrócić uwagę nie tylko na nie oddzielnie, ale także na ich składy, ustalone więzi, interfejsy i przegrody. Należy wziąć pod uwagę, że każdy z tych elementów można przedstawić na różne sposoby. Jako przykład można znaleźć łącze łączące. Może to być: a /synchroniczne, gniazdo, być powiązane z określonym protokołem i tak dalej.

    Wpływ architektury na zachowanie

    Po prostu nie można tego zlekceważyć.Projektowanie architektury oprogramowania ma duży wpływ na jego implementację i dalszą wydajność. Zachowanie, możliwe zawieszenie, problemy itp. Bardzo zależy od tego, jak wszystko rozwinęło się od samego początku. Architektura wpływa na interakcję między elementami strukturalnymi, musi zapewniać transfer danych dokładnie tam, gdzie jest to konieczne, aby ostatecznie uzyskać pożądany rezultat. Jak to się dzieje z naszymi standardami? Możesz zobaczyć mały schemat działania. Załóżmy, że mamy przedsiębiorstwo. Konieczne jest upewnienie się, że pracownik wziął zamówienie za pomocą instancji klasy "Form". Zawiera wszystkie niezbędne informacje o kliencie. Jeśli zamówienie jest składane po raz pierwszy, wówczas informacja jest wprowadzana w "Blank" za pomocą systemu kontroli. Następnie używana jest instancja klasy "Rozpocznij przetwarzanie zamówień", która uruchamia wszystkie niezbędne procesy w przedsiębiorstwie. Łącznie jest pięć elementów. W tym samym czasie istnieje pewna zależność. Na przykład zamawianie nie jest możliwe bez pracownika. A jeśli puste nie zostanie wypełnione, nie zostanie przyjęte.

    Koncentracja architektury na istotnych elementach

    Rozważaliśmy już wpływ na strukturę i zachowanie. Ale tutaj należy zwrócić uwagę na jedną ważną kwestię. Mianowicie, architektura nie definiuje całej struktury, a nie całego zachowania. Wpływa na te elementy, które są uważane za znaczące. Co jest pod nimi? Istotne są te elementy, które mają długi i trwały efekt. Na przykładgłówny strukturalny Lub te, które zależą od niezawodności i skalowalności oprogramowania. W tym przypadku architektura z reguły nie ma związku z szczegółowymi szczegółami wszystkich tych elementów. Głównym atrybutem, dla którego niektóre są oceniane bardziej niż inne, jest koszt tworzenia i modyfikowania. Architektura skupia się na znaczących elementach. Dlatego powinien oferować konkretną perspektywę, coś, co jest najważniejsze. Można powiedzieć, że architektura to określone uogólnienie całego systemu oprogramowania, które pozwala programistom zarządzać istniejącą złożonością. Jeden ważny punkt, o którym należy pamiętać. Mianowicie zbiór znaczących elementów nie jest statyczną listą czegoś i może się zmieniać z czasem. W jakich przypadkach to się dzieje? Jako przykład można przytoczyć sytuację, w której pojawia się wynik wymagań, identyfikacji ryzyka i innych podobnych momentów. Należy zauważyć, że względna stabilność architektury, pomimo wprowadzonych zmian, jest oznaką dobrze wykonanej pracy i dobrze ugruntowanego procesu rozwoju, a także doświadczenia i kwalifikacji personelu.

    Równoważenie potrzeb zainteresowanych stron

    W praktyce architektura oprogramowania powinna być wygodna dla użytkowników i personelu administracyjnego. Należy zauważyć, że często spełnienie wszystkich wyrażonych życzeń nie jest możliwe. Jako przykład można podać sytuację, w której dana osoba prosi o wykonanie określonej funkcji przez określony czasluka Ale te dwie potrzeby wzajemnie się wykluczają. Oznacza to, że możesz zmniejszyć granice funkcji, która ma zostać wykonana, tak aby spełniała wymagany harmonogram lub zachować wszystko w całości, ale wtedy zajmie to zbyt dużo czasu. Podobnie na przykład zainteresowane strony mogą mieć wymagania o różnym stopniu sprzeczności. W takich przypadkach konieczne jest osiągnięcie pewnej równowagi. Kompromisowe rozwiązanie jest praktycznie niezastąpionym aspektem procesu tworzenia architektury. I tutaj, niestety, nic nie zrobisz - musisz przezwyciężyć trudności. Aby zorientować się w rzeczywistej sytuacji, należy zasymulować sytuację, gdy trzeba spełnić potrzeby wielu interesariuszy:
  • użytkownik końcowy. Interesuje go zapewnienie, że oprogramowanie jest intuicyjne, wydajne, niezawodne, przyjazne dla użytkownika, bezpieczne i niedrogie, a także ma odpowiednie zachowanie.
  • Administrator systemu. Interesuje go obecność intuicyjnego zarządzania, narzędzi monitorowania i zachowania całego kompleksu.
  • Specjalista w dziedzinie reklamy i promocji. Interesuje go obecność unikalnych cech, które sprawiają, że oprogramowanie jest konkurencyjne, orientacyjny czas przed udostępnieniem rozwoju na rynku, koszt produktu i jego pozycji wśród analogów.
  • Programista. Interesuje się zrozumieniem wymagań i niespornych zasad systemu wewnętrznego.
  • Project Manager. Interesuje go fakt, że przebieg projektowania, planowania i realizacji był przewidywalny.Konieczne jest również dbanie o racjonalne wykorzystanie dostępnego budżetu i funduszy.

    Architektura opiera się na logicznym uzasadnieniu.

    Podczas pracy należy zwrócić uwagę nie tylko na końcowy rezultat. Oczywiście architektura zasługuje na uwagę. To samo, co uzasadnienie logiczne. W związku z tym konieczne jest dostarczenie dokumentacji decyzji, dzięki którym powstały istniejąca architektura. Konieczne jest również zapewnienie im logicznego uzasadnienia. Pomimo prostoty i prostoty zadania, informacje te są ważne dla zainteresowanych stron, zwłaszcza tych, którzy obsługują system. Dokumentacja ma również wartość dla deweloperów w przypadkach, w których konieczne jest zbadanie uzasadnienia podjętych decyzji, aby uniknąć niepotrzebnego powtarzania już podjętych działań. Na przykład podczas przeglądania architektury. Wszakże w takich przypadkach konieczne jest wyjaśnienie, dlaczego takie decyzje zostały podjęte.

    Informacje o stylu architektonicznym

    Co i jak w tym przypadku? Jeśli spojrzeć na architekturę oprogramowania dla wielu produktów, widać, że są one zbudowane na systemach, które korzystają z podobnych zestawów zainteresowań. Wiele podobieństw można zrobić w pewnym stylu. On z kolei może być uważany za szczególny rodzaj szablonu, bardzo złożony i konstytutywny. To enkoder doświadczenia, a programista może go z powodzeniem użyć ponownie. W końcu pozwoli to szybko i szybko wykonać taką pracę. Jakie są główne architekturystyl outsourcingu oprogramowania? Przykłady obejmują:
  • Rozproszony.
  • Kanały i filtry.
  • Ze scentralizowanym przetwarzaniem danych.
  • Zbudowany na zasadach.
  • Należy zauważyć, że poszczególne systemy mogą wykazać obecność więcej niż jednego stylu. Jakie jest potwierdzenie tych słów? Przede wszystkim możemy wymienić styl architektoniczny pokazu i Garlana. Jak to się manifestuje? Styl architektoniczny jest w istocie nomenklaturą komponentów, a także rodzajami połączeń i zestawów warunków, w których można je łączyć. Ponowne wykorzystanie doświadczenia w postaci zastosowania stylu architektonicznego pomaga ułatwić życie dzięki temu, że już dobrze udokumentował i uzasadnił racjonalne użycie czegoś zbożowego.

    O wpływie środowiska. I odwrotnie

    Lub innymi słowy, o architekturze w treści semantycznej. Konieczne jest określenie ograniczeń, w których będzie działał system oprogramowania. Zajmuje się głównie środowiskiem. Architektura systemu oprogramowania w takich przypadkach powinna uwzględniać czynniki wpływu. Konkretniej, konieczne jest skupienie się na udziałowcach misji, wewnętrznych i zewnętrznych ograniczeniach technicznych. Ponadto architektura oprogramowania może wpływać na otoczenie. Co więcej, nie tylko z technologicznego punktu widzenia, ale także pozwala na ponowne wykorzystanie zasobów i środowiska pracy. O czym mówią standardy? Jeśli mówimy o głównie systemach oprogramowania, powinieneś wziąć pod uwagęniektóre aspekty środowiska. Aby program był użyteczny, powinien działać. Aby to zrobić, musisz uruchomić go na określonym sprzęcie. Ważna jest tutaj architektura komputera. Oprogramowanie utworzone dla systemu Windows nie działa w technologii, w której jest zainstalowany system MacOS. Chociaż oczywiście możesz stworzyć emulator, uruchomić maszynę wirtualną lub użyć innego mediatora i uruchomić oprogramowanie. Ale skuteczność jego pracy będzie znacznie mniejsza niż w przypadku pracy z systemami docelowymi. Dlatego architektura komputera i oprogramowania powinna pasować do prawidłowego działania. W końcu ten sam MacOS może działać tylko w określonej konfiguracji. Tak więc Windows ma pewne ograniczenia, chociaż jest mniej związany z żelazem.

    Różnorodność gatunków

    Jakie modele możesz stworzyć? W skrócie podajemy powszechnie stosowane typy architektury oprogramowania:
  • model klient-serwer.
  • Wniosek monolityczny.
  • Architektura okazji.
  • Strukturyzowany.
  • Trzy poziomy.
  • Architektura zorientowana na usługi.
  • Niejawne wyzwania.
  • Architektura zorientowana na wyszukiwanie.
  • Jest to tylko niewielka część dużej liczby różnych podejść i szablonów. I wcale nie jest jedyny. Należy zauważyć, że rozwój architektury oprogramowania nie jest czymś złożonym i niemożliwym, dlatego wielu tworzy je samodzielnie (bardzo często kopiuje to, co już istnieje, ale czego nie wie). Oczywiście, chociaż są małe różnice w szczegółach, alesą wynikiem dopasowania szablonu do specyficznych wymagań zespołów programistów. Na tym, być może, można się zatrzymać. Należy zauważyć, że w artykule główny nacisk położono na cechy architektury oprogramowania. Kilka ważnych kwestii, nieco wykraczających poza zakres głównego tematu, nie zostało uwzględnionych. Wśród nich - rola dewelopera, jakie podstawowe działania musi wykonać, i kilka innych.

    Powiązane publikacje