Заполните форму или отправьте нам письмо

Процесс разработки

Процесс первичного проектирования, разработки, и внедрения it-решений в нашей компании

Дмитрий Юркин
13 августа 2020
6 минут на чтение

Для первичной разработки мы используем адаптированный вариант методологии Rational Unified Process. Методология использует итеративную модель разработки. Длительность итерации зависит от фазы и специфики проекта и может длиться от 2 до 6 недель. По результатам итерации должны быть достигнуты промежуточные цели, созданы проектные артефакты, на фазе разработки — промежуточные функционирующие релизы. Итерации не рассматриваются сами по себе (как, например «спринты» при поддержке проекта) и являются внутренней вехой проекта по разработке.

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

У процессов нет жестких ограничений, т.к. в кастомных проектах в процессе производства может возникнуть необходимость доработки требований, дополнительного анализа или других работ. Интенсивность процессов производства зависит от фазы проекта и изображена на графике ниже.

Фазы разработки

Первичная разработка включает в себя весь цикл работ для реализации проекта от высокоуровневых требований до ввода в эксплуатацию.

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

  • Основные процессы
  • Управление требованиями
  • Техническое проектирование
  • Программирование
  • Стабилизация и тестирование
  • Развертывание и внедрение
  • Инфраструктура
  • Поддерживающие процессы
  • Управление проектом
  • Управление продуктом
Начальная стадия
Предварительная итерация
Проектирование
Разработка
Внедрение

Начальная стадия

Начальная стадия зачастую осуществляется еще до подписания основного договора и заключается в первичном погружении в проект, формировании видения проекта.

На этом этапе собираются общие требования к проекту, формируется перечень основных функциональных (начальная версия модели прецедентов) и нефункциональных требований, оцениваются риски и объем работ для реализации проекта.

По итогам начальной стадии принимается решение о варианте сотрудничества (фиксированная оценка, отдельный договор на проектирование или аренда команды).

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

Проектирование

Проектирование – один из ключевых этапов работ над проектом, т.к. на этом этапе формируется детальное понимание конечного продукта.

На этом этапе осуществляется подробная проработка и документирование изначальных требований, включая детальное описание для большинства функциональных требований (прецедентов использования), а также прототипирование пользовательских интерфейсов. Если в проекте это предусмотрено, параллельно разрабатывается дизайн-концепция пользовательского интерфейса.

Результатом стадии проектирования является спецификация требований к ПО в виде wiki-сайта и набор визуальных кликабельных прототипов пользовательского интерфейса. Это позволяет снизить основные риски проекта, связанные с неоднозначностью требований или ошибкой в оценке.

Зачастую, по мере готовности и согласования спецификации и прототипов, техническое проектирование тоже начинается на этой фазе.

Фаза проектирования может быть оформлена отдельным договором, что позволит осуществить глубокую оценку объема работ и рисков проекта до начала активной разработки.

Результатом этапа является набор артефактов, основные из которых:

Спецификация требований

Wiki-сайт со структурированным описанием функциональных и нефункциональных требований.

Прототипы

Набор кликабельных прототипов для всех под-систем взаимодействующих с пользователем.

Разработка

На фазе разработки осуществляется основная работа по программированию и тестированию продукта. В эти работы входят:

  • Техническое проектирование (при комплексной разработке начинается на этапе проектирование);
  • Написание программного кода для систем, задействованных в проекте;
  • Промежуточное тестирование внутренних релизов;
  • Подготовка серверной инфраструктуры для тестовой и эксплуатационной площадок;
  • Разработка комплекта дизайн-макетов пользовательского интерфейса и их верстка;

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

Результатом фазы разработки является альфа-версия продукта.

Внедрение (ввод в эксплуатацию)

Внедрение – это завершающий этап работ в рамках первичной разработки проекта.

Внедрение включает сразу несколько как технических, так и организационных процессов:

  • Финальная подготовка эксплуатационной площадки, ввод в эксплуатацию;
  • Если в проекте есть мобильные приложения – публикация приложений в маркетах;
  • Подготовка пользовательских инструкций;

На этапе внедрения также продолжаются работы по стабилизации и тестированию, в том числе эксплуатационной (production) версии.

Результатам этапа внедрения является начало эксплуатации продукта.

Процессы производства

Основные процессы
Управление требованиями

Работы, необходимые для постановки задачи, оценки объема и формирования подробного видения продукта при первом релизе и на ближайшее будущее.

Задачи

  • Сбор и анализ требований
  • Формулирование функциональных требований и критериев приемки
  • Формулирование нефункциональных требований
  • Формулирование интеграционных требований
  • Формирование модели данных
  • Прототипирование пользовательских интерфейсов

Артефакты

  • Спецификация требований к ПО (wiki-сайт)
  • Функциональные требования
  • Модель данных
  • Интеграционные требования
  • Нефункциональные требования
  • Прототипы пользовательских интерфейсов

Техническое проектирование

Формирование технического проекта, включающего описание программной логики, элементов и компонентов (сервисы, репозитории, модели, контроллеры и т.д.), принципов межсистемного взаимодействия, серверной архитектуры (инфраструктуры) и т.д.

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

Артефакты

  • Технический проект
  • Структура базы данных
UI/UX

Разработка дизайн-концепции пользовательского интерфейса и разработка полного комплекта макетов для экранов в соответствии с прототипами.

Артефакты

  • Дизайн-концепция
  • Комплект дизайн-макетов
Программирование

Процесс разработки кода включает широкий спектр работ, результатом которых является работающее ПО. Разработка кода осуществляется на основе следующих артефактов:

  • Спецификация требований к ПО
  • Прототипы пользовательского интерфейса
  • Технический проект
  • Комплект дизайн-макетов (процессы верстки и front-end разработки)

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

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

Стабилизация и тестирование

Этап стабилизации и тестирования, фактически является продолжением этапа разработки, но с введением в работе QA-специалистов. Обычно этап стабилизации начинается за 1-2 месяца до завершения проекта, когда есть готовность порядка 80% работ по разработке кода.

На этапе тестирования и стабилизации осуществляется ручное и автоматизированное функциональное тестирование, тестирование API и другие процессы проверки результатов. Также готовятся инструменты для формализации тестирования: тест-кейсы, чек-листы и т.д.

С этого момента работа QA-специалистов с проектом не прекращается.

Развертывание и внедрение

На этапе развертывания и внедрения осуществляется работа публикации и финальной подготовке эксплуатационной и тестовых версий. Если в проекте есть мобильные приложения, на этом этапе осуществляется их публикация в маркетах.

Обеспечение серверной инфраструктуры

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

Для MVP версии эти работы обычно минимальны, т.к. нет требований по обеспечению высоких нагрузок и отказоустойчивости. После релиза, по мере роста проекта эти требования могут появиться и это повлечет рост объема работ по серверной инфраструктуре.

Поддерживающие процессы
Управление проектом

Административное управление проектом:

  • Подготовка проектной среды
  • Формирование команды
  • Планирование и контроль задач
  • Административные задачи (выставление счетов, актов и т.д.)

Управление продуктом

Управление и контроль концептуальной и смысловой части разрабатываемого продукта. Это много различных работ, у которых есть две ключевые задачи:

  • Сохранить фокус на бизнес-задачах клиента в процессе всей разработки от старта до внедрения
  • Внести дополнительную ценность в продукт за счет опыта компании, современных решений и т.д.

IT-решения для бизнеса.

Проектируем. Разрабатываем.
Обслуживаем.