http://www.osp.ru/os/2005/07-08/185761/
Ефим Натис - Все возрастающее бремя сложности информационных технологий на предприятиях влечет за собой увеличение затрат и «усталость от инноваций».
Интересная статья, особенно про нормальные формы компонентов.
***
· Первая «нормальная» форма, с которой начинается инкапсуляция компонентов, — введение программного интерфейса. Любой программный модуль, доступный через хорошо известный интерфейс, достиг этой формы. Однако просто создание интерфейса еще не гарантирует, что функциональные возможности, скрытые под оболочкой интерфейса, будут иметь смысл для кого-то еще, кроме его создателя.
· Вторая «нормальная» форма предполагает, что интерфейс представляет одну и только одну законченную бизнес-функцию. Законченность бизнес-функции — понятие относительное, и интерфейс может иметь несколько точек входа. Тем не менее определение интерфейса во второй форме гарантирует его четкую дифференциацию от других, а также логическое обоснование объединения в одном интерфейсе конкретного набора точек входа. Не накладывается каких-либо ограничений ни на характер выдаваемых данных, ни на способ их обработки.
· Третья «нормальная» форма предполагает, что компонент управляет («владеет») данными определенного типа и не будет непосредственно обновлять другие типы данных. Обновления всех других данных должны выполняться путем обращения к интерфейсам других компонентов, «владеющих» этими данными. Управление данными — лишь внутренняя характеристика компонента (он обновляет только свои данные, не пытаясь осуществлять это по отношению к данным из других источников — такие операции могут происходить без его ведома). Для реализации третьей «нормальной» формы может потребоваться приведение внешних приложений хотя бы к первой форме — чтобы существовали интерфейсы для обновления других данных.
· Четвертая «нормальная» форма требует, чтобы доступ компонента к его «собственным» данным был исключительным — другие программы не имеют прямого доступа к этим данным. Для достижения такого уровня изоляции структура данных компонента не публикуется для открытого доступа. Публикуется только набор его интерфейсов для обеспечения полного контроля над обработкой данных вне компонента-«владельца».
· Наконец, пятая «нормальная» форма делает принадлежащие компоненту данные «непрозрачными» — вне компонента структура данных неизвестна. Даже метод долговременного хранения данных (если таковой используется) не известен за пределами компонента. Различные компоненты получают и хранят данные в разных формах и используют разные технологии, наилучшим образом отвечающие семантической природе этих данных. Долговременное хранилище непосредственно не доступно для семантического анализа и, таким образом, приобретает ранг средства резервного копирования. Основные оперативные данные всегда находятся внутри компонента. Возрастающая степень нормализации требует, чтобы структуры процессов и данных были тесно увязаны и, в конечном счете, превратились в единое целое. Основными становятся данные интерфейса, а не сохраненная запись, как практикуется сегодня. Компоненты в пятой нормальной форме инкапсуляции являются объектами. Такая степень инкапсуляции достигается редко — если вообще достигается.
По мере повышения уровня нормализации программной системы ее структура становится более согласованной, а реализация — более последовательной и управляемой. Кроме того, системы, находящиеся на более высоких уровнях нормализации, оказываются более доступными и эффективными без излишнего бремени сложности обслуживания и управления.
Большинство предприятий не стремятся к пятой «нормальной» форме: ее требования слишком высоки. К 2010 году основная часть новых программных систем для бизнеса будет находиться на уровнях нормализации с первого по третий. Однако поставщики технологий с целью дистанцирования от конкурентов станут вкладывать средства в более высокие уровни инкапсуляции. В течение последующих пяти лет, вероятно, появятся новые инструментальные средства, которые позволят проводить синергическую инкапсуляцию процессов и данных, чтобы поддерживать более высокие «нормальные» формы программной инкапсуляции.
Рекомендации. Любой шаг к нормализации — это продвижение к уменьшению сложности итоговой программной среды. Начните с первой «нормальной» формы и постепенно, по мере приобретения опыта, продвигайтесь к следующим уровням. На высоких уровнях нормализации, однако, действует закон убывающей отдачи: для получения дополнительных выгод требуются все большие вложения.