Лекция 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)
ТЕХНИКИ ЗА РЕФАКТОРИНГ
- Преименуване на променливи и методи
- Извличане на методи
- Вмъкване на методи
- Преместване на методи между класове
- Разделяне на класове
- Премахване на дублиращ се код
No results found matching your search.