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

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

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

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

Добавлен: 28.03.2023

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

Скачиваний: 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-резистор не надо т.к. он будет мешать измерениям (встроенный резистор подтягивает только к питанию)