Jump to content

История разработки программного обеспечения

История разработки программного обеспечения начинается примерно в 1960-х годах. Написание программного обеспечения превратилось в профессию, связанную с тем, как лучше всего повысить качество программного обеспечения и как его создавать. Качество может относиться к тому, насколько удобно в сопровождении программное обеспечение, к его стабильности, скорости, удобству использования, тестируемости, читабельности, размеру, стоимости, безопасности и количеству недостатков или «ошибок», а также к менее измеримым качествам, таким как элегантность, краткость и клиентоориентированность. удовлетворение, среди многих других качеств. Как лучше всего создавать высококачественное программное обеспечение — это отдельная и противоречивая проблема, охватывающая принципы проектирования программного обеспечения, так называемые «лучшие практики» написания кода, а также более широкие вопросы управления, такие как оптимальный размер команды, процесс, как лучше всего доставлять программное обеспечение вовремя. и как можно быстрее, «культура» рабочего места, практика найма и так далее. Все это подпадает под широкую рубрику разработки программного обеспечения . [1]

Обзор [ править ]

Эволюция разработки программного обеспечения заметна в ряде областей:

  • Появление профессии: к началу 1980-х годов разработка программного обеспечения уже стала настоящей профессией . [2] стоять рядом с информатикой и традиционной инженерией. [ нужна ссылка ]
  • Роль женщин : до 1970 года мужчины, занимавшие более престижные и высокооплачиваемые должности в области разработки аппаратного обеспечения, часто поручали написание программного обеспечения женщинам, а такие легенды, как Грейс Хоппер или Маргарет Гамильтон, занимали многие должности в области компьютерного программирования . [3] [4]
    Сегодня в разработке программного обеспечения работает меньше женщин, чем в других профессиях, и причина этой ситуации четко не установлена. Многие академические и профессиональные организации [ ВОЗ? ] считают эту ситуацию несбалансированной и стараются ее решить. [5]
  • Процессы. Процессы стали важной частью разработки программного обеспечения. Их хвалят за способность улучшать программное обеспечение, но резко критикуют за их способность ограничивать программистов. [ нужна ссылка ]
  • Стоимость аппаратного обеспечения. Относительная стоимость программного обеспечения по сравнению с аппаратным обеспечением существенно изменилась за последние 50 лет. Когда мейнфреймы были дорогими и требовали большого штата вспомогательного персонала, у немногих организаций, покупавших их, были ресурсы для финансирования крупных и дорогостоящих проектов по разработке специального программного обеспечения. Компьютеров сейчас гораздо больше, и они намного мощнее, что оказывает определенное влияние на программное обеспечение. Более крупный рынок может поддерживать крупные проекты по созданию готового коммерческого программного обеспечения, как это делают такие компании, как Microsoft . Дешевые машины позволяют каждому программисту иметь терминал, способный довольно быстро компилировать . Рассматриваемые программы могут использовать такие методы, как сбор мусора , которые упрощают и ускоряют их написание программистом. С другой стороны, гораздо меньше организаций заинтересованы в найме программистов для крупных заказных программных проектов, вместо этого используют готовое коммерческое программное обеспечение. в максимально возможной степени [ нужна ссылка ]

1945–1965 годы: истоки [ править ]

Раннее использование термина «программная инженерия» включает письмо президента ACM Энтони Эттингера от 1965 года : [6] [7] лекции Дугласа Т. Росса в Массачусетском технологическом институте в 1950-х годах. [8] Маргарет Х. Гамильтон — человек, которому пришла в голову идея назвать эту дисциплину разработкой программного обеспечения, чтобы придать ей легитимность во время разработки управляющего компьютера «Аполлон» . [9] [10]

Я боролся за легитимность программного обеспечения, чтобы к нему – и к тем, кто его создает – относились с должным уважением, и поэтому я начал использовать термин «программная инженерия», чтобы отличать его от аппаратного обеспечения и других видов разработки, но при этом относиться к каждому типу разработки. проектирование как часть общего процесса системного проектирования. Когда я впервые начал использовать эту фразу, она считалась довольно забавной. Это была постоянная шутка в течение долгого времени. Им нравилось подшучивать над моими радикальными идеями. Программное обеспечение со временем и неизбежно завоевало такое же уважение, как и любая другая дисциплина.

- Маргарет Гамильтон, интервью El País , 2014 г. [11]

Комитет по науке НАТО спонсировал две конференции [12] по разработке программного обеспечения в 1968 ( Гармиш , Германия) и 1969 годах, что дало этой области первый импульс. Многие считают, что эти конференции ознаменовали официальное начало профессии разработчика программного обеспечения . [6] [13]

1965–1985 годы: обеспечения кризис программного

Разработка программного обеспечения была стимулирована так называемым кризисом программного обеспечения 1960-х, 1970-х и 1980-х годов, который выявил многие проблемы разработки программного обеспечения. Многие проекты превысили бюджет и график. Некоторые проекты причинили материальный ущерб. Несколько проектов привели к человеческим жертвам. [14] Кризис программного обеспечения первоначально определялся с точки зрения производительности , но в дальнейшем стал уделять особое внимание качеству . Некоторые использовали термин «кризис программного обеспечения» для обозначения своей неспособности нанять достаточно квалифицированных программистов. [ нужна ссылка ]

Питер Г. Нойманн составил современный список проблем и катастроф программного обеспечения. [16] Кризис программного обеспечения постепенно сходит на нет, поскольку оставаться в кризисном режиме длительное время (более 20 лет) психологически крайне сложно. Тем не менее, программное обеспечение – особенно встроенное программное обеспечение реального времени – остается рискованным и широко распространенным, поэтому крайне важно не поддаваться самоуспокоенности. За последние 10–15 лет Майкл А. Джексон много писал о природе разработки программного обеспечения, определил основным источником ее трудностей отсутствие специализации и предположил, что его проблемные рамки обеспечивают основу для «нормальной практики». разработки программного обеспечения, что является необходимым условием для того, чтобы разработка программного обеспечения стала инженерной наукой. [17]

1985–1989: пули » серебряной Нет «

На протяжении десятилетий решение кризиса программного обеспечения имело первостепенное значение для исследователей и компаний, производящих программные инструменты.Стоимость владения и обслуживания программного обеспечения в 1980-х годах была вдвое дороже, чем его разработка. [ нужна ссылка ]

  • В 1990-е годы стоимость владения и обслуживания выросла на 30% по сравнению с 1980-ми годами.
  • В 1995 году статистика показала, что половина обследованных проектов развития действовала, но не считалась успешной.
  • Средний проект программного обеспечения вдвое опережает график.
  • Три четверти всех крупных программных продуктов, поставляемых заказчику, представляют собой отказы, которые либо не используются вообще, либо не соответствуют требованиям заказчика.

Программные проекты [ править ]

Казалось бы, каждая новая технология и практика с 1970-х по 1990-е годы преподносились как серебряная пуля, способная решить кризис программного обеспечения. Инструменты, дисциплина, формальные методы , процесс и профессионализм рекламировались как серебряные пули: [ нужна ссылка ]

  • Инструменты: Особое внимание уделялось инструментам: структурное программирование , объектно-ориентированное программирование , CASE- ICL CADES CASE, инструменты, такие как система [18] Ада , документация и стандарты рекламировались как серебряные пули.
  • Дисциплина. Некоторые эксперты утверждали, что кризис программного обеспечения произошел из-за отсутствия дисциплины у программистов.
  • Формальные методы. Некоторые считали, что если к разработке программного обеспечения будут применяться формальные инженерные методологии, то производство программного обеспечения станет такой же предсказуемой отраслью, как и другие отрасли разработки. Они выступали за доказательство правильности всех программ.
  • Процесс: Многие выступали за использование определенных процессов и методологий, таких как Модель зрелости возможностей .
  • Профессионализм: Это привело к работе над кодексом этики, лицензиями и профессионализмом.

В 1986 году Фред Брукс опубликовал свою статью «Нет серебряной пули» , в которой утверждал, что ни одна отдельная технология или практика никогда не приведет к 10-кратному повышению производительности в течение 10 лет. [ нужна ссылка ]

Дебаты о серебряных пулях бушевали в течение следующего десятилетия. Сторонники Ada , компонентов и процессов годами продолжали утверждать, что их любимой технологией будет серебряная пуля. Скептики не согласились. В конце концов, почти все согласились с тем, что серебряной пули никогда не будет найдено. Тем не менее, утверждения о серебряных пулях появляются время от времени, даже сегодня. [ нужна ссылка ]

Некоторый [ ВОЗ? ] интерпретировать [ почему? ] нет серебряной пули , означающей, что разработка программного обеспечения потерпела неудачу. [ нужны разъяснения ] Однако, читая дальше, Брукс продолжает: «Мы наверняка добьемся существенного прогресса в течение следующих 40 лет; порядок величины за 40 лет вряд ли является волшебством…» [ нужна ссылка ]

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

Однако можно также сказать, что сегодня существует целый ряд серебряных пуль , включая облегченные методологии (см. « Управление проектами »), калькуляторы электронных таблиц, настраиваемые браузеры , поисковые системы на месте, генераторы отчетов по базам данных, интегрированный дизайн. - тестовые редакторы кодирования с памятью/различиями/отменами, а также специализированные магазины, которые создают нишевое программное обеспечение, такое как информационные веб-сайты, за небольшую часть стоимости полностью индивидуальной разработки веб-сайтов. Тем не менее, область разработки программного обеспечения кажется слишком сложной и разнообразной, чтобы одна «серебряная пуля» могла решить большинство проблем, и каждая проблема составляет лишь небольшую часть всех проблем программного обеспечения. [ нужна ссылка ]

1990–1999: в Интернете известность

Развитие Интернета привело к очень быстрому росту спроса на международные системы отображения информации и электронной почты во Всемирной паутине. Программистам приходилось обрабатывать иллюстрации, карты, фотографии и другие изображения, а также простую анимацию с невиданной ранее скоростью, используя несколько известных методов оптимизации отображения/хранения изображений (например, использование миниатюр). [ нужна ссылка ]

Рост использования браузеров, работающих на языке гипертекстовой разметки (HTML), изменил способ организации отображения и поиска информации. Широкое распространение сетевых подключений привело к росту и предотвращению международных компьютерных вирусов на компьютерах MS Windows, а массовое распространение спама по электронной почте стало серьезной проблемой проектирования систем электронной почты, переполняя каналы связи и требуя полуавтоматической предварительной проверки. . Системы поиска по ключевым словам превратились в веб- поисковые системы , и многие программные системы пришлось перепроектировать для международного поиска в зависимости от поисковой оптимизации (SEO). Чтобы попытаться перевести информационный поток на несколько иностранных языков, были необходимы системы перевода с естественного языка, при этом многие программные системы были разработаны для многоязычного использования на основе концепций проектирования, разработанных переводчиками-людьми. Типичная база пользователей компьютеров варьировалась от сотен или тысяч пользователей до многих миллионов пользователей по всему миру. [ нужна ссылка ]

2000–2015 облегченные методологии :

С ростом спроса на программное обеспечение во многих небольших организациях потребность в недорогих программных решениях привела к появлению более простых и быстрых методологий, которые позволяют быстрее и проще разрабатывать работающее программное обеспечение, от требований до развертывания. Использование быстрого прототипирования превратилось в целые облегченные методологии , такие как экстремальное программирование (XP), которое пыталось упростить многие области разработки программного обеспечения, включая сбор требований и тестирование надежности для растущего огромного числа небольших программных систем. В очень крупных программных системах все еще использовались тщательно документированные методологии, набор документации которых состоял из многих томов; однако в меньших системах использовался более простой и быстрый альтернативный подход к управлению разработкой и обслуживанием программных вычислений и алгоритмов, хранения/поиска и отображения информации. [ нужна ссылка ]

Современные тенденции в разработке программного обеспечения [ править ]

Программная инженерия — молодая дисциплина, которая все еще развивается. К направлениям, по которым развивается программная инженерия, относятся: [ нужна ссылка ]

Аспекты [ править ]

Аспекты помогают разработчикам программного обеспечения работать с атрибутами качества , предоставляя инструменты для добавления или удаления шаблонного кода из многих областей исходного кода . Аспекты описывают, как все объекты или функции должны вести себя в определенных обстоятельствах. Например, аспекты могут добавлять управление отладкой , журналированием или блокировкой ко всем объектам определенных типов. В настоящее время исследователи работают над тем, чтобы понять, как использовать аспекты для разработки кода общего назначения. Связанные концепции включают генеративное программирование и шаблоны .

Экспериментальный [ править ]

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

Линии программных продуктов

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

Конференция «Будущее программной инженерии» (FOSE), состоявшаяся на ICSE 2000, задокументировала современное состояние SE в 2000 году и перечислила множество проблем, которые предстоит решить в течение следующего десятилетия. Треки FOSE на ICSE 2000 [19] и ICSE 2007 г. [20] конференции также помогают определить современное состояние разработки программного обеспечения. [ нужна ссылка ]

Программная инженерия сегодня [ править ]

Профессия пытается определить свои границы и содержание. Свод знаний по программной инженерии SWEBOK был внесен в качестве стандарта ISO в 2006 году (ISO/IEC TR 19759). [ нужна ссылка ]

В 2006 году журналы Money Magazine и Salary.com оценили разработку программного обеспечения как лучшую работу в Америке с точки зрения роста, оплаты, уровня стресса, гибкого графика и рабочей среды, креативности, а также того, насколько легко войти в эту область и продвигаться по ней. [21]

Субдисциплины [ править ]

Искусственный интеллект [ править ]

Большое разнообразие платформ позволило развивать различные аспекты искусственного интеллекта: от экспертных систем, таких как Cyc, до глубокого обучения и роботизированных платформ, таких как Roomba, с открытым интерфейсом. [22] Недавние достижения в области глубоких искусственных нейронных сетей и распределенных вычислений привели к распространению программных библиотек, включая Deeplearning4j , TensorFlow , Theano и Torch .

проведенное в 2011 году, Исследование McKinsey Global Institute, выявило нехватку 1,5 миллиона высококвалифицированных специалистов и менеджеров в области обработки данных и искусственного интеллекта. [23] и ряд частных учебных курсов разработали программы для удовлетворения этого спроса, включая бесплатные программы, такие как The Data Incubator , или платные программы, такие как General Assembly . [24]

Языки [ править ]

Ранний символический ИИ вдохновил Lisp и Prolog , которые доминировали в раннем программировании ИИ. В современной разработке ИИ часто используются основные языки, такие как Python или C++ . [25] или нишевые языки, такие как Wolfram Language . [26]

Выдающиеся деятели в истории разработки программного обеспечения [ править ]

См. также [ править ]

Ссылки [ править ]

  1. ^ «CS302: «История программного обеспечения» Джареда Кинга » . Learn.saylor.org . Проверено 17 февраля 2018 г.
  2. ^ «Программная инженерия… недавно стала отдельной дисциплиной». Соммервилл, Ян (1985) [1982]. Программная инженерия . Аддисон-Уэсли. ISBN  978-0-201-14229-7 .
  3. ^ Аббате, Джанет (2012). Перекодировка пола . Кембридж, Массачусетс: MIT Press. стр. 39 . ISBN  978-0262534536 .
  4. ^ Энсменгер, Натан (2012). Компьютерные мальчики берут верх . Кембридж, Массачусетс: MIT Press. ISBN  978-0262517966 .
  5. ^ «Эпизод 576: Когда женщины перестали программировать» . NPR Планета Деньги . 17 октября 2014 г. Проверено 27 июня 2018 г.
  6. ^ Jump up to: Перейти обратно: а б Мейер, Бертран (4 апреля 2013 г.). «Происхождение «программной инженерии» » . Проверено 25 ноября 2016 г.
  7. ^ Тадре, Матти (3 декабря 2014 г.). Наука вычислений . ЦРК Пресс. п. 121. ИСБН  978-1-4822-1770-4 .
  8. ^ Махони, Майкл. «Корни программной инженерии» (PDF) . CWI Ежеквартально . 3 (4): 325–334. Архивировано из оригинала (PDF) 20 февраля 2011 г. Проверено 10 февраля 2023 г.
  9. ^ Международная конференция по программной инженерии 2018 года, отмечающая свое 40-летие и 50-летие разработки программного обеспечения. «ICSE 2018 — Пленарные заседания — Маргарет Гамильтон» . Ютуб . Проверено 9 июня 2018 г. {{cite web}}: CS1 maint: числовые имена: список авторов ( ссылка )
  10. ^ Рэйл, AJS (16 октября 2008 г.). «Инженеры и ученые НАСА, превращающие мечты в реальность» . Сайт, посвященный 50-летию НАСА . НАСА . Проверено 25 ноября 2016 г.
  11. ^ «Первый инженер-программист | Компьютерное общество IEEE» . 5 октября 2018 года . Проверено 05 марта 2023 г.
  12. ^ Брайан Рэнделл (2001). «Конференции НАТО по разработке программного обеспечения» . ncl.ac.uk. ​Проверено 25 ноября 2016 г.
  13. ^ Jump up to: Перейти обратно: а б с Кинг, Джаред (2016). «История программного обеспечения» Джареда Кинга » . CS302: Разработка программного обеспечения . Сайт Saylor.org . Проверено 25 ноября 2016 г.
  14. ^ Терак-25
  15. ^ Левесон, штат Нью-Йорк; Тернер, CS (1 июля 1993 г.). «Расследование несчастных случаев на Therac-25». Компьютер . 26 (7): 18–41. CiteSeerX   10.1.1.372.412 . дои : 10.1109/MC.1993.274940 . ISSN   0018-9162 . S2CID   9691171 .
  16. ^ Нойманн, Питер Г. «СПИСОК РИСКОВ: Дайджест РИСК-ФОРУМА» . Дайджест рисков .
  17. ^ {Майкл Джексон, «Инжиниринг и программная инженерия» в S Nanz ed, «Будущее разработки программного обеспечения», Springer Verlag 2010; Майкл Джексон, «Проблемные рамки: анализ и структурирование проблем разработки программного обеспечения»; Аддисон-Уэсли, 2001 г.}
  18. ^ DJPearson «Использование системы разработки программного обеспечения и злоупотребление ею», Национальная компьютерная конференция, 1979 г.
  19. ^ «ICSE2000: Призыв к участию» . ул.и.
  20. ^ «ICSE 2007: Главная» . ucl.ac.uk.
  21. ^ Калварски, Тара; Дафна Мошер; Джанет Паскин; Донна Розато (2006). «Лучшие вакансии в Америке» . Журнал ДЕНЬГИ . CNN . Проверено 20 апреля 2006 г. , «Журнал MONEY и сайт Salary.com исследовали сотни вакансий с учетом их роста, оплаты, уровня стресса и других факторов. Эти профессии заняли самые высокие места. 1. Инженер-программист...»
  22. ^ «Взлом Roomba» . hackingroomba.com . Архивировано из оригинала 18 октября 2009 года.
  23. ^ Маньика, Джеймс; Чуй, Майкл; Бюген, Жак; Браун, Брэд; Доббс, Ричард; Роксбург, Чарльз; Байерс, Анджела Хунг (май 2011 г.). «Большие данные: следующий рубеж инноваций, конкуренции и производительности» . Глобальный институт McKinsey. Архивировано из оригинала 6 марта 2013 года . Проверено 16 января 2016 г. {{cite journal}}: Для цитирования журнала требуется |journal= ( помощь )
  24. ^ «Нью-Йорк открывает новый учебный лагерь для специалистов по обработке данных: он бесплатный, но попасть в него труднее, чем в Гарвард» . Венчурный бит . Архивировано из оригинала 15 февраля 2016 года . Проверено 21 февраля 2016 г.
  25. ^ «С++ Java» . infoworld.com . Проверено 6 декабря 2017 г.
  26. ^ Феррис, Роберт (7 апреля 2016 г.). «Как друг Стива Джобса изменил мир математики» . CNBC . Проверено 28 февраля 2018 г.

Внешние ссылки [ править ]

Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: f663d54977bdb5f64fa7c0b5a0669c10__1717775520
URL1:https://arc.ask3.ru/arc/aa/f6/10/f663d54977bdb5f64fa7c0b5a0669c10.html
Заголовок, (Title) документа по адресу, URL1:
History of software engineering - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)