Глава 11 3 страница
Мы провели однодневное вступительное совещание, на котором присутствовали участники группы оценки, руководитель проекта, главный архитектор, а также руководитель проекта первого покупателя Nightingale. Троих последних можно причислить к категории лиц, ответственных за проект. В результате мы узнали много нового о возможностях системы и требованиях к ней, получили каталог готовой архитектурной документации (из которого мы выбрали нужные для наших целей документы) и составили список заинтересованных лиц, которых предполагалось пригласить во время проведения второго этапа. Кроме того, мы согласовали график проведения совещаний на первом и втором этапах и установили срок предоставления сводного отчета. Наконец, мы обговорили подробности презентаций, которые во время операций 2 и 3 первого этапа должны были сделать руководитель проекта и архитектор соответственно, и убедились в том, что им понятно, что мы хотим от них услышать. 1 Шесть оценщиков — это много. Как мы уже говорили, п группу оценки, как правило, входят от трех до пяти специалистов; и среднем — четыре. В данном случае группу расширили за счет двух новых сотрудников, которым предстояло ознакомиться с процессом АТАМ более подробно и на практике наработать опыт.
Позже, прежде чем приступать к первому этапу, мы провели двухчасовое совещание группы. Ее руководитель еще раз обозначил распределение ролей и проверил. все ли понимают свои обязанности. Далее он изложил краткий обзор полученной архитектурной документации, обратив внимание участников на указанные в ней образцы и тактики. В результате этого предварительного совещания несколько повысился уровень знании (а значит, и уверенность) оценщиков об архитектуре; кроме того, были заложены основы для выполнения четвертой операции — каталогизации образцов и методик. Наконец, на этом совещании документация Nightingale была признана неполной и неясной. Не говоря об отсутствии целых разделов, архитектура была в ней представлена в виде ряда недостаточно определенных блочно-линейных диафамм. Было очевидно, что. начни мы оценку сразу, концептуальная база для наших заключений оказалась бы неполной. Придя к такому выводу, мы позвонили архитектору и попросили его в устной форме устранить некоторые пробелы в наших знаниях. После этого, осознавая неполноту полученной информации, мы все же решили, что приступать к оценке можно. При этом мы запланировали каталогизацию риска, связанного с недостаточной документированностыо. Этап 1: оценка Согласно схеме первого этапа, участники группы оценки встретились с ответственными за проект лицами. Помимо специалистов, присутствовавших на вступительном совещании (руководитель проекта, главный архитектор и еще один руководитель проекта, представляющий первого покупателя Nightingale), к нам присоединились двое главных проектировщиков. Операция 1: презентация АТАМ В ходе презентации руководитель специалистов по оценке обратился к стандартному пакету схем нашей организации и с его помощью объяснил присутствующим суть метода. На протяжении часа он рассказывал им об операциях и этапах АТАМ, описывал концептуальные основы метода (сценарии, архитектурные методики, точки чувствительности и т. п.) и перечислял продукты, которые предполагалось получить в результате его проведения. Поскольку ответственные лица, присутствовавшие на совещании нулевого этапа, уже имели некоторое представление об АТАМ, презентация прошла без каких-либо заминок. Операция 2: презентация коммерческих факторов Руководитель проекта от компании-заказчика изложил коммерческие задачи, поставленные перед системой Nightingale компанией-разработчиком и потенциальными заказчиками. Как выяснилось, компания-разработчик предъявляла к Nightingale следующие требования: ♦ поддержка различных вариантов использования системы дебютным заказчиком (в частности, отслеживание историй болезни и платежных историй, выявление тенденций и т. д.); ♦ создание новой версии системы (предназначенной для установки в кабинетах врачей), которую компания-разработчик могла бы предлагать другим заказчикам. Последний коммерческий фактор свидетельствовав! о том, что на основе рас- сматриваемой архитектуры планировалось не просто разработать отдельную систему, а учредить целую линейку программных продуктов (см. главу 14). Первый заказчик Nightingale планировал развернуть ее взамен существующих систем, которые: ♦ устарели (одной из них было больше 25 лет); ♦ были основаны на старых языках и технологиях (в частности, COBOL и ассемблере IBM); ♦ оказались неудобными по части сопровождения; ♦ не отвечали текущим и перспективным коммерческим потребностям учреждений системы здравоохранения, в которых размещались. Первый заказчик выдвигал следующие коммерческие требования: ♦ способность реагировать на культурные и региональные различия; ♦ поддержка нескольких языков (в основном английского и испанского) и валют (в особенности американского доллара и мексиканского песо); ♦ быстродействие новой системы должно было быть по меньшей мере не меньшим, чем аналогичный показатель у заменяемых систем; ♦ новая единая система должна была сочетать в себе разнородные унаследованные системы управления финансами. Коммерческие ограничения были таковы: ♦ соблюдение принципа неувольнения сотрудников, осуществляемого путем их переподготовки; ♦ приверженность принципу разработки «лучше купить, чем сконструировать»; ♦ учет сокращения рыночного положения заказчика (за счет повышения конкуренции). Технические ограничения были сформулированы следующим образом: ♦ при любой возможности предпочтение следовало отдавать коробочным программным компонентам; ♦ реализовать систему требовалось в течение двух лет, имея в виду, что замена аппаратного обеспечения проводится регулярно, каждые 26 недель. Первостепенными были признаны следующие атрибуты качества: ♦ Производительность. Полезность систем здравоохранения измеряется скоростью реагирования. Пятисекундного времени отклика на транзакцию в старых системах было недостаточно; столь же неадекватным признавалось время отклика на оперативные запросы и на составление отчетов. Значимой проблемой в контексте производительности была также пропускная способность системы. ♦ Практичность. Из-за высокой текучести среди пользователей системы значительную важность представляла проблема их переподготовки. Таким образом, новая система должна была стать удобной в применении и легко осваиваемой. ♦ Удобство сопровождения. Система должна быть удобной в сопровождении, легко конфигурируемой и расширяемой. Только в этом случае она сможет адаптироваться к выходу на новые рынки (в частности, к размещению в кабинетах врачей), удовлетворять новым требованиям заказчиков, приспосабливаться к изменению законов и норм штатов и к культурным и региональным различиям. Нижеследующие атрибуты качества руководитель проекта признал важными, но не в такой степени, как вышеперечисленные: ♦ Безопааюстъ. Система должна была соответствовать коммерческому стандарту безопасности (другими словами, обеспечивать конфиденциальность и целостность данных) для систем управления финансами. ♦ Готовность. В рабочие часы от системы требовалось высокая готовность. ♦ Расширяемость. В перспективе расширять систему предполагалось для ее адаптации к потребностям крупных больниц, а сокращать — в расчете на самые миниатюрные клиники. ♦ Модульность. Компания-разработчик планировала продавать не только новые версии Nightingale в целом, но и ее отдельные компоненты. Для того чтобы осуществить эту затею, необходимо было реализовать атрибуты качества, близкородственные удобству сопровождения и масштабируемости. ♦ Контролепригодность и удобство поддержки. Система должна была быть доступной для понимания техническими специалистами в штате заказчика; такая необходимость обусловливалась перспективами обучения персонала и продолжительного использования. Операция 3: презентация архитектуры В ходе совместной работы участников группы оценки и архитектора — как до, так и во время оценки — было сформулировано несколько новых представлений архитектуры и архитектурных методик. Основные выводы состояли в следующем. ♦ В составе Nightingale было две крупные подсистемы: диспетчер оперативных транзакций (OnLine Transaction Manager, OLTM) и диспетчер принятия решений и составления отчетов (Decision Support and Report Generation Manager, DSRGM). OLTM должен был отвечать требованиям по интерактивной производительности, a DSRGM исполнял роль системы пакетной обработки, исполнявшей периодически инициируемые задания. ♦ При конструировании системы Nightingale в ней предусматривалась высокая конфигурируемость. ♦ Подсистема OLTM состояла из нескольких четко разделенных уровней. ♦ Nightingale была системой репозитарного типа; ее основу составляла крупная коммерческая база данных. ♦ Nightingale испытывала исключительную зависимость от коробочного программного обеспечения; в такой форме в ней были реализованы центральная база данных, процессор правил, механизм автоматизации документооборота, CORBA, блок веб-хостинга, инструменты распределения программных средств и многое другое. ♦ Для Nightingale было характерно строгое следование объектно-ориентированной технологии и реализация конфигурируемости по большей части за счет объектных каркасов.
На рис. 11.2 показано многоуровневое представление OLTM, изображенное архитектором в неформальной нотации. На рис. 11.3 представлена схема функционирования OLTM в период исполнения — основные потоки информации и данных между частями системы, размещенными на различных аппаратных процессорах. Обе схемы мы приводим почти без изменений, для того чтобы наилучшим образом отразить реальные условия проведения оценки по методу АТАМ. Обратите внимание на их неполное соответствие — на рис. 11.2 диспетчер транзакций и CORBA присутствуют, а на рис. 11.3 их нет. Подобного рода упущения во время оценки случаются сплошь и рядом, и в этом смысле значительную важность представляет один из шагов третьей операции, во время которого оценщики, пытаясь лучше понять архитектуру, задают вопросы о несоответствиях на диаграммах. Аналогичное представление периода прогона для OLTM, где любую транзакцию можно проследить в масштабе всей системы, показано на рис, 11.4; здесь,
опять же, замечаем ряд несоответствий, которые на этот раз связаны с отсутствием расшифровки значения стрелок. По нашему заключению, эти стрелки также изображают потоки данных. Все перечисленные представления системы Nightingale в равной степени разумны и несут важную смысловую нагрузку. На них изображены отдельные аспекты, значимые в контексте различных задач. Все они впоследствии были задействованы при проведении аналитических действий в рамках АТАМ. Операция 4: выявление архитектурных методик Ознакомившись с презентацией архитектуры, участники группы оценки составили список всех упомянутых в ней архитектурных методик и дополнили его теми, о которых услышали в ходе обзора документации перед началом оценки. Получилось, что основные методики таковы: ♦ многоуровневая организация, в особенности в OLTM; ♦ объектно-ориентированная технология; ♦ реализация модифицируемости через конфигурационные классы без записи или перекомпиляции; ♦ обработка транзакций по схеме «клиент-сервер»;
♦ информационно-ориентированный архитектурный образец с коммерческой базой данных в качестве основы. Эти и другие методики составили концептуальную основу, исходя из которой, приступив к анализу сценариев, участники группы оценки задавали испытательные вопросы. Операция 5: генерация дерева полезности атрибутов качества Дерево полезности, составленное во время проверки системы Nightingale по методу АТАМ, представлено в табл. 11.5. Обратите внимание — на нем присутствуют все атрибуты качества, установленные в ходе операции 2; более того, они уточнены до одного или нескольких конкретных значений. Некоторые уточнения атрибутов качества остались без связанных сценариев. В этом нет ничего необычного и страшного. Иногда люди измышляют разумное с первого Всгляда уточнение, но, столкнувшись с необходимостью его конкрстизации в контексте собственной системы, обнаруживают его несостоятельность. Для того чтобы все участники группы оценки могли постоянно сверяться с деревом полезности, секретарь по результатам записывал имя каждого атрибута качества на отдельный лист лекционного плаката и наклеивал его на стену. Впоследствии, по мере уточнения каждого отдельного атрибута и его конкретизации сценариями, секретарь фиксировал всю необходимую информацию на этом и наклеенных ниже лекционных плакатах1. 1 Кроме того, мы пробовали составлять деревья полезности к оперативном режиме — заполняли таблицы, подобные табл. 11.5, и проецировали их непосредственно с компьютера. При таком подходе дерево легче составлять и корректировать, однако доступным для просмотра участниками остается содержание одного-сдинственного экрана. В то же время обзор дерева во всей его полноте стимулирует умственную деятельность и помогает находить бреши. Программные системы для совместной работы будто бы идеально подходят для подобных ситуации, однако по простоте, надежности и экономичности им сложно тягаться с лекционными плакатами и клейкой лентой.
Сценарии в табл. 11.5 сопровождаются указанием приоритетов, распределенных участниками из числа ответственных лиц. В каждой упорядоченной паре символ до запятой обозначает значимость соответствующей возможности; символ после запятой отражает оценку архитектора относительно сложности ее реализации. Обратите внимание — одни сценарии без труда формулируются исходя из ранее полученных данных, в других отсутствуют стимулы, в третьих — реакция. Неточности в спецификациях сценариев на данном этапе допустимы — главное, чтобы заинтересованные лица понимали, о чем идет речь. Если сценарий отбирается для проведения анализа, его, конечно, следует снабдить явными стимулом и реакцией. Операция 6: анализ архитектурных методик Сценарии с приоритетом (В,В) — иначе говоря, отличающиеся высокой значимостью и трудностью реализации и в связи с этим заслуживающие особого внимания в ходе анализа — на дереве полезности отсутствуют. По этой причине мы перешли к поиску сценариев с приоритетом (В,С). Оказалось, что они в изобилии представлены в группе атрибута «модульность» и связаны с заменой в составе системы разного рода коробочных продуктов. Несмотря на то что эти продукты были введены в систему целенаправленно, в соответствии со стратегией снижения рисков разработки для руководителей проекта это решение вылилось в нескончаемую головную боль — ведь все вело к тому, что система (а значит, и ее покупатели) подпадет под влияние многочисленных производителей. Следовательно, в их собственных интересах было реализовать гибкость архитектуры, которая позволила бы без труда заменять коробочные продукты. Вместе с архитектором мы проработали несколько сценариев. На каждый ушло в среднем полчаса[4]. Поскольку все они оказались связаны с внесением изменений, мы резонно поинтересовались их диапазоном и воздействием. Выяснили мы следующее. ♦ Замена одной коммерческой базы данных другой, приобретенной у нового производителя, обещала стать трудным занятием. В масштабе всей системы использовался один из диалектов SQL (надмножество SQL по стандарту ANSI), специфичный для производителя текущей базы данных, а также ряд не менее специализированных инструментов и компонентов. По мнению архитектора, замена базы данных была бы крайне маловероятна, в связи с чем он не брал в расчет высокую стоимость перехода на новую систему. Впрочем, руководитель проекта не выказал столь же твердой уверенности в невозможности развития событий по рассматриваемому сценарию. Таким образом, мы зафиксировали первый установленный на основе анализа архитектурный риск: «Поскольку в системе Nightingale используются специфичные для конкретного производителя инструменты и компоненты, а также диалект SQL не поддерживаемый или несовместимый с базами данных других производителей, произвести замену базы данных будет очень сложно и отнюдь не дешево — весь процесс займет несколько человеко-лет». Архитектурное решение о связывании архитектуры с конкретной базой данных мы обозначили как точку чувствительности с отрицательным воздействием на модифицируемость. ♦ Заменить одну операционную систему другой было бы довольно просто. На стороне сервера операционная система была выделена на отдельный уровень, что способствовало локализации изменений. С другой стороны, подсистема OLTM напрямую зависела от средств аутентификации NT, а значит, от новой операционной системы требовались аналогичные свойства. Что касается DSRGM, то здесь все зависимости от операционной системы были исключены на уровне исходного кода — дело в том, что разработка этой подсистемы проводилась на платформе Windows NT, а размещена она была на платформе UNIX; отсюда очевидный вывод о ее полной независимости от операционной системы. В связи с этим мы зафиксировали первое нерискованное решение: «Поскольку зависимости от операционной системы в подсистемах OLTM и DSRGM локализованы или исключены, введение новой операционной системы вместо старой не предполагает сколько-нибудь серьезных модификаций». Инкапсуляцию зависимостей от операционной системы мы отметили как точку чувствительности с положительным воздействием на модифицируемость. ♦ Мы установили ряд проблем, связанных с внесением изменений в процессор правил. Считать такой сценарий надуманным нет никаких оснований — как мы выяснили, текущий процессор не отличался высокими характеристиками производительности и удобства сопровождения. Вероятнее всего, впоследствии его бы просто исключили, а правила реализовали бы средствами C++. Поскольку прямое построение цепочек правил не разрешалось (что было вполне разумно и объяснялось желанием отложить соответствующее решение на более поздний период), правила в силу их процедурного характера можно было скомпилировать. Подобная модификация, скорее всего, привела бы к нескольким серьезным последствиям. - Повышение производительности (хотя бесспорного решения эта проблема на тот момент еще не получила). - Устранение необходимости в обучении сотрудников языку правил и объяснению им принципа действия процессора. - Группе разработчиков не пришлось бы создавать полезные правила и среду моделирования. - Правила, возможно, «закопались» бы в код C++ и сплелись с функциональным кодом, не имеющим прямого отношения к правилам; отсюда — затруднения по части их обнаружения и сопровождения. - Возможность размещения в правилах ссылок на несуществующие объекты, вероятно, удалось бы исключить. В современном варианте эта возможность, обусловливавшая возникновение ошибок, существовала и имела серьезные шансы, просочившись через тестирование, попасть в производственную систему. Путем составления правил средствами C++ подобные ошибки можно было бы устранить уже в период компиляции.
В расчете на подобные изменения можно было написать генератор правил в виде кода C++. Против такого решения свидетельствовали существенный объем работ и их сложность, остававшаяся неизвестной. Итак, для рассмотренного сценария мы зафиксировали риск, связанный с трудностью исключения процессора правил. Сам факт применения этого процессора (в противоположность коду C++) мы обозначили как точку компромисса в архитектуре — ведь упрощение разработки и внесения изменений в базу правил достигалось за счет снижения производительности, необходимости в подготовке персонала и усложнения тестирования. И так далее. Впоследствии, в рамках того же сценария, мы проанализировали замену коммерческого блока веб-хостинга, коммерческого бухгалтерского пакета, механизма автоматизации документооборота и операционной системы Solaris на платформах Sun, На этом совещание, проводившееся в рамках первого этапа, завершилось. Нам удалось зафиксировать шесть точек чувствительности, одну точку компромисса, четыре рискованных и пять нерискованных решений. Этап 2: оценка (продолжение) На втором этапе, выдержав двухнедельный перерыв, мы вновь созвали совещание. Во время этого перерыва участники группы оценки занимались составлением сводного отчета — точнее, тех его частей, которые уже можно было закрывать. В частности, они описали коммерческие факторы и архитектуру согласно ее презентации, привели список методик, изобразили дерево полезности и изложили результаты анализа, проведенного на первом этапе. Кроме того, мы несколько раз созванивались с архитектором, пытаясь уточнить некоторые технические вопросы, и с руководителем проекта, который должен был обеспечить адекватное представительство заинтересованных лиц во время проведения второго этапа. На втором этапе, помимо ответственных лиц, участвовавших в проведении предыдущего этапа, присутствовали десять новых заинтересованных лиц: разработчики, специалисты но сопровождению, представители первого заказчика и два конечных пользователя. В первую очередь, специально для новых участников, мы повторили первую операцию (описание метода АТЛМ), а для того чтобы привести знания всех присутствующих к единому знаменателю, рассказали о результатах первого этапа. После этого мы приступили к выполнению операций 7, 8 и 9.
Операция 7: мозговой штурм и расстановка сценариев согласно приоритетам Заинтересованные лица поработали на славу — всего в ходе этой операции о*ни огласили 72 сценария. Более десятка из них были отражены на листьях дерева полезности, которое мы составили во время операции 5, но на первом этапе до их анализа дело не дошло. Это вполне нормально, даже полезно. Таким способом заинтересованные лица давачи нам понять, что некоторые сценарии заслуживают большего внимания, чем то, которое они получили на первом этапе. В табл. 11.6 приводятся наиболее интересные из всех сценариев, зафиксированных в ходе операции 7. Одни сформулированы на редкость удачно, иные, напротив. не слишком очевидны. Учитывая стихийный характер мозгового штурма, предполагающего активное участие всех присутствующих, в этом нет ничего страшного. Чем тратить ценное время на вылизывание каждого сценария, мы предпочитаем записывать высказываемые соображения сразу, как только они появляются. Если какой-то сценарий перед голосованием или анализом требуется откорректировать, мы с готовностью это сделаем (естественно, не без участия того человека, который его предложил).
|