- •Введение
- •1. Цели и задачи архитектора информационных систем
- •1.1. Цели создания информационных систем
- •1.2. Базовые структуры информационных систем
- •1.3. Уровни реализации архитектуры ИС
- •1.4. Атрибуты качества информационных систем
- •1.5. Сопровождение бизнес-ориентированных ИС
- •2.2. Структурное программирование
- •2. Парадигмы программирования
- •2.1. Модульное программирование
- •2.4. Функциональное программирование
- •2.5. Общие тенденции развития парадигм программирования
- •3. Чистая архитектура
- •3.1. Кричащая архитектура
- •3.2. Принципы SOLID
- •3.2.1. Принцип единственной ответственности
- •3.2.2. Принцип открытости/закрытости
- •3.2.3. Принцип подстановки Б. Лисков
- •3.2.4. Принцип разделения интерфейсов
- •3.2.5. Принцип инверсии зависимостей
- •3.3. Программные компоненты и принципы их организации
- •3.3.1. Диаграмма компонентов
- •3.3.2. Принципы взаимосвязи компонентов
- •3.3.3. Принцип эквивалентности повторного использования и выпусков
- •3.3.4. Принцип согласованного изменения
- •3.3.5. Принцип совместного повторного использования
- •3.3.6. Сравнение принципов взаимосвязи компонентов
- •3.4. Компонентный подход как способ динамического изменения архитектуры ИС
- •3.4.1. Принцип ацикличности зависимостей
- •3.4.2. Принцип устойчивых зависимостей
- •3.4.3. Принцип устойчивости абстракций
- •3.4.4. Графическая интерпретация принципов SDP и SAP
- •3.5. Вычислительные архитектуры ИС
- •3.5.1. Клиент-серверная архитектура
- •3.5.2. Трёхзвенная архитектура
- •3.5.3. Микросервисная архитектура
- •3.6. Шаблоны и антишаблоны проектирования ИС
- •3.6.1. Шаблоны проектирования
- •3.6.2. Антишаблоны проектирования
3.6.2. Антишаблоны проектирования
При разработке ИС зачастую нет необходимости реализовывать все из вышеперечисленных шаблонов проектирования. Несмотря на то,
что шаблоны проектирования упрощают и унифицируют разработку ИС, некорректная их реализация усложняет чтение и понимание про-
граммного кода другими разработчиками (и даже самим автором про-
граммного кода, если он анализирует свой код после длительного пере-
рыва в работе с ним). Куда более важным при разработке ИС является избегание применения в работе так называемых антишаблонов проек-
тирования – программных практик, усложняющих разработку и сопро-
вождение ИС.
Антишаблоны проектирования условно можно разделить на сле-
дующие группы [2]:
–антишаблоны в управлении разработкой ИС;
–антишаблоны в разработке ИС;
–антишаблоны структурного программирования;
–антишаблоны объектно-ориентированного программирования;
–методологические антишаблоны;
–организационные антишаблоны.
Куправленческим антишаблонам можно отнести:
–дым и зеркала (smoke and mirrors) – демонстрация стейкхолде-
ру ещё не реализованных функций ИС;
–раздувание программного обеспечения (software bloat) – неоп-
равданное увеличение требований к вычислительным ресурсам с каждым новым выпуском ИС;
–функции для галочки (options checkbox) – добавление в ИС сущностей, не соответствующих модели предметной области.
63
Вразработке ИС выделяют следующие антишаблоны:
–много шума из ничего (gas factory) – чрезмерное усложнение архитектуры системы для решения простых вычислительных задач;
–раздувание интерфейса (interface bloat) – нарушение принципа разделения интерфейсов;
–магическая кнопка (magic button) – реализация бизнес-логики ИС внутри метода - обработчика события нажатия на кнопку.
К антишаблонам структурного программирования можно
отнести:
–действие на расстоянии (action at a distance) – реализация функ-
ций с побочными эффектами;
–лодочный якорь (boat anchor) – сохранение неиспользуемой части ИС;
–инерцию кода (code momentum) – избыточное ограничение функционала системы для учёта побочных эффектов ПО;
–таинственный код (cryptic code) – использование неизвестных аббревиатур в программном коде;
–магические числа (magic numbers) – использование числовых и строковых значений без именования (в виде константы или переменной);
–процедурный код (procedural code) – применение структурной парадигмы при написании любого программного кода;
–спагетти-код (spaghetti code) – код, порядок выполнения кото-
рого затруднён для восприятия;
–мыльный пузырь (soap bubble) – класс, содержащий данные, не используемые ни одним экземпляром этого класса в течение
всего их жизненного цикла.
64
Антишаблонами объектно-ориентированного программирова-
ния можно назвать:
–базовый класс-утилиту (base bean) – наследование классов от вспомогательного класса-утилиты;
–божественный объект (god object) – одна программная сущ-
ность оперирует неоправданно большим объёмом данных;
–синголтонизм (singleton) – чрезмерно частое прибегание к ис-
пользованию шаблона «Одиночка».
Кметодологическим антишаблонам проектирования можно
отнести:
–программирование методом копирования (copy/paste programming) – написание ИС путём копирования отдельных методов системы;
–дефакторинг (defactoring) – удаление функциональности с со-
ответствующим изменением документации;
–золотой молоток (golden hammer) – применение одного «уни-
версального» решения различных задач;
–преждевременную оптимизацию (premature optimization) – оп-
тимизацию ИС без явных требований к её проведению;
–изобретение колеса (reinventing the wheel) – создание собствен-
ного решения, когда существует хорошее готовое решение.
Организационными шаблонами проектирования называют:
–дойную корову (cash cow) – отсутствие доработок в проекте,
приносящем стабильный доход;
–продолжительное устаревание (continuous obsolescence) – чрез-
мерно большие усилия, направленные на перенос ИС в другие окружения, не запланированные на начальном этапе её разра-
ботки;
65
–ползущее улучшение (creeping featurism) – улучшение отдель-
ных характеристик системы без добавления в неё нового функ-
ционала;
–я тебе это говорил (i told you so) – недостаточная формализация задач по разработке, устное описание задач по разработке.
66
Библиографический список
1А. Горкин, Архитектура // Новая иллюстрированная энциклопедия. Т.2. – М.: Большая Российская энциклопедия, 2001. – C.21-22.
2М. Рыбальченко, Архитектура информационных систем. – М.: Юрайт, 2018. – С.91.
3Ю. Лисецкий, Система управления предприятием // Программные продукты и системы. – Тверь: Научно-исследовательский институт «Центрпрограммсистем», 2018. – С.246-252.
4А. Козадаев, Информационные системы в управлении розничными продажами непродовольственных товаров // Сервис в России
иза рубежом. – 2011. – № 4. [Электронный ресурс]: https://cyberleninka.ru/article/n/informatsionnye-sistemy-v-upravlenii- roznichnymi-prodazhami-neprodovolstvennyh-tovarov (дата обращения: 15.05.2022).
5Д. Аникеев, Особенности консолидирующей биллинговой системы расчетно-платежного комплекса «Абонент+» // IV Международный научно-технический форум «Современные технологии в науке
иобразовании»: сборник трудов. Т.9. РГРТУ. – 2021. – С.230-233.
6В. Борисов, К. Большаков, Телекоммуникационные системы и сети. – Российский государственный университет нефти и газа (национальный исследовательский университет) имени И. М. Губкина.
– Оренбург. – 2019. – С.266.
7А. Гусева, Геоинформационные системы // Горный инфор- мационно-аналитический бюллетень (научно-технический журнал). –
2013. |
– |
№ |
5. |
[Электронный |
ресурс]: |
https://cyberleninka.ru/article/n/geoinforma-tsionnye-sistemy (дата обраще-
ния: 15.05.2022).
67
8Г. Мартинов, Развитие систем управления технологическими объектами и процессами // Вестник МГТУ "Станкин". – 2008. – № 1.
–С.74-79.
9В. Маркелов, И. Соловьев, В. Цветков, Интеллектуальные транспортные системы как инструмент управления // Economic Consultant. – 2014. – № 3 (7). [Электронный ресурс]: https://cyberleninka.ru/article/n/intellektualnye-transportnye-sistemy-kak- instrument-upravleniya (дата обращения: 15.05.2022).
10А. Гусев, Медицинские информационные системы: состояние, уровень использования и тенденции // Врач и информационные технологии. – 2011. – № 3. [Электронный ресурс]: https://cyberleninka.ru/article/n/meditsinskie-informatsionnye-sistemy- sostoyanie-uroven-ispolzovaniya-i-tendentsii (дата обращения: 15.05.2022).
11А. Апаева, Информационные технологии в образовании // Традиции и инновации в системе образования: материалы XIV Международной научно-практической конференции. – Карачаевск. – 25–27 июня 2018 года. – 2018. – С.25-30.
12Д. Аникеев, А. Маркин, А. Пудова, Сетевой SQL & NOSQL тренажер // Вестник магистратуры. – Йошкар-Ола. – 2020. – № 12-1. – С. 27-29.
13M. Arora, Evaluating Usability in Learning Management System Using Moodle //Advances in Information Communication Technology and Computing. – Springer, Singapore. – 2022. – С. 517-526.
14Ю. Бердова, Информационные системы в биржевой торговле // Экономика и предпринимательство. – 2015. – № 12-1. – С. 836-840.
68
15А. Екимов, Информационные системы автоматизации биржевых торгов // Современные проблемы и перспективные направления инновационного развития науки. – 2016. – С. 161-163.
16Д.К. Левченко, Современные системы мониторинга и управления ресурсами // Актуальные проблемы технических наук: сборник статей международной научно-практической конференции. – Уфа: АЭТЕРНА, 2015. – С. 91.
17И.Я. Львович, А.П. Преображенский, О.Н. Чопоров, Использование информационных систем в управлении производством // Научный взгляд в будущее. – 2018. – Воронеж: Воронежский государственный технический университет. – Т. 3. – № 9. – С. 94-98.
18В.А. Ворона, В.А. Тихонов, Системы контроля и управления доступом. – М.: Горячая линия – Телеком, 2010.
19T.A. Howes, Understanding and deploying LDAP directory services. – Addison-Wesley Professional. – 2003. – С. 861.
20B. Desmond, Active Directory: Designing, Deploying, and Running Active Directory. – O'Reilly Media, Inc. – 2008. – С. 832.
21T. Valentine, Installing and Using the Apache Web Server //Database-Driven Web Development. – Apress, Berkeley, CA, 2021. – С. 155-170.
22ГОСТ Р 9126-2001. Оценка программной продукции. – Введён 2006-01-27. – М.: Стандартинформ, 2007. – С. 10.
23Э. Эванс, Предметно-ориентированное проектирование (DDD): структуризация сложных программных систем. – СПб.: Диалектика, 2020. – С. 448.
24М. Абазьева // Актуальные вопросы права, экономики и управления: сборник статей XX Международной научно-практической конференции: в 2 ч. Классификация заинтересованных лиц в проекте
69
внедрения информационной системы компании. – Пенза. – 2019. – С. 114-116.
25 Р. Мартин, Чистая архитектура. Искусство разработки про-
граммного обеспечения. – СПб.: Питер, 2018. – С. 352.
26 Е.М. Лаврищева, Программная инженерия и технологии программирования сложных систем: учебник. – 2-е изд., испр. и доп. –
М.: Издательство «Юрайт», 2019. – 432 с.
27Л.В. Городняя, Парадигмы программирования: курс лекций.
–Новосибирск: РИЦ НГУ, 2015. – 206 с.
28С. Макконнел, Совершенный код. – СПб.: БХВ-Петербург, 2017. – С. 896.
29Р. Мартин, Чистый код. Создание, анализ, рефакторинг. –
СПб.: Питер, 2019. – С. 464.
30P. Hudak, Conception, evolution, and application of functional programming languages // Association for Computing Machinery Computing Surveys : journal. – 1989. – С. 359-411.
31UML Use Case Diagram Tutorial // Lucidchart [Электронный ресурс]: https://www.lucidchart.com/pages/uml-use-case-diagram (дата обращения: 05.05.2022).
32D. Prasanna, Dependency injection: design patterns using spring and guice. – Simon and Schuster. – 2009. – С. 352.
33J. Martin, Managing the Data-base Environment. – New Jersey: Englewood Cliffs, 1983. – С. 381.
34UML Component Diagram Tutorial // Lucidchart [Электрон-
ный ресурс]: https://www.lucidchart.com/pages/uml-component-diagram (дата обращения: 05.05.2022).
35 C. Szyperski, Component Software: Beyond Object-Oriented Programming. – Addison-Wesley Professional; 2nd edition. – 2002. – С. 624.
70
36 UML Class Diagram Tutorial // Lucidchart [Электронный ресурс]: https://www.lucidchart.com/pages/uml-class-diagram (дата обращения: 05.05.2022).
37UML Entity Relationship Diagram Tutorial // Lucidchart [Электронный ресурс]: https://www.lucidchart.com/pages/er-diagrams (дата обращения: 05.05.2022).
38Y.T. Lee, An IDEF1x Information Model for a Supply Chain Simulation. – Tokyo, Japan: Musashi University, 2000. – C.6.
39Data Flow Diagram Tutorial // Lucidchart [Электронный ре-
сурс]: |
https://www.lucidchart.com/pages/data-flow-diagram |
(дата |
обращения: 05.05.2022).
40BPMN 2.0 Symbol Reference // Camunda [Электронный ресурс]: https://camunda.com/bpmn/reference/ (дата обращения: 05.05.2022).
41B. Hommes, The Evaluation of Business Process Modeling Techniques. – Delft University of Technology. – 2004. – С. 137.
42СУБД Oracle Database // Oracle [Электронный ресурс]: https://www.oracle.com/cis/database/ (дата обращения: 19.05.2022).
43Платформа данных Microsoft // Microsoft [Электронный ресурс]: https://www.microsoft.com/ru-ru/sql-server (дата обращения: 19.05.2022).
44П. Грей, Логика, алгебра и базы данных. – М.: Машиностроение, 1989. – С. 368.
45А.М. Бершадский, Л.С. Курилов, А.Г. Финогеев, Исследование стратегий балансировки нагрузки в системах распределенной обработки данных // Известия вузов. Поволжский регион. Технические науки. № 4. – Пенза: Пензенский государственный университет. – 2009.
–С. 38-48.
71
46С. Ньюмен, Создание микросервисов. – СПб.: Питер, 2016.
–С. 304.
47Э. Гамма, Р. Хелм, Р. Джонсон, Д. Влиссидес, Паттерны объектно-ориентированного проектирования. – СПб.: Питер, 2020. –
С. 448.
48 О.П. Кузнецов, Г.М. Адельсон-Вельский, Автоматы // Дис-
кретная математика для инженера. – М.: Энергия, 1980. – С. 344.
49 J.O. Coplien, Pattern Languages of Program Design. – AddisonWesley Professional. – 1995. – С. 576.
72
