stringtranslate.com

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

Программная инженерия – это инженерно -ориентированный подход к разработке программного обеспечения . [1] [2] [3] Инженер -программист — это человек, который применяет процесс инженерного проектирования для проектирования, разработки, тестирования, обслуживания и оценки компьютерного программного обеспечения . Термин «программист» иногда используется как синоним, но он может подчеркивать реализацию программного обеспечения, а не проектирование, а также может не иметь значения инженерного образования или навыков. [4]

Инженерные методы используются для информирования процесса разработки программного обеспечения , [1] [5] , который включает в себя определение, реализацию, оценку, измерение, управление, изменение и улучшение самого процесса жизненного цикла программного обеспечения. Он активно использует управление конфигурацией программного обеспечения [1] [5] , которое заключается в систематическом контроле изменений конфигурации и поддержании целостности и отслеживаемости конфигурации и кода на протяжении всего жизненного цикла системы. Современные процессы используют управление версиями программного обеспечения .

История

Начиная с 1960-х годов разработка программного обеспечения рассматривалась как отдельный вид разработки . Кроме того, развитие разработки программного обеспечения рассматривалось как борьба. Было трудно поддерживать аппаратное обеспечение, что создавало множество проблем для разработчиков программного обеспечения. Проблемы включали программное обеспечение, которое превышало бюджет, превышало сроки, требовало обширной отладки и обслуживания, а также не отвечало потребностям потребителей или даже не было завершено. В 1968 году НАТО провела первую конференцию по разработке программного обеспечения, на которой были рассмотрены вопросы, связанные с программным обеспечением: были установлены руководящие принципы и передовой опыт разработки программного обеспечения. [6]

Истоки термина «программная инженерия» приписывают различным источникам. Этот термин появился в списке услуг, предлагаемых компаниями, в июньском выпуске журнала «Компьютеры и автоматизация» за 1965 год [7] и более формально использовался в августовском выпуске «Communications of the ACM» за 1966 год (том 9, номер 8) «письмо к членство в ACM» президента ACM Энтони А. Эттингера. [8] [9] Это также связано с названием конференции НАТО в 1968 году профессора Фридриха Л. Бауэра . [10] Маргарет Гамильтон описала дисциплину «разработки программного обеспечения» во время миссий Аполлона, чтобы придать легитимность тому, что они делали. [11] В то время это воспринималось как « кризис программного обеспечения ». [12] [13] [14] 40-я Международная конференция по программной инженерии (ICSE 2018) отмечает 50-летие «программной инженерии» с докладами на пленарных заседаниях Фредерика Брукса [15] и Маргарет Гамильтон . [16]

В 1984 году был основан Институт программной инженерии (SEI) как финансируемый из федерального бюджета центр исследований и разработок со штаб-квартирой в кампусе Университета Карнеги-Меллон в Питтсбурге, штат Пенсильвания, США. Уоттс Хамфри основал программу SEI Software Process, направленную на понимание и управление процессом разработки программного обеспечения. Введенные уровни зрелости процессов станут Интегрированной моделью зрелости возможностей для развития (CMMI-DEV), которая определяет, как правительство США оценивает способности команды разработчиков программного обеспечения.

Современные, общепринятые передовые методы разработки программного обеспечения были собраны подкомитетом ISO/IEC JTC 1/SC 7 и опубликованы как Свод знаний по программной инженерии (SWEBOK). [17] Разработка программного обеспечения считается одной из основных вычислительных дисциплин. [18]

Определения и терминология

Известные определения программной инженерии включают:

Этот термин также использовался менее формально:

Этимология слова «инженер-программист»

Маргарет Гамильтон продвигала термин «программная инженерия» во время работы над программой «Аполлон» . Термин «инженерия» использовался для признания того, что к этой работе следует относиться так же серьезно, как и к другому вкладу в развитие технологий. Гамильтон подробно описывает использование этого термина:

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

Пригодность термина

Отдельные комментаторы резко разошлись во мнениях относительно того, как определять разработку программного обеспечения или ее легитимность как инженерной дисциплины. Дэвид Парнас сказал, что разработка программного обеспечения, по сути, является формой инженерии. [29] [30] Стив МакКоннелл сказал, что это не так, но так должно быть. [31] Дональд Кнут сказал, что программирование — это искусство и наука. [32] Эдсгер В. Дейкстра утверждал, что термины «программная инженерия» и «инженер-программист» использовались неправильно [ неправильный синтез? ] и его следует считать вредным, особенно в Соединенных Штатах. [33]

Задачи в масштабных проектах

Требования к программному обеспечению

Инженерия требований – это выявление, анализ, спецификация и проверка требований к программному обеспечению . Требования к программному обеспечению могут быть трех разных типов. Существуют функциональные требования , нефункциональные требования и требования предметной области. Программное обеспечение должно работать и ожидать, что пользователь сможет использовать соответствующие выходные данные. Нефункциональные требования касаются таких вопросов, как переносимость, безопасность, ремонтопригодность, надежность, масштабируемость, производительность, возможность повторного использования и гибкость. Они подразделяются на следующие типы: ограничения интерфейса, ограничения производительности (например, время отклика, безопасность, пространство для хранения и т. д.), эксплуатационные ограничения, ограничения жизненного цикла (ремонтопригодность, переносимость и т. д.) и экономические ограничения. Знание того, как работает система или программное обеспечение , необходимо, когда дело доходит до определения нефункциональных требований. Требования к предметной области связаны с характеристиками определенной категории или области проектов. [34]

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

Проектирование программного обеспечения — это процесс определения архитектуры, компонентов, интерфейсов и других характеристик системы или компонента. Это также называется архитектурой программного обеспечения . Проектирование программного обеспечения разделено на три различных уровня . Три уровня — это проектирование интерфейса , архитектурное проектирование и детальное проектирование . Проектирование интерфейса — это взаимодействие между системой и ее средой. Это происходит на высоком уровне абстракции вместе с внутренней работой системы. Архитектурный проект имеет дело с основными компонентами системы и их обязанностями, свойствами, интерфейсами, а также их отношениями и взаимодействиями, которые происходят между ними. Детальное проектирование — это внутренние элементы всех основных компонентов системы, их свойства, взаимоотношения, обработка и обычно их алгоритмы и структуры данных . [35]

Создание программного обеспечения

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

Тестирование программного обеспечения

Тестирование программного обеспечения [1] [5] — это эмпирическое техническое исследование, проводимое с целью предоставить заинтересованным сторонам информацию о качестве тестируемого продукта или услуги с использованием различных подходов, таких как модульное тестирование и интеграционное тестирование . Это один из аспектов качества программного обеспечения . Как отдельный этап разработки программного обеспечения, он обычно выполняется персоналом по обеспечению качества или разработчиком, отличным от того, кто написал код.

Анализ программного обеспечения

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

Обслуживание программного обеспечения

Сопровождение программного обеспечения [1] [5] относится к действиям, необходимым для обеспечения экономически эффективной поддержки после поставки программного продукта. Обслуживание программного обеспечения — это модификация и обновление программных приложений после их распространения для исправления ошибок и улучшения их производительности. Программное обеспечение во многом связано с реальным миром, и когда реальный мир меняется, требуется его обслуживание. Обслуживание программного обеспечения включает в себя: исправление ошибок , оптимизацию, удаление неиспользуемых и отброшенных функций, а также улучшение уже существующих функций. Обычно техническое обслуживание занимает от 40% до 80% стоимости проекта, поэтому сосредоточение внимания на техническом обслуживании позволяет снизить затраты. [36]

Образование

Знание компьютерного программирования является обязательным условием для того, чтобы стать инженером-программистом. В 2004 году Компьютерное общество IEEE выпустило SWEBOK , который был опубликован как Технический отчет ISO/IEC 1979:2005, в котором описывается совокупность знаний, которую они рекомендуют освоить дипломированному инженеру-программисту с четырехлетним опытом работы. [37] Многие инженеры-программисты приходят в профессию, получив высшее образование или пройдя обучение в профессионально-техническом училище. Одна стандартная международная учебная программа для бакалавров по разработке программного обеспечения была определена Объединенной целевой группой по вычислительным учебным программам Компьютерного общества IEEE и Ассоциацией вычислительной техники и обновлена ​​в 2014 году . [38] В ряде университетов есть программы на получение степени в области программной инженерии; По состоянию на 2010 год в США существовало 244 программы бакалавриата по программной инженерии , 70 онлайн-программ, 230 программ уровня магистра, 41 программа уровня докторантуры и 69 программ уровня сертификата.

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

Программы получения степени в области разработки программного обеспечения

Половина всех практиков сегодня имеют ученые степени в области компьютерных наук , информационных систем или информационных технологий . [ нужна цитата ] Небольшое, но растущее число практиков имеют степени инженера-программиста. В 1987 году факультет вычислительной техники Имперского колледжа Лондона ввел первую трехлетнюю степень бакалавра в области разработки программного обеспечения в Великобритании и мире; в следующем году аналогичную программу учредил Университет Шеффилда . [39] В 1996 году Рочестерский технологический институт учредил первую в США программу бакалавриата по программной инженерии, однако аккредитацию ABET он получил только в 2003 году, одновременно с Университетом Райса , Университетом Кларксона , Инженерной школой Милуоки и Университет штата Миссисипи получил их. [40] В 1997 году Технологический колледж PSG в Коимбаторе, Индия, первым начал пятилетнюю интегрированную программу обучения на степень магистра наук в области разработки программного обеспечения. [ нужна цитата ]

С тех пор степени бакалавра в области разработки программного обеспечения были учреждены во многих университетах. Стандартная международная учебная программа для получения степени бакалавра в области инженерии программного обеспечения, SE2004 , была определена руководящим комитетом в период с 2001 по 2004 год при финансовой поддержке Ассоциации вычислительной техники и Компьютерного общества IEEE . По состоянию на 2004 год в США около 50 университетов предлагают степени в области разработки программного обеспечения, которые преподают как информатику, так и инженерные принципы и практики. Первая степень магистра в области разработки программного обеспечения была учреждена в Университете Сиэтла в 1979 году. С тех пор степени магистра в области разработки программного обеспечения стали доступны во многих других университетах. Аналогичным образом, в Канаде Канадский совет по инженерной аккредитации (CEAB) Канадского совета профессиональных инженеров признал несколько программ разработки программного обеспечения.

В 1998 году Военно-морская аспирантура США (NPS) учредила первую в мире докторскую программу в области разработки программного обеспечения. [ нужна цитация ] Кроме того, появилось множество онлайн-дипломов в области разработки программного обеспечения, таких как степень магистра наук в области разработки программного обеспечения (MSE), предлагаемая на факультете компьютерных наук и инженерии Калифорнийского государственного университета в Фуллертоне . Стив МакКоннелл полагает, что, поскольку в большинстве университетов преподают информатику, а не разработку программного обеспечения, настоящих инженеров-программистов не хватает. [41] Университет ETS (École de technologie superieure) и UQAM (Университет Квебека в Монреале) получили от IEEE задание разработать свод знаний по программной инженерии ( SWEBOK ), который стал стандартом ISO, описывающим совокупность знаний, охватываемую инженер-программист. [42]

Профессия

Законодательные требования к лицензированию или сертификации профессиональных разработчиков программного обеспечения различаются по всему миру. В Великобритании нет никаких лицензий или юридических требований для принятия или использования должности «Инженер-программист». В некоторых регионах Канады, таких как Альберта, Британская Колумбия, Онтарио [43] и Квебек, инженеры-программисты могут иметь звание профессионального инженера (P.Eng) и/или звание специалиста по информационным системам (ISP). В Европе инженеры-программисты могут получить профессиональное звание европейского инженера (EUR ING). Инженеры-программисты также могут получить профессиональную квалификацию дипломированного инженера через Британское компьютерное общество .

В Соединенных Штатах NCEES начал предлагать экзамен профессионального инженера по разработке программного обеспечения в 2013 году, что позволило инженерам-программистам получить лицензию и признание. [44] NCEES завершил экзамен после апреля 2019 года из-за отсутствия участия. [45] Обязательное лицензирование в настоящее время все еще широко обсуждается и воспринимается как противоречивое. [ нужна цитата ]

IEEE Computer Society и ACM , две основные профессиональные организации по разработке программного обеспечения в США, публикуют руководства по профессии программной инженерии. Руководство IEEE по своду знаний по программной инженерии – версия 2004 года , или SWEBOK , определяет область и описывает знания, которые IEEE ожидает от практикующего инженера-программиста. Самая последняя версия SWEBOK v3 представляет собой обновленную версию и была выпущена в 2014 году. [46] IEEE также публикует «Этический кодекс разработки программного обеспечения». [47]

Работа

По оценкам, по состоянию на 2022 год в мире насчитывается 26,9 миллиона профессиональных инженеров-программистов по сравнению с 21 миллионом в 2016 году. [48] [49]

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

Большинство инженеров-программистов и программистов работают 40 часов в неделю, но в 2008 году около 15 процентов инженеров-программистов и 11 процентов программистов работали более 50 часов в неделю . Периоды , когда вы сидите перед компьютерным терминалом и печатаете на клавиатуре, инженеры и программисты подвержены напряжению глаз, дискомфорту в спине, а также проблемам с руками и запястьями, таким как туннельный синдром запястья . [51]

Соединенные Штаты

Бюро статистики труда США (BLS) насчитало в 2018 году 1 365 500 разработчиков программного обеспечения, имеющих работу в США . [52] Из-за относительной новизны как области обучения формальное образование в области разработки программного обеспечения часто преподается как часть учебной программы по информатике. и многие инженеры-программисты имеют степени в области компьютерных наук. [53] По оценкам BLS, с 2014 по 2024 год объем разработки компьютерного программного обеспечения вырастет на 17%. [54] Это меньше, чем оценка BLS в 2012–2022 годах, составляющая 22% для разработки программного обеспечения. [55] [54] И это еще ниже, чем их оценка BLS в 30% с 2010 по 2020 год. [56] Из-за этой тенденции рост рабочих мест может быть не таким быстрым, как в последнее десятилетие, поскольку рабочие места, которые достались бы инженерам-программистам в Соединенных Штатах, вместо этого были бы переданы на аутсорсинг инженерам-программистам в таких странах, как Индия и другие страны. зарубежные страны. [57] [50] Кроме того, в «Перспективах занятости для программистов» BLS, Бюро статистики труда США (BLS), «Перспективы профессиональной деятельности» прогнозируется снижение на -7 процентов с 2016 по 2026 год, а также дальнейшее снижение на -9 процентов с 2019 по 2026 год. [57] Поскольку программированием можно заниматься из любой точки мира, компании иногда нанимают программистов в разных странах . где зарплаты ниже. [57] [58] [59] Кроме того, число женщин во многих областях программного обеспечения также сокращается с годами по сравнению с другими инженерными областями. [60] Кроме того, существует дополнительная обеспокоенность тем, что недавние достижения в области искусственного интеллекта могут повлиять на спрос на будущие поколения инженеров-программистов. [61] [62] [63] [64] [65] [66] [67] Однако в будущем эта тенденция может измениться или замедлиться, поскольку многие нынешние инженеры-программисты на рынке США покидают профессию или уходят с рынка. в ближайшие несколько десятилетий. [57]

Сертификация

Институт программной инженерии предлагает сертификаты по конкретным темам, таким как безопасность , улучшение процессов и архитектура программного обеспечения . [68] IBM , Microsoft и другие компании также спонсируют свои собственные сертификационные экзамены. Многие программы сертификации ИТ ориентированы на конкретные технологии и управляются поставщиками этих технологий. [69] Эти программы сертификации ориентированы на учреждения, которые будут нанимать людей, использующих эти технологии.

Более широкую сертификацию общих навыков разработки программного обеспечения можно получить в различных профессиональных обществах. По состоянию на 2006 год IEEE сертифицировал более 575 специалистов по программному обеспечению в качестве сертифицированных специалистов по разработке программного обеспечения (CSDP). [70] В 2008 году они добавили сертификацию начального уровня, известную как сертифицированный специалист по разработке программного обеспечения (CSDA). [71] В начале 1980 - х годов у ACM была программа профессиональной сертификации, которая была прекращена из-за отсутствия интереса. ACM рассмотрел возможность профессиональной сертификации инженеров-программистов в конце 1990-х годов, но в конечном итоге решил, что такая сертификация не подходит для профессиональной производственной практики разработки программного обеспечения. [72]

В Великобритании Британское компьютерное общество разработало юридически признанную профессиональную сертификацию под названием Chartered IT Professional (CITP) , доступную для полностью квалифицированных членов ( MBCS ). Инженеры-программисты могут иметь право на членство в Британском компьютерном обществе или Институте инженерии и технологий и, таким образом, иметь право на получение статуса дипломированного инженера в любом из этих учреждений. В Канаде Канадское общество обработки информации разработало юридически признанную профессиональную сертификацию под названием Information Systems Professional (ISP) . [73] В Онтарио, Канада, имеют право инженеры-программисты, окончившие программу, аккредитованную Канадским советом по инженерной аккредитации (CEAB) , успешно сдавшие профессиональный практический экзамен PEO ( Professional Engineers Ontario ) (PPE) и имеющие не менее 48 месяцев приемлемого инженерного опыта. получить лицензию профессиональных инженеров Онтарио и стать профессиональными инженерами P.Eng. [74] Однако PEO не признает онлайновое или дистанционное образование; и не считает программы информатики эквивалентными программам разработки программного обеспечения, несмотря на огромное совпадение между ними. Это вызвало споры и сертификационную войну. Число обладателей степени P.Eng по этой профессии также остается исключительно низким. Подавляющее большинство работающих специалистов в этой области имеют степень в области компьютерной безопасности, а не SE. Учитывая трудный путь сертификации для обладателей степеней, не связанных с SE, большинство из них даже не удосужились получить лицензию.

Влияние глобализации

Первоначальное воздействие аутсорсинга и относительно более низкая стоимость международных человеческих ресурсов в развивающихся странах третьего мира привели к массовой миграции деятельности по разработке программного обеспечения из корпораций Северной Америки и Европы в Индию, а затем в Китай, Россию и другие развивающиеся страны. У этого подхода были некоторые недостатки, в основном разница в расстоянии/часовом поясе, которая препятствовала человеческому взаимодействию между клиентами и разработчиками, а также массовый перенос рабочих мест. Это оказало негативное влияние на многие аспекты профессии программиста. Например, некоторые студенты в развитых странах избегают образования, связанного с разработкой программного обеспечения, из-за страха перед оффшорным аутсорсингом (импортом программных продуктов или услуг из других стран) и из-за страха быть замененными иностранными визовыми работниками . [75] Хотя статистика в настоящее время не показывает угрозы для самой разработки программного обеспечения; связанная с этим карьера, компьютерное программирование, похоже, действительно пострадали. [76] [77] Тем не менее, способность разумно использовать морские и прибрежные ресурсы с помощью рабочего процесса «следуя за солнцем» улучшила общие операционные возможности многих организаций. [78] Когда жители Северной Америки уходят с работы, азиаты только приходят на работу. Когда азиаты уходят с работы, европейцы приезжают на работу. Это обеспечивает непрерывную возможность человеческого контроля над критически важными бизнес-процессами 24 часа в сутки, не выплачивая компенсацию за сверхурочную работу и не нарушая ключевой человеческий ресурс — режим сна.

Хотя глобальный аутсорсинг имеет ряд преимуществ, глобальное (и, как правило, распределенное) развитие может столкнуться с серьезными трудностями из-за расстояния между разработчиками. Это связано с ключевыми элементами этого типа дистанции, которые были определены как географические, временные, культурные и коммуникативные (включая использование разных языков и диалектов английского языка в разных местах). [79] За последние 15 лет были проведены исследования в области глобальной разработки программного обеспечения и опубликован обширный объем соответствующих работ, в которых подчеркиваются преимущества и проблемы, связанные с этой сложной деятельностью. Как и в случае с другими аспектами разработки программного обеспечения, исследования в этой и смежных областях продолжаются.

Призы

Есть несколько премий в области разработки программного обеспечения: [80]

Критика

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

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

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

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

Ряд этих явлений были объединены под названием «Программная инженерия». Поскольку экономику называют «жалкой наукой», разработку программного обеспечения следует называть «обреченной дисциплиной», обреченной, потому что она не может даже приблизиться к своей цели, поскольку ее цель противоречива сама себе. Программная инженерия, конечно, представляет собой еще одно достойное дело, но это пустяк: если вы внимательно прочитаете ее литературу и проанализируете, чем на самом деле занимаются ее приверженцы, вы обнаружите, что программная инженерия приняла в качестве своего устава «Как программировать, если не умеешь». ." [81]

Смотрите также

Учеба и практика

Роли

Профессиональные аспекты

Рекомендации

Цитаты

  1. ^ abcdef Абран и др. 2004 г.
  2. ^ ACM (2007). «Компьютерные степени и карьера». АКМ . Проверено 23 ноября 2010 г.
  3. ^ Лапланте, Филипп (2007). Что должен знать каждый инженер о программной инженерии. Бока-Ратон: CRC. ISBN 978-0-8493-7228-5. Проверено 21 января 2011 г.
  4. ^ «Программисты: перестаньте называть себя инженерами» . Атлантический океан . 5 ноября 2015 г.
  5. ^ abcde «Свод знаний по программной инженерии (SWEBOK, версия 3), 2014» (pdf) . www.swebok.org . Компьютерное общество IEEE . Проверено 24 мая 2016 г.
  6. ^ «История кодирования и разработки программного обеспечения». www.hackreactor.com . Проверено 06 мая 2021 г.
  7. ^ «Компьютеры и автоматизация: Компьютерный каталог и руководство для покупателей, 1965» (PDF) . bitsavers.org . Проверено 15 июля 2023 г.
  8. ^ Эттингер, AG (1966). «Письмо президента членам ACM». Коммун. АКМ . Ассоциация вычислительной техники. 9 (8): 545–546. дои : 10.1145/365758.3291288 . ISSN  0001-0782. S2CID  53432801.
  9. ^ «Происхождение «программной инженерии»». 4 апреля 2013 года . Проверено 17 ноября 2017 г.
  10. ^ Рэндалл, Брайан. «Отчеты НАТО по разработке программного обеспечения за 1968/69 год» . Проверено 17 ноября 2017 г.
  11. ^ Журнал программного обеспечения . «Что нужно знать об ученом, придумавшем термин «программная инженерия»». Архивировано из оригинала 24 ноября 2018 года . Проверено 12 февраля 2019 г.
  12. ^ Соммервилл, Ян (2016). Программная инженерия (10-е изд.). Англия: Pearson Education Limited. п. 19. ISBN 978-1-292-09613-1.
  13. ^ Питер, Наур; Рэнделл, Брайан (7–11 октября 1968 г.). Программная инженерия: отчет конференции, спонсируемой Научным комитетом НАТО (PDF) . Гармиш, Германия: Отдел научных исследований НАТО . Проверено 26 декабря 2008 г.
  14. Рэнделл, Брайан (10 августа 2001 г.). «Отчеты НАТО по разработке программного обеспечения за 1968/69 год». Домашняя страница университета Брайана Рэнделла . Школа компьютерных наук Университета Ньюкасла . Проверено 11 октября 2008 г. Идея первой конференции НАТО по разработке программного обеспечения и, в частности, принятия тогда практически неизвестного термина «инженерия программного обеспечения» в качестве ее (намеренно провокационного) названия, я полагаю, исходила от профессора Фрица Бауэра .
  15. ^ Международная конференция по программной инженерии 2018 года, отмечающая свое 40-летие и 50-летие разработки программного обеспечения. «ICSE 2018 – Пленарные заседания – Фред Брукс». YouTube . Проверено 9 августа 2018 г.{{cite web}}: CS1 maint: numeric names: authors list (link)
  16. ^ Международная конференция по программной инженерии 2018 года, отмечающая свое 40-летие и 50-летие разработки программного обеспечения. «ICSE 2018 – Пленарные заседания – Маргарет Гамильтон». YouTube . Проверено 9 августа 2018 г.{{cite web}}: CS1 maint: numeric names: authors list (link)
  17. ^ «ISO/IEC TR 19759:2005» . Проверено 1 апреля 2012 г.
  18. ^ «Объединенная целевая группа по учебным программам по вычислительной технике, 2005 г.» (PDF) . 21 октября 2014 г. Архивировано (PDF) из оригинала 21 октября 2014 г. Проверено 16 апреля 2020 г.
  19. ^ Системная и программная инженерия – Словарь , ISO / IEC / IEEE std 24765:2010(E), 2010.
  20. ^ Стандартный словарь терминологии разработки программного обеспечения IEEE , стандарт IEEE 610.12-1990, 1990.
  21. ^ Соммервилл, Ян (2007) [1982]. «1.1.2 Что такое программная инженерия?». Программная инженерия (8-е изд.). Харлоу, Англия: Pearson Education. п. 7. ISBN 978-0-321-31379-9. Программная инженерия — это инженерная дисциплина, которая касается всех аспектов производства программного обеспечения, от ранних стадий спецификации системы до обслуживания системы после ее ввода в эксплуатацию. В этом определении есть две ключевые фразы:
    1. Инженерная дисциплина. Инженеры заставляют все работать. Они применяют теории, методы и инструменты там, где это уместно [. . .] Инженеры также признают, что им приходится работать с учетом организационных и финансовых ограничений. [. . .]
    2. Все аспекты производства программного обеспечения Разработка программного обеспечения связана не только с техническими процессами разработки программного обеспечения, но также с такими видами деятельности, как управление проектами программного обеспечения, а также с разработкой инструментов, методов и теорий для поддержки производства программного обеспечения.
  22. ^ «Программная инженерия». Обработка информации . 71 : 530–538.
  23. ^ «Определение ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ» . www.merriam-webster.com . Проверено 25 ноября 2019 г.
  24. ^ Уинтерс, Титус; Маншрек, Том; Райт, Хайрам (2020). «Предисловие, Программирование с течением времени». Разработка программного обеспечения в Google . O'Reilly Media, Inc., стр. xix–xx, 6–7. ISBN 978-1-492-08279-8. Мы предлагаем, чтобы «программная инженерия» охватывала не только процесс написания кода, но и все инструменты и процессы, которые организация использует для создания и поддержки этого кода с течением времени. Какие методы может внедрить организация, занимающаяся разработкой программного обеспечения, чтобы наилучшим образом сохранить ценность своего кода в долгосрочной перспективе? Как инженеры могут сделать кодовую базу более устойчивой, а саму дисциплину разработки программного обеспечения — более строгой?
  25. ^ Акрам И. Салах (5 апреля 2002 г.). «Разработка академической программы в области разработки программного обеспечения» (PDF) . 35-й ежегодный симпозиум по обучению и информатике Среднего Запада . Проверено 13 сентября 2006 г.: «Для некоторых разработка программного обеспечения — это просто прославленное название программирования. Если вы программист, вы можете написать на своей визитной карточке «инженер-программист», но никогда — «программист».
  26. ^ Миллс, Харлан Д., Дж. Р. Ньюман и К. Б. Энгл-младший, «Учебная программа бакалавриата по разработке программного обеспечения», в Деймеле, Лайонеле Э. (1990). Образование в области разработки программного обеспечения: конференция SEI 1990, Питтсбург, Пенсильвания, США, 2–3 апреля.. . Спрингер. ISBN 978-0-387-97274-9.,п. 26: «С практической точки зрения мы рассматриваем разработку программного обеспечения как необходимую подготовку для практикующего специалиста по разработке и обслуживанию программного обеспечения. Компьютерный ученый готовится к дальнейшим теоретическим исследованиям...»
  27. ^ Дэвид Баджен; Перл Бреретон; Барбара Китченхэм ; Стивен Линкман (14 декабря 2004 г.). «Реализация научно обоснованной разработки программного обеспечения». Архивировано из оригинала 17 декабря 2006 г. Проверено 18 октября 2006 г.: «Мы считаем, что разработка программного обеспечения может развиваться как инженерная дисциплина только в том случае, если она отойдет от нынешней зависимости от пропаганды и анализа...».
  28. ^ Лоуренс, Снайдер (2017). Свободное владение информационными технологиями: навыки, концепции и возможности ([Седьмое издание] изд.). Нью-Йорк, Нью-Йорк. ISBN 978-0134448725. ОСЛК  960641978.{{cite book}}: CS1 maint: location missing publisher (link)
  29. ^ Парнас, Дэвид Л. (1998). «Программы по разработке программного обеспечения не являются программами по информатике». Анналы программной инженерии . 6 : 19–37. дои : 10.1023/А: 1018949113292. S2CID  35786237., п. 19: «Вместо того, чтобы рассматривать разработку программного обеспечения как подобласть информатики, я рассматриваю ее как элемент набора {Гражданское строительство, Машиностроение, Химическое машиностроение, Электротехника,....}».
  30. ^ Парнас, Дэвид Л. (1998). «Программы по разработке программного обеспечения не являются программами по информатике». Анналы программной инженерии . 6 : 19–37. дои : 10.1023/А: 1018949113292. S2CID  35786237., п. 20: «В этом документе утверждается, что введение аккредитованных профессиональных программ в области разработки программного обеспечения, программ, созданных по образцу программ по традиционным инженерным дисциплинам, поможет увеличить как качество, так и количество выпускников, которые благодаря своему образованию хорошо подготовлены к разработке заслуживающих доверия программ. программные продукты».
  31. ^ МакКоннелл, Стив (август 2003 г.). Профессиональная разработка программного обеспечения: более короткие сроки, лучшие проекты, превосходные продукты, расширенная карьера . Бостон, Массачусетс: Аддисон-Уэсли. ISBN 0-321-19367-9., п. 39: «По моему мнению, ответ на этот вопрос ясен: профессиональная разработка программного обеспечения должна быть инженерной. Так ли это? Нет. Но должна ли она быть? Бесспорно, да».
  32. ^ Кнут, Дональд (1974). «Компьютерное программирование как искусство» (PDF) . Коммуникации АКМ . 17 (12): 667–673. дои : 10.1145/361604.361612 . S2CID  207685720.Стенограмма лекции на премию Тьюринга 1974 года .
  33. ^ Дейкстра, Эдсгер В .; переписано Марио Беландом (23 ноября 2004 г.) [Впервые опубликовано 3 декабря 1993 г.]. «Война все еще продолжается (рукопись Остин, 3 декабря 1993 г.)». Архив Э. В. Дейкстры . Техасский университет в Остине, факультет компьютерных наук . Проверено 17 февраля 2007 г. Когда этот термин был придуман в 1968 году Ф. Л. Бауэром из Мюнхенского технологического университета, я приветствовал его. [. . .] Я интерпретировал введение термина «инженерия программного обеспечения» как удачное отражение того факта, что проектирование программных систем было преимущественной деятельностью инженера-математика. [. . .]. Как только этот термин появился в США, он был лишен всего своего технического содержания. Так и должно было быть, ибо в своем первоначальном значении это было совершенно неприемлемо. . .] Между тем, термин «программная инженерия» стал почти пустым термином, что прекрасно продемонстрировала компания Data General, которая в одночасье повысила всех своих программистов до высокого звания «инженер-программист»!
  34. ^ «Программная инженерия | Классификация требований к программному обеспечению» . Гики для Гиков . 19.06.2018 . Проверено 06 мая 2021 г.
  35. ^ «Программная инженерия | Процесс разработки программного обеспечения» . Гики для Гиков . 24 мая 2019 г. Проверено 06 мая 2021 г.
  36. ^ «Что такое обслуживание программного обеспечения? Определение обслуживания программного обеспечения, значение обслуживания программного обеспечения» . Экономические времена . Проверено 06 мая 2021 г.
  37. ^ Абран, Ален, изд. (2005) [2004]. «Глава 1: Введение в руководство». Руководство к своду знаний по программной инженерии. Лос Аламитос: Компьютерное общество IEEE. ISBN 978-0-7695-2330-9. Архивировано из оригинала 9 мая 2016 г. Проверено 13 сентября 2010 г. Общий объем цитируемой литературы рассчитан на освоение после получения высшего образования плюс четырехлетний опыт работы.
  38. ^ «Учебная программа по разработке программного обеспечения SE2014» (PDF) . Проверено 7 апреля 2023 г.
  39. ^ Коулинг, AJ 1999. Первое десятилетие обучения на степень бакалавра в области разработки программного обеспечения. Анна. Программное обеспечение англ. 6, 1–4 (апрель 1999 г.), 61–90.
  40. ^ «Аккредитованные инженерные программы ABET» . 3 апреля 2007 года. Архивировано из оригинала 19 июня 2010 года . Проверено 3 апреля 2007 г.
  41. МакКоннелл, Стив (10 июля 2003 г.). Профессиональная разработка программного обеспечения: более короткие сроки, более качественная продукция, более успешные проекты, улучшенная карьера . ISBN 978-0-321-19367-4
  42. ^ Программная инженерия — Руководство по совокупности знаний в области программной инженерии (SWEBOK), Международная организация по стандартизации, 2015 г. , получено 11 января 2020 г.
  43. ^ Уильямс, Новый Южный Уэльс (19–21 февраля 2001 г.). «Подход профессиональных инженеров Онтарио к лицензированию специалистов по разработке программного обеспечения». Образование и обучение в области программной инженерии, Труды 2001 г. 14-я конференция по . Шарлотта, Северная Каролина: IEEE . стр. 77–78.
  44. ^ «Спецификации экзамена NCEES по разработке программного обеспечения» (PDF) . Архивировано из оригинала (PDF) 27 августа 2013 г. Проверено 1 апреля 2012 г.
  45. ^ «NCEES прекращает экзамен PE по разработке программного обеспечения» . Национальный совет экспертов по инженерно-геодезическим работам. 13 марта 2018 года . Проверено 6 августа 2018 г.
  46. ^ «Руководство SWEBOK, версия 3» . Проверено 9 марта 2015 г.
  47. ^ «Кодекс этики разработки программного обеспечения» (PDF) . Проверено 25 марта 2012 г.
  48. Labs, Qubit (29 ноября 2022 г.). «Сколько программистов в мире и в США? [2023]». Кубит Лаборатория . Проверено 7 февраля 2023 г.
  49. ^ «Глобальное исследование населения и демографии застройщиков, 2016 г., версия 2» . Эванс Дата Корпорейшн . Проверено 19 января 2017 г.
  50. ^ аб Розенталь, Рэйчел (4 августа 2020 г.). «Технологические компании хотят, чтобы вы поверили, что в Америке не хватает навыков». Блумберг . Проверено 8 октября 2021 г.
  51. ^ «Инженеры компьютерного программного обеспечения и программисты» . Проверено 17 декабря 2009 г.
  52. ^ «Разработчики программного обеспечения». Справочник по профессиональным перспективам . Бюро статистики труда США. 4 сентября 2019 года . Проверено 11 декабря 2019 г.
  53. ^ «Вычислительные дисциплины и специальности» (PDF) . АКМ . Проверено 6 сентября 2019 г.
  54. ^ ab «Разработчики программного обеспечения: Справочник по профессиональным перспективам». Бюро статистики труда США.
  55. ^ «Инженер-программист» . Бюро статистики труда. 19 марта 2010 года. Архивировано из оригинала 26 июля 2013 года . Проверено 20 июля 2012 г.
  56. ^ «Разработчики программного обеспечения». Бюро статистики труда. 8 января 2014 года . Проверено 21 июля 2012 г.
  57. ^ abcde «Программисты: Справочник по профессиональным перспективам:: Бюро статистики труда США». Архивировано из оригинала 3 мая 2019 года . Проверено 17 января 2017 г.
  58. ^ «Архив публикации: За пределами цифр: Бюро статистики труда США» . www.bls.gov .
  59. ^ «Инженер по встроенному программному обеспечению, который скоро вымрет». designnews.com . 10 мая 2018 г.
  60. ^ «Портал разработчиков HP | Международная женская неделя HP: количество женщин в компьютерных науках снижается с 1980-х годов» . Developers.hp.com .
  61. ^ «Работа инженера-программиста в опасности из-за инструментов, подобных ChatGPT? Вот что говорит генеральный директор Google Сундар Пичаи» . Бизнес сегодня . 6 апреля 2023 г. Проверено 12 мая 2023 г.
  62. ^ «ChatGPT может сделать эти вакансии устаревшими» . 25 января 2023 г. Проверено 12 мая 2023 г.
  63. ^ Кей, Грейс. «Инженеры-программисты паникуют из-за того, что их заменяет ИИ». Бизнес-инсайдер . Проверено 12 мая 2023 г.
  64. ^ Фаулер, Гэри. «Сообщение совета: как ChatGPT повлияет на рабочие места?». Форбс . Проверено 12 мая 2023 г.
  65. ^ Ито, Аки. «ChatGPT означает конец кодирования в том виде, в котором мы его знаем». Бизнес-инсайдер . Проверено 12 мая 2023 г.
  66. ^ Зинкула, Аарон Мок, Джейкоб. «Возможно, ChatGPT придет на наши рабочие места. Вот 10 должностей, которые ИИ, скорее всего, заменит». Бизнес-инсайдер . Проверено 12 мая 2023 г. {{cite web}}: CS1 maint: multiple names: authors list (link)
  67. ^ Коэн, Микаэла. «Это технологические рабочие места, которым больше всего угрожают ChatGPT и AI», CNBC . Проверено 12 мая 2023 г.
  68. ^ «Страница сертификации SEI» . Sei.cmu.edu . Проверено 25 марта 2012 г.
  69. ^ Выростек, Уоррен (14 марта 2008 г.). «10 главных проблем с ИТ-сертификацией в 2008 году». ИнформИТ . Проверено 3 марта 2009 г.
  70. ^ Компьютерное общество IEEE. «Отчет компьютерного общества IEEE за 2006 год Генеральной ассамблее ИФИП» (PDF) . Проверено 10 апреля 2007 г.
  71. ^ IEEE. «ЦСДА» . Проверено 20 апреля 2010 г.
  72. ^ ACM (17 июля 2000 г.). «Краткое изложение позиции ACM в отношении разработки программного обеспечения как лицензированной инженерной профессии» (PDF) . Ассоциация вычислительной техники (ACM). Архивировано из оригинала (PDF) 17 мая 2008 г. Проверено 3 марта 2009 г. На своем заседании в мае 2000 года Совет далее пришел к выводу, что структура лицензированного профессионального инженера, первоначально разработанная для инженеров-строителей, не соответствует профессиональной производственной практике разработки программного обеспечения. Такая практика лицензирования дала бы ложные гарантии компетентности, даже если бы совокупность знаний была зрелой; и помешает многим наиболее квалифицированным разработчикам программного обеспечения получить лицензию.
  73. ^ Канадское общество обработки информации. «Обозначение интернет-провайдера» . Проверено 15 марта 2007 г.
  74. ^ «Профессиональные инженеры Онтарио: Добро пожаловать на сайт PEO» . Peo.on.ca. _ Проверено 25 марта 2012 г.
  75. ^ Тибодо, Патрик (5 мая 2006 г.). «По мере того, как аутсорсинг набирает обороты, интерес к информатике ослабевает». Computerworld.com . Проверено 6 декабря 2016 г.
  76. ^ «Программисты». Bls.gov . Проверено 25 марта 2012 г.
  77. ^ Маллинз, Роберт (13 марта 2007 г.). «Рост разработчиков программного обеспечения в Северной Америке замедляется». Инфомир . Архивировано из оригинала 4 апреля 2009 г. Проверено 25 марта 2012 г.
  78. ^ «Магический квадрант Gartner» (PDF) . Cознательный.com . Проверено 25 марта 2012 г.
  79. ^ Кейси, Валентин (20 августа 2010 г.). «Управление командой проектов виртуального программного обеспечения». Журнал Бразильского компьютерного общества . 16 (2): 83–96. дои : 10.1007/s13173-010-0013-3 . S2CID  14383734.
  80. ^ Некоторые внешние ссылки:
    • Награды СИГСОФТ
    • Награда ICSE за самую влиятельную бумагу
    • Список различных наград в области разработки программного обеспечения (и связанных с SE)
  81. ^ Дейкстра, EW (1988). «О жестокости реального преподавания информатики» . Проверено 10 января 2014 г.

Источники

дальнейшее чтение

Внешние ссылки