1. ДИЗАЙН
Функциональный дизайн
Функциональный дизайн – это основа проекта по разработке программного обеспечения. Сбор и анализ функциональных требований есть в любом проекте, в небольших проектах этот этап может протекать незаметно для его участников. Каждый проект начинается с обсуждения того, что именно нужно сделать, как система должна работать, сколько будет у системы пользователей и что они будут с ней делать. Для небольших проектов такое обсуждение и есть этап функционального дизайна, для более крупных проектов это только его начало. Как показывает практика, функциональные требования полезно фиксировать в письменном виде. Для написания функциональных требований мы применяем сценарии использования (use cases). Эта методика позволяет описать сложные процессы простыми словами, а главное делает их понятными для всех заинтересованных лиц. Заказчик может написать требования совместно с исполнителем, а может и самостоятельно. Наличие готовых функциональных требований позволяет заказчику получить он кандидатов-исполнителей более точные, детальные сметы проектов за более короткий срок.
Технический дизайн (Разработка ТЗ)
На основе функциональных требований компания-разработчик разрабатывает Техническое Задание (ТЗ). Помимо функциональных требований в ТЗ фиксируются и нефункциональные требования, т.е. не только, что именно нужно сделать, но и как это делать. Несмотря на то, что это технический документ ТЗ пишется на языке понятном заказчику. Как правило, ТЗ является основной спецификацией, прикладываемой к контракту, и если оно будет не понятно заказчику, то в дальнейшем практически неизбежны разочарования, когда после окончания всех работ и сдачи проекта выяснится, что заказчик не сможет использовать разработанное ПО. ТЗ является необходимой частью любого проекта. Оно должно быть написано и согласовано до начала разработки. Опыт показывает, что именно наличие согласованного ТЗ гарантирует, что будет сделано именно то, что описано в ТЗ и так, как описано в ТЗ. В случае необходимости кроме ТЗ мы пишем также углубленные технические спецификации.
2. РАЗРАБОТКА
Разработка модулей
Разработка программного обеспечения, несомненно, творческий процесс, но, не смотря на это, он требует от программиста не только должной квалификации, но и сосредоточенности, внимательности, а также следования технологии. Мы следуем стандартам написания и комментирования кода, а также применяем практику Code-review. Эти методики дополнительно гарантируют качество разработанного нами кода, а также его удобство и понятность для дальнейшего развития системы и ее поддержки.
Модульное тестирование
Модульное тестирование проходит по мере создания модулей или частей системы. Этот этап тестирования состоит из двух частей: тестирование самим разработчиком с применением Unit-тестов и проверки готового функционала тестировщиком. Самостоятельное тестирование программистом позволяет выявить на данном этапе технологические проблемы, а тестировщик на раннем этапе выявляет функциональные дефекты системы. Модульное тестирование позволяет обнаружить и исправить дефект еще на стадии разработки, а значит сделать его исправление максимально дешевым.
Сборка системы
После того как все модули разработаны и проверены, происходит сборка всей системы. Модули, разработанные разными специалистами, интегрируют между собой.
Промежуточные демонстрации системы заказчику
По мере необходимости или по желанию заказчика мы проводим промежуточные демонстрации системы заказчику. Эта практика позволяет заказчику самостоятельно отслеживать статус работ по созданию его системы, делает весь процесс разработки ПО более прозрачным. Опыт показывает, что демонстрации позволяют исключить возможное непонимание исполнителем замыслов заказчика. Однажды, в ходе такой презентации неожиданно выяснилось, что заказчик не предусмотрел изменений в структуре своего бизнеса, что потребовало серьезных изменений и в разрабатываемой системе.
3. ТЕСТИРОВАНИЕ
Разработка корпоративных информационных систем, и особенно разработка приложений, критических для бизнеса, требует, как правило, модульного, нагрузочного, регрессионного и интеграционного тестирования. Создание информационных систем узконаправленной функциональности так же нуждается в адекватном тестировании. Не всегда разработка приложений требует дорогостоящего разностороннего тестирования. Например, в разработке прототипа для обкатки нового бизнес-процесса важна скорее оперативность проверки жизнеспособности идеи. Однако при запуске коммерческих операций, особенно в startup компаниях, когда бизнес может быть подкошен на взлете из-за досадных и глупых ошибок в программном обеспечении, качественное тестирование становится одним из ключевых моментов в успехе бизнеса.
4. НАПИСАНИЕ ДОКУМЕНТАЦИИ
Документация – это важная составляющая удобства эксплуатации и поддержки созданной системы. В зависимости от целей и пожеланий заказчика могут быть созданы самые различные документы, такие как руководство пользователя или администратора, описание системы и многие другие. Пока система только создается или вводится в эксплуатацию потребность в документации практически не чувствуется, т.к. вся важная информация свежа в памяти. Поэтому, зачастую, созданию документации уделяют недостаточное внимание. Вся значимость этой составляющей проявляется после того, как проходит время, и срабатывает человеческий фактор: кто-то увольняется, или люди просто забывают какие-то важные детали, которые раньше казались очевидными. Опыт показывает, что наличие документации по системе может в будущем сильно сэкономить время и деньги владельца ПО.
5. ПЕРЕДАЧА ЗАКАЗЧИКУ
Презентация ПО
В случае необходимости или по желанию заказчика мы проводим презентацию системы для специалистов заказчика. В ходе презентации разработчики рассказывают об основных функциях системы, тонкостях настройки, проводят обучение пользователей и администраторов, а также отвечают на вопросы. Как показывает практика, такая презентация способствует наискорейшему началу использования системы для поддержки бизнеса.
Установка/Настройка
Установка и настройка системы в зависимости от специфики системы может длиться продолжительное время и требовать определенной компетенции администратора. Мы стараемся предусмотреть все сложности, с которыми можно столкнуться в ходе установки или настройки. Опыт показывает, что следование детальной инструкции позволяет избежать большого числа проблем. По согласованию с заказчиком наши специалисты сами проводят установку или настройку системы или принимают необходимое участие в этом процессе.
Sanity-тестирование
Sanity-тестирование – это первое испытание системы после установки. Цель такого тестирования убедиться в работоспособности системы именно на этом оборудовании, в этой инфраструктуре и конфигурации. Проверка осуществляется в минимальном объеме, т.е., что все модули запущены и основные бизнес сценарии выполняются успешно.