ST2 Test 2

06.11.2023 - Лекции 9-14

Лекция 9 - СОФТУЕРНИ АРХИТЕКТУРИ. АРХИТЕКТУРНИ СТИЛОВЕ И ШАБЛОНИ

1. СОФТУЕРНА АРХИТЕКТУРА

Дефиниции:

Множество от артефакти (принципи, насоки, политики, модели, стандарти и процеси) и взаимоотношенията между тях, които насочват избора, създаването и осъществяването на софтуерни решения на зададени бизнес цели.

КОМПОНЕНТ НА СОФТУЕРНА СИСТЕМА:

Компонентът е капсулирана част на софтуерна система. Притежава интерфейс, предоставящ начини за взаимодействие с него. Компонентите са изграждащи блокове (building blocks) на системата.

ПОДСИСТЕМА:

Подсистемата е съвкупност от компоненти, които съвместно реализират дадена задача.

2. АРХИТЕКТУРНИ СТИЛОВЕ

Дефиниции:

Архитектурният стил включва описание на типа на компонентите и тяхната топология, описание на модела на данните и контрола на взаимодействието между компонентите, неформално описание на предимствата и недостатъците от използването на този стил.

ОСНОВНИ АРХИТЕКТУРНИ ШАБЛОНИ:

  • Три-слона архитектура – Three-tier architecture
  • Многослойна архитектура – Multilayered architecture
  • Model-view-controller
  • Микроядро – Microkernel
  • Черна дъска – Blackboard pattern
  • Sensor-controller-actuator
  • Presentation–abstraction–control

КАТЕГОРИИ АРХИТЕКТУРНИ СТИЛОВЕ:

  • Структурни – Structure
  • Споделена (обща) памет – Shared memory
  • Съобщения – Messaging
  • Адаптивни системи – Adaptive systems
  • Разпределени системи – Distributed systems

2.5.1. МОНОЛИТНИ (ЕДНОСЛОЙНИ) АРХИТЕКТУРИ

При монолитните приложения потребителският интерфейс и кодът за достъп до данните е комбиниран в една програма.

Характеристики:

  • Автономни – самостоятелни и независими от други приложения
  • Няма модулност, позволяваща замяната на определена част
  • Използват се за по-елементарни десктоп приложения

2.5.2. КЛИЕНТ-СЪРВЪР АРХИТЕКТУРИ

Две отделни програми – клиент и сървър, създават общо приложение.

Видове клиент-сървър архитектури:

  • Тънен клиент (Thin client) – основната работна логика се изпълнява на сървъра
  • Дебел клиент (Fat client) – работната логика се изпълнява в клиентското приложение

2.5.3. ТРИСЛОЙНИ АРХИТЕКТУРИ

При трислойните архитектури, логиката на приложението се разделя на три нива:

Нива:

  • Представително ниво (presentation tier) – потребителски интерфейс
  • Приложно/логическо ниво (application/logic tier) – изпълнява основната логика
  • Ниво за достъп до данните (data tier) – предоставя функционалност за работа с данните

2.5.4. МНОГОСЛОЙНИ АРХИТЕКТУРИ

Цели на многослойните архитектури:

  • Многократно използване на кода (компонентите)
  • Стабилност на кода
  • Разделяне на отговорностите
  • Възможност за използване на множество машини
  • Възможност за скалиране на приложенията

2.5.5. MODEL-VIEW-CONTROLLER (MVC)

Model–view–controller е софтуерен шаблон за дизайн, който се използва в десктоп, уеб и мобилните приложения.

Компоненти на MVC:

  • Model – определя поведението на приложението, задава бизнес логиката му
  • View – представя информация за потребителя
  • Controller – обработва входните данни и ги превръща в команди за модела или изгледа

Лекция 10 - МРЕЖОВИ АРХИТЕКТУРИ. СРЕДСТВА ЗА ОПИСАНИЕ НА СОФТУЕРНИ АРХИТЕКТУРИ

1. МРЕЖОВИ АРХИТЕКТУРИ

Мрежовите архитектури определят различни начини на комуникация между отделни софтуерни възли.

Видове мрежови архитектури:

  • Централизирани (centralized) – има един централен възел за съхранение на данни и изчисления
  • Децентрализирани (decentralized) – централен възел осъществява контрол върху свързани възли
  • Разпределени (distributed) – всички възли са равноправни, данните се дублират

СРАВНЕНИЯ НА МРЕЖОВИТЕ АРХИТЕКТУРИ:

  • Точки на отказ: Централизираните имат една точка, децентрализираните – повече, разпределените – най-много
  • Устойчивост на отказ: Разпределените са най-стабилни
  • Скалируемост: Централизирани – ниска, разпределени – безкрайна

2. СРЕДСТВА ЗА ОПИСАНИЕ НА СОФТУЕРНИ АРХИТЕКТУРИ

Начини за описание:

  • UML (Unified Modeling Language)
  • View Model (Viewpoints framework)
  • ADL (Architecture Description Languages)

UML: СТРУКТУРНИ ДИАГРАМИ:

  • Class – описание на класовете и интерфейсите
  • Object – описание на статично състояние на обектите
  • Package – организацията на класовете в пакети
  • Component – описание на компоненти
  • Deployment – физически възли на системата

UML: ПОВЕДЕНЧЕСКИ ДИАГРАМИ:

  • Use case – функционалности и употреба от актьори
  • Activity – потокът от дейности
  • State Machine – промени в състоянието
  • Sequence – последователности на извикванията
  • Collaboration – взаимодействия между обектите

Лекция 11 - UML ДИАГРАМИ

UML – ОСНОВНИ ПОНЯТИЯ

UML (Unified Modeling Language) е визуален език за моделиране, изполван в софтуерното инженерство.

Основни диаграми:

  • Диаграми на класове (Class Diagrams)
  • Диаграми на обекти (Object Diagrams)
  • Диаграми на компоненти (Component Diagrams)
  • Диаграми на разгръщане (Deployment Diagrams)
  • Диаграми на случаите на употреба (Use Case Diagrams)
  • Диаграми на последователност (Sequence Diagrams)
  • Диаграми на сътрудничество (Collaboration Diagrams)
  • Диаграми на състояния (State Diagrams)
  • Диаграми на дейност (Activity Diagrams)

СТРУКТУРА НА UML

Основни елементи:

  • Сущности (Things) – основните обекти в модела
  • Взаимоотношения (Relationships) – връзки между същностите
  • Диаграми (Diagrams) – визуални представяния

Лекция 12 - DESIGN PATTERNS И АРХИТЕКТУРА

ВРЪЗКА МЕЖДУ ШАБЛОНИ И АРХИТЕКТУРА

Шаблоните за дизайн са свързани с архитектурните шаблони, но имат различен мащаб:

  • Архитектурни шаблони – дефинират общи организационни схеми
  • Шаблони за дизайн – по-специфични решения на по-малки проблеми

ПРИЛОЖЕНИЕ НА ШАБЛОНИТЕ

Шаблоните могат да се използват заедно в една система:

  • Архитектурен шаблон определя цялостната структура
  • Шаблоните за дизайн решават конкретни проблеми в рамките на архитектурата

Лекция 13 - КАЧЕСТВО НА СОФТУЕРА

СОФТУЕРНО КАЧЕСТВО

Качеството на софтуера се определя от множество фактори:

  • Функционалност
  • Надеждност
  • Усвояемост
  • Ефективност
  • Поддържаемост
  • Преносимост

МЕТРИКИ ЗА КАЧЕСТВО

  • Чрез метриките се измерва качеството на софтуера
  • Метриките могат да бъдат вътрешни и външни
  • ISO/IEC 25010 стандарт за качество

Лекция 14 - РЕФАКТОРИНГ

РЕФАКТОРИНГ

Рефакторингът е процес на подобряване на съществуващия код, без да се променя неговото външно поведение.

Цели на рефакторинга:

  • Подобряване на четливостта
  • Намаляване на сложността
  • Премахване на дублиране
  • Подобряване на поддържаемостта

Кога да се прави рефакторинг:

  • При добавяне на нова функционалност
  • При отстраняване на бъгове
  • При преглед на код (code review)

ТЕХНИКИ ЗА РЕФАКТОРИНГ

  • Преименуване на променливи и методи
  • Извличане на методи
  • Вмъкване на методи
  • Преместване на методи между класове
  • Разделяне на класове
  • Премахване на дублиращ се код