Аудит, разработка и модернизация архитектуры программного обеспечения

Консалтинг_Модернизация_архитектуры_ПО_large

В наше время стремительного развития новых технологий важно идти в ногу со временем, а значит максимально эффективно использовать доступные на сегодняшний день возможности.

Оптимизация процессов, связанных с разработкой ПО, позволяет улучшить взаимодействие разработчиков в команде и понимание конечных целей команды, выявить риски, снизить количество ошибок в ПО, которые попадут к заказчику, и организовать более быстрое введение в проект новых участников. В конечном итоге оптимизировать и снизить затраты на сопровождение продукта.

Анализ процессов разработки ПО:

  • проведение аудита архитектуры;
  • проведение аудита исходного кода;
  • выявление рисков и узких мест;
  • использование инструментария, версионность;
  • максимальная автоматизация процессов (непрерывная интеграция);
  • рекомендации по оптимизации и улучшению процесса.

Аудит архитектуры ПО:

  • анализ требований;
  • обобщенный документ по архитектуре:
    • контекст системы и пользователи;
    • функциональность;
    • нефункциональные требования и принципы разработки;
    • высокоуровневая архитектура;
    • компоненты;
    • развертывание.
  • риски архитектуры;
  • безопасность (базовые практики);
  • анализ используемых сторонних решений;
  • аудит процесса тестирования;
  • рекомендации по оптимизации и улучшению процесса.

Аудит кода:

  • организация кода;
  • стиль и именование, поддержка, соглашения над конфигурацией;
  • автоматизация получения ранних отзывов о проблемах «fast fail»;
  • практики статического анализа кода, получение различных метрик;
  • практики юнит-тестирования, измерения покрытия кода тестами;
  • практики перекрестного аудита кода в команде;
  • рекомендации по оптимизации и улучшению.

Преимущества оптимизации процессов разработки:

  • выявление узких мест процесса разработки, возможностей оптимизации, получение метрик;
  • выявление более оптимального использования инструментария;
  • помощь в оптимизации различных процессов разработки ПО;
  • снижение затрат на поддержку ПО.