Академический Документы
Профессиональный Документы
Культура Документы
Практическая работа №2
по дисциплине
« Архитектура, проектирование и разработка программных средств »
Преподаватель
Чехарин Е. Е.
(подпись и расшифровка подписи)
Москва 2022
Оглавление
Оглавление 1
Список аббревиатур и сокращений 3
Введение 4
Часть 1: Обзор методологии 6
1. Требования и ограничения 6
1.1. Цель проектирования 6
1.2. Атрибуты качества, нефункциональные требования 6
1.3. Функциональные требования 6
1.4. Системные требования 7
1.5. Ограничения 7
2. Собираем требования 8
3. Проектируем архитектуру 9
3.1. Шаг 1: Проверка входных данных 10
3.2. Шаг 2: Определяем список требований к подсистеме 10
3.3. Шаг 3: Выбираем часть системы для проектирования 11
3.4. Шаг 4: Определяем лучший вариант из возможных 11
3.5. Шаг 5: Конкретизируем компоненты выбранной концепции,
определяем обязанности и интерфейсы 11
3.6. Шаг 6. Делаем эскиз решения и краткое описание 11
3.7. Шаг 7. Проверка выполнения требований 11
4. Отслеживаем прогресс 13
Часть 2: внедрение методологии ADD 14
1. Варианты использования 14
2. Атрибуты качества 16
3. Ограничения 17
4. Архитектурные задачи 17
5. Процесс проектирования 17
5.1. Шаг 1: Проверка и анализ исходных данных 17
5.2. Шаг 2: Определяем список требований к подсистеме 18
5.3. Шаг 3: Выбор элемента системы для проработки 19
1
5.4. Шаг 4: Выбор архитектурных концепций 19
5.5. Шаг 5: Конкретизируем компоненты выбранной концепции,
определяем обязанности и интерфейсы 20
5.6. Шаг 6: Определите интерфейсы для инстанцированных
элементов 20
5.7. Шаг 7: Анализ созданной архитектуры и прогресса 21
Заключение 22
Источник 23
Список рисунков и таблиц 24
2
Список аббревиатур и сокращений
- ПО – программное обеспечение
- ТЗ – техническое задание
- ABD – Architecture Based Design
- ADD – Attribute Driven Design
- HH – High High
- HL – High Low
- HM – High Medium
- HML – High Medium Low
- HTTP – Hypertext Transfer Protocol
- IT – Information technology
- LH – Low Medium
- LL – Low Low
- LM – Low Medium
- MH – Medium High
- ML – Medium Low
- MM – Medium Medium
- MVC – Model View Controller
3
Введение
4
сложности и решения, исходя из опыта нашего Архитектурного комитета.
Мы надеемся, что статья будет полезна архитекторам и разработчикам,
желающим освоить методологию ADD, и может быть интересна смежным
специалистам.
5
Часть 1: Обзор методологии
1. Требования и ограничения
Наша цель — спроектировать архитектуру систематическим,
предсказуемым и экономически эффективным способом. Для этого нужно
определить требования к продукту. И в нашем случае проект, который мы
будем делать, - это ежедневник.
Как правило, техническое задание (ТЗ) на разработку продукта
содержит требования, но не всегда они указаны в достаточном объеме. По
этой причине в числе ключевых задач IT-архитектора – сбор и анализ
требований, создание дизайна архитектуры и описание решения, его
проверка, а также контроль и надзор во время разработки ПО.
Рассмотрим, что входит в список требований:
1.1. Цель проектирования
От цели зависит, что нам нужно на старте: детальная архитектура
или приблизительное представление об устройстве системы, которое
позволит оценить объем и стоимость работ.
Целью данного проекта является разработка информационной
системы для ежедневника. Информационная система ежедневника должна
быть простой, интуитивно понятной и эргономичной для использования
любым пользователем.
1.2. Атрибуты качества, нефункциональные требования
Эти атрибуты определяют свойства системы, которые она должна
демонстрировать – требования к производительности, доступности,
безопасности, удобству использования. Пример: система должна работать
24х7, допускается простой не более 30 минут в месяц.
1.3. Функциональные требования
Определяют действия, которые система способна выполнить.
6
Пример: возможность выгружать данные из файла и рассылать отчеты по
email.
1.4. Системные требования
Возникают постепенно в процессе детализации и реализуются
итеративно. Пример: авторизация, ведение журнала действий,
кэширование.
1.5. Ограничения
Не относятся напрямую к поведению системы и не поддаются
нашему влиянию. Например, у клиента есть пожелания по разработке
микро сервисной, а не монолитной архитектуры. Также сюда относятся
требования законодательства, например, в области хранения персональных
данных.
Как правило, владелец продукта заранее не имеет полного списка
требований к системе, поэтому архитектор непосредственно организует
процесс их сбора и фиксации. Из всех требований к системе специалист
обязан выделить архитектурно значимые, которые оказывают глубокое
влияние на конечное решение.
Согласно методологии ADD, сбор требований – это первый этап работы.
Его назначение:
- помочь оценить стоимость и график работ;
- выработать ключевые технологии;
- обеспечить достижение бизнес-целей в процессе разработки.
Далее рассмотрим остальные этапы проектирования.
7
2. Собираем требования
8
3. Проектируем архитектуру
Мы проектируем архитектуру ПО, исходя из наиболее значимых
атрибутов качества. Это рекурсивный процесс, в ходе которого система
декомпозируется на более мелкие подсистемы.
ADD — первый метод, который концентрируется на атрибутах
качества и способах их достижения. Важным вкладом ADD было
признание того, что анализ и документация являются неотъемлемой
частью процесса проектирования. Этот метод успешно применяется более
15 лет.
Сейчас актуальная версия ADD — 3.0, итеративная. Согласно ей,
проектирование выполняется поэтапно в течение всего времени
разработки системы, в каждом спринте. В ней по шагам описано
руководство по тем задачам, которые необходимо выполнить в рамках
каждой итерации.
9
Рисунок 1 – Attribute Driven Design
(https://habr.com/ru/company/simbirsoft/blog/571554/)
10
3.3. Шаг 3: Выбираем часть системы для проектирования
Исходим из риска и сложности реализации, ценности для бизнеса,
критического пути и точности проработки требований. Строим работу на
достижении требований, которые соответствуют целей итерации.
3.4. Шаг 4: Определяем лучший вариант из возможных
Самый сложный пункт. Анализируем все варианты, находим
преимущества и недостатки.
3.5. Шаг 5: Конкретизируем компоненты выбранной
концепции, определяем обязанности и интерфейсы
Как правило, в начале работы концепция формулируется в общем
виде. На данном этапе мы определяем все элементы подсистемы и
ответственность каждого, выбираем интерфейс, через который
компоненты взаимодействуют между собой.
3.6. Шаг 6. Делаем эскиз решения и краткое описание
Оформляем описание в наглядный документ, например, в виде
UML-диаграммы. Нужно также зафиксировать все принятые решения,
описать, на какие компромиссы мы пошли и какие альтернативы
рассмотрели. Это поможет в дальнейшем оценить аргументы в пользу
конкретной архитектуры и создать документацию.
3.7. Шаг 7. Проверка выполнения требований
На этом шаге методология рекомендует получить “второе мнение”
других опытных коллег-архитекторов, для того чтобы подойти к процессу
более объективно. Участие нескольких специалистов с их опытом и точкой
зрения на архитектуру поможет оперативно выявить недочеты, если они
есть.
11
соблюдая все ограничения. Но не обязательно проводить итерации
последовательно. Скорее всего, вы будете чередовать этапы
проектирования и реализации системы.
12
4. Отслеживаем прогресс
13
Часть 2: внедрение методологии ADD
1. Варианты использования
14
помощью метода HTTP,
который будет обрабатывать
регистрацию
UC-4 Создайте новую категорию Пользователь вводит данные
задачи, которые после проверки
будут отправлены на сервер с
помощью метода HTTP,
который будет обрабатывать
регистрацию
UC-5 Отметить задание как выполненное Чтобы отметить задачу как
завершенную, пользователь
должен нажать
соответствующую кнопку,
после чего идентификатор
соответствующей задачи будет
отправлен на сервер с помощью
HTTP-метода, что изменит
статус задачи
UC-6 Удалить задачу Чтобы удалить задачу,
пользователь должен будет
нажать соответствующую
кнопку, при этом ID
соответствующей задачи будет
отправлен на сервер через
HTTP-метод, который изменит
статус задачи.
UC-7 Удалить категорию Чтобы удалить категорию,
пользователь должен будет
нажать соответствующую
кнопку, при этом
идентификатор
соответствующей задачи будет
отправлен на сервер через
HTTP-метод, который изменит
состояние задачи
15
Рисунок 2 – Диаграмма вариантов использования
2. Атрибуты качества
ID Атрибут Описание
QA-1 Быстродействие Минимизировать вес приложения и тем
самым увеличить производительность и
разместить большее количество
пользователей.
QA-2 Масштабируемость Система должна быть способна справиться
с возросшей нагрузкой. Она неравномерна:
от 0 до 1000 запросов в секунду.
QA-3 Экономичность Необходимо оптимально использовать
вычислительные ресурсы, чтобы
16
минимизировать плату за их аренду.
QA-4 Эргономичный Система должна быть простой в
использовании, чтобы привлечь большое
количество пользователей.
Таблица 2 – Атрибуты качества
3. Ограничения
ID Описание
CON-1 Система должна быть развернута в облаке AWS.
CON-2 Данные пользователей будут храниться на Firebase.
CON-3 Код серверного приложения будет написан на PHP, а
клиентская часть будет написана на Vue.js
Таблица 3 – Ограничения
4. Архитектурные задачи
ID Описание
CRN-1 Спроектировать и описать высокоуровневую архитектуру
системы
Таблица 4 – Архитектурные задачи
5. Процесс проектирования
17
Основные функциональные требования указаны в таблице 1.
Давайте повторим здесь атрибуты качества и добавим требования к
приложению:
ID Важность Сложность
QA-1 Высокая Средняя
QA-2 Высокая Средняя
QA-3 Высокая Высокая
QA-4 Средняя Средняя
Таблица 5 – Атрибуты качества + уровень качества
18
5.3. Шаг 3: Выбор элемента системы для проработки
Прорабатываем структуру всей системы.
5.4. Шаг 4: Выбор архитектурных концепций
Архитектурой для реализации проекта и компонента является
архитектура MVC.
Model-View-Controller (MVC, «Модель-Представление-Контроллер»,
«Модель-Вид-Контроллер») – схема разделения данных приложения и
управляющей логики на три отдельных компонента: модель,
представление и контроллер – таким образом, что модификация каждого
компонента может осуществляться независимо.
Модель (Model) предоставляет данные и реагирует на команды
контроллера, изменяя свое состояние.
Представление (View) отвечает за отображение данных модели
пользователю, реагируя на изменения модели.
Контроллер (Controller) интерпретирует действия пользователя,
оповещая модель о необходимости изменений.
19
5.5. Шаг 5: Конкретизируем компоненты выбранной
концепции, определяем обязанности и интерфейсы
Решение Обоснование
Для клиентской части - Все вычисления на уровне интерфейса
мы будем использовать будут выполняться на стороне клиента
Vue.js (QA-1, QA-2, QA-3)
- Фреймворк Vue.js очень отзывчив и в
сочетании с хорошим дизайном будет
очень эргономичным (QA-1)
Серверная часть будет - К серверу будут обращаться только для
реализована в виде запросов (QA-1, QA-2, QA-3)
REST API
На стороне клиента - Это значительно сократит количество
будет реализована запросов клиентов к серверу (QA-1,
система кэширования QA-2, QA-3)
Таблица 6 – Конкретизируем компоненты выбранной концепции, определяем
обязанности и интерфейсы
5.6. Шаг 6: Определите интерфейсы для инстанцированных
элементов
20
5.7. Шаг 7: Анализ созданной архитектуры и прогресса
Цель итерации достигнута. Общая структура системы
спроектирована. В качестве основы мы выбрали проверенный временем
архитектурный стиль, подходящий под условия нашей задачи.
21
Заключение
22
Источник
- https://habr.com/ru/company/simbirsoft/blog/571554/
- https://en.wikipedia.org/wiki/Attribute-driven_design
- https://online-edu.mirea.ru/mod/resource/view.php?id=134906
- https://resources.sei.cmu.edu/library/asset-view.cfm?assetid=8319
- https://www.philadelphia.edu.jo/academics/lalqoran/uploads/SAADD.pdf
- https://jijoy.medium.com/attribute-driven-design-119d8467c6b5
- https://ru.wikipedia.org/wiki/Model-View-Controller
23
Список рисунков и таблиц
24