Файл: Применение объектно-ориентрованного подхода при проектировании информационной системы (Объектный подход при разработке программ).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 28.03.2023

Просмотров: 63

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Таким образом, переносимость возможна лишь для программ, написанных для устройств, не имеющих операционной системы, либо для программ, написанных для специальных эмуляторов, установленных в ОС: Java Virtual Machine [32], NodeJS [10] и др.

Очередной уровень абстракции представлен сверхвысокоуровневыми языками программирования (англ. very high-level programming language, VHLL). В отличие от языков программирования высокого уровня, где описывается принцип «как нужно сделать», в сверхвысокоуровневых языках программирования описывается лишь принцип «что нужно сделать». Таким образом, программист полностью избавляется от необходимости понимания как функционирует компьютер, периферийные устройства, сеть и операционная система, а нанимающая его на работу компания, устанавливает ему соответствующую (низкую) заработную плату.

Примером языка очень высокого уровня абстракции является язык Icon [31], разработанный Ральфом Э. Грисволдом. Icon — язык программирования, унаследовавший идеологию более раннего языка SNOBOL [9]. Название языка является сокращением от слова англ. iconoclastic (иконоборческий), используемом в смысле борьбы с конформизмом в разработке языков программирования.

К современным, наиболее известным VHLL-языкам программирования, с некоторыми оговорками, можно отнести: Haskell [17], Python [29], Ruby [24] и некоторые другие.

Как было сказано в начале главы объектный, модульный подход к разработке наблюдается во многих сферах производственной деятельности человека. Рассмотрим, например, модульный принцип построения электронной аппаратуры и предпосылки появления такого подхода.

Концепция модульного построения устройств – это один из принципов построения радиоэлектронной аппаратуры. Суть ее заключается в том, что любой аппарат представляется в виде набора отдельных независимых модулей, связанных между собой проводными или электромагнитными (оптическими, радио) соединениями. Парадигма состоит в том, что модули являются относительно универсальными и могут быть применены в других аппаратах без изменений печатной платы. Благодаря этому время на разработку всего аппарата существенно сокращается, т.к. изделие собирается из уже имеющихся запчастей, т.е. заранее разработанных модулей [36].

Как и в случае с модульным программным обеспечением предпосылками такого подхода послужила экономическая эффективность и скорость модульного производства устройств. Ярким примером успешной реализации этого принципа служит подход фирмы IBM, которая впервые стала использовать модульный принцип для создания печатных плат персональных компьютеров, рисунок 6. Любой из электронных модулей печатной платы компьютера мог быть заменен более современным или новым вместо вышедшего из строя.


Рисунок 6. Печатная плата IBM-совместимого компьютера с установленными модулями

Покупатели модульных компьютеров могут самостоятельно выбирать комплектующие исходя из своих финансовых возможностей или рабочих потребностей [27].

Модульный подход наблюдается не только в конечной, произведенной промышленностью, продукции, но в и самом промышленном производстве. Предпосылками к модульной организации промышленного производства стало упрощение процесса проектирования, сокращение сроков и стоимости проектирования, сроков выведения продукции на рынок, иными словами, рационализация проектирования и производства и как следствие, лучшая конкурентоспособность и экономическая эффективность производства.

Современная индустрия постоянно находится в процессе перехода от интегрированного к модульному принципу производства продукции, что хорошо показываем схема, представленная на рисунке 7 (Источник: ЦСР «Северо-Запад» по модели Utterback). Стрелками показано стремление отрасли производства к модульности [15].

Рисунок 7. Переход от интегрированной архитектуры к модульной архитектуре для различных отраслей производства

Говоря о модульности нельзя обойти стороной модульное строительство, применение которого в СССР позволило переселить большую часть населения страны из землянок, жалких деревянных лачуг, подвалов и чердаков в отдельные квартиры со всеми бытовыми удобствами.

Механические изделия тоже подчинены модульности. Эталоном модульной сборки механических изделий могут служить изделия автомобильной промышленности, где модульность возведена в абсолют. Разбирая современный автомобиль на запчасти можно встретить изделия, произведенные в большом количестве стран мира.

Подводя итого можно сказать, что предпосылками к созданию объектно-ориентрованного подхода к проектированию устройств, машин, строений, программного обеспечения и информационных систем послужили - стремление компании-разработчика получит максимальную прибыль в кротчайшие строки. То есть, предпосылками являются буржуазно-капиталистическое устройство экономик стран. Что является вполне естественным, если обратиться к работам К. Маркса [18].

3. Опасности объектного проектирования


Основные опасности объектного подхода к проектированию информационных систем (и не только информационных), уже кратко упоминались в предыдущих главах:

1. Непонимание разработчиком всех нюансов функционирования готового изделия, по причине непонимания особенностей функционирования используемых модулей (объектов, классов) и как результат, появление большого числа ошибок на этапе эксплуатации системы, повышение расходов на поддержку системы и потеря доверия к разработчику у заказчиков, с последующим возможным банкротством компании-разработчика информационных систем;

2. Отток профессиональных специалистов из области разработки информационных систем из-за снижения заработной платы и как следствие, появление на рынке систем низкого качества, эксплуатация которых будет приводить не только к финансовым потерям, но и к человеческим жертвам, техническим и техногенным катастрофам;

3. Блочное конструирование информационных систем, состоящих из объектов, принцип работы которых разработчик не понимает, особенно систем искусственного интеллекта, в будущем неминуемо приведет к потере контроля над созданной системой, которая, возможно, получит доступ к управлению ядерным оружием, что может привести к гибели человечества как вида.

Из всего выше перечисленного наибольшую опасность представляет третий пункт. Количество, только известных, ложных срабатываний информационных систем предупреждения о ядерном ракетном ударе в США, поражает. Причем по мере автоматизации систем предупреждения, количество ложных срабатываний начинает возрастать, к 1979—1980 гг. возрастает до нескольких срабатываний в сутки. В журналах боевого дежурства офицеров на пункте управления Командованием воздушно-космической обороны Северной Америки в Шайенн-маунтин в первой половине 1980 года регистрируется свыше десяти случаев срабатывания системы предупреждения в сутки [42].

26 сентября 1983 — на пункт управления системы предупреждения о ракетном нападении пришли данные о запуске с территории США ядерных ракет по Советскому Союзу. В 1993 году стало известно, что атака была признана ложной решением оперативного дежурного подполковника С. Е. Петрова [30].

Опасность, вызванная уходом из отрасли профессиональных разработчиков, из-за снижения заработной платы, указанная во втором пункте, и как следствие снижение качества информационных систем, может обернуться вполне ощутимыми последствиями. Однако, с точки зрения капиталистической экономики данная ситуация вполне нормальна и вполне укладывается в принципы ее функционирования.


Компании-разработчики информационных систем будут экономить на фонде заработной платы сотрудников, но увеличат расходы на поддержку. Риск, связанный с гибелью людей, вероятностью техногенной или технической катастрофы, по все видимости, не пугает девелоперов. Кроме того в капиталистическом мире действует принцип «Too big to fail» - это разговорный термин, приписываемый экономисту Хайману Мински, обозначающий компании, настолько большие и имеющие такое количество экономических связей, что их банкротство будет иметь катастрофические последствия для экономики в целом [25]. Согласно этому принципу банкротство не грозит, таким компаниям как:

- Microsoft (капитализация 905 млрд долларов);

- Apple (капитализация 896 млрд долларов);

- Amazon (капитализация 875 млрд долларов);

- Alphabet (капитализация 817 млрд долларов);

- Berkshire Hathaway (капитализация 494 млрд долларов);

- Facebook (капитализация 476млрд долларов);

- Alibaba (капитализация 472 млрд долларов);

- Tencent (капитализация 438 млрд долларов) и многим другим [47].

К каким бы убыткам и к каким бы последствиям для планеты не привели ошибки этих компаний, обанкрочены они не будут.

Ниже приведен список только наиболее известных серьезных последствий, вызванных ошибками в проектировании информационных систем, взятый из статьи «Топ-6 катастроф, произошедших «по вине» программного обеспечения» журнала «Популярная механика» [46]:

- 4 июня 1996 года Европейское космическое агентство запустило ракету Ariane 5., ошибка в программном обеспечении модуля управления привела к самоуничтожению ракеты через 37 секунд после взлета. Стоимость одного пуска Ariane 5 составляет порядка 140-150 млн долларов [43];

- В 2013 году сбой программы почти довел инвестиционную компанию Knight Capital до банкротства. Фирма потеряла 440 миллионов долларов за 40 минут из-за того, что компьютеры стали покупать и продавать миллионы акций безо всякого человеческого контроля. В итоге цены на акции компании упали на 75% за два дня. Компания была спасена от банкротства (она слишком большая, чтобы обанкротиться, хотя капитализация компании составляет всего $700-800 млн. [44]);

- В 1980-е годы пять пациентов умерли после получения большой дозы рентгеновского излучения в результате программной ошибки блока управления установкой лучевой терапии Therac-25. Как полагают эксперты, сбой был вызван ошибкой в коде, в результате которой программа пыталась выполнять одну и ту же команду многократно. Справедливости ради, стоит сказать, что программа, убившая людей, была написана не по объектному принципу, а на языке ассемблера, однако рентгеновский аппарат, которым управляла программа, был собран из блоков, изначально не предназначенных для совместной работы и компьютерного управления [40];


- Отключение серверов Amazon летом 2013 года лишило многих людей их данных, хранившихся в «облаке». Авария, изначально вызванная сильной грозой, усугубилась внезапно обнаруженными программными ошибками, в результате чего произошел каскадный сбой. Это далеко не первый сбой серверов Amazon, поэтому компания имеет специальное соглашение, по которому она выплачивает всем пострадавшим денежную компенсацию [37];

- Массовое отключение электроэнергии в США в 2003 году стало результатом локальной аварии, которая осталась незамеченной из-за ошибки программного обеспечения для мониторинга работы оборудования General Electric Energy, и также привела к масштабному каскадному сбою. Для примера, слайд в приложении 2 иллюстрирует финансовые потери только в США от отключения энергии в 2015 году (по данным www.sandc.com), они составили 52 миллиарда долларов [48];

- В 2014 году программная ошибка вынудила совершить посадку всего воздушного флота авиакомпании American Airlines. Сбой в системе бронирования билетов возник после объединения двух информационных систем с целью слияния нескольких авиакомпаний.

Проанализируем, как обстоят дела в области машинного обучения и нейронных сетей. Учитывая все вышесказанное, нет ничего удивительного в том, что в разработке и обучении систем искусственного интеллекта на базе нейронных сетей тоже используется объектно-ориентрованный подход.

Агентно-ориентированный подход (далее АОП) является частным случаем (специализацией) объектно-ориентированного программирования (далее ООП). В АОП объекты называется – агентами. В ООП вычислительный процесс понимается достаточно широко как система, собранная из объектов, которые взаимодействуют друг с другом через сообщения (передачу параметров от метода к методу). АОП специализирует эти понятия, устанавливая состояние объектов (агентов). Агенты состоят из компонентов: «верование», «способности» и «решения». Каждый компонент обладает определенным синтаксисом [26].

Вычисления в АОП состоят из информирования агентов, выполнения их требований, выполняя их предложений, принятий отклонений, конкуренций между агентами и помощи одного агента другому агенту. [33].

Итак, если в ООП программист оперирует объектами, то в АОП оперирование осуществляется агентами, в качестве которых могут выступать обученные нейронные сети.

За доказательством опасности такого подхода к программированию далеко ходить не надо, возьмем, для примера, широко известную автомобильную компанию Tesla, выпускающую автомобили с автопилотом, в основе функционирования которого лежат обученные нейронные сети (агенты, объекты). В настоящее время на счету автопилота следующие катастрофы [38]: