История разработки программного обеспечения
Эта статья нуждается в дополнительных цитатах для проверки . ( октябрь 2008 г. ) |
История вычислений |
---|
Аппаратное обеспечение |
Программное обеспечение |
Информатика |
Современные концепции |
По стране |
Хронология вычислений |
Глоссарий информатики |
История разработки программного обеспечения начинается примерно в 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] Кризис программного обеспечения первоначально определялся с точки зрения производительности , но в дальнейшем стал уделять особое внимание качеству . Некоторые использовали термин «кризис программного обеспечения» для обозначения своей неспособности нанять достаточно квалифицированных программистов. [ нужна ссылка ]
- Перерасход средств и бюджета . OS/360 Классическим примером была операционная система . Этот десятилетний проект 1960-х годов в конечном итоге привел к созданию одной из самых сложных программных систем того времени. [13] OS/360 была одной из первых крупных (1000 программистов) [ нужна ссылка ] ) программные проекты. Фред Брукс утверждает в «Мифическом человеко-месяце» , что он совершил многомиллионную ошибку, не разработав последовательную архитектуру до начала разработки. [13]
- Повреждение имущества. Дефекты программного обеспечения могут привести к повреждению имущества. Плохая безопасность программного обеспечения позволяет хакерам красть личные данные, тратя время, деньги и репутацию. [ нужна ссылка ]
- Жизнь и смерть: дефекты программного обеспечения могут убить. Встроенные системы, в аппаратах лучевой терапии вводились смертельные дозы радиации используемые , доказывают свою способность выходить из строя настолько катастрофически, что пациентам . Самыми известными из этих неудач являются инциденты с Therac-25 . [15]
Питер Г. Нойманн составил современный список проблем и катастроф программного обеспечения. [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]
Выдающиеся деятели в истории разработки программного обеспечения [ править ]
- Чарльз Бахман (1924–2017) особенно известен своей работой в области баз данных .
- Ласло Белади (1928–2021), главный редактор журнала IEEE Transactions on Software Engineering в 1980-х годах.
- Фред Брукс (род. 1931), наиболее известный как руководитель разработки OS/360 .
- Питер Чен (род. 1947), известный разработкой моделирования сущностей и связей .
- Эдсгер В. Дейкстра (1930–2002) разработал основу для формы структурного программирования.
- Дэвид Парнас (род. 1941) разработал концепцию сокрытия информации в модульном программировании .
- Майкл А. Джексон (род. 1936), методист разработки программного обеспечения, ответственный за метод проектирования программ JSP; метод разработки систем JSD (совместно с Джоном Кэмероном); и подход проблемных фреймов для анализа и структурирования проблем разработки программного обеспечения.
- Ричард Столлман создал системные утилиты GNU и пропагандировал свободное программное обеспечение.
См. также [ править ]
Ссылки [ править ]
- ^ «CS302: «История программного обеспечения» Джареда Кинга » . Learn.saylor.org . Проверено 17 февраля 2018 г.
- ^ «Программная инженерия… недавно стала отдельной дисциплиной». Соммервилл, Ян (1985) [1982]. Программная инженерия . Аддисон-Уэсли. ISBN 978-0-201-14229-7 .
- ^ Аббате, Джанет (2012). Перекодировка пола . Кембридж, Массачусетс: MIT Press. стр. 39 . ISBN 978-0262534536 .
- ^ Энсменгер, Натан (2012). Компьютерные мальчики берут верх . Кембридж, Массачусетс: MIT Press. ISBN 978-0262517966 .
- ^ «Эпизод 576: Когда женщины перестали программировать» . NPR Планета Деньги . 17 октября 2014 г. Проверено 27 июня 2018 г.
- ^ Jump up to: Перейти обратно: а б Мейер, Бертран (4 апреля 2013 г.). «Происхождение «программной инженерии» » . Проверено 25 ноября 2016 г.
- ^ Тадре, Матти (3 декабря 2014 г.). Наука вычислений . ЦРК Пресс. п. 121. ИСБН 978-1-4822-1770-4 .
- ^ Махони, Майкл. «Корни программной инженерии» (PDF) . CWI Ежеквартально . 3 (4): 325–334. Архивировано из оригинала (PDF) 20 февраля 2011 г. Проверено 10 февраля 2023 г.
- ^ Международная конференция по программной инженерии 2018 года, отмечающая свое 40-летие и 50-летие разработки программного обеспечения. «ICSE 2018 — Пленарные заседания — Маргарет Гамильтон» . Ютуб . Проверено 9 июня 2018 г.
{{cite web}}
: CS1 maint: числовые имена: список авторов ( ссылка ) - ^ Рэйл, AJS (16 октября 2008 г.). «Инженеры и ученые НАСА, превращающие мечты в реальность» . Сайт, посвященный 50-летию НАСА . НАСА . Проверено 25 ноября 2016 г.
- ^ «Первый инженер-программист | Компьютерное общество IEEE» . 5 октября 2018 года . Проверено 05 марта 2023 г.
- ^ Брайан Рэнделл (2001). «Конференции НАТО по разработке программного обеспечения» . ncl.ac.uk. Проверено 25 ноября 2016 г.
- ^ Jump up to: Перейти обратно: а б с Кинг, Джаред (2016). «История программного обеспечения» Джареда Кинга » . CS302: Разработка программного обеспечения . Сайт Saylor.org . Проверено 25 ноября 2016 г.
- ^ Терак-25
- ^ Левесон, штат Нью-Йорк; Тернер, 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 .
- ^ Нойманн, Питер Г. «СПИСОК РИСКОВ: Дайджест РИСК-ФОРУМА» . Дайджест рисков .
- ^ {Майкл Джексон, «Инжиниринг и программная инженерия» в S Nanz ed, «Будущее разработки программного обеспечения», Springer Verlag 2010; Майкл Джексон, «Проблемные рамки: анализ и структурирование проблем разработки программного обеспечения»; Аддисон-Уэсли, 2001 г.}
- ^ DJPearson «Использование системы разработки программного обеспечения и злоупотребление ею», Национальная компьютерная конференция, 1979 г.
- ^ «ICSE2000: Призыв к участию» . ул.и.
- ^ «ICSE 2007: Главная» . ucl.ac.uk.
- ^ Калварски, Тара; Дафна Мошер; Джанет Паскин; Донна Розато (2006). «Лучшие вакансии в Америке» . Журнал ДЕНЬГИ . CNN . Проверено 20 апреля 2006 г. , «Журнал MONEY и сайт Salary.com исследовали сотни вакансий с учетом их роста, оплаты, уровня стресса и других факторов. Эти профессии заняли самые высокие места. 1. Инженер-программист...»
- ^ «Взлом Roomba» . hackingroomba.com . Архивировано из оригинала 18 октября 2009 года.
- ^ Маньика, Джеймс; Чуй, Майкл; Бюген, Жак; Браун, Брэд; Доббс, Ричард; Роксбург, Чарльз; Байерс, Анджела Хунг (май 2011 г.). «Большие данные: следующий рубеж инноваций, конкуренции и производительности» . Глобальный институт McKinsey. Архивировано из оригинала 6 марта 2013 года . Проверено 16 января 2016 г.
{{cite journal}}
: Для цитирования журнала требуется|journal=
( помощь ) - ^ «Нью-Йорк открывает новый учебный лагерь для специалистов по обработке данных: он бесплатный, но попасть в него труднее, чем в Гарвард» . Венчурный бит . Архивировано из оригинала 15 февраля 2016 года . Проверено 21 февраля 2016 г.
- ^ «С++ Java» . infoworld.com . Проверено 6 декабря 2017 г.
- ^ Феррис, Роберт (7 апреля 2016 г.). «Как друг Стива Джобса изменил мир математики» . CNBC . Проверено 28 февраля 2018 г.
Внешние ссылки [ править ]
- Интервью по устной истории с Брюсом Х. Барнсом , Институт Чарльза Бэббиджа , Университет Миннесоты. Барнс описывает Национальный научный фонд (NSF) и его поддержку исследований в области теоретической информатики , компьютерной архитектуры , численных методов и разработки программного обеспечения , а также развития сетей.
- Интервью по устной истории с Ласло А. Белади , Институт Чарльза Бэббиджа , Университет Миннесоты.