Внешнее проектирование
Внешнее проектирование – это этап описания ожидаемого поведения разрабатываемого программного продукта с точки зрения внешнего по отношению к нему наблюдателя [3]. Цель этого этапа – «конструирование» внешних взаимодействий будущего продукта (обычно с пользователем) без конкретизации его внутреннего устройства. Внешний проект выражается в форме внешних спецификаций, предназначенных для широкой аудитории, включающей пользователя (для проверки и одобрения), авторов документации для пользователя, всех участвующих в проекте программистов, а также всех тех, кто будет заниматься тестированием продукта.
Подготовка полных и правильных внешних спецификаций – самая ответственная задача в разработке программного обеспечения, поскольку внешние спецификации участвуют в наибольшем числе этапов разработки ПО.
Хотя методологии внешнего проектирования не существует, важно соблюдать принцип концептуальной целостности. Концептуальная целостность – это гармония (или стремление к ней) между внешними функциями системы; в соответствии с этой концепцией лучше иметь относительно небольшой набор хорошо согласованных функций, чем, возможно, больший набор независимых и нескоординированных функций. Особенности, которые кажутся привлекательными, но не согласуются с остальными, вероятно, следует отклонить, чтобы не усложнять взаимодействия с пользователем.
Концептуальная целостность представляет собой меру единообразия способа взаимодействия с пользователем. Система, лишенная концептуальной целостности, – это система, в основе которой нет единообразия; в результате такая система характеризуется слишком сложным взаимодействием с пользователем и излишне сложной структурой. Поскольку концептуальная целостность – всего лишь идея, ее трудно описать в деталях, так как она изменяется в зависимости от применения. Например, система с разделением времени, обладающая концептуальной целостностью, будет иметь, по крайней мере, следующие характеристики. Все возможности, доступные пользователю переднего плана, доступны также пользователю заднего плана (фоновый режим), и наоборот. Все запросы обладают внутренней симметрией по отношению к синтаксису, именам, операндам, соглашениям и правилам умолчания. Семантика всех запросов согласована. Например, блоки вводимых данных для аналитической и имитационной модели должны совпадать, насколько это возможно, т.е. одинаковые переменные должны называться одинаково и располагаться в том же порядке. Характеристики терминала и сообщения об ошибках – общие для всех запросов.
Простейший способ добиться отсутствия концептуальной целостности – попытаться разрабатывать внешний проект слишком большой группой. В зависимости от масштабов проекта ответственность за внешнее проектирование должны нести один-два человека.
Опыт показал, что вероятность успеха резко падает, когда число разработчиков превосходит два, даже для крупного проекта. Это не означает, что в процессе проектирования должны принимать участие только двое; требуется только, чтобы они несли ответственность за этот процесс. В случае крупного проекта этим людям необходима помощь исследователей, ассистентов, чертежников, секретарей и т.д. Помощники занимаются сбором и обработкой информации, но не проектированием, т.е. принятием решений или собственно написанием спецификаций.
Внешнее проектирование мало чем связано с программированием; более непосредственно оно касается обстановки, проблем и нужд пользователя, психологии общения человека с машиной. Более того, эта сторона внешнего проектирования становится все более значимой по мере того, как применение ЭВМ все больше начинает затрагивать пользователей, не знакомых с программированием. Из-за сложностей внешнего проектирования и его возрастающей важности для разработки ПО оно требует специалистов особого рода. В качестве возможных кандидатов можно назвать системных аналитиков, психологов, занимающихся вопросами поведения, инженеров, а возможно, и опытных специалистов по теории программирования (если их подготовка включает упомянутые области).