Основные характеристики качества

preview

Атрибуты качества - это метрики, позволяющие определить достигнуты ли поставленные цели и измерить количественно степень их достижения. Определить качество проекта или системы. Атрибуты должны измеряться количественно и быть проверяемыми.

Атрибуты качества могут быть внешними и внутренними, внешние - идут от заказчика или видны заказчику, внутренние идут от архитектора или видны команде.

Цикл разработки программного обеспечения (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 тестирование)

Тестирование должно внедряться поэтапно, по мере усложнения проекта, раннее тестирование влечет сильное замедление в работе. Так же существуют проблемы в зрелости команды.