Основные характеристики качества
Атрибуты качества - это метрики, позволяющие определить достигнуты ли поставленные цели и измерить количественно степень их достижения. Определить качество проекта или системы. Атрибуты должны измеряться количественно и быть проверяемыми.
Атрибуты качества могут быть внешними и внутренними, внешние - идут от заказчика или видны заказчику, внутренние идут от архитектора или видны команде.
Цикл разработки программного обеспечения (SDLC) - оценка и проверка атрибутов качества, должны быть обязательной частью цикла разработки и внедрения ПО или системы.
- Сопровождаемость (Maintainability) - определяет насколько удобно вносить изменения в систему, делать анализ неисправностей, в том числе проводить реверс.
- Модифицируемость (Modifiability) - устойчивость системы к внесению изменений (отсутствие регрессий)
- Юзабилити (Usability) - удобство использования системы
- Доступность (Availability) - устойчивость системы к сбоям
- Тестируемость (Testability) - контроль за характеристиками системы
Сопровождаемость
Duration: 10
Основные направления: - Коррекция - Совершенствование - Адаптация - Проактивность
Фиксация ошибок (коррекция)
Задача: минимизировать риски связанные с регрессиями.
Данный вид сопровождение направлен на фиксирование текущих проблем (багов) и организацию работы по их устранению. В процессах управления за это направление отвечает инцидент менеджемент. Основные характеристики инцидентов: приоритет (высокий, низкий), влияние (сильное, слабое), срок устранения. Архитектор может взять уже готовые системы классификации, в случае необходимости упростить или усложнить систему оценки.
Срок исполнения - обязательная характеристика инцидента, без срока это уже не инцидент
При сложных, композитных проблемах управление инцидентами дополняется процессом устранения проблем.
Развитие системы (совершенствование)
Задача: минимизировать риски связанные с новыми внедрениями и выдержать сроки внедрения.
Развитие системы включает в себя несколько важных процессов: - планирование и внедрение фич - технология разработки - тестирование (с позиции технологии разработки) - технологические миграции - минимизация рисков и оптимизация сроков внедрения
Адаптация системы (адаптивность)
Задача: разработать систему с вариативным поведением, способную работать в разном окружении и адаптированную к мобильной, веб и другим средам функционирования.
В данное направление включаются следующие процессы: - CI/CD - организация процесса управления конфигурацией
Проактивная аналитика (проактивность)
Задача: уменьшение технического долга, контроль над техническим долгом.
Основные процессы: - Анализ процессов управления - Ревью кода, проекта - ревью проекта делается отдельным спринтом, ревью кода - часть процесса разработки - Мониторинг версий - Мониторинг рынка технологий
Модифицируемость
Duration: 10
Основная проблема связана с монолитными архитектурами, поэтому при проектировании системы для обеспечения расширяемости и модифицируемости учитываются следующие принципы:
- декомпозиция - принцип разделяй и влавствуй, разделение зон ответственности, шлюзы и интерфейсы
- усиления связанности - фокусировка на бизнес задачах, удаление многословности
- ослабление зацепления - поиск баланса в гранулированности системы, повторном использовании, управление "дублированием" (без дублирования нельзя! Но дублирование - это плохо)
Метрики
- Lines of code (плохо, но лучше чем ничего)
- Цикломатическая сложность - количество незвисимых путей работы кода
- Глубина наследования
Юзабилити
Duration: 5
Архитектор не отвечает за проектирование интерфейсов ПО и удобство использования софта, но отвечает за организацю процессов качество, касающихся дизайна. Сюда входит:
- организация обратной связи
- формирование требований с заказчиком
- работа с UX-дизайнерами
- автоматизация тестирования (e2e)
- документирование
- локализация
Доступность
Duration: 10
Системы работающие по принципу клиент-сервер, имеют отдельный атрибут качества - доступность. Известная проблема - высокая стоимость последнего процента. Так как доступность обычно измеряется в процентах аптайма, то чем ближе к 100% тем каждый шаг становится дороже.
Высокая доступность определяется "девятками", т.е. количеством девяток, в цифре доступности (99%, 99.9%)
Метрики: - Время доступности - Обычно доступность определяется как процент покрытия "планируемого" времени доступности к фактическому, так же вместо планируемого времени может выступать календарный год или месяц. - Success Rate (коэффициент успеха) - количество всех транзакций к количеству успешных
Виды мониторинга: - ресурсный (пинг, место, память, таймсириес данные) - бизнес
Типы агентов: - агентский мониторинг - безагентский мониторинг
Восстановление после сбоев
Сбоем считается ситуация, которая привела к деградации сервиса. Деградацией считается нарушение SLA, где зафиксированы числовые значения для метрик.
Методы борьбы со сбоями: - Транзакционный контроль - Резервирование (холодное, горячее) - Резервное копирование (бэкап, снапшоты)
Тестирование
Duration: 5
Тестирование должно быть автоматизируемым, чтобы быть частью CI/CD. Сегодня это золотой стандарт разработки. Но так же необходимо ручное тестирование, организация работы тестеров и этапность внедрения (stage).
Основные направления: - Тестирование системы (e2e, юзер тесты) - Тестирование модулей (unit тестирование)
Тестирование должно внедряться поэтапно, по мере усложнения проекта, раннее тестирование влечет сильное замедление в работе. Так же существуют проблемы в зрелости команды.