stringtranslate.com

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

Программная инженерия — это инженерный подход к разработке программного обеспечения . [1] [2] [3] Специалист, называемый инженером-программистом , применяет процесс инженерного проектирования для разработки программного обеспечения .

Термины «программист» и «кодер» частично совпадают с термином «инженер-программист» , но они подразумевают только конструктивный аспект типичной рабочей нагрузки инженера-программиста. [4]

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

История

Начиная с 1960-х годов программная инженерия была признана отдельной областью инженерии .

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

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

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

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

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

Терминология

Определение

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

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

Этимология

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

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

Пригодность

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

Рабочая нагрузка

Анализ требований

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

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

Дизайн

Проектирование программного обеспечения — это процесс создания высокоуровневых планов для программного обеспечения. Проектирование иногда делится на уровни:

Строительство

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

Тестирование

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

При описании отдельно от конструкции тестирование обычно выполняется инженерами по тестированию или службой обеспечения качества, а не программистами, которые его написали. Оно выполняется на системном уровне и считается аспектом качества программного обеспечения .

Анализ программы

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

Обслуживание

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

Обычно расходы на техническое обслуживание составляют от 40% до 80% стоимости проекта. [36]

Образование

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

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

Программы обучения по программной инженерии

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

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

В 1998 году Военно-морская аспирантура США (NPS) создала первую в мире программу докторантуры по программной инженерии. [ требуется ссылка ] Кроме того, появилось много онлайн-степеней по программной инженерии, таких как степень магистра наук по программной инженерии (MSE), предлагаемая на факультете компьютерных наук и инженерии Калифорнийского государственного университета в Фуллертоне . Стив Макконнелл полагает, что поскольку большинство университетов преподают компьютерные науки, а не программную инженерию, существует нехватка настоящих программных инженеров. [40] Университет ETS (École de technologie supérieure) и UQAM (Université du Québec à Montréal) получили от IEEE поручение разработать свод знаний по программной инженерии ( SWEBOK ), который стал стандартом ISO, описывающим совокупность знаний, охватываемых программным инженером. [5]

Профессия

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

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

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

Работа

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

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

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

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

Бюро статистики труда США (BLS) насчитало 1 365 500 разработчиков программного обеспечения, работающих в США в 2018 году. [51] Из-за своей относительной новизны как области изучения формальное образование в области программной инженерии часто преподается как часть учебной программы по компьютерным наукам, и многие инженеры-программисты имеют степени в области компьютерных наук. [52] BLS оценивает, что с 2023 по 2033 год инженерия компьютерного программного обеспечения увеличится на 17%. [53] Это ниже оценки BLS на 2022–2032 годы в 25% для программной инженерии. [53] [54] И еще ниже их оценки BLS на 2010–2020 годы в 30%. [55] Из-за этой тенденции рост рабочих мест может быть не таким быстрым, как в последнее десятилетие, поскольку рабочие места, которые могли бы достаться инженерам-программистам в Соединенных Штатах, вместо этого будут переданы на аутсорсинг инженерам-программистам в таких странах, как Индия и другие зарубежные страны. [56] [49] Кроме того, BLS Job Outlook для программистов, Бюро статистики труда США (BLS) Occupational Outlook предсказывает спад на -7 процентов с 2016 по 2026 год, дальнейшее снижение на -9 процентов с 2019 по 2029 год, снижение на -10 процентов с 2021 по 2031 год. [56] а затем снижение на -11 процентов с 2022 по 2032 год. [56] Поскольку программированием можно заниматься из любой точки мира, компании иногда нанимают программистов в странах, где заработная плата ниже. [ 56] [57] [58] Кроме того, во многих областях программного обеспечения также наблюдается снижение числа женщин по сравнению с другими инженерными областями. [59] Кроме того, существует дополнительная обеспокоенность тем, что недавние достижения в области искусственного интеллекта могут повлиять на спрос на будущие поколения инженеров-программистов. [60] [61] [62] [63] [64] [65] [66] Однако эта тенденция может измениться или замедлиться в будущем, поскольку многие нынешние инженеры-программисты на рынке США покинут профессию или выйдут с рынка в связи со старением в течение следующих нескольких десятилетий. [56]

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

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

Более широкая сертификация общих навыков разработки программного обеспечения доступна через различные профессиональные общества. По состоянию на 2006 год IEEE сертифицировал более 575 специалистов по программному обеспечению как сертифицированных специалистов по разработке программного обеспечения (CSDP). [69] В 2008 году они добавили сертификацию начального уровня, известную как сертифицированный специалист по разработке программного обеспечения (CSDA). [ 70] В начале 1980-х годов у ACM была программа профессиональной сертификации, [ необходима ссылка ] , которая была прекращена из-за отсутствия интереса. ACM и IEEE Computer Society совместно изучали возможность лицензирования инженеров-программистов как профессиональных инженеров в 1990-х годах, но в конечном итоге решили, что такое лицензирование не подходит для профессиональной промышленной практики разработки программного обеспечения. [44] Джон К. Найт и Нэнси Г. Левесон представили более сбалансированный анализ вопроса лицензирования в 2002 году. [45]

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

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

Первоначальное влияние аутсорсинга и относительно низкая стоимость международных человеческих ресурсов в развивающихся странах третьего мира привели к массовой миграции деятельности по разработке программного обеспечения из корпораций в Северной Америке и Европе в Индию, а позднее: в Китай, Россию и другие развивающиеся страны. Этот подход имел некоторые недостатки, в основном разницу в расстоянии/часовом поясе, которая препятствовала человеческому взаимодействию между клиентами и разработчиками, и массовую передачу работы. Это оказало негативное влияние на многие аспекты профессии программной инженерии. Например, некоторые студенты в развитых странах избегают образования, связанного с программной инженерией, из-за страха офшорного аутсорсинга (импорта программных продуктов или услуг из других стран) и вытеснения иностранными визовыми работниками . [73] Хотя статистика в настоящее время не показывает угрозы для самой программной инженерии, связанная с ней карьера, компьютерное программирование, по-видимому, пострадала. [74] Тем не менее, способность разумно использовать офшорные и прибрежные ресурсы с помощью рабочего процесса follow-the-soln улучшила общие операционные возможности многих организаций. [75] Когда североамериканцы уходят с работы, азиаты только приезжают на нее. Когда азиаты уходят с работы, европейцы приходят на работу. Это обеспечивает непрерывную возможность человеческого контроля за критически важными для бизнеса процессами 24 часа в сутки, без выплаты сверхурочных или нарушения ключевого человеческого ресурса — режима сна.

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

Призы

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


Критика

Некоторые призывают к лицензированию, сертификации и кодифицированным системам знаний как механизмам распространения инженерных знаний и развития этой области. [80]

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

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

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

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

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

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

Роли

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

Ссылки

Цитаты

  1. ^ abcde Абран и др. 2004
  2. ^ ACM (2007). "Computing Degrees & Careers". ACM . Получено 2010-11-23 .
  3. ^ Лапланте, Филлип (2007). Что каждый инженер должен знать о программной инженерии. Бока-Ратон: CRC. ISBN 978-0-8493-7228-5. Получено 21.01.2011 .
  4. ^ Богост, Ян (5 ноября 2015 г.). «Программисты: перестаньте называть себя инженерами». The Atlantic .
  5. ^ abcdefgh Бурк, Пьер; Фэрли, Ричард Э. (Дик), ред. (2014). Руководство по своду знаний по программной инженерии версии 3.0 (SWEBOK). IEEE Computer Society .
  6. ^ "История кодирования и разработки программного обеспечения". www.hackreactor.com . Получено 2021-05-06 .
  7. ^ "Компьютеры и автоматизация: компьютерный справочник и руководство покупателя, 1965" (PDF) . bitsavers.org . Получено 15 июля 2023 г. .
  8. ^ Эттингер, АГ (1966). «Письмо президента членам ACM». Commun. ACM . 9 (8). Ассоциация вычислительной техники: 545–546. doi : 10.1145/365758.3291288 . ISSN  0001-0782. S2CID  53432801.
  9. ^ "Происхождение "программной инженерии"". 4 апреля 2013 г. Получено 17 ноября 2017 г.
  10. ^ Рэндалл, Брайан. «Отчеты НАТО по программной инженерии 1968/69 гг.» . Получено 17 ноября 2017 г. .
  11. ^ Лори Кэмерон (5 октября 2008 г.). «Маргарет Гамильтон: первый инженер-программист». Tech News . IEEE Computer Society .
  12. ^ Ян Соммервилл (24 марта 2015 г.). Программная инженерия (10-е изд.). Pearson Education Limited. ISBN 978-0-13-394303-0.
  13. ^ Питер, Наур; Рэнделл, Брайан (7–11 октября 1968 г.). Программная инженерия: Отчет о конференции, спонсируемой Научным комитетом НАТО (PDF) . Гармиш, Германия: Отдел научных дел, НАТО . Получено 26.12.2008 .
  14. ^ Рэнделл, Брайан (10 августа 2001 г.). "Отчеты НАТО по программной инженерии за 1968/69 гг.". Домашняя страница университета Брайана Рэнделла . Факультет компьютерных наук, Ньюкаслский университет . Получено 11 октября 2008 г. Идея первой конференции НАТО по программной инженерии, и в частности принятие тогда практически неизвестного термина "программная инженерия" в качестве ее (намеренно провокационного) названия, как я полагаю, изначально принадлежала профессору Фритцу Бауэру .
  15. ^ Международная конференция по программной инженерии 2018 года отмечает свое 40-летие и 50 лет программной инженерии (31 мая 2018 г.). "ICSE 2018 – Пленарные сессии – Фред Брукс". YouTube . Получено 9 августа 2018 г. .{{cite web}}: CS1 maint: numeric names: authors list (link)
  16. ^ Международная конференция по программной инженерии 2018 года отмечает свое 40-летие и 50 лет программной инженерии (31 мая 2018 г.). "ICSE 2018 – Пленарные сессии – Маргарет Гамильтон". YouTube . Получено 9 августа 2018 г. .{{cite web}}: CS1 maint: numeric names: authors list (link)
  17. ^ ab Linda Hutz Pesante (1 января 2003 г.). Энтони Ралстон; Эдвин Д. Рейли (ред.). "Институт программной инженерии (SEI)". Энциклопедия компьютерных наук . Чичестер , Западный Суссекс, Великобритания: John Wiley and Sons Ltd .: 1611–1613. ISBN 978-0-470-86412-8. (1) Институт был выбран Карнеги-Меллон на конкурсной основе в декабре 1984 года Министерством обороны США (DoD) для улучшения состояния практики разработки программного обеспечения. ... (2) SEI продвигает зрелые решения с доказанной ценностью в широкое использование; примерами служат Модель зрелости возможностей (CMM) ... Значок свободного доступа
  18. ^ ab Объединенная целевая группа по компьютерным учебным программам, IEEE Computer Society , Association for Computing Machinery (23 февраля 2015 г.). Программная инженерия 2014: Руководство по учебным программам для программ бакалавриата по программной инженерии (PDF) . Том серии компьютерных учебных программ. IEEE Computer Society и Association for Computing Machinery .{{cite book}}: CS1 maint: multiple names: authors list (link)
  19. ^ Системная и программная инженерия – Словарь , ISO / IEC / IEEE std 24765:2010(E), 2010.
  20. ^ Стандартный глоссарий терминов программной инженерии IEEE , IEEE std 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.11.2019 .
  24. ^ Уинтерс, Титус; Маншрек, Том; Райт, Хайрам (2020). «Предисловие, Программирование с течением времени». Программная инженерия в Google . O'Reilly Media, Inc. стр. xix–xx, 6–7. ISBN 978-1-492-08279-8. Мы предлагаем, чтобы «программная инженерия» охватывала не только процесс написания кода, но и все инструменты и процессы, которые организация использует для создания и поддержки этого кода с течением времени. Какие практики может внедрить организация-разработчик ПО, чтобы наилучшим образом сохранить ценность своего кода в долгосрочной перспективе? Как инженеры могут сделать кодовую базу более устойчивой, а саму дисциплину программной инженерии более строгой?
  25. ^ Акрам И. Салах (2002-04-05). "Разработка академической программы по программной инженерии" (PDF) . 35-й ежегодный симпозиум по обучению и вычислениям на Среднем Западе . Получено 2006-09-13 .: «Для некоторых программная инженерия — это просто славное название программирования. Если вы программист, вы можете указать на своей визитной карточке «инженер-программист», но никогда «программист».
  26. ^ Миллз, Харлан Д., Дж. Р. Ньюман и К. Б. Энгл-младший, «Учебная программа бакалавриата по программной инженерии», в Deimel, Lionel E. (1990). Образование в области программной инженерии: конференция SEI 1990, Питтсбург, Пенсильвания, США, 2–3 апреля,.. . Springer. ISBN 978-0-387-97274-9., стр. 26: «С практической точки зрения мы рассматриваем программную инженерию как необходимую подготовку для практикующего специалиста по разработке и обслуживанию программного обеспечения. Специалист по компьютерам готовится к дальнейшему теоретическому обучению...»
  27. ^ Барбара Китчевнхэм; Дэвид Баджен; Перл Бреретон; Стивен Линкман (2005). «Реализация основанной на доказательствах программной инженерии». Заметки по программной инженерии ACM SIGSOFT . 30 (4): 1–3. doi :10.1145/1082983.1083175. Мы считаем, что программная инженерия может развиваться как инженерная дисциплина только путем отхода от ее нынешней зависимости от пропаганды и анализа, ...
  28. ^ Лоуренс, Снайдер (2017). Свободное владение информационными технологиями: навыки, концепции и возможности (ред. [Седьмое издание]). Нью-Йорк, Нью-Йорк. ISBN 978-0134448725. OCLC  960641978.{{cite book}}: CS1 maint: location missing publisher (link)
  29. ^ Парнас, Дэвид Л. (1998). «Программы по программной инженерии — это не программы по компьютерной науке». Annals of Software Engineering . 6 : 19–37. doi :10.1023/A:1018949113292. S2CID  35786237., стр. 19: «Вместо того чтобы рассматривать программную инженерию как подраздел компьютерной науки, я рассматриваю ее как элемент множества {Гражданское строительство, Машиностроение, Химическая инженерия, Электротехника,....}».
  30. ^ Парнас, Дэвид Л. (1998). «Программы по программной инженерии — это не программы по компьютерной науке». Annals of Software Engineering . 6 : 19–37. doi :10.1023/A:1018949113292. S2CID  35786237., стр. 20: «В этой статье утверждается, что введение аккредитованных профессиональных программ по программной инженерии, программ, которые смоделированы по образцу программ по традиционным инженерным дисциплинам, поможет повысить как качество, так и количество выпускников, которые благодаря своему образованию хорошо подготовлены к разработке надежных программных продуктов».
  31. ^ Макконнелл, Стив (август 2003 г.). Профессиональная разработка программного обеспечения: более короткие графики, лучшие проекты, превосходные продукты, улучшенная карьера . Бостон, Массачусетс: Addison-Wesley. ISBN 0-321-19367-9., стр. 39: «По моему мнению, ответ на этот вопрос ясен: профессиональная разработка программного обеспечения должна быть инженерией. Так ли это? Нет. Но должна ли она быть таковой? Безусловно, да».
  32. ^ Кнут, Дональд (1974). «Программирование как искусство» (PDF) . Сообщения ACM . 17 (12): 667–673. doi : 10.1145/361604.361612 . S2CID  207685720.Стенограмма лекции по случаю вручения премии Тьюринга 1974 года .
  33. ^ Dijkstra, Edsger W ; расшифровка Mario Béland (23 ноября 2004 г.) [Впервые опубликовано 3 декабря 1993 г.] "There is still a war going on (рукопись Austin, 3 декабря 1993 г.)". Архив EW Dijkstra . Техасский университет в Остине, кафедра компьютерных наук . Получено 17 февраля 2007 г. Когда этот термин был придуман в 1968 г. FL Bauer из Мюнхенского технологического университета, я приветствовал его. [. . .] Я интерпретировал введение термина "программная инженерия" как удачное отражение того факта, что проектирование программных систем было деятельностью par excellence для инженера-математика. [. . .]. Как только этот термин прибыл в США, он был освобожден от всего своего технического содержания. Так и должно было быть, поскольку в своем первоначальном значении он был совершенно неприемлем [. . .] Тем временем программная инженерия стала почти пустым термином, что прекрасно продемонстрировала компания Data General, которая в одночасье повысила всех своих программистов до высокого звания «инженеров-программистов»!
  34. ^ "Программная инженерия | Классификация требований к программному обеспечению". GeeksforGeeks . 2018-06-19 . Получено 2021-05-06 .
  35. ^ "Программная инженерия | Процесс проектирования программного обеспечения". GeeksforGeeks . 2019-05-24 . Получено 2021-05-06 .
  36. ^ "Что такое обслуживание программного обеспечения? Определение обслуживания программного обеспечения, значение обслуживания программного обеспечения". The Economic Times . Получено 2021-05-06 .
  37. ^ Ален Абран; Джеймс У. Мур; Пьер Бурк; Роберт Дюпюи; Леонард Л. Трипп, ред. (2005) [2004]. "Глава 1: Введение в Руководство". Руководство по своду знаний по программной инженерии. IEEE Computer Society . Архивировано из оригинала 2016-05-09 . Получено 2010-09-13 . Предполагается, что общий объем цитируемой литературы будет достаточным для освоения после завершения бакалавриата плюс четырех лет опыта.
  38. ^ Коулинг, А. Дж. 1999. Первое десятилетие программы бакалавриата по программной инженерии. Ann. Softw. Eng. 6, 1–4 (апрель 1999), 61–90.
  39. ^ "ABET Accredited Engineering Programs". 3 апреля 2007 г. Архивировано из оригинала 19 июня 2010 г. Получено 3 апреля 2007 г.
  40. ^ Макконнелл, Стив (10 июля 2003 г.). Профессиональная разработка программного обеспечения: более короткие графики, более качественные продукты, более успешные проекты, улучшенная карьера . ISBN 978-0-321-19367-4
  41. ^ Уильямс, Новый Южный Уэльс (19–21 февраля 2001 г.). «Подход профессиональных инженеров Онтарио к лицензированию специалистов по программной инженерии». Образование и обучение в области программной инженерии, Труды 2001 г. 14-я конференция по . Шарлотт, Северная Каролина: IEEE . стр. 77–78.
  42. ^ "Спецификации экзамена по программной инженерии NCEES" (PDF) . Архивировано из оригинала (PDF) 2013-08-27 . Получено 2012-04-01 .
  43. ^ "NCEES прекращает экзамен PE Software Engineering". Национальный совет экзаменаторов по инженерии и геодезии. 13 марта 2018 г. Получено 6 августа 2018 г.
  44. ^ ab Барбара Саймонс. «Президенты ACM вспоминают свою службу в ACM». Празднование 75-летия развития вычислительной техники как науки и профессии. Ассоциация вычислительной техники . Получено 18 мая 2024 г. После представления рекомендаций групп Совет ACM пришел к выводу, что структура лицензированного профессионального инженера, изначально разработанная для инженеров-строителей, не соответствует профессиональной промышленной практике разработки программного обеспечения и не позволит многим из наиболее квалифицированных инженеров-программистов получить лицензию.
  45. ^ ab John C. Knight; Nancy G. Leveson (1 ноября 2002 г.). «Должны ли инженеры-программисты быть лицензированы?». Communications of the ACM . 45 (11): 87–90. doi :10.1145/581571.581601.
  46. ^ "Кодекс этики программной инженерии" (PDF) . Получено 2012-03-25 .
  47. ^ Labs, Qubit (29 ноября 2022 г.). «Сколько программистов в мире и в США? [2023]». Qubit Labs . Получено 7 февраля 2023 г.
  48. ^ "Глобальное исследование населения и демографии разработчиков 2016 г., версия 2". Evans Data Corporation . Получено 19 января 2017 г.
  49. ^ ab Rosenthal, Rachel (4 августа 2020 г.). «Технологические компании хотят, чтобы вы поверили, что в Америке не хватает навыков». Bloomberg . Получено 8 октября 2021 г.
  50. ^ "Инженеры программного обеспечения и программисты" . Получено 2009-12-17 .
  51. ^ "Разработчики программного обеспечения". Справочник по профессиональным перспективам . Бюро статистики труда США. 4 сентября 2019 г. Получено 11 декабря 2019 г.
  52. ^ "Computing Disciplines and Majors" (PDF) . Ассоциация вычислительной техники . Получено 6 сентября 2019 г. .
  53. ^ ab «Разработчики программного обеспечения: Справочник по профессиональным перспективам». Бюро статистики труда США.
  54. ^ "Инженер-программист". Бюро статистики труда. 19 марта 2010 г. Архивировано из оригинала 26 июля 2013 г. Получено 20 июля 2012 г.
  55. ^ "Разработчики программного обеспечения". Бюро статистики труда. 8 января 2014 г. Получено 21 июля 2012 г.
  56. ^ abcde "Computer Programmers : Occupational Outlook Handbook: : Бюро статистики труда США". Архивировано из оригинала 3 мая 2019 года . Получено 17 января 2017 года .
  57. ^ «Архив по публикации: За пределами цифр: Бюро статистики труда США». www.bls.gov .
  58. ^ «Скоро исчезнувший инженер по встроенному программному обеспечению». designnews.com . 10 мая 2018 г.
  59. ^ "Портал разработчиков HP | Международная женская неделя HP: число женщин в компьютерных науках снижается с 1980-х годов". developers.hp.com .
  60. ^ «Работа инженера-программиста под угрозой из-за инструментов, подобных ChatGPT? Вот что говорит генеральный директор Google Сундар Пичаи». Business Today . 2023-04-06 . Получено 2023-05-12 .
  61. ^ "ChatGPT может сделать эти рабочие места устаревшими". 2023-01-25 . Получено 2023-05-12 .
  62. ^ Кей, Грейс. «Инженеры-программисты паникуют из-за того, что их заменит ИИ». Business Insider . Получено 12 мая 2023 г.
  63. ^ Фаулер, Гэри. «Советский пост: как ChatGPT повлияет на рабочие места?». Forbes . Получено 12 мая 2023 г.
  64. ^ Ито, Аки. «ChatGPT знаменует конец кодирования, каким мы его знаем». Business Insider . Получено 12 мая 2023 г.
  65. ^ Зинкула, Аарон Мок, Джейкоб. «ChatGPT может прийти на наши рабочие места. Вот 10 ролей, которые ИИ, скорее всего, заменит». Business Insider . Получено 12 мая 2023 г. {{cite web}}: CS1 maint: multiple names: authors list (link)
  66. ^ Коэн, Микаэла (15 апреля 2023 г.). «Вот технические профессии, которым больше всего угрожают ChatGPT и ИИ» CNBC . Получено 12 мая 2023 г.
  67. ^ "Страница сертификации SEI". Sei.cmu.edu . Получено 2012-03-25 .
  68. ^ Wyrostek, Warren (14 марта 2008 г.). "10 главных проблем с сертификацией в области ИТ в 2008 г.". InformIT . Получено 03.03.2009 .
  69. ^ IEEE Computer Society . "Отчет IEEE Computer Society Генеральной ассамблее IFIP за 2006 год" (PDF) . Получено 10 апреля 2007 г.
  70. ^ IEEE. "CSDA" . Получено 20.04.2010 .
  71. ^ Канадское общество обработки информации. "ISP Designation" . Получено 2007-03-15 .
  72. ^ "Профессиональные инженеры Онтарио: Добро пожаловать на сайт PEO". Peo.on.ca. Получено 25.03.2012 .
  73. ^ Тибодо, Патрик (2006-05-05). «По мере того, как аутсорсинг набирает обороты, интерес к компьютерным наукам ослабевает». Computerworld.com . Получено 2016-12-06 .
  74. ^ Роберт Маллинс (13 марта 2007 г.). «Рост числа разработчиков ПО в Северной Америке замедляется: исследование показывает, что к 2010 году Азия станет лидером по количеству рабочих мест для разработчиков ПО». InfoWorld . Разработка ПО.
  75. ^ "Gartner Magic Quadrant" (PDF) . Cognizant.com . Получено 2012-03-25 .
  76. ^ Кейси, Валентайн (2010-08-20). «Управление проектами виртуальной команды разработчиков программного обеспечения». Журнал Бразильского компьютерного общества . 16 (2): 83–96. doi : 10.1007/s13173-010-0013-3 . S2CID  14383734.
  77. ^ "Премия за выдающиеся исследования". SIGSOFT . Получено 1 апреля 2024 г. .
  78. ^ Дэвид Ло ( Председатель SIGSOFT Awards); Томас Циммерман ( Председатель SIGSOFT ) (17 января 2024 г.). "SIGSOFT Awards 2024". Блог ACM SIGSOFT . Получено 1 апреля 2024 г.
  79. ^ «Премия ICSE за самую влиятельную статью». ACM SIGSOFT .
  80. ^ Дональд Дж. Багерт (апрель 1999 г.). «Точка зрения: взять на себя ведущую роль в лицензировании инженеров-программистов». Сообщения ACM . 42 (4): 27–29. doi :10.1145/299157.299163.Значок открытого доступа
  81. ^ ab Barry Boehm (сентябрь–октябрь 2002 г.). «Программная инженерия — это контактный вид спорта, основанный на ценностях». IEEE Software . 19 (5): 95–96. doi :10.1109/MS.2002.1032863.
  82. ^ Дейкстра, Э. В. (1988). «О жестокости настоящего преподавания компьютерной науки» . Получено 10.01.2014 .

Источники

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

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