Автор работы: Пользователь скрыл имя, 19 Ноября 2013 в 00:10, статья
Программное обеспечение затрагивает практически каждый аспект нашей повседневной жизни (производство, банковское дело, путешествия, связи, оборону, медицину, исследования, правительство, образование, развлечения, права и т.д.). Это неотъемлемая часть нашей военной системы, и она используется во всем гражданском секторе, в том числе критически важных для безопасности задач и систем. Кроме того, сложность многих этих систем растет в геометрической прогрессии. К сожалению, система высшего образования в США не поспевает за этими потребностями. Существующие базовые и получившие научную степень науки и инженерные программы, должны включать больше материала по программному обеспечению техники. Это особенно нужно для аэрокосмической техники, так как эти системы во многом полагаются на вычисления, информацию, связи, и программное обеспечение.
Острая потребность в программном обеспечении инженерного образования
Доктор Лайл Н. Лонг
Университет штата Пенсильвания
Программное обеспечение затрагивает практически каждый аспект нашей повседневной жизни (производство, банковское дело, путешествия, связи, оборону, медицину, исследования, правительство, образование, развлечения, права и т.д.). Это неотъемлемая часть нашей военной системы, и она используется во всем гражданском секторе, в том числе критически важных для безопасности задач и систем. Кроме того, сложность многих этих систем растет в геометрической прогрессии. К сожалению, система высшего образования в США не поспевает за этими потребностями. Существующие базовые и получившие научную степень науки и инженерные программы, должны включать больше материала по программному обеспечению техники. Это особенно нужно для аэрокосмической техники, так как эти системы во многом полагаются на вычисления, информацию, связи, и программное обеспечение. Кроме того, Соединенным Штатам нужно более специализированное программное обеспечение инженерных образовательных программ и профессиональные инженерные программы сертификации программного обеспечения.
Программное обеспечение есть везде, от элементов телефона до крупных военных систем. По данным Национальной академии Наук [ 1], " ... программное обеспечение не только основной продукт на рынке, но , по сути, воплощает производственную функцию экономики". Национальный институт Стандартов и технологий (NIST) оценивает, что программные ошибки обходятся экономике США $ 59,5 млрд. в год, а продажи программного обеспечения составили $ 180 млрд. [2]. Образование по разработке программного обеспечения не получает должного внимания, хотя является крайне важным для нашей экономики. Вопросы, связанные с программной инженерией, как с дисциплиной и дебаты, которые появились за эти годы, не являются новыми и описаны в [3, 4, 5].
Список бедствий программного обеспечения растет с каждым годом. Некоторые из наиболее известных включают следующее: ракеты Ариан-5( Рейс 501) [6 , 7] , случай в Федеральном бюро исследований виртуальной файловой системы [ 8] , Федеральное управление гражданской авиации Advanced Automation System (Расширенная система автоматизации) [7 , 9] , Калифорнийский Департамент Транспортных систем, система бронирования American Airlines, и многие, многие другие [7 , 10]. У самолета F- 22 также были проблемы изначально из-за его сложных программных систем. Бедствия программного обеспечения стоили Соединенным Штатам миллиарды долларов каждый год, и это может было только хуже, так как будущие системы будут более сложными. Боинг потратили около $ 800 миллионов на программное обеспечение для 777, и им, возможно, потребуется потратить в пять раз больше на 787 [11]. Космические системы будут также включать в себя несколько уровней самоуправления, в дополнение к совершенно новому уровню сложности программного обеспечения. Чтобы помочь предотвратить будущие бедствия, мы должны иметь больше программистов - инженеров, подготовленных к точным техническим программам, которые находятся на одном уровне с другими инженерными программами. Соединенные Штаты не должны ждать, пока будет следующая катастрофа, которая вызовет большое количество человеческих жертв, прежде чем произойдет. Нам в настоящем времени не хватает инженеров по программному обеспечению. Нам нужно воспитать многих в ближайшее время, особенно учитывая большую группу инженеров, которые будут выходить на пенсию в ближайшие 10 лет [12]. В 2005 году средний возраст аэрокосмического инженера составил 54 года [13]. Кроме того, более 26 процентов аэрокосмических работников будут иметь право выхода на пенсию в 2008 [14].
Важность программного обеспечения аэрокосмических систем
Аэрокосмическая промышленность обеспечивает примерно 900 млрд. долл. США в экономической деятельности и на нее приходится более 15% валового внутреннего продукта и опор более 15 миллионов высококвалифицированных рабочих мест в США [14]. Эти аэрокосмические системы сильно зависят от программного обеспечения, которое было названо ахиллесовой пятой аэрокосмических систем. Есть множество анекдотов и примеры, которые иллюстрируют важность вычислений и программного обеспечения в аэрокосмической отрасли. Например:
•Boeing 777 имеет 1280 бортовых процессоров, которые используют более четырех миллионов строк программного обеспечения; Ada подсчитывает 99,5% этого [15 , 16].
•F- 22 имеет более двух миллионов строк программного обеспечения на борту , около 80-85% находится в Ada [17].
• Некоторые вертолеты Blackhawk имеют почти 2000 фунтов проводов, соединяющих все компьютеры и датчики.
•Жгут проводов часто более сложно и более трудно спроектировать чем конструкции самолета.
• Некоторые самолеты не могут лететь без их бортовых компьютеров (например, F-16 и F- 117).
•система управления воздушным движением полагается в большой степени на компьютеры, программное обеспечение и связи.
• Межпланетные робототехники и космические аппараты совершают удивительные подвиги, часто в экстремальных условиях.
• Автономные, умные, беспилотные транспортные средства будут даже еще менее детерминированные, чем существующие системы.
• Компьютеры также важны в проектировании и анализе аэрокосмических систем. Часто это означает использование высокопроизводительных, массивно-параллельных компьютерных систем.
• Системы связи являются критически важными для летательных и космических аппаратов ; теперь это включает в себя компьютерные сети на борту, на земле, и других аэрокосмических аппаратах.
• Современные летательные и космические аппараты редко работают в одиночку - они обычно являются частью системы систем .
Одним из способов измерения потребности инженеров программного обеспечения в авиационно-космической области является исследование существующих рабочих мест. Обзор веб-сайта корпорации Lockheed –Martin в октябре 2006 показал, что у них имелось 536 вакансий для выпускников, в том числе 68 (13 процентов) в инженерном программном обеспечении и четыре в аэрокосмической технике. Большинство из вакансий авиационно-космической техники были для структурных инженеров, способных выполнять конечный анализ элементов. Следует также отметить, что они так же нанимают аэрокосмических инженеров и в других областях, ( например, эксперты аэрокосмического управления иногда перечисленные в встраиваемых систем ). Веб – страница занятости Боинга дала аналогичные результаты. У них имелось 298 вакансий, связанных с программным обеспечением. Было только три рабочих места, в которых упоминалась аэродинамика ( ни одно из которых на самом деле не было предназначено для аэродинамики ). При поиске аэрокосмического инженера на сайте Боинга нашли список из шести открытых позиций в проектировании зданий и сооружений. Это, вероятно, признак того, что аэрокосмические инженерные образовательные программы лишком сосредоточены на прикладной физике аэрокосмической инженерии и недостаточно на вычислениях и программном обеспечении. Нам нужно работать в промышленности, а правительству стоит пересмотреть аэрокосмическую инженерию. Нам нужно воспитывать студентов, способных спроектировать и построить новые аэрокосмические системы , в которых мы будем нуждаться в будущем - которые будут доминировать в обработке данных, работе в сети и информационных системах.
Инженерное программное обеспечение определено
Институт инженеров по электротехнике и электронике (IEEE ) определяет разработки программного обеспечения [3] как "применение систематического, дисциплинированного, исчисляемого подхода в разработке, эксплуатации и техническому обслуживанию программного обеспечения. Хорошее резюме разработчика программного обеспечения можно найти в [18].
Системы программного обеспечения являются одними из наиболее сложных вещей, когда-либо созданных людьми. Чтобы проектировать и строить их нужно следовать процессам и процедурам, характерным и для других инженерных дисциплин [6 , 19]. Во-первых, требования должны быть тщательно определены. Потом должна быть разработана структура программного обеспечения. Если требования и структура определены, можно начать разработку кода. Затем код нуждается в верификации, валидации и тестировании. Существует много способов сделать все эти шаги, которые относятся к типу использования модели жизненного цикла и типу разработки системы. Кроме того, нужно оценить затраты, способы управления массами, и как контролировать этические обязанности команды. Эти шаги мало чем отличаются от шагов, необходимых для проектирования и строительства любой сложной системы (например, мосты, самолеты, и компьютерное оборудование ). Реальное развитие кода или программирования может быть довольно небольшой частью процесса [6].
Многие инженеры и ученые не в полной мере оценивают или понимают программное обеспечение техники. Даже старшеклассники думают, что они могут сделать программное обеспечение после того, как они учат основы синтаксиса Java или C + +. Слишком часто, разработка программного обеспечения приравнивается к программированию. Это все равно, что приравнивать государственное строительства с заливкой бетона. Многие люди могут залить бетон, но мало кто является гражданскими инженерами и могут создать большие, технически вдохновленные шедевры. Точно также, многие люди могут программировать, но мало могут развивать большие шедевры программного обеспечения. Это не редкость услышать, как люди спорят о достоинствах и недостатках разных языков компьютера, даже если они не очень хорошо разбираются в различных языках. Часто им просто нравится язык, на котором они выросли и они не ценят и не понимают другие. Эти недоразумения особенно проявляются в дискуссиях относительно Аda [20] , который до сих пор, вероятно, лучший язык для использования в критически важных для безопасности систем. На самом деле, люди, которые развивают код без звука разработки программного обеспечения, являются лишь хакерами. Конечно, программисты являются неотъемлемой частью инженерного программного обеспечения и талантливых программистов довольно мало и они чрезвычайно ценные люди.
Software Engineering образование
И экономика США и национальная оборона зависит от программного обеспечения, но многие из этих больших программных систем в настоящее время разработаны людьми, которые никогда не имели официальную подготовку в разработке программного обеспечения. Хотя есть некоторые невероятно талантливые самоучки инженеров программного обеспечения, мы не должны опираться на большинство инженеров нашего программного обеспечения, которые являются самоучками. Мы никогда бы не построили современный самолет без аэрокосмических инженеров, и мы никогда не будет строить мосты или здания без гражданских инженеров. Так почему же мы разрабатываем большие системы программного обеспечения без команды формально обученных и профессионально - сертифицированных разработчиков программного обеспечения?
Недавно д-р Джон Найт, профессор в университете Вирджинии, противопоставлял разработку программного обеспечения другим инженерным дисциплинам [21]. Он говорил о том, как 1000 - летние соборы были построены с использованием лучших инженерных технологий нашего времени и как эти здания по-прежнему стоят. Строительство чрезвычайно изменилось на протяжении многих веков, и теперь мы имеем огромные небоскребы и зрелищные мосты. Это было бы невозможно без активных инженерных образовательных систем, научно-исследовательских программ и наставничества. Похожие аналогии может быть взяты и из других инженерных дисциплин. Через тысячу лет, людей будут удивляясь вехи авиационно-космической техники такие, как Райт Flyer, SR-71 Blackbird, и программа Аполлона. Все они были крупными инженерными проектами в свои дни, и сейчас находятся музеях. Будут ли какие – либо соборы программного обеспечения, которые поразят через 1000 лет? Или будущие поколения смотрят на нас как на хакеров?
Традиционные науки и техники
Образовательные программы
Многие студенты, окончившие, в США научные и технические программы будут в конечном итоге работать в разработке программного обеспечения. К сожалению, большинство из них получит небольшое или вовсе никакого образования по программному обеспечению. Например, 24 процентов выпускников физики будут работать на программном обеспечении 5 из 8 лет после окончания [22]. Большинство из них, вероятно, не проходят обучение по разработке программного обеспечения в колледже. Другие выпускники, даже за пределами инженерии, могут в конечном итоге также работать в разработке программного обеспечения. Было бы очень полезно для этих студентов узнать больше о программной инженерии до окончания вуза. Им нужно больше, чем программа для первокурсника в программировании. Это верно для почти всех традиционных научных и инженерных образовательных программ.
Также не является нужным предположить, что выпускники компьютерных наук являются также инженерами программного обеспечения. Довольно легко получить высшее образование по программе информатики с очень низким образованием в разработке программного обеспечения. Найт и Leveson описывают потребность в усилении образования программного обеспечения в компьютере и программ вычислительной техники и выступают за дополнительное программное обеспечение инженерных программ [23].
Потребность в обучении программному обеспечению особенно важно в программах аэрокосмической техники. Аэрокосмические инженеры всегда гордились тем, что они являются системными интеграторами, но для этого вы должны иметь некоторое представление о той аэрокосмической системе, которую разрабатываете. В современных боевых самолетах, электронные компоненты составляют примерно 10 процентов от веса и 33 процентов стоимости [24]. Так что, если аэрокосмические инженеры не очень хорошо разбираются в вычислениях, работе в сети, датчиках и программном обеспечении то они не могут понять полную систему ( если этой системе не исполнилось 60 лет ). Студенты должны быть подготовлены так, чтобы они могли развивать следующие поколения аэрокосмических систем, а не старые самолеты и старые космические аппараты. Космические системы всегда используют новейшие технологии для достижения потрясающей производительности . Будущие и существующие системы полагаются на компьютеры и программное обеспечение и студенты должны знать это. Аэрокосмические инженеры также необходимы как и системные интеграторы , но это только если у них есть некоторое понимание полной системы (в том числе вычислительной техники и программного обеспечения).
Сегодня это выходит за рамки бортовой авионики на современных самолетах и космических аппаратах, и практически всегда связаны с другими системами, но авионика - огромная часть аэрокосмических систем . Вычислительная мощность и компьютерная память расли в геометрической прогрессии в военных самолетах примерно с 1960 г. [ 25]. F- 106 имел менее 20 килобайт памяти , в то время как истребитель Joint Strike ( JSF) может иметь более двух гигабайт. Авиационная электроника может составить 40 процентов от стоимости JSF. В докладе также говорится, что содержание программного обеспечения в этих системах резко возросла, и что нам нужно больше инженеров программного обеспечения.
Вычисления и программное обеспечение являются неотъемлемой частью авиационно-космической техники . В настоящее время одним из ключевых направлений в аэрокосмической техники. Традиционно, аэрокосмическое строительство [ 26] было построено на технологии четырех столпов: аэродинамике, конструкции, движении, и динамике и управлении, как показано на рисунке 1. Эти столпы отражены в авиационно-космической технике учебных программ. Все эти дисциплины были важны для братьев Райт и для каждой авиационно-космической системе с тех пор. Однако, современная аэрокосмическая техника должна включать в себя пять основных принципов , как показано на Рисунок 2 . В работе [ 27] , авторы ссылаются на пять областей, таких как: аэродинамика, материалы , авионика , двигатели, и управление. Текущие и будущие аэрокосмические системы будут разработаны с использованием компьютеров. Они будут иметь на борту компьютеры, и им нужно будет соединяться с другими транспортными средствами и компьютерами. Вычисления ( в том числе обработка, создание сетей и хранение данных ) и программное обеспечение являются важнейшими элементами аэрокосмической техники, и они являются пятой колонной. Кроме того, эта пятая колонна может быть наиболее важным памятником, и гораздо менее зрелой, чем другие четыре. Авиационно-космические инженерные образовательные программы делают сильный акцент на прикладной физики (например, гидродинамике, структурной динамике, динамике, горении и движении ). Исторически сложилось, что были веские причины для это, но мы не можем продолжать пренебрегать научные, образовательными потребностями в вычислениях аэрокосмического и программного обеспечения. Большинству аэрокосмическим инженерным программам требуется около 40 курсов за 4 года обучения, но студенты часто принимают только один курс , связанный с программным обеспечением (новичка программирования на уровне конечно). Кроме того, как правило, нет необходимости для изучения авионики, встроенных систем, сети, датчиков, или компьютерного оборудования. Эта тенденция действует для выпускников аэрокосмических инженерных выпускник программы, а , где вступительные экзамены и учебные программы редко включают компьютеры, программное обеспечение , или авионикой. Часто они в первую очередь изучают программы прикладной физики.
Информация о работе Острая потребность в программном обеспечении инженерного образования