До сих пор все обсуждаемые изменения касались в основном программ и систем. Однако в некоторых случаях придется столкнуться с проблемой изменения данных. Хранение, структура и формат данных, с которыми работает наследуемая система, должны измениться, чтобы соответствовать изменениям в программном обеспечении. Изменение данных — это процесс анализа и реорганизации структуры данных, а иногда еще и изменение значений системных данных.
В принципе, если функциональность системы осталась прежней, изменения данных не требуется. Однако существует ряд причин, которые вынуждают изменять данные (так же, как и программы) наследуемой системы.
1. Нарушение данных. С течением времени качество данных снижается. Изменения данных становятся причиной новых ошибок, возможно дублирование значений, изменения во внешнем окружении системы могут не найти адекватного отражения в данных. Эти явления неизбежны, так как время существования данных бывает достаточно большим. Например, персональные данные в банковской системе появляются с созданием нового счета и существуют, по меньшей мере, в течение всей жизни клиента. При изменении обстоятельств у клиента банковские данные должны обновляться, что не всегда происходит корректно. Реинжениринг системы уменьшает эти трудности, что лишний раз подтверждает его необходимость.
2. Программные ограничения. При разработке систем многие программисты включают в программы ограничения на количество обрабатываемых данных. Но согласно современным требованиям программы должны обрабатывать значительно больше данных, чем было предусмотрено изначально. Именно для устранения подобных ограничений может понадобиться изменение данных. В литературе известен пример системы управления ценными бумагами, которая была способна обрабатывать до 99 транзакций за одну операцию. В компании, где эта система использовалась, осуществлялось управление 2000 транзакций, что вызвало необходимость в создании 23 копий системы. По этой причине впоследствии компания прияла решение о реинжениринге системы и изменении данных.
3. Эволюция системной архитектуры. При переходе с централизованной системы на распределенную ядром архитектуры должна стать система управления данными с удаленным доступом. Для перемещения данных из отдельных файлов на сервер системы управления базой данных (СУБД) может потребоваться большая работа по изменению этих данных.
Как и в случае с реинженирингом программ, изменение данных имеет свои подходы и методы, которые перечислены в табл. 1.
Таблица 1. Методы изменения данных
Метод | Описание |
Чистка данных | Устраняется дублирование, стирается избыточная информация, ко всем записям применяется единый формат. Все это, как правило, не влечет за собой никаких изменений в программах |
Расширение возможностей обработки данных | Данные и связанные с ними программы подвергаются реинженирингу для устранения ограничений на обработку данных. Например, увеличивается длина полей, увеличиваются верхние границы массивов и т.п. Также вносятся соответствующие изменения в программы. После этого данные обычно перезаписываются и очищаются |
Миграция данных | Данные переводятся под управление современной СУБД. Этот подход проиллюстрирован на рис. 7 |
Рис.7. Миграция данных
Проблемы с данными, возникающие в наследуемых системах, состоящих из нескольких программ коллективного пользования:
1. Проблема именования данных. Имена могут быть зашифрованы и трудны для восприятия. Одному и тому же логическому элементу в разных программах могут присваиваться разные имена. С другой стороны, одно и то же имя в разных программах используется для именования различных элементов.
2. Проблема длины полей. Возникает в тех случаях, когда длина поля определена непосредственно в программе. Одному и тому же элементу записи может быть определена разная длина в разных частях программы, либо длина поля слишком мала для представления текущих данных.
3. Проблема организации записей. Записи, относящиеся к одному и тому же элементу, в разных программах могут быть представлены по-разному. Обычно эта проблема возникает с такими языками программирования, как COBOL, где физическая организация записей определяется программистом. В языках типа C++ или Java такой проблемы не существует, так как физической организацией записей занимается компилятор.
4. Проблема констант. Константы (литеральные величины), например налоговые ставки, часто определены в программе, что затрудняет создание символьных ссылок на них.
5. Отсутствие словаря данных. Часто отсутствует словарь данных, в котором отображены применяемые имена, их представления и использование.
Если определения данных несовместимы или противоречивы, их значения могут храниться и обрабатываться некорректно. Примеры несовместимости и противоречивости данных приведены в табл. 2. После изменения определений данных их значения преобразуются так, чтобы соответствовать новой структуре данных.
Таблица 2. Примеры несовместимости и противоречивости значений данных
Данные | Описание |
Различные значения по умолчанию | В различных программах одному и тому же логическому элементу данных могут быть присвоены разные значения по умолчанию. Это вызывает трудности в работе программ, которые обрабатывают эти данных. Особая проблема: недопустимое значение присваивается по умолчанию как допустимое |
Различные единицы измерения | Разные программы представляют одинаковую информацию в разных единицах измерения. Например, в США и Великобритании вес может измеряться в фунтах (если взять более старую программу) и в килограммах (в современных системах). Проблема такого же рода возникла в Европе с введением единой валюты. Пришлось изменять системы, рассчитанные на работу с национальной валютой, для того чтобы они смогли работать с евро |
Несовместимость правил проверки данных | В разных программах различные правила проверки данных. Данные, приемлемые для одной программы, могут не восприниматься другой. Особая проблема возникает с архивными данными, которые не обновлялись в соответствии с изменениями правил проверки |
Противоречия в семантике представлений | Программы могут присваивать значения в зависимости от способа представления элементов. Например, в некоторых программах текст в верхнем регистре означает адрес. Программы используют различные соглашения о представлении данных и поэтому могут не воспринимать данные, хотя они и будут верными |
Несогласованность при обработке отрицательных величин | В некоторых программах величинам, которые должны быть всегда положительными, не может быть присвоено отрицательное значение. Другие программы при предъявлении отрицательных величин могут конвертировать их в положительные и т.д. |
|
На первом этапе процесса изменения данных модифицируются определения данных. На сами данные такая модификация не оказывает влияния. Чтобы автоматизировать этот процесс, можно использовать системы сопоставления с образцом. Несмотря на это, ручной работы над данными практически невозможно избежать. Если ставится цель улучшить понимаемость определений данных, то работу можно остановить на этой стадии. Если же имеются проблемы со значениями данных, описанные выше, следует начать второй этап процесса изменения данных.
После второго этапа обязательно идет третий — преобразование данных. Обычно это очень дорогостоящий процесс. Для его реализации создаются программы, аккумулирующие информацию о старой и новой структурах данных. Здесь опять применяется система сопоставления с образцом.