В современное время технологии развиваются с очень высокой скоростью и это сказывается на процессах проектирования информационных систем (ИС). Проектирование ИС очень трудоемкий и длительный по времени процесс, требующий высококвалифицированных специалистов. При этом, из-за высокой скорости развития технологий, требования пользователей постоянно повышаются или изменяются, что делает процесс проектирования еще более сложным. Для повышения эффективности проектирования ИС применяют гибкие методологии, шаблоны проектирования и подход системной инженерии. В данной статье описаны три вида шаблонов и показано, как их применение позволяет повысить эффективность процесса проектирования информационных систем.
Ключевые слова: шаблон, проектирование системы, информационная система.
Процесс проектирование ИС
Традиционный подход проектирования информационных систем сейчас не актуален, потому что у него слишком много ограничений (высокая неопределенность, плохой контроль качества, слишком долго и дорого и т. п.). Современный подход проектирования информационных систем предоставляет гарантии, что система будет создана к установленному времени в пределах выделенных денежных средств и будет соответствовать определенному качеству, с помощью методологий проектирования систем.
Существует много различных методологий, например, SSADM (Structured System Analysis and Design Methodology), IE (Information Engineering) или SSM (Soft Systems Methodology) [2]. Для того, чтобы процесс проектирования был более понятнее и надежнее в независимости от подхода к нему опытные проектировщики повторно используют те решения, которые оказывались удачными в прошлом. Создавая или находя хорошее решение один раз, его применяют снова и снова, то есть используют шаблоны проектирования.
Описание шаблона проектирования ИС
Шаблон (от англ. pattern) или паттерн проектирования информационных систем — это общее решение, подходящее для повторного использования, часто возникающей проблемы проектирования ИС. Паттерн не является готовым решением, которое можно просто добавить в проектируемую систему и решить проблему. Он является повторяемым архитектурным решением, который описывает подход к решению проблемы и применяется в различных ситуациях. Шаблоны бывают трех видов: порождающие, структурные и поведенческие (шаблоны поведения).
Порождающие шаблоны
Стандартный способ создания объектов или классов может привести к проблемам в архитектуре или к ее усложнению. Порождающие шаблоны пытаются устранить эти проблемы, используя механизмы создания объектов и классов, которые обеспечивают удобное и безопасное создание новых объектов и классов, в соответствующих ситуациях. Они позволяют сделать ИС независимой от способа создания, композиции и представления объектов. На рисунке 1 представлены порождающие паттерны [1].
Рис. 1. Порождающие паттерны
Порождающие шаблоны используются, когда информационная система больше зависит от композиции объектов, чем от наследования классов. Они инкапсулируют знания об определенных классах и скрывают детали того, как создаются и соединяются классы. Порождающие паттерны предоставляют дополнительную гибкость при ответах на вопросы: «Что и как создается?» и «Кто и когда создает?».
Примером шаблона, порождающего классы, является фабричный метод. Он определяет интерфейс для создания объекта, но оставляет подклассам решение о том, какой экземпляр класса создать. А примером шаблона, порождающего объекты, является абстрактная фабрика, который предоставляет интерфейс для создания семейств взаимосвязанных или взаимозависимых объектов, не специфицируя их конкретных классов.
Структурные шаблоны
Трудно определить более простой способ реализации отношений между большим количеством объектов и классов. Структурные шаблоны — это модели, которые рассматривают, как объекты и классы объединяются и образуют более крупные структуры. Они позволяют найти более простой и надежный способ реализации отношений между объектами и классами. Структурные паттерны уровня класса используют механизм наследования для составления композиций из интерфейсов и реализаций, а уровня объекта применяют механизм компоновки объектов для получения новой функциональности. На рисунке 2 представлены структурные паттерны [1].
Рис. 2. Структурные паттерны
Структурные шаблоны уровня класса применяются, когда необходимо организовать совместную работу нескольких независимо разработанных библиотек или интерфейсов классов, тем самым повышая гибкость проектирования ИС. Гибкость, предоставляемая структурными шаблонами уровня объекта связана с предоставлением возможности изменения композиции объектов во время выполнения, что недопустимо для статической композиции классов.
Примером структурного паттерна уровня класса является адаптер. Он преобразует интерфейс одного класса в интерфейс другого, который ожидают пользователи, и обеспечивает совместную работу классов с несовместимыми интерфейсами. А примером структурного паттерна уровня объектов является заместитель, который является суррогатом другого объекта и контролирует доступ к нему.
Поведенческие шаблоны
Структурные шаблоны определяют более простой и надежный способ реализации отношений классов и объектов, но не позволяют оптимизировать взаимодействия между ними. Поведенческие шаблоны позволяют устранить этот недостаток. Они распределяют обязанности между объектами и классами и позволяют управлять алгоритмами, отношениями и обязанностями между ними. Как и структурные шаблоны, поведенческие, используют механизм наследования на уровне класса для распределения поведений между разными классами и механизм композиции на уровне объекта для распределения выполняемых объектами обязанностей. На рисунке 3 представлены поведенческие паттерны [1].
Рис.3. Поведенческие паттерны
Как правило, используется несколько поведенческих шаблонов вместе, также они хорошо сочетаются и с другими шаблонами. Поведенческие паттерны характеризуют процесс управления, за которым сложно проследить во время выполнения ИС. Внимание акцентировано не на самом процессе управления как таковым, а на связях между объектами.
Примером поведенческого шаблона уровня класса является шаблонный метод. Он определяет основу алгоритма и позволяет подклассам переопределить некоторые шаги алгоритма, не изменяя его структуру в целом. А примером уровня объектов является наблюдатель, который определяет зависимость типа «один-ко-многим» между объектами таким образом, что при изменении состояния одного объекта все зависящие от него оповещаются об этом и автоматически обновляются.
Заключение
Использование шаблонов упрощает проектирование информационных систем в независимости от применяемого командой подхода к процессу. Вместо повторного изобретения велосипеда, используются готовые решения, что позволяет сократить сроки проектирования и количество ошибок. Паттерны обеспечивают надежность и ускоряют процесс проектирования, потому что применяются проверенные решения, в которых давно найдены все скрытые проблемы. Также шаблоны проектирования ИС позволяют повысить коммуникацию между членами команды, потому что можно произнести название шаблона, вместо длительного объяснения решения, каждому члену команды, которое было разработано с нуля.
Литература:
- Э. Гамма, Р. Хелм, Р. Джонсон, Дж. Влиссидес. Приемы объектно-ориентированного проектирования. Паттерны проектирования. — СПБ: Питер, 2003. — 368 с.
- Сухомлинов А. И. Анализ и проектирование информационных систем: учебное пособие для вузов. — Владивосток: Дальневост. федерал. ун-т, 2016. — 360 с.
- [Электронный ресурс]. Режим доступа: https://refactoring.guru/ru/refactoring (дата обращения: 12.08.2019).