Из Википедии, бесплатной энциклопедии
  (Перенаправлено из Software Engineering )
Перейти к навигации Перейти к поиску

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

История [ править ]

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

Языки программирования начали появляться в начале 1950-х годов [5], и это также стало еще одним важным шагом в абстракции. Основные языки, такие как Fortran , ALGOL , PL / I и COBOL, были выпущены в конце 1950-х и 1960-х годов для решения научных, алгоритмических и бизнес-задач соответственно. Дэвид Парнас представил ключевую концепцию модульности и сокрытия информации в 1972 году [6], чтобы помочь программистам справляться с постоянно растущей сложностью программных систем .

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

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

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

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

Определения [ править ]

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

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

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

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

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

Поля [ править ]

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

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

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

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

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

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

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

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

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

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

Образование [ править ]

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

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

Профессия [ править ]

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

В Соединенных Штатах с 2013 года предлагается экзамен NCEES Professional Engineer для разработки программного обеспечения, что позволяет инженерам-программистам получить лицензию и получить признание. [36] NCEES завершит экзамен после апреля 2019 года из-за отсутствия участников. [37] Обязательное лицензирование в настоящее время все еще широко обсуждается и воспринимается как противоречивый. В некоторых частях США, таких как Техас, использование термина « инженер» регулируется законом и зарезервировано только для использования лицами, имеющими лицензию профессионального инженера .

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

Работа [ править ]

Бюро статистики труда США подсчитывают 1,365,500 разработчиков программного обеспечения , занимающих рабочие места в США в 2018. [40] Работа компьютерных и информационных технологий , профессий, по прогнозам, вырастет на 13 процентов с 2016 по 2026 год , быстрее , чем в среднем по всем профессиям. Предполагается, что эти профессии создадут около 557 100 новых рабочих мест. Спрос на этих сотрудников будет обусловлен повышенным вниманием к облачным вычислениям, сбору и хранению больших данных и информационной безопасности. [41] Тем не менее, BLS также сообщает, что некоторые рабочие места в этих профессиях сокращаются, особенно среди женщин, [42]а число программистов, согласно прогнозам, сократится на 7 процентов с 2016 по 2026 год и на 9 процентов с 2019 по 2029 год [43], поскольку компьютерное программирование можно выполнять из любой точки мира, поэтому компании иногда нанимают программистов в странах с более низкой заработной платой. [43] Из-за своей относительной новизны как области обучения формальное образование в области программной инженерии часто преподается как часть учебной программы по информатике, и многие инженеры-программисты имеют ученые степени. [44]

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

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

Сертификация [ править ]

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

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

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

Влияние глобализации [ править ]

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

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

Противоречие [ править ]

Критика [ править ]

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

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

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

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

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

См. Также [ править ]

  • Информатика
  • Бакалавр наук в области информационных технологий
  • Бакалавр программной инженерии
  • Информационная инженерия
  • Список конференций по программной инженерии
  • Список журналов по информатике (включая журналы по программной инженерии)
  • Мастерство программного обеспечения
  • Разработка программного обеспечения
  • Институт программной инженерии

Ссылки [ править ]

Цитаты [ править ]

  1. ^ Б с д е е Abran и др. 2004 , стр. 1–1
  2. Перейти ↑ ACM (2007). «Вычислительные степени и карьера» . ACM . Проверено 23 ноября 2010 .
  3. ^ Laplante, Филипп (2007). Что должен знать каждый инженер о программной инженерии . Бока-Ратон: CRC. ISBN 978-0-8493-7228-5. Проверено 21 января 2011 .
  4. ^ Леондес, Корнелиус Т. (2002). Интеллектуальные системы: технологии и приложения . CRC Press. п. I-6. ISBN 978-0-8493-1121-5. 1.4 Компьютеры и первый взгляд на Эла (1940-е годы)
  5. Кэмпбелл-Келли, Мартин (апрель 1982 г.). «Развитие компьютерного программирования в Великобритании (1945-1955)». IEEE Annals of the History of Computing . 4 (2): 121–139. DOI : 10.1109 / MAHC.1982.10016 . S2CID 14861159 . 
  6. Парнас, Дэвид (декабрь 1972 г.). «О критериях разложения систем на модули» . Коммуникации ACM . 15 (12): 1053–1058. DOI : 10.1145 / 361598.361623 . S2CID 53856438 . Проверено 26 декабря 2008 . 
  7. ^ «История кодирования и программной инженерии» . www.hackreactor.com . Проверено 6 мая 2021 .
  8. Перейти ↑ Oettinger, AG (1966). «Письмо президента к членству в ACM» . Commun. ACM . Ассоциация вычислительной техники. 9 (8): 545–546. DOI : 10.1145 / 365758.3291288 . ISSN 0001-0782 . S2CID 53432801 .  
  9. ^ «Происхождение« программной инженерии » » . Проверено 17 ноября 2017 года .
  10. ^ Рэндалл, Брайан. "Отчеты по разработке программного обеспечения НАТО за 1968/69 год" . Проверено 17 ноября 2017 года .
  11. ^ Журнал программного обеспечения . «Что нужно знать об ученом, который изобрел термин« программная инженерия » » . Архивировано 24 ноября 2018 года . Проверено 12 февраля 2019 года .
  12. Перейти ↑ Sommerville 2008 , p. 26 год
  13. ^ Питер, Наур; Рэнделл, Брайан (7–11 октября 1968 г.). Программная инженерия: отчет о конференции, спонсируемой Научным комитетом НАТО (PDF) . Гармиш, Германия: Отдел по научным вопросам, НАТО . Проверено 26 декабря 2008 .
  14. ^ Рэнделл, Брайан (10 августа 2001). "Отчеты по разработке программного обеспечения НАТО за 1968/69 год" . Домашняя страница Университета Брайана Рэнделла . Школа компьютерных наук Университета Ньюкасла . Проверено 11 октября 2008 . Идея первой конференции НАТО по разработке программного обеспечения, и в частности идея принятия тогда практически неизвестного термина «программная инженерия» в качестве ее (намеренно провокационного) названия, я считаю, исходила от профессора Фрица Бауэра .
  15. ^ 2018 Международная конференция по программной инженерии отмечает свое 40-летие и 50-летие разработки программного обеспечения. «ICSE 2018 - Пленарные заседания - Фред Брукс» . Проверено 9 августа 2018 .
  16. ^ 2018 Международная конференция по программной инженерии отмечает свое 40-летие и 50-летие разработки программного обеспечения. «ICSE 2018 - Пленарные заседания - Маргарет Гамильтон» . Проверено 9 августа 2018 .
  17. ^ "ISO / IEC TR 19759: 2005" . Проверено 1 апреля 2012 .
  18. ^ "Объединенная целевая группа по компьютерным программам 2005" (PDF) . 2014-10-21. Архивировано (PDF) из оригинала 21.10.2014 . Проверено 16 апреля 2020 .
  19. ^ Системная и программная инженерия - Словарь , ISO / IEC / IEEE std 24765: 2010 (E), 2010.
  20. ^ Стандартный глоссарий терминологии программной инженерии IEEE , IEEE std 610.12-1990, 1990.
  21. Перейти ↑ Sommerville, Ian (2007) [1982]. «1.1.2 Что такое программная инженерия?» . Программная инженерия (8-е изд.). Харлоу, Англия: Образование Пирсона. п. 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., стр. 6–7. ISBN 978-1-492-08279-8. Мы предполагаем, что «разработка программного обеспечения» включает не только процесс написания кода, но и все инструменты и процессы, которые организация использует для создания и поддержки этого кода с течением времени. Какие практики могут внедрить программные организации, которые позволят сохранить ценность ее кода в долгосрочной перспективе? Как инженеры могут сделать кодовую базу более устойчивой, а дисциплину программной инженерии - более строгой? У нас нет фундаментальных ответов на эти вопросы, но мы надеемся, что коллективный опыт Google за последние два десятилетия проливает свет на возможные пути к поиску этих ответов.
    Одна из ключевых идей, которыми мы делимся в этой книге, заключается в том, что программную инженерию можно рассматривать как «интегрированное во времени программирование». Какие методы мы можем внедрить в наш код, чтобы сделать его устойчивым - способным реагировать на необходимые изменения - на протяжении его жизненного цикла, от концепции до внедрения, обслуживания и прекращения поддержки?
    В книге подчеркиваются три фундаментальных принципа, которые, по нашему мнению, организации, занимающиеся разработкой программного обеспечения, должны учитывать при проектировании, проектировании и написании своего кода:
    Время и изменения Как код должен будет адаптироваться на протяжении его жизни
    Масштаб и рост Как организации потребуется адаптироваться по мере развития
    Компромиссы и затраты Как организация принимает решения, основываясь на уроках времени и изменений, а также масштабов и роста
  25. ^ Акрам И. Салах (2002-04-05). «Разработка академической программы в области программной инженерии» (PDF) . 35-й ежегодный симпозиум по обучению и вычислительной технике на Среднем Западе . Проверено 13 сентября 2006 . : «Для некоторых программная инженерия - это просто прославленное название программирования. Если вы программист, вы можете написать« инженер-программист »на своей визитной карточке - но никогда не« программист ».
  26. ^ Миллс, Харлан Д., JR Newman и CB Энгл, младший, "Бакалавриат учебная программа впрограммной инженерии," в Deimel, Лайонел E. (1990). Software Engineering Образование: SEI Conference 1990, Питтсбург, штат Пенсильвания, США, 2-3 апреля, .. . Springer. ISBN 978-0-387-97274-9., стр. 26 : «С практической точки зрения мы рассматриваем программную инженерию как необходимую подготовку для практикующих, специалистов по разработке и обслуживанию программного обеспечения. Ученый-компьютерщик готовится к дальнейшим теоретическим исследованиям ...»
  27. ^ Дэвид Баджен; Перл Бреретон; Барбара Китченхэм; Стивен Линкман (14 декабря 2004 г.). «Реализация программной инженерии на основе доказательств» . Архивировано из оригинала на 2006-12-17 . Проверено 18 октября 2006 .: «Мы считаем, что программная инженерия может развиваться как инженерная дисциплина, только отказавшись от ее нынешней зависимости от пропаганды и анализа…»
  28. ^ «Что такое программная инженерия? - Определение из Техопедии» . Techopedia.com . Проверено 6 мая 2021 .
  29. ^ «Программная инженерия | Классификация требований к программному обеспечению» . GeeksforGeeks . 2018-06-19 . Проверено 6 мая 2021 .
  30. ^ «Программная инженерия | Процесс разработки программного обеспечения» . GeeksforGeeks . 2019-05-24 . Проверено 6 мая 2021 .
  31. ^ a b c d e «Свод знаний по программной инженерии (SWEBOK, версия 3), 2014 г.» (pdf) . www.swebok.org . Компьютерное общество IEEE . Проверено 24 мая +2016 .
  32. ^ «Что такое обслуживание программного обеспечения? Определение обслуживания программного обеспечения, значение обслуживания программного обеспечения» . The Economic Times . Проверено 6 мая 2021 .
  33. ^ Абран, Ален, изд. (2005) [2004]. «Глава 1: Введение в руководство» . Руководство к своду знаний по программной инженерии . Лос-Аламитос: Компьютерное общество IEEE. ISBN 978-0-7695-2330-9. Проверено 13 сентября 2010 . Предполагается, что общий объем цитируемой литературы пригоден для овладения ею после завершения высшего образования плюс четырехлетний опыт работы.
  34. ^ "Учебная программа по программной инженерии SE2014" (PDF) .
  35. Уильямс, Новый Южный Уэльс (19–21 февраля 2001 г.). «Подход профессиональных инженеров Онтарио к лицензированию практикующих специалистов по программной инженерии». Образование и обучение в области программной инженерии, Материалы 2001 г. 14-я конференция . Шарлотта, Северная Каролина: IEEE . С. 77–78.
  36. ^ «Спецификации экзамена по разработке программного обеспечения NCEES» (PDF) . Архивировано из оригинального (PDF) 27 августа 2013 года . Проверено 1 апреля 2012 .
  37. ^ "NCEES прекращает экзамен PE Software Engineering" . Национальный совет экспертов по инженерно-геодезическим работам. 13 марта 2018 . Проверено 6 августа 2018 .
  38. ^ "SWEBOK Guide Version 3" . Проверено 9 марта 2015 .
  39. ^ « Этический кодекс программной инженерии » (PDF) . Проверено 25 марта 2012 .
  40. ^ «Разработчики программного обеспечения» . Справочник профессионального обзора . Бюро статистики труда США. 4 сентября 2019 . Проверено 11 декабря 2019 .
  41. ^ https://www.bls.gov/ooh/computer-and-information-technology/home.htm
  42. ^ https://developers.hp.com/public/blog/hp-international-womens-week-women-computer-science-dropping-1980-е годы
  43. ^ a b https://www.bls.gov/ooh/computer-and-information-technology/computer-programmers.htm
  44. ^ «Вычислительные дисциплины и специальности» (PDF) . ACM . Проверено 6 сентября 2019 .
  45. ^ https://www.bloomberg.com/opinion/articles/2020-08-04/big-tech-wants-you-to-believe-america-has-a-skills-gap
  46. ^ "Инженеры-программисты и программисты" . Проверено 17 декабря 2009 .
  47. ^ "Страница сертификации SEI" . Sei.cmu.edu . Проверено 25 марта 2012 .
  48. ^ Wyrostek, Уоррен (14 марта 2008). «10 главных проблем ИТ-сертификации в 2008 году» . InformIT . Проверено 3 марта 2009 .
  49. ^ IEEE Computer Society. «Отчет компьютерного общества IEEE за 2006 год Генеральной ассамблее IFIP» (PDF) . Проверено 10 апреля 2007 .
  50. ^ IEEE. «CSDA» . Проверено 20 апреля 2010 .
  51. ACM (17 июля 2000 г.). «Краткое изложение позиции ACM по разработке программного обеспечения как лицензированной инженерной профессии» (PDF) . Ассоциация вычислительной техники (ACM). Архивировано из оригинального (PDF) 17 мая 2008 года . Проверено 3 марта 2009 . На своем заседании в мае 2000 года Совет также пришел к выводу, что структура лицензированного профессионального инженера, первоначально разработанная для инженеров-строителей, не соответствует профессиональной промышленной практике разработки программного обеспечения. Такая практика лицензирования дала бы ложные гарантии компетентности, даже если бы совокупность знаний была зрелой; и помешало бы многим из наиболее квалифицированных инженеров-программистов получить лицензии.
  52. ^ Канадское общество обработки информации. «Обозначение интернет-провайдера» . Проверено 15 марта 2007 .
  53. ^ «Профессиональные инженеры Онтарио: Добро пожаловать на сайт PEO» . Peo.on.ca . Проверено 25 марта 2012 .
  54. ^ Тибодо, Патрик (2006-05-05). «По мере того как аутсорсинг набирает обороты, интерес к информатике ослабевает» . Computerworld.com . Проверено 6 декабря 2016 .
  55. ^ "Программисты" . Bls.gov . Проверено 25 марта 2012 .
  56. Mullins, Роберт (13 марта 2007 г.). «Рост разработчиков программного обеспечения в Северной Америке замедляется» . InfoWorld . Архивировано из оригинала на 2009-04-04 . Проверено 25 марта 2012 .
  57. ^ «Магический квадрант Gartner» (PDF) . Cognizant.com . Проверено 25 марта 2012 .
  58. ^ Кейси, Валентин (2010-08-20). «Виртуальная команда разработчиков программного обеспечения» . Журнал Бразильского компьютерного общества . 16 (2): 83–96. DOI : 10.1007 / s13173-010-0013-3 . S2CID 14383734 . 
  59. Перейти ↑ Dijkstra, EW (1988). «О жестокости реального преподавания информатики» . Проверено 10 января 2014 .

Источники [ править ]

  • Абран, Ален; Мур, Джеймс У .; Бурк, Пьер; Дюпюи, Роберт; Трипп, Леонард Л. (2004). Руководство к своду знаний по программной инженерии . IEEE. ISBN 978-0-7695-2330-9.
  • Соммервилль, Ян (2008). Программная инженерия (7-е изд.). Pearson Education. ISBN 978-81-7758-530-8. Проверено 10 января 2013 года .

Дальнейшее чтение [ править ]

  • Руководство к своду знаний по программной инженерии (SWEBOK Guide): Версия 3.0 . Пьер Бурк, Ричард Э. Фэрли (ред.). Компьютерное общество IEEE. 2014. ISBN. 978-0-7695-5166-1.CS1 maint: другие ( ссылка )
  • Прессман, Роджер S (2009). Программная инженерия: подход практикующего (7-е изд.). Бостон, Массачусетс: Макгроу-Хилл. ISBN 978-0-07-337597-7.
  • Соммервилль, Ян (2010) [2010]. Программная инженерия (9-е изд.). Харлоу, Англия: Образование Пирсона. ISBN 978-0-13-703515-1.
  • Джалоте, Панкадж (2005) [1991]. Комплексный подход к разработке программного обеспечения (3-е изд.). Springer. ISBN 978-0-387-20881-7.
  • Брюгге, Бернд ; Дютуа, Аллен (2009). Объектно-ориентированная разработка программного обеспечения: использование UML, шаблонов и Java (3-е изд.). Прентис Холл. ISBN 978-0-13-606125-0.
  • Ошана, Роберт (21.06.2019). Программная инженерия для встроенных систем: методы, практические приемы и приложения (второе изд.). Кидлингтон, Оксфорд, Великобритания. ISBN 978-0-12-809433-4.

Внешние ссылки [ править ]

  • Руководство к своду знаний по программной инженерии
  • Фреймворк жизненного цикла разработки открытых систем и разработки программного обеспечения OpenSDLC.org интегрированный Creative Commons SDLC
  • Институт программной инженерии Карнеги-Меллон