Процессы

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

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

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

Методологии

Мы принимаем индивидуальный характер как наших проектов, так и заказчиков как должное, и именно поэтому используем для каждого отдельного случая наш фундаментальный, но персонализированный подход.
Например, мы используем как давно зарекомендовавший себя "водопадный" метод разработки ПО, так и новейшие методологии Agile, Scrum и Kanban.

"Водопадный" метод разработки идеален для проектов с четко формализованными задачами и фиксированным объемом работ, т.е. для небольших и средних по масштабу проектов. "Водопадный" метод включает в себя следующие этапы:

  • Разработка требований к системе, разработка и утверждение технического задания;
  • проектирование и макетирование;
  • разработка;
  • поставка;
  • поддержка.

Agile, Scrum, Kanban и другие методологии имеют свои отличительные особенности:

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

Также совокупно с ними хорошие результаты приносят методологии Test Driven Development (разработка через тесты), Behavior Driven Development (разработка через реализацию поведения), XP (экстремальное программирование) и их элементы: Pair Programming (парное программирование), Collective Code Ownership (совместное владение кодом), Code Review and Audit (обзор существующего кода и аудит), Refactoring (итерационное улучшение архитектуры приложения) и другие. Данные подходы наиболее приемлемы для быстро развивающихся и видоизменяющихся проектов, проектов с укороченным жизненным циклом, а также в тех случаях, когда заказчик не имеет возможности формализовать задачи и зафиксировать объемы работ.

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

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

Схематичные примеры процессов

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

RFP

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

Consulting

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

Redesign/Re-engineering

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

Redesign/Re-engineering

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

Единственное, чем отличается оффшорная разработка от неоффшорной, — это процессом коммуникации, но Интернет делает и это различие несущественным. Мы общаемся с нашими заказчиками в основном через Интернет (e-mail, Skype, Hangout, ICQ, IRC). Разумеется, наши сотрудники часто посещают наших клиентов и принимают их у нас в офисе. Тем не менее, Интернет остается основной средой делового общения.