И. Соммервилл - Инженерия программного обеспечения (1133538), страница 150
Текст из файла (страница 150)
После этого генерируется но. вая программа, при этом операторы безусловного перехода заменяются циклами и условными операторами. Такая програима может быть написана как на исходном языке, так и на любом другом (например. программу на языке ГОВТВАХ можно конвертировать в про. грамму на С). Автоматизированный способ реструктуризации программ имеет свои проблемы. 1.
ИээгбЗя качмгяэюрк<э. Если в программе есть встроенные комментарии, они будут утеряны в процессе реструктуризации. 2. Утрата депэинжяккк По той же причине обычно нарушается соответствие между новой программой и документацией на исходную программу. Однако в большинстве случаев зто не так уж важно, поскольку документация и комментарии уже устарели.
578 ь1асть'1Ч1. Эволюция программного обеспечения 3. Жесткие пфебовляил к компьютерной змхнике Алгоритмы, встроснныс в средства рсструктуризации, отличаются высокой сложностью. Процссс рсструктуризацин больших программ, дажс выполненный на соврсмснпых быстродействующих компьютсрах, будет занимать много врсмсни. Если программа находится под управлением данных и программныс компоненты тссно связаны с использусмьпю структурами данных, реструктуризация кода нс обязатсльно значительно улучшит программу. Если программа была написана с помощью редкого варианта языка программированил, стапдартныс средства преобразования структуры моП г выполняться нскоррсктно, поэтому нсизбсжно ручное вмсшатсльство. Иногда нс стоит реструктуризировать всс программы систсмы. Некоторые программы могут отличаться хорошим качсством, другис нс подвергались большому количсству измснсннй.
которые поврсдилн бы их структуру. В работе 113! прсдлагастся набор показатслсй для выявления тсх программ, рсструкг>риэацня которых будет нзиболсс эффсктивной. Длл этого можно использовать слсдующис показатели: ° интснсивность сбоев в работе программы; ° процснтнос соотношение кода, нзмспснного на протяжснни года; ° сложность компонентов. При прсобразовании структ>ры программ такжс следует учитывать стспснь соотвстст. вия программ или системных компонентов сущсствующнм стандартам.
28.4. Создание программных модулей Это процссс рсорганизации программы в цслях объсдинсния сс взаимосвязанных частой в отдельном модуле. После этого легче удалить избыточность в соотвстств> ющих компонсн. тах, оптимизировать взаимосвязи и упростить интерфейс вссй программы. Напримср, в программе по обработкс ссйсмографичсских ланных всс онсрации по графическому прелставлснню данных можно собрать в один модуль. Если система будет распрсдслснной, моду. ли можно инкапсулнровать как объекты, доступ к которым будет осущсствллться через об. щий интерфейс. В программной систсмс можно выдслить различмыс типы модулей.
1. г!эсмракции данник Это абстрактные типы данных, которые создаются путем объсдинсния данных с компонснтами их обработки. Этот тип модулсй рассмотрен в разделе 28лй 1. 2. Аяларляньм людулк. Тосно связаны с абстракцией данных и объсдинлют всс функ. ции, управллющис отдсльными аппаратными устройствами. 3. Функциональные мэдули. Объсднняют всс функции, которые выполняют сходныс или взапмосвлзапныс задачи, Напримср, в один модуль можно объединить всс функции, выполияюнщс ввод данных и пх провсрьу.
Этот подход примснлстся там, гдс создание абстракций! данных нсвыгодно. 4. Мад>ии наддали озь>глькых ыроцессоз. В ннк сгруппированы всс функции и дапныс, отвсчающпс эа полдсржку отлсльного бизнсс.процссса. Напрпмср, в библиотсчной системе прпсугствуст модуль, объединяющий всс функции, отвсчаювьис эа выдачу и возврат книг.
28. Реинжениринг программного обеспечения 579 Разбиение программы на модули обычно выполняется вручную путем проверки и правки кода. Для этого следует, прежде всего, определить взаииосвязи между коипонентами и изучить способ их взаимодействия. Полностью автоматизировать этот процесс нельзя, дюкс если привлечь средства просмотра и визуализации програим. 28.4.1. Создание абстракций данных Чтобы сберечь дисковую память, многие из наследуемых систем работают на основе совместно используемых массивов и общих областей данных. Это значит, что информация в этих областях полностью доступна и различные части системы используют ее посвоему. Изменение общих областей данных экономически невыгодно из-за высокой стон. мости анализа влияния этих изменений па использование данных.
Именно для снижения стоимости таких изменений можно использовать разбиение программы на модули, построенные на основе абстракций данных. Абстракции данных (т.е. абстрактные типы данных) группируют сами данные и способы их обработки, что дс. лает их более изменяемымн. Абстракции данных скрывают способ представления данных и обеспечивают доступ к ннм. При хоро~по разработанном интерфейсе людуля данных та. кис изменения типов данных не повлияют на другие части программы. Чтобы преобразовать общие используемые области данных в объелты или абстрактные типы данных, следует выполнить ряд действий.
Е Провести анализ общих областей данных для выявления логических структур данных. Случается, что одну область используют данные нескольких разных типов. Такие ситуации следует выявлять и реконструировать. 2. Создать абстрактный тип данных или объект для каждой абстракции. Если в языке программирования нет способов сокрытия данных, можно имитировать абстрактный тип данных путем написания соответствующих функций, обеспечивающих об. новлснне и доступ ко всем полям записей данных. 3. Осуществить поиск всех ссылок на данные с использованием системы просмотра программ или генератора перекрестных ссылок. Заменить зти ссылки соотвстст. вующими функциями.
На первый взгляд эти действия покажутся достаточно простымн, хотя и отнимающими иного времени. Однако в действительности все гораздо сложнее из-за разных способов использования области совместных данных. В более старых версиях языков типа ГОКТКА1ч', у которых довольно ограниченный набор функций по струътурированню данных, программисты могли разработать достаточно сложные стратегии упраааения данными с помощью совместно используемых массивов. Последующие проблемы вьггекают из косвенной адресации совмеспю используемых структур, а также нз адресации со смсщениси. Проблемы другого рода возникают. если вычислительная машина, на которой вьпюлнялась исходная программа, имеет ограниченную память. В этом случае программисты в разных частях программы могли использовать одну область данных для хранения разных типов данных.
Такие явления распознаются только после детального статического и динамического анализа программ. 28.5. Изменение данных До сих пор все обсуждаемые изменения касались в основном програим и систем. Однако в некоторых случаях придется столкнуться с проблемой изменения данных. Хранение, структура и формат данных, с которыми работает наследуемая система, должны измс- 580 т$асть |Ч1. Эволюция программного обеспечения 1.
/1о)гуженко данных С течением времени качество данных снижается. Изменения дашпах становятся причиной новых ошибок, возможно дублирование значений, изменения во внешнем окружении системы могут не найти адекватного отражения в данных. Эти явления неизбежны, так как время существования данных бывает достаточно большим. Например, персональные данные в банковской системе появляются с созданием нового счета и существуют. по меньшей мере, а течение всей жизни хаиента. При изменении обстоятельств у клиента банковские данные должны обновляться, что нс всегда происходит корректно. Реинжениринг системы уменьшает эти трудности, что лишний раз подтверждает его необходимость.
2. Прог)>аиинмг оггюккчгния. При разработке систем многие програмзпшты включают в программы ограничения на количество обрабатываемых данных. Но согласно со. временным требованиям программы должны обрабатывать значительно больше данных, чем было предусмотрено ианачальпо. Именно для устранения подобных ограничений может понадобиться изменение данных. В книге (296) приведен при. мер системы управления ценными бумагами, которая была способна обрабатывать ло 99 транзакций за одну операцию. В компании, где эта система использовалась, осуществлялось управление 2000 транзакций, что вызвало иеобходплюсть в созлании 28 копий системы.
По этой причине впоследствии компания прияла решение о реинжениринге системы и изменении данных. 3. Эволюция сипягиной арлиюгктуры Прн переходе с централизованной системы иа распределенную ядром архитектуры должна стать система управления данными с удаленным доступом. Для перемещения данных из отдельных файлов на сервер системы управления базой данных (СУБД) может потребоваться большая работа по изменению этих данных. Как и в случае с реинженирингом программ, изменение данных имеет свои подходы и методы, которые перечислены в табл.
28.1. Таблица 28.1. Методы изменения данных Метод Описание Чистка данных Устраняется дублирование, стирается избыточная информация, ко всем записям применяется единый формат. Все это, как правило, ие влечет за собой никаких изменений в программах Данные н связанные с ними программы подвергаются реинженирин- гу для устранения ограничений на обработку данных. Например, уве- личивается длина полей, увеличиваются верхние границы массивов и т.п. Также вносятся соответствующие изменения в программы. После этого данные обычно псреэаписываются и очищаются Данные псреволятся под управление современной СУБД.