Функциональный дизайн
Ключевым моментом разработки информационных систем является Функциональные Требования (ФТ). Для написания функциональных требований Instream использует
и рекомендует использовать сценарии использования (use cases). В этом случае написанные требования легко читаются и наиболее просто отражают
пожелания заказчика. Функциональные требования пишутся либо заказчиком самостоятельно, либо совместно с исполнителем. Написание функциональных
требований очень полезно, и мы рекомендуем их писать до выбора компании-разработчика. Во-первых, при написании функциональных требований ярко
проявится эффект аппетита, приходящего во время еды. Крайне желательно чтобы этот эффект проявился на ранних этапах проекта, когда он не может
привести к срывам сроков и раздутию сметы по ходу работ.
Во-вторых, если в создании информационной системы заинтересованы несколько служб компании-заказчика, то ключевые игроки на этапе написания ФТ
отследят свои интересы и "утрясут" неизбежные противоречия. В-третьих, с написанными ФТ процесс выбора компании-разработчика будет более коротким
по времени и менее рискованным, так как позволит разработчикам-кандидатам более оперативно и предметно оценить сроки и назвать стоимость работ.
Разработка ТЗ
На основе функциональных требований компания-разработчик разрабатывает Техническое Задание (ТЗ), которое также полезно писать на языке сценариев
использования и обязательно на языке, понятном заказчику, несмотря на то, что это "техническое" задание. Как правило, ТЗ является основной
спецификацией, прикладываемой к контракту, и если оно будет не понятно заказчику, то в дальнейшем практически неизбежны разочарования,
когда после окончания всех работ и сдачи проекта выяснится, что заказчик не сможет использовать разработанное ПО. Если необходимо, то разработчики
всегда могут написать для своего внутреннего использования другие технически углубленные спецификации.
Отсутствие ТЗ, согласованного до того, как начнется разработка программного кода, является одним из опаснейших источником проблем, способным
загубить проект в целом. На основе технического задания разработчики разрабатывают программное обеспечение, а тестировщики - тестовые сценарии.
Очень важно чтобы тестовые сценарии были написаны на основе того, что написано в ФТ и ТЗ, а не на основе программных спецификаций, так как тесты
должны проверить, насколько качественно выполнено задание заказчика, а не просто, работает ли программа. В случае сложной системы выполняется
модульное тестирование, позволяющее снизить риски сборки системы из полуфабрикатов, и провести затем комплексное тестирование за минимальное
количество времени и итераций.
Разработка ПО и тестирование
Разработка корпоративных информационных систем, и особенно разработка приложений, критических для бизнеса, требует, как правило, модульного,
нагрузочного, регрессионного и интеграционного тестирования. Создание информационных систем узконаправленной функциональности так же нуждается
в адекватном тестировании.
Не всегда разработка приложений требует дорогостоящего разностороннего тестирования. Например, в разработке прототипа для обкатки нового
бизнес-процесса важна скорее оперативность проверки жизнеспособности идеи. Однако при запуске коммерческих операций, особенно в start-up
компаниях, когда бизнес может быть подкошен на взлете из-за досадных и глупых ошибок в программном обеспечении, качественное тестирование
становится одним из ключевых моментов в успехе бизнеса.
Также по опыту Instream в разработке новых приложений важно использовать промежуточные демонстрации заказчику работающих прототипов
пользовательского интерфейса на как можно более ранних этапах разработки ПО. Это позволит снять возможное непонимание исполнителем
замыслов заказчика.
Казалось бы, индустриальный подход к написанию программ должен сделать этот процесс забюрократизированным и не гибким. Однако как раз
соблюдение технологии и знание того, какие технологические приемы когда должны применяться, работают на скорейшее и экономное создание
работающего программного обеспечения. Если разработчики уделяют специальное внимание тому, чтобы процесс разработки ПО был гибким,
то он будет таким же простым и увлекательным, как и разработка программ для курсовиков в студенческие годы.