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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Разработка требований - это выявление, анализ, спецификация и проверка требований к программному обеспечению .

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

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

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

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

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

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

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

Сопровождение программного обеспечения [1] [27] относится к действиям, необходимым для обеспечения рентабельной поддержки после поставки программного продукта.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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