Оценка архитектуры линейки продуктов
Архитектуру линейки программных продуктов, равно как и любую другую архитектуру, необходимо оценить на предмет соответствия поставленным задачам. Более того, поскольку от нее зависит сразу несколько систем, оценка архитектуры линейки становится мероприятием еще более значимым, чем обычно. Облегчает задачу то обстоятельство, что все методики оценки, описанные ранее, в полной мере распространяются на варианты архитектуры линейки продуктов. Архитектуру необходимо проверить на робастность и универсальность — атрибуты качества, без которых она не сможет служить основой систем в предполагаемой области действия линейки продуктов. Кроме того, проверку следует провести на предмет соответствия требованиям по поведению и атрибутам качества, предъявленным к конкретному продукту. Начнем мы с обсуждения содержательной стороны и методологической основы проведения оценки, после чего обратимся к ее временным характеристикам. Что и как оценивать Основным предметом оценки должны стать изменяемые параметры — целесообразность их введения, обеспечение ими гибкости, распространяющейся на всю предполагаемую область действия линейки продуктов, оперативность конструирования продуктов и отсутствие неприемлемых издержек производительности в период прогона. Если оценка проводится на основе сценариев, они должны быть ориентированы на конкретизацию архитектуры до отдельных продуктов семейства. Кроме того, вполне возможно, что требования по атрибутам качества в зависимости от конкретных продуктов варьируют, — отсюда необходимость в оценке способности архитектуры организовать все затребованные сочетания атрибутов. Следовательно, выявленные сценарии должны охватывать все требования по атрибутам качества, предъявляемые к членам семейства продуктов. Довольно часто сведения об аппаратном обеспечении и ряде других факторов, влияющих на заложенную в архитектуре линейки продуктов производительность, в период оценки остаются неизвестными. В таких случаях о диапазоне аппаратных средств и прочих переменных параметрах принимаются некие допущения, на основе которых определяется диапазон реализуемой в архитектуре производительности. Иногда в ходе оценки удается выявить области потенциального состязания, для разрешения которых вводятся специальные политики и стратегии. Когда приступать к оценке Объектом оценки должен стать экземпляр или вариация архитектуры, предназначенная для конструирования одного или нескольких продуктов в рамках линейки. Специализация оценки зависит от степени различия вариантов архитектуры продуктов-участников линейки (в том, что касается атрибутов качества) от архитектуры линейки в целом. Если различия незначительные, оценку вариантов архитектуры отдельных продуктов можно сократить, благо многие вопросы будут решены в ходе оценки архитектуры линейки. Архитектура любого продукта ость вариация архитектуры линейки продуктов. Аналогичная ситуация складывается и с их оценкой. Таким образом, в зависимости от конкретного метода оценки у ее артефактов (сценариев, контрольных списков и т. д.) будет тот или иной потенциал повторного использования, и в ходе их создания это обстоятельство нужно иметь в виду. Результаты оценки вариантов архитектуры продуктов часто содержат ценную для архитекторов линейки ответную информацию и тем самым стимулируют архитектурные усовершенствования. Если в линейку продуктов планируется включить новый продукт, выходящий за рамки ее первоначальной области действия (с учетом которой и проводилась оценка архитектуры линейки), для проверки соответствия этого продукта линейке в целом нелишне провести повторную оценку общей архитектуры. Если соответствие установлено, область действия линейки продуктов можно расширить в расчете на включение в нее нового продукта или даже вывести на его основе новую линейку. Если же установить соответствие не удается, оценка поможет определить изменения, которые необходимо внести в архитектуру для приспособления к новому продукту. Оценка вариантов архитектуры отдельных продуктов и линейки в целом помогает, во-первых, выявить рискованные с архитектурной точки зрения решения и, во-вторых (если проводить оценку по методу СВАМ — см. главу 12), определить продукты, сулящие наибольшие выгоды. 14.5. Факторы, усложняющие применение линеек программных продуктов На создание удачной линейки продуктов компания-разработчик затрачивает довольно много ресурсов, и дело не только в технологическом барьере. Не меньшую важность в контексте получения выгоды от линеек программных продуктов представляют организационные, процессные и коммерческие факторы. Согласно результатам исследований, проведенных в Институте программной инженерии, существует 29 проблем, или «практических областей» (practice areas), которые обусловливают успешность учреждения компаниями линеек программных продуктов. Многие из них в равной степени применимы при разработке единичных систем, в то же время в контексте линеек продуктов они приобретают новое измерение. Приведем два примера: определение архитектуры и управление конфигурациями. Операция определения архитектуры важна для любого проекта, однако, как мы установили в предыдущем разделе, в рамках линейки программных продуктов она ориентируется на выявление изменяемых параметров. Управление конфигурациями, также актуальное для всех без исключения проектов, в контексте линеек программных продуктов демонстрирует тенденцию к усложнению — связано это с тем, что каждый продукт - участник линейки являет собой результат связывания многочисленных вариаций. Основная задача, которая ставится перед управлением конфигурациями в линейках продуктов, предусматривает воспроизведение всех версий всех продуктов, поставленных всем заказчикам; под «продуктом» здесь имеется в виду код, а также вспомогательные артефакты к диапазоне от спецификации требований и контрольных примеров до руководств пользователя н инструкций по инсталляции. Для решения этой задачи необходимо знать версии базовых средств, задействованные при конструировании конкретных продуктов, механизмы их приспособления, а также дополнительным специализированный код и документацию. Обсуждать все аспекты производства линеек продуктов мы не намерены — в следующем разделе мы рассмотрим лишь несколько значимых областей, демонстрирующих количественные различия между процессами разработки линейки продуктов и единичной системы. С нижеприведенными проблемами на этапе обсуждения перспективы внедрения линейки программных продуктов сталкиваются все без исключения организации. Стратегии принятия Внедрение в компании линеек программных продуктов мало чем отличается от внедрения любых других технологий — налицо одни и те же проблемы. Способ их разрешения зависит от организационной культуры и конкретного контекста. Нисходящим принятием называется ситуация, в которой решение о введении линеек программных продуктов принимает руководитель компании. Задача в этом случае заключается в том, чтобы на практике заставить сотрудников изменить устоявшиеся привычки. При восходящем принятии проектировщики и разработчики, работающие на уровне продуктов, осознают бессмысленность дублирования результатов деятельности друг друга, переходят к совместному использованию ресурсов и наполняют массив общих базовых средств. Труднее всего в этом случае найти руководителя, готового поспособствовать принятию методики в масштабе всей компании. Оба способа принятия вполне жизнеспособны, и оба существенно облегчаются при наличии сильного лидера (champion) — человека, прекрасно разбирающегося в различных вопросах построения линеек продуктов и готового поделиться своими знаниями с другими. Ортогональным относительно проблемы «как направить распространение технологии» является вопрос о развитии собственно линейки продуктов. Здесь главенствующую роль играют две основные модели (Перечисленные ниже модели сформулированы Чарльзом Крюгером (Charles Krueger) в ходе последнего дагштульского семинара по линейкам программных продуктом (www.dagstuhl.de)). В рамках активной (proactive) линейки продуктов разграничение семейства осуществляется путем всестороннего определения области действия. Сотрудники компании принимают соответствующее решение отчасти случайным образом, однако посылками для них служат опыт работы в данной прикладной области, знание рыночной ситуации и технологических тенденций, а также коммерческое чутье. Из двух моделей роста линеек продуктов активная модель предоставляет наиболее широкие возможности — в частности, она позволяет ответственным лицам в компании принимать долгосрочные стратегические решения. Явное определение области действия линейки продуктов облегчает выявление ниш» недостаточно разработанных присутствующими на рынке продуктами, и за счет незначительно расширения линейки продуктов дает возможность их заполнения. Иначе говоря, активная область действия линейки продуктов позволяет разрабатывающей ее компании принимать независимые решения о своей будущности. В некоторых случаях возможность прогнозирования потребностей рынка с той степенью определенности, которую предполагает активная модель, отсутствует. Так происходит, если линейка разрабатывает новую предметную область, рынок претерпевает колебания или если компания обнаруживает неспособность единовременно построить фонд базовых средств, охватывающий всю область действия. В таком случае ситуация, как правило, развивается по реактивной (reactive) модели. Решение о создании каждого последующего члена семейства продуктов принимается исходя из ассортимента существующих продуктов. С каждым новым продуктом архитектура и решения расширяются по мере необходимости, а фонд базовых средств составляется из тех элементов, которые оказались общими, — в противоположность активной модели, в которой общность подлежит предварительному планированию. Вообще, перспективному планированию и вопросам стратегического направления в рамках реактивной модели уделяется не слишком много внимания. Таким образом, компания оказывается в полной зависимости от рыночных тенденций. Знакомство с различными моделями принятия позволяет ответственным лицам в компании делать осознанный выбор в пользу одной из них. Активная модель предполагает значительные начальные капиталовложения, однако объем дальнейших исправлений существенно уменьшается. Реактивная модель, напротив, основывается на исправлениях и дополнениях, однако практически исключает начальные расходы. Предпочтение гой или другой следует отдавать в зависимости от экономической ситуации. Создание продуктов и развитие линейки продуктов В активе любой компании, учредившей линейку продуктов, должна быть ее архитектура и прочие связанные с ней элементы. Время от времени компании создают новых членов линейки, обладающих общностью по отдельным характеристикам с остальными членами, но отличающихся от них в других отношениях. Одна из задач, связанных с линейками продуктов, заключается в контроле над ее развитием. С течением времени линейка продуктов — в особенности набор базовых средств, на основе которых конструируются продукты, — эволюционирует. Движущие силы этой эволюции делятся на внешние и внутренние.
|