Jump to content

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

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

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

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

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

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

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

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

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

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

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

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

Определение

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

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

  • «Систематическое применение научных и технологических знаний, методов и опыта для проектирования, внедрения, тестирования и документирования программного обеспечения». — Бюро статистики труда — Системы IEEE и разработка программного обеспечения — Словарь. [ 19 ]
  • «Применение систематического, дисциплинированного, поддающегося количественной оценке подхода к разработке, эксплуатации и сопровождению программного обеспечения» — IEEE. Стандартный словарь терминологии разработки программного обеспечения [ 20 ]
  • «Инженерная дисциплина, которая касается всех аспектов производства программного обеспечения», — Ян Соммервилль . [ 21 ]
  • «Создание и использование надежных инженерных принципов для экономичного получения программного обеспечения, которое является надежным и эффективно работает на реальных машинах». — Фриц Бауэр [ 22 ]
  • «Отрасль информатики, которая занимается разработкой, реализацией и сопровождением сложных компьютерных программ », — Мерриам-Вебстер . [ 23 ]
  • « Разработка программного обеспечения» охватывает не только процесс написания кода, но и все инструменты и процессы, которые организация использует для создания и поддержки этого кода с течением времени. [...] Программную инженерию можно рассматривать как «программирование, интегрированное с течением времени». . » — Разработка программного обеспечения в Google. [ 24 ]

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

  • как неофициальный современный термин для широкого круга действий, которые раньше назывались компьютерным программированием и системным анализом. [ 25 ]
  • как широкий термин для всех аспектов практики компьютерного программирования, в отличие от теории компьютерного программирования, которая формально изучается как раздел информатики. [ 26 ]
  • как термин, олицетворяющий защиту определенного подхода к компьютерному программированию, который призывает относиться к нему как к инженерной дисциплине, а не как к искусству или ремеслу, и выступает за кодификацию рекомендуемых практик. [ 27 ]

Этимология

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

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

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

Пригодность

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Образование

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

Знание компьютерного программирования является обязательным условием для того, чтобы стать инженером-программистом. В 2004 году Компьютерное общество IEEE выпустило SWEBOK , который был опубликован как Технический отчет ISO/IEC 1979:2005, в котором описывается совокупность знаний, которую они рекомендуют освоить дипломированному инженеру-программисту с четырехлетним опытом работы. [ 37 ] Многие инженеры-программисты приходят в профессию, получив высшее образование или пройдя обучение в профессиональном училище. Одна стандартная международная учебная программа для бакалавров по разработке программного обеспечения была определена Объединенной целевой группой по вычислительным учебным программам Компьютерного общества IEEE и Ассоциации вычислительной техники и обновлена ​​в 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 superieure) и UQAM (Университет Квебека в Монреале) получили мандат от 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 часов в неделю, но в 2008 году около 15 процентов инженеров-программистов и 11 процентов программистов работали более 50 часов в неделю. [ 49 ] Потенциальные травмы на этих профессиях возможны, поскольку, как и другие работники, которые проводят долгое время сидя перед компьютерным терминалом и печатая на клавиатуре, инженеры и программисты подвержены напряжению глаз, дискомфорту в спине и проблемам с руками и запястьями, таким как синдром запястного канала . [ 50 ]

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

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

Бюро статистики труда США (BLS) насчитало в 2018 году 1 365 500 разработчиков программного обеспечения, имеющих рабочие места в США . [ 51 ] Из-за относительной новизны как области обучения формальное образование в области разработки программного обеспечения часто преподается как часть учебной программы по информатике, и многие инженеры-программисты имеют степени в области компьютерных наук. [ 52 ] По оценкам BLS, с 2014 по 2024 год объем разработки компьютерного программного обеспечения вырастет на 17%. [ 53 ] Это меньше, чем оценка BLS в 2012–2022 годах для разработки программного обеспечения в 22%. [ 53 ] [ 54 ] И это еще ниже, чем их оценка BLS в 30% с 2010 по 2020 год. [ 55 ] Из-за этой тенденции рост рабочих мест может быть не таким быстрым, как в последнее десятилетие, поскольку рабочие места, которые достались бы инженерам-программистам в Соединенных Штатах, вместо этого были бы переданы на аутсорсинг инженерам-программистам в таких странах, как Индия и другие зарубежные страны. [ 56 ] [ 49 ] Кроме того, в «Перспективах занятости для программистов» BLS, Бюро статистики труда США (BLS), Профессиональные прогнозы прогнозируют снижение на -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 вместе рассмотрели возможность лицензирования инженеров-программистов как профессиональных инженеров в 1990-х годах. но в конце концов решил, что такое лицензирование не подходит для профессиональной промышленной практики разработки программного обеспечения. [ 44 ] Джон К. Найт и Нэнси Дж. Левесон представили более взвешенный анализ проблемы лицензирования в 2002 году. [ 45 ]

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

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

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

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

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

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

  • Премия Codie — ежегодная награда, присуждаемая Ассоциацией индустрии программного обеспечения и информации за выдающиеся достижения в разработке программного обеспечения в индустрии программного обеспечения.
  • Премия Харлана Миллса за «вклад в теорию и практику информационных наук, ориентированную на разработку программного обеспечения».
  • Премия ICSE за самую влиятельную статью. [ 79 ]
  • Jolt Award , в том числе для индустрии программного обеспечения.


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

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

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

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

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

См. также

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

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

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

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

[ редактировать ]
  1. ^ Jump up to: а б с д и Абран и др. Ошибка harvnb 2004
  2. ^ АКМ (2007). «Компьютерные степени и карьера» . АКМ . Проверено 23 ноября 2010 г.
  3. ^ Лапланте, Филипп (2007). Что должен знать каждый инженер о программной инженерии . Бока-Ратон: CRC. ISBN  978-0-8493-7228-5 . Проверено 21 января 2011 г.
  4. ^ Богост, Ян (5 ноября 2015 г.). «Программисты: перестаньте называть себя инженерами» . Атлантика .
  5. ^ Jump up to: а б с д и ж г час Бурк, Пьер; Фэрли, Ричард Э. (Дик), ред. (2014). Руководство по своду знаний по программной инженерии, версия 3.0 (SWEBOK) . Компьютерное общество IEEE .
  6. ^ «История кодирования и программной инженерии» . www.hackreactor.com . Проверено 06 мая 2021 г.
  7. ^ «Компьютеры и автоматизация: Каталог компьютеров и руководство для покупателей, 1965 г.» (PDF) . bitsavers.org . Проверено 15 июля 2023 г.
  8. ^ Эттингер, АГ (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. ^ Лори Кэмерон (5 октября 2008 г.). «Маргарет Гамильтон: первый инженер-программист» . Технические новости . Компьютерное общество IEEE .
  12. ^ Ян Соммервилл (24 марта 2015 г.). Программная инженерия (10-е изд.). Пирсон Образования Лимитед. ISBN  978-0-13-394303-0 .
  13. ^ Питер, Наур; Рэнделл, Брайан (7–11 октября 1968 г.). Программная инженерия: отчет конференции, спонсируемой Научным комитетом НАТО (PDF) . Гармиш, Германия: Отдел научных исследований НАТО . Проверено 26 декабря 2008 г.
  14. ^ Рэнделл, Брайан (10 августа 2001 г.). «Отчеты НАТО по разработке программного обеспечения за 1968/69 год» . Домашняя страница университета Брайана Рэнделла . Школа компьютерных наук Университета Ньюкасла . Проверено 11 октября 2008 г. Идея первой конференции НАТО по разработке программного обеспечения и, в частности, принятия тогда практически неизвестного термина «инженерия программного обеспечения» в качестве ее (намеренно провокационного) названия, я полагаю, исходила от профессора Фрица Бауэра .
  15. ^ Международная конференция по программной инженерии 2018 года, отмечающая свое 40-летие и 50-летие разработки программного обеспечения (31 мая 2018 г.). «ICSE 2018 – Пленарные заседания – Фред Брукс» . Ютуб . Проверено 9 августа 2018 г. {{cite web}}: CS1 maint: числовые имена: список авторов ( ссылка )
  16. ^ Международная конференция по программной инженерии 2018 года, отмечающая свое 40-летие и 50-летие разработки программного обеспечения (31 мая 2018 г.). «ICSE 2018 – Пленарные заседания – Маргарет Гамильтон» . Ютуб . Проверено 9 августа 2018 г. {{cite web}}: CS1 maint: числовые имена: список авторов ( ссылка )
  17. ^ Jump up to: а б Линда Хатц Песанте (1 января 2003 г.). Энтони Ралстон; Эдвин Д. Рейли (ред.). «Институт программной инженерии (СИЭ)» . Энциклопедия информатики . Чичестер , Западный Суссекс, Великобритания: John Wiley and Sons Ltd .: 1611–1613. ISBN  978-0-470-86412-8 . (DoD) на конкурсной основе присудило институту Карнеги-Меллон (1) В декабре 1984 года Министерство обороны США право на улучшение состояния практики разработки программного обеспечения. ... (2) SEI продвигает проверенные решения с доказанной ценностью в широкое использование; примеры включают Модель зрелости возможностей (CMM)... Значок бесплатного доступа
  18. ^ Jump up to: а б Объединенная целевая группа по учебным программам по вычислительной технике, Компьютерное общество IEEE , Ассоциация вычислительной техники (23 февраля 2015 г.). Программная инженерия 2014: Рекомендации по учебной программе для программ бакалавриата в области программной инженерии (PDF) . Том серии учебных программ по вычислительной технике. Компьютерное общество IEEE и Ассоциация вычислительной техники . {{cite book}}: CS1 maint: несколько имен: список авторов ( ссылка )
  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. ^ Барбара Китчевнэм; Дэвид Баджен; Перл Бреретон; Стивен Линкман (2005). «Реализация научно обоснованной разработки программного обеспечения». Заметки по разработке программного обеспечения ACM SIGSOFT . 30 (4): 1–3. дои : 10.1145/1082983.1083175 . Мы считаем, что разработка программного обеспечения может развиваться как инженерная дисциплина только в том случае, если она откажется от нынешней зависимости от пропаганды и анализа.
  28. ^ Лоуренс, Снайдер (2017). Свободное владение информационными технологиями: навыки, концепции и возможности ([Седьмое издание] изд.). Нью-Йорк, Нью-Йорк. ISBN  978-0134448725 . ОСЛК   960641978 . {{cite book}}: CS1 maint: отсутствует местоположение издателя ( ссылка )
  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 . Архивировано из оригинала 9 мая 2016 г. Проверено 13 сентября 2010 г. Общий объем цитируемой литературы рассчитан на освоение после получения высшего образования плюс четырехлетний опыт работы.
  38. ^ Коулинг, AJ 1999. Первое десятилетие обучения на степень бакалавра в области разработки программного обеспечения. Энн. Программное обеспечение англ. 6, 1–4 (апрель 1999 г.), 61–90.
  39. ^ «Аккредитованные инженерные программы ABET» . 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) 27 августа 2013 г. Проверено 1 апреля 2012 г.
  43. ^ «NCEES прекращает сдачу экзамена PE по разработке программного обеспечения» . Национальный совет экспертов по инженерно-геодезическим работам. 13 марта 2018 года . Проверено 6 августа 2018 г.
  44. ^ Jump up to: а б Барбара Саймонс. «Бывшие президенты ACM вспоминают свою службу ACM» . Празднование 75-летия развития информатики как науки и профессии. Ассоциация вычислительной техники . Проверено 18 мая 2024 г. После того, как рекомендации комиссий были представлены, Совет ACM пришел к выводу, что структура лицензированного профессионального инженера, первоначально разработанная для инженеров-строителей, не соответствует профессиональной производственной практике разработки программного обеспечения и не позволит многим наиболее квалифицированным инженерам-программистам получить лицензию.
  45. ^ Jump up to: а б Джон К. Найт; Нэнси Дж. Левесон (1 ноября 2002 г.). «Должны ли инженеры-программисты иметь лицензию?». Коммуникации АКМ . 45 (11): 87–90. дои : 10.1145/581571.581601 .
  46. ^ « Этический кодекс разработки программного обеспечения » (PDF) . Проверено 25 марта 2012 г.
  47. ^ Labs, Кубит (29 ноября 2022 г.). «Сколько программистов в мире и в США? [2023]» . Кубит Лаборатория . Проверено 7 февраля 2023 г.
  48. ^ «Глобальное демографическое и демографическое исследование застройщиков, 2016 г., версия 2» . Эванс Дата Корпорейшн . Проверено 19 января 2017 г.
  49. ^ Jump up to: а б Розенталь, Рэйчел (4 августа 2020 г.). «Технологические компании хотят, чтобы вы поверили, что в Америке не хватает навыков» . Блумберг . Проверено 8 октября 2021 г.
  50. ^ «Инженеры-программисты и программисты» . Проверено 17 декабря 2009 г.
  51. ^ «Разработчики программного обеспечения» . Справочник по профессиональным перспективам . Бюро статистики труда США. 4 сентября 2019 года . Проверено 11 декабря 2019 г.
  52. ^ «Вычислительные дисциплины и специальности» (PDF) . Ассоциация вычислительной техники . Проверено 6 сентября 2019 г.
  53. ^ Jump up to: а б «Разработчики программного обеспечения: Справочник по профессиональным перспективам» . Бюро статистики труда США.
  54. ^ «Инженер-программист» . Бюро статистики труда. 19 марта 2010 года. Архивировано из оригинала 26 июля 2013 года . Проверено 20 июля 2012 г.
  55. ^ «Разработчики программного обеспечения» . Бюро статистики труда. 8 января 2014 года . Проверено 21 июля 2012 г.
  56. ^ Jump up to: а б с д и «Программисты: Справочник по профессиональным перспективам:: Бюро статистики труда США» . Архивировано из оригинала 3 мая 2019 года . Проверено 17 января 2017 г.
  57. ^ «Архив публикаций: За пределами цифр: Бюро статистики труда США» . www.bls.gov .
  58. ^ «Инженер по встроенному программному обеспечению, который скоро вымрет» . designnews.com . 10 мая 2018 г.
  59. ^ «Портал разработчиков HP | Международная женская неделя HP: количество женщин в компьютерных науках снижается с 1980-х годов» . Developers.hp.com .
  60. ^ «Работа инженеров-программистов в опасности из-за инструментов, подобных ChatGPT? Вот что говорит генеральный директор Google Сундар Пичаи» . Бизнес сегодня . 6 апреля 2023 г. Проверено 12 мая 2023 г.
  61. ^ «ChatGPT может сделать эти вакансии устаревшими» . 25 января 2023 г. Проверено 12 мая 2023 г.
  62. ^ Кей, Грейс. «Инженеры-программисты паникуют из-за того, что их заменяет ИИ» . Бизнес-инсайдер . Проверено 12 мая 2023 г.
  63. ^ Фаулер, Гэри. «Сообщение совета: как ChatGPT повлияет на рабочие места?» . Форбс . Проверено 12 мая 2023 г.
  64. ^ Ито, Аки. «ChatGPT означает конец кодирования в том виде, в котором мы его знаем» . Бизнес-инсайдер . Проверено 12 мая 2023 г.
  65. ^ Зинкула, Аарон Мок, Джейкоб. «Возможно, ChatGPT придет на наши рабочие места. Вот 10 должностей, которые ИИ, скорее всего, заменит» . Бизнес-инсайдер . Проверено 12 мая 2023 г. {{cite web}}: CS1 maint: несколько имен: список авторов ( ссылка )
  66. ^ Коэн, Микаэла (15 апреля 2023 г.). «Это технологические рабочие места, которым больше всего угрожают ChatGPT и AI», CNBC . Проверено 12 мая 2023 г.
  67. ^ «Страница сертификации SEI» . Sei.cmu.edu . Проверено 25 марта 2012 г.
  68. ^ Выростек, Уоррен (14 марта 2008 г.). «10 главных проблем с ИТ-сертификацией в 2008 году» . ИнформИТ . Проверено 3 марта 2009 г.
  69. ^ Компьютерное общество IEEE . «Отчет компьютерного общества IEEE за 2006 год Генеральной ассамблее ИФИП» (PDF) . Проверено 10 апреля 2007 г.
  70. ^ IEEE. «ЦСДА» . Проверено 20 апреля 2010 г.
  71. ^ Канадское общество обработки информации. «Обозначение интернет-провайдера» . Проверено 15 марта 2007 г.
  72. ^ «Профессиональные инженеры Онтарио: Добро пожаловать на сайт PEO» . Peo.on.ca. ​Проверено 25 марта 2012 г.
  73. ^ Тибодо, Патрик (5 мая 2006 г.). «По мере того, как аутсорсинг набирает обороты, интерес к информатике ослабевает» . Computerworld.com . Проверено 6 декабря 2016 г.
  74. ^ Роберт Маллинз (13 марта 2007 г.). «Рост разработчиков программного обеспечения в Северной Америке замедляется: исследование показывает, что к 2010 году Азия будет лидировать по количеству рабочих мест среди разработчиков программного обеспечения» . Инфомир . Разработка программного обеспечения.
  75. ^ «Магический квадрант Gartner» (PDF) . Cознательный.com . Проверено 25 марта 2012 г.
  76. ^ Кейси, Валентин (20 августа 2010 г.). «Управление командными проектами виртуального программного обеспечения» . Журнал Бразильского компьютерного общества . 16 (2): 83–96. дои : 10.1007/s13173-010-0013-3 . S2CID   14383734 .
  77. ^ «Награда за выдающиеся исследования» . СИГСОФТ . Проверено 1 апреля 2024 г.
  78. ^ Дэвид Ло ( председатель SIGSOFT Awards); Томас Циммерманн ( председатель SIGSOFT ) (17 января 2024 г.). «SIGSOFT Awards 2024» . ACM SIGSOFT Блог . Проверено 1 апреля 2024 г.
  79. ^ «Награда ICSE за самую влиятельную бумагу» . АСМ СИГСОФТ .
  80. ^ Дональд Дж. Багерт (апрель 1999 г.). «Точка зрения: лидерство в лицензировании инженеров-программистов». Коммуникации АКМ . 42 (4): 27–29. дои : 10.1145/299157.299163 . Значок открытого доступа
  81. ^ Jump up to: а б Барри Бём (сентябрь – октябрь 2002 г.). «Разработка программного обеспечения — это ценностный контактный вид спорта». Программное обеспечение IEEE . 19 (5): 95–96. дои : 10.1109/MS.2002.1032863 .
  82. ^ Дейкстра, EW (1988). «О жестокости реального преподавания информатики» . Проверено 10 января 2014 г.

Источники

[ редактировать ]
  • Ян Соммервилл (24 марта 2015 г.). Программная инженерия (10-е изд.). Пирсон Образования Лимитед. ISBN  978-0-13-394303-0 .

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

[ редактировать ]
  • Роджер С. Прессман; Брюс Максим (23 января 2014 г.). Программная инженерия: подход практикующего специалиста (8-е изд.). МакГроу-Хилл. ISBN  978-0-07-802212-8 .
  • Ян Соммервилл (24 марта 2015 г.). Программная инженерия (10-е изд.). Пирсон Образования Лимитед. ISBN  978-0-13-394303-0 .
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 9b6e52e9a78db189e345712bce285902__1721904120
URL1:https://arc.ask3.ru/arc/aa/9b/02/9b6e52e9a78db189e345712bce285902.html
Заголовок, (Title) документа по адресу, URL1:
Software engineering - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)