Файл: Применение объектно-ориентрованного подхода при проектировании информационной системы (Объектный подход при разработке программ).pdf
Добавлен: 28.03.2023
Просмотров: 68
Скачиваний: 2
- в марте 2016 года автопилот Tesla проехал под грузовиком, оторвав крышу и убив водителя Джереми Берен Бэннера, возрастом 50 лет (водитель грузовика не пострадал);
- 7 мая 2016 года 40-летний Джош Браун погиб при таких же обстоятельствах. (водитель грузовика не пострадал);
- в 2018 году три Tesla врезались в стоящие пожарные машины (без серьезных травм для водителей);
- 14 мата 2019 года Tesla врезалась в угол стоящей «Газели», автомобиль Tesla сгорел, водитель, 41-летний Алексей Третьяков, получил переломы ноги и носа, а его несовершеннолетние дети отделались ушибами;
- в марте 2018 года, инженер Apple Вэй Лун Хуанг разбился на Tesla Model X, когда машина с включенным автопилотом врезалась в дорожное ограждение.
В общей сложности в 2018 году в авариях с участием Tesla погиб 21 человек, в 2019 году – уже 50.
Подводя итог можно сказать, что будущее, показанное в фантастических фильмах, в которых машины убивают людей, наступило! Машины уже убивают нас, хотя, пока еще, не по свое воле, а как следствие ошибок в их программировании, в том числе с использованием ООП.
.
Заключение
Проведенные в настоящей работе исследования показывают, что модульный принцип производства является тем, к чему стремиться вся современная промышленость, выпускающая товар массового потребления. Информационные системы не являются исключением из этого правила. Блочные, модульный, классовый, шаблонный способ программирования давно стал стандартом де-факто в области создания программного обеспечения и электронной аппаратуры.
Мировое производство становиться все более специализированным и сосредотачивается на выпуске модулей, блоков, отдельных агрегатов, которые являются «вещью в себе» и могут быть использованы во множестве законченных изделий или программных продуктах. Так, например, один и тот же современный микроконтроллер может управлять кофеваркой и космическим аппаратом, а один и тот же программный код, можно встретить в системе управления ядерным щитом страны и детской электронной игрушке. Именно на этом было сосредоточено исследование, описанное в первой главе работы.
Во второй главе исследования были описаны предпосылки появления модульного производства. Вторая глава показывает, что предпосылками появления подобного подхода к производству стала необходимость, диктуемая капиталистическим устройством экономик развитых стран мира. Как известно, основной принцип капиталистического производства, завязан на получении максимальной прибыли от продажи товара, т.е. продукт должен производиться в максимально короткие сроки, иметь минимальную себестоимость и максимальную цену реализации. Организовать подобное производство можно только в ущерб качеству и в безопасности продукции. Однако, опасность, которую несут для человечества, продукты подобного производства, мало интересуют производителя. Катастрофические последствия, капиталистического принципа производства, были описаны в третьей главе настоящего исследования.
Каждый день человечеству приходится употреблять продукцию капиталистического производства: генномодифицированные продукты питания, выращенные с использование гормонов роста, вакцины, убивающие детей, информационные системы, приводящие к авиационным и автомобильным катастрофам с многочисленными человеческими жертвами.
Модульный принцип производства дает возможность привлекать к изготовлению опасных для жизни и здоровья людей продуктов, разработчиков, не являющихся профессионалами в своем деле, а умеющими лишь «играться» кем-то, когда-то созданными «кубиками», принцип работы которых, игроку непонятен.
Основываясь на вышеизложенном материале, автор считает, что цель настоящего исследования - показать опасность объектно-ориентрованного подходы к разработке информационных систем (и не только информационных), была достигнута.
Учитывая тот факт, что люди всегда умирают, возникает вопрос - знает ли кто-нибудь, как устроена система ответного ядерного удара?
Список использованной литературы
1. Андрианов А. Н., Бычков С. П., Хорошилов А. И , Программирование на языке симула-67, издательство Наука, 1985 - 288 c.
2. Белов А.В. Микроконтроллеры AVR. От азов программирования до создания практических устройств, Издательство: Наука и Техника, 2016 – 554 с.
3. Бен-Ари М., Языки программирования. Практический сравнительный анализ, Издательство Мир, 2000 – 336 с.
4. Блум Д., Изучаем Arduino. Инструменты и методы технического волшебства, Издательство: БХВ-Петербург, 2018 – 336 с.
5. Буч Г., Максимчук Р. А., Энгл М. У., Янг Б. Д., Коналлен Д., Хьюстон К. А., Объектно-ориентированный анализ и проектирование с примерами приложений, издательство: Вильямс, 2017 – 720 с.
6. Буч Г., Рамбо Д., Якобсон А., Язык UML. Руководство пользователя, Издательство ДМК Пресс, 2007 – 496 с.
7. Вайсфельд М., Объектно-ориентированный подход, Издательство: Питер, 2020 – 256 с.
8. Голицына О. Л., Попов И. И., Программирование на языках высокого уровня, издательство Форум, 2010 – 496 с.
9. Грисуолд Р.; Поудж Дж.; Полонски И., Язык программирования СНОБОЛ -4, издательство Мир, 1980 - 270 с.
10. Дейли Б., Дейли Б., Дейли К., Разработка веб-приложений с помощью Node.js, MongoDB и Angular., издательство Вильямс, 2020 – 656 с.
11. Джонсон Х., Системное программирование в среде Windows, Издательский дом Вильямс, 2005 – 514 c.
12. Иго Т., Arduino, датчики и сети для связи устройств, издательство: БХВ-Петербург, 2015 - 544 с.
13. Ирвин К. Р. , Язык ассемблера для процессоров Intel, издательство: Вильямс, 2005 - 912 с.
14. Ключев А.О., Ковязина Д.Р., Петров Е.В., Платунов А.Е. Интерфейсы периферийных устройств. – СПб.: СПбГУ ИТМО, 2010. – 290 с.
15. Княгинин В.Н. Модульная революция: распространение модульного дизайна и эпоха модульных платформ: учеб. пособие / под ред. М. С. Липецкой, С. А. Шмелевой. – СПб., 2013. — 80 с.
16. Комиссарова В., Программирование драйверов для Windows, Издательство: БХВ-Петербург, 2007 - 253
17. Курт У., Программируй на Haskell, издательство ДМК Пресс, 2019 – 648 с.
18. Маркс К., Капитал, издательство Книжная лаборатория, Лениздат, 2018 – 512 с.
19. Маркус А., Современный Fortran на практике, издательство ДМК Пресс, 2015 – 308 с.
20. Мессенбок Х, Плюсы и минусы объектно-ориентированного программирования, М., ИнфоАрт, 1998 – 278 с.
21. Пивкин С. А., Статья. Себестоимость инновационного продукта: калькулирование и прогноз. Международный бухгалтерский учет. 2016. № 10. С. 21-34.
22. Пильщиков В.Н., Абрамов В.Г., Вылиток А.А., Горячая И.В., Машина Тьюринга и алгоритмы Маркова, МАКС Пресс Москва, 2016 – 72 с.
23. Розов А.С., Зюбин В.Е., Нефедов Д.В., Программирование встраиваемых микроконтроллерных систем на основе гиперпроцессов //Вести, НГУ, Серия: Информационные технологии, 2017, Т.15, №4, с. 64-73
24. Симдянов И. В., Самоучитель Ruby, издательство БХВ-Петербург, 2020 – 656 с.
25. Соркин Э., Слишком большие, чтобы рухнуть, издательство Corpus, 2012 – 576 с.
26. Тарасов В.Б., От многоагентных систем к интеллектуальным организациям, М.: Едиториал УРСС, 2002 - 352 с.
27. Трасковский А. В. Устройство, модернизация, ремонт IBM PC. — СПб.: БХВ-Петербург, 2004. — 608 с.
28. Федотова Д. Э., Семенов Ю. Д., Чижик К. Н., Case-технологии. Практикум, Издательство: Горячая Линия – Телеком, 2005 - 160 c.
29. Холден С., Рейвенскрофт А., Мартелли А., Python. Справочник. Полное описание языка, издательство Диалектика, 2018 – 896 c.
30. Хоффман, Дэвид. «Мёртвая рука». Неизвестная история холодной войны и её опасное наследие. — М.: Астрель, 2011 -736 с.
31. Чанышев О.Г. Основные элементы языка программирования Icon: Учебное пособие. - Омск: Изд-во ОмГУ, 2004 - 55 с.
32. Lindholm T., Yellin F., Bracha B., Java virtual machine specification, java se 8 edition, Published Pearson Addison Wesley Prof, 2014 – 600 p.
33. Shoham Yoav. Agent Oriented Programming: Technical Report STAN-CS-90-1335. — Computer Science Department, Stanford University, 1990.
34. Stakem P., Cubesat Operations: How to fly a Cubesat, издательство: Independently published, 2017 – 98 с.
35. Zuse K. «Der Plankalkül». Gesellschaft für Mathematik und Datenverarbeitung. Nr. 63, BMBW - GMD - 63, 1972 - 63 p.
36. http://kmpu.ru/theory/index.html#Chapter_1
37. https://habr.com/ru/post/20425/
38. https://hi-news.ru/auto/podtverzhdeno-po-vine-avtopilota-tesla-pogiblo-uzhe-chetyre-cheloveka.html
39. https://proglib.io/p/oop-fail
40. https://ru.wikipedia.org/wiki/Therac-25
41. https://ru.wikipedia.org/wiki/Turbo_Pascal
42.https://ru.wikipedia.org/wiki/Случаи_ложного_срабатывания_систем_предупреждения_о_ракетном_нападении
43. https://tass.ru/info/2123307
44. https://www.kommersant.ru/doc/1530174
45. https://www.popmech.ru/technologies/46176-top-6-katastrof-proizoshedshikh-po-vine-programmnogo-obespecheniya/
46. https://www.popmech.ru/technologies/46176-top-6-katastrof-proizoshedshikh-po-vine-programmnogo-obespecheniya/
47. https://www.pwc.com/gx/en/services/audit-assurance/publications/global-top-100-companies.html
48. https://www.sandc.com
ПРИЛОЖЕНИЕ 1
Код на языке С++ для считывания показаний датчика температуры DS18S20
/*
модуль работы с датчиком температуры TMP36
Автор кода: Жердин Дмитрий Анатольевич, 2019 (с), zherdin@mail.ru
модуль является частью проекта: Сервер устройств на основе Ардуино
*/
// создание аналогового порта ввода для датчика температуры TMP36 (36GZ), параметры датчика:
// -40 до 150°С, ±2°C , при температуре 25°C: ±1°C
// линейность: ±0.5°C
// разрешение: 10.0 mV/°C
// напряжение на выходе при 25°C: 750мВ
// потребление тока не более 0,5 мкА
// корпус TO-92, питание 2.7 – 5.5 В
// пины: 1-питание, 2-выходное напряжение температуры, 3-земля
// при питании от 5В используется следующая формула для преобразования 10-битных аналоговых значений в температуру:
// 1. вычисляем напряжение на пине в милливольтах = (значения с аналогового пина АЦП) * (5000/1024)
// 2. вычисляем температуру в цельсиях = [(напряжение в милливольтах на пине) - 500] / 10
// параметры URL должны выглядеть так: ?PORT=TMP36_SENSOR, PIN= [14]
// ответ клиенту: если PIN задан верно - значение температуры от -40 до 150 С, иначе PIN_NUMBER_ERROR
String MakePort_TMP36_SENSOR(String RequestURL) {
if (DEBUG) Serial.println("!MakePort_TMP36_SENSOR(String RequestURL)"); // выводим данные в монитор порта
if (DEBUG) Serial.println("!RequestURL: "+RequestURL); // выводим данные в монитор порта
// получаем значение параметра "PIN" в строковом формате
String PIN=getValueURLparameter(RequestURL,"PIN");
// проверяем был ли найден параметр PIN
if (PIN=="") return String("PIN_NUMBER_NOT_FOUND_ERROR"); // параметр не найден, возвращаем ошибку
// параметр PIN найден, преобразуем его в числовой формат
int PIN_number=PIN.toInt();
// проверяем лежит ли номер ПИНа в разрешенном диапазоне (использование псевдонимов вида А1, А2..., запрещено!).
// на МЕГА аналоговые пины имеют номера 54-69
if (PIN_number<54 || PIN_number>69) return String("PIN_NUMBER_ERROR"); // неверный номер пина, возвращаем ошибку
// параметры заданы верно!
if (DEBUG) Serial.println("!================= PARAMETERS IS OK ====================");
if (DEBUG) Serial.println("!PIN_number: "+String(PIN_number)); // выводим данные в монитор порта
// переключаем физический аналоговый порт контроллера в режим ввода
// подтягивать порт к ПИТАНИЮ через встроенный PULLUP-резистор не надо т.к. он будет мешать измерениям (встроенный резистор подтягивает только к питанию)