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

редактировать

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

Содержание
  • 1 Обзор
  • 2 1945–1965: Истоки
  • 3 1965–1985: Кризис программного обеспечения
  • 4 1985–1989 : «Серебряная пуля»
    • 4.1 Программные проекты
  • 5 1990–1999: Известность Интернета
  • 6 2000–2015: Облегченные методологии
    • 6.1 Современные тенденции в разработке программного обеспечения
      • 6.1.1 Аспекты
      • 6.1.2 Экспериментальный
      • 6.1.3 Линейки программных продуктов
    • 6.2 Программная инженерия сегодня
  • 7 Поддисциплины
    • 7.1 Искусственный интеллект
      • 7.1.1 Языки
  • 8 Выдающиеся деятели в история разработки программного обеспечения
  • 9 См. также
  • 10 Ссылки
  • 11 Внешние ссылки
Обзор

Развитие программной инженерии примечательно в ряде областей:

  • Появление как профессия: к началу 1980-х, чтобы стоять рядом с информатикой и традиционной инженерией.
  • Роль женщин : До 1970 года мужчины занимали более престижные и высокооплачиваемые должности инженеров оборудования Часто поручали создание программного обеспечения женщинам, и такие легенды, как Грейс Хоппер или Маргарет Гамильтон, заполнили многие компьютерные программисты.. Сегодня работает меньше женщин. в программной инженерии, чем в других профессиях, ситуация, причина которой четко не определена. Многие академические и профессиональные организации считают эту ситуацию несбалансированной и изо всех сил пытаются ее решить.
  • Процессы: Процессы стали большой частью разработки программного обеспечения. Их превозносят за их потенциал для улучшения программного обеспечения, но резко критикуют за их способность ограничивать программистов.
  • Стоимость оборудования: Относительная стоимость программного обеспечения по сравнению с аппаратным обеспечением существенно изменилась за последние 50 лет. Когда мэйнфреймы были дорогими и требовали большого вспомогательного персонала, несколько организаций, покупавших их, также имели ресурсы для финансирования крупных и дорогостоящих проектов по разработке программного обеспечения. Компьютеров стало намного больше и они стали намного мощнее, что несколько повлияло на программное обеспечение. Более крупный рынок может поддерживать крупные проекты по созданию коммерческого программного обеспечения, как это делают такие компании, как Microsoft. Дешевые машины позволяют каждому программисту иметь терминал, способный довольно быстро компилировать. Рассматриваемые программы могут использовать такие методы, как сборка мусора, что упрощает и ускоряет их написание программистом. С другой стороны, гораздо меньшее количество организаций заинтересованы в найме программистов для крупных заказных программных проектов, вместо того, чтобы использовать в максимально возможной степени готовое коммерческое программное обеспечение.
1945–1965: Истоки

Предполагаемое происхождение термина «программная инженерия» включает письмо от 1965 года президента ACM Энтони Эттингера, лекции Дугласа Т. Росс в Массачусетском технологическом институте в 1950-х. Маргарет Х. Гамильтон. "- это человек, который придумал назвать эту дисциплину, программную инженерию, как способ придать ей легитимность".

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

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

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

  • Стоимость и перерасход бюджета : Операционная система OS / 360 была классическим примером. В результате этого десятилетнего проекта 1960-х годов была создана одна из самых сложных программных систем того времени. OS / 360 была одним из первых крупных программных проектов (1000 программистов). Фред Брукс утверждает в Мифический человеко-месяц, что он совершил многомиллионную ошибку, не разработав согласованную архитектуру перед началом разработки.
  • Материальный ущерб: дефекты программного обеспечения могут привести к материальному ущербу. Плохая безопасность программного обеспечения позволяет хакерам красть личные данные, тратя время, деньги и репутацию.
  • Жизнь и смерть: дефекты программного обеспечения могут убить. Некоторые встроенные системы, используемые в аппаратах лучевой терапии, вышли из строя настолько, что пациенты получили летальные дозы излучения. Самым известным из этих сбоев является инцидент Therac-25.

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

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

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

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

Программные проекты

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

  • Дисциплина: Некоторые эксперты утверждали, что кризис программного обеспечения был вызван отсутствием дисциплины у программистов.
  • Формальные методы: Некоторые полагали, что если формальные инженерные методологии будут применяться к разработке программного обеспечения, то производство программного обеспечения станет такой же предсказуемой отраслью, как и другие отрасли машиностроения. Они выступали за подтверждение правильности всех программ.
  • Профессионализм: Это привело к работе над этическим кодексом, лицензии и профессионализм.

В 1986 году Фред Брукс опубликовал статью No Silver Bullet, в которой утверждалось, что никакая отдельная технология или практика никогда не позволят повысить производительность труда в 10 раз. 10 лет.

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

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

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

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

1990–1999: Важность Интернет

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

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

с 2000 по 2015 год: упрощенные методологии

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

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

Разработка программного обеспечения - это молодая дисциплина, и она все еще развивается. Направления развития программной инженерии включают:

Аспекты

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

Экспериментальное

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

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

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

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

Программная инженерия сегодня

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

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

Поддисциплины

Искусственный интеллект

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

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

Languages ​​

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

Выдающиеся фигуры в истории разработки программного обеспечения
См. Также
Ссылки
Внешние ссылки
Последняя правка сделана 2021-05-23 14:55:00
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте