Программная инженерия что изучают в вузах

Программная инженерия что изучают в вузах. Смотреть фото Программная инженерия что изучают в вузах. Смотреть картинку Программная инженерия что изучают в вузах. Картинка про Программная инженерия что изучают в вузах. Фото Программная инженерия что изучают в вузах

Особенности профессий

Технология 3D-печати позволяет создавать уникальные изделия, которые используются в медицине и промышленности. Специалистов, которые желают освоить эту профессию, пока мало. Зато появилось множество молодых и развивающихся компаний, которые занимаются строительством с помощью 3D-технологий.

Инженеры и математики постоянно разрабатывают новые проекты, чтобы создавать разную продукцию:

Программная инженерия что изучают в вузах. Смотреть фото Программная инженерия что изучают в вузах. Смотреть картинку Программная инженерия что изучают в вузах. Картинка про Программная инженерия что изучают в вузах. Фото Программная инженерия что изучают в вузах

Профессия оператора 3D-печати довольно сложная. Специалист должен быть не просто инженером. Ему придется разбираться в программировании, химии, биологических материалах, технологиях. Понадобится пройти обучение в техническом вузе, окончить IT-курсы и получить навыки моделирования.

На специалиста возлагается множество обязанностей. Он должен уметь самостоятельно проектировать модели, подбирать подходящие материалы, рассчитывать все риски и финансовые затраты. И только после этого можно печатать изделие и внедрять его в разные сферы: медицину, авиацию, военную промышленность. Хотя некоторую продукцию можно использовать и в быту.

Преимущества и недостатки

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

Программная инженерия что изучают в вузах. Смотреть фото Программная инженерия что изучают в вузах. Смотреть картинку Программная инженерия что изучают в вузах. Картинка про Программная инженерия что изучают в вузах. Фото Программная инженерия что изучают в вузах

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

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

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

Но есть и определенные недостатки:

Программная инженерия что изучают в вузах. Смотреть фото Программная инженерия что изучают в вузах. Смотреть картинку Программная инженерия что изучают в вузах. Картинка про Программная инженерия что изучают в вузах. Фото Программная инженерия что изучают в вузах

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

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

Требования работодателей

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

Программная инженерия что изучают в вузах. Смотреть фото Программная инженерия что изучают в вузах. Смотреть картинку Программная инженерия что изучают в вузах. Картинка про Программная инженерия что изучают в вузах. Фото Программная инженерия что изучают в вузах

Что касается профессионального опыта, то необходимы знания технических требований в графике и актуальных тенденций в 3D-дизайне. Пригодится умение работать в редакторах 3dMax, Cinema 4D, Modo, Blender, LightWave. Специалист должен легко находить общий язык с заказчиками и техническим персоналом, разбираться в проектировании и моделировании. Приветствуется знание одного или нескольких иностранных языков.

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

Нюансы обучения

В России только зарождается такая специальность — «Аддитивные технологии». Что это такое, понятно не каждому. На самом деле выпускник технического вуза может найти престижную и высокооплачиваемую работу.

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

Программная инженерия что изучают в вузах. Смотреть фото Программная инженерия что изучают в вузах. Смотреть картинку Программная инженерия что изучают в вузах. Картинка про Программная инженерия что изучают в вузах. Фото Программная инженерия что изучают в вузах

Получить образование можно в нескольких учреждениях РФ:

Есть и другие вузы, техникумы, где открылись подходящие факультеты. Можно выбрать один из вариантов: «Лазерные аддитивные технологии», «Цифровое производство», «Технологии машиностроения».

Будущий специалист должен получить качественное образование, ведь ему необходимо хорошо разбираться в математике, физике, программировании и знать иностранные языки. Для поступления нужно будет хорошо сдать ЕГЭ по этим дисциплинам.

Но диплома о высшем образовании мало. Многие компании создают собственные курсы для специалистов, чтобы повысить их квалификацию. Хотя занятия можно пройти и самостоятельно, необходимо получить теоретические и практические знания в области моделирования, рисования, дизайна, 3D-печати.

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

Обязанности специалиста

Обязанностей у проектировщика немало. Сначала он подбирает необходимые элементы и материалы для работы, следит за исправностью оборудования. Трехмерное проектирование находится под его контролем. Нельзя допускать ошибок, так как они могут испортить результат печати.

Основные обязанности:

Программная инженерия что изучают в вузах. Смотреть фото Программная инженерия что изучают в вузах. Смотреть картинку Программная инженерия что изучают в вузах. Картинка про Программная инженерия что изучают в вузах. Фото Программная инженерия что изучают в вузах

Специалист не только строит 3D-модели, но и следит за строительством реальных объектов на их основе. Он строго контролирует все этапы трехмерного проектирования, чтобы никто из команды не допустил ошибок.

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

Карьерный рост

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

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

Программная инженерия что изучают в вузах. Смотреть фото Программная инженерия что изучают в вузах. Смотреть картинку Программная инженерия что изучают в вузах. Картинка про Программная инженерия что изучают в вузах. Фото Программная инженерия что изучают в вузах

Найти подходящую работу в крупном городе не составит труда. Достаточно получить должное образование, окончить курсы для опыта и проявить свои знания. Но сразу получить высокую зарплату не получится. Начинать придется с низов — с должности стажера в отделе 3D-дизайна.

Уже через несколько месяцев можно подняться до проектировщика, а спустя годы стать менеджером в отделе строительства. Более высокую зарплату получают руководители команд. Должность управляющего отделом также считается престижной. Самый большой доход у директоров строительных, дизайнерских и медицинских компаний. Подняться до этой должности может и обычный 3D-проектировщик.

Стажеры начинают работать под контролем опытных специалистов. Они продолжают обучаться своей профессии, приобретают новые знания и навыки. За своевременное выполнение обязанностей, инициативность и творческие идеи они получают повышение. А через несколько лет работы и сами начинают обучать стажеров.

Минимальная зарплата проектировщиков составляет 25 000 рублей даже в небольших поселках. Это высокооплачиваемая профессия, но она требует много знаний и опыта. В Москве и других крупных городах доход может достигать 100 000 р., столько могут получать руководители отделов по 3D-дизайну и строительству.

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

Источник

Программная инженерия что изучают в вузах

Математика
Русский язык

Предмет по выбору:
Химия
Информатика и ИКТ
Физика
Иностранный язык

Форма и сроки обучения

Бакалавриат

Места в рамках контрольных цифр приема граждан на обучение за счет бюджетных ассигнований федерального бюджета

Бакалавриат

Основные места в рамках контрольных цифр (основные конкурсные места)

Бакалавриат

Места в пределах квоты приема на обучение за счет бюджетных ассигнований лиц, имеющих особое право на прием в пределах квоты (особая квота)

Бакалавриат

Места в пределах квоты приема на целевое обучение (целевая квота)

Бакалавриат

Места по договорам об образовании (об оказании платных образовательных услуг), заключаемым при приеме на обучение за счет средств физических и (или) юридических лиц

Бакалавриат

Стоимость обучения за год
(2021 г.)

Бакалавриат

Профессиограмма Фотогалерея

Актуальность профессии

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

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

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

В ВСГУТУ подготовка программистов ведется с 1993 года. На текущий момент подготовлено более 1400 специалистов в области ИТ. Наши выпускники отлично работают не только в России, но и за рубежом: Канада, Австралия, Англия и т.д.

Области знаний программной инженерии

Функциональные и должностные обязанности

Области профессиональной деятельности выпускников

Индустрия и экономика разработки программных систем

Сфера профессиональной деятельности

Объекты профессиональной деятельности

Требования к индивидуальным особенностям

Абстрактное и системное мышление; усидчивость; внимательность; аккуратность; терпеливость; настойчивость; целеустремленность; ответственность; умение работать в команде; независимость; склонность к интеллектуальным видам деятельности; высокая мотивация к творческой деятельности, самообучение, аналитичность (способность выделять отдельные элементы действительности, способность к классификации) мышления, предметность (объекты реального мира и их признаки) мышления, стратегическое мышление.

— оперативность (скорость мыслительных процессов, интеллектуальная лабильность) мышления;

— хорошо развитые мнемические способности (свойства памяти);

Преимущества профессии: хороший заработок, восстребованность, разнообразие деятельности, работа творческая и очень интересная

Оплата труда и карьера

Выпускник по направлению «Программная инженерия» может работать:

© Восточно-Сибирский государственный университет технологий и управления, 2009-2018
Адрес: 670013, Республика Бурятия, г.Улан-Удэ, ул. Ключевская, д. 40В, строение 1
Тел.: (3012)43-14-15, Факс: (3012)41-71-50
Банковские реквизиты ВСГУТУ

Источник

Программная инженерия как предмет обучения

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

Программная инженерия что изучают в вузах. Смотреть фото Программная инженерия что изучают в вузах. Смотреть картинку Программная инженерия что изучают в вузах. Картинка про Программная инженерия что изучают в вузах. Фото Программная инженерия что изучают в вузах

Общепринятого определения программной инженерии (software engineering) не существует. Одни считают, что «программная инженерия» просто более пафосное название программирования. Если вы программист, то, скорее всего, в своей визитной карточке напишете «разработчик ПО», а вовсе не «программист». Другие же вкладывают в понятие «программная инженерия» более высокий смысл. В учебниках можно найти следующее определение программной инженерии: «совокупность навыков, инструментальных средств и методов, предназначенных для создания качественного программного обеспечения».

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

Дэвид Парнас, один из пионеров отрасли, особый упор делает на слово «инженерия», утверждая [1], что образование в данной области тесно связано с традиционными инженерными дисциплинами, в том числе с курсом материаловедения и тому подобными предметами, отличаясь от информатики так же, как электротехника от физики.

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

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

Специалисты по программному обеспечению

Американская ассоциация информационных технологий в апреле 2000 года [2] прогнозировала появление в течение 12 следующих месяцев 850 тыс. вакантных рабочих мест для ИТ-специалистов. Нехватка квалифицированного персонала ощущается в Европе и Австралии. Зарплаты остаются высокими, даже несмотря на массовое закрытие Internet-компаний и спад в экономике.

Хотя нет никаких признаков того, что в будущем такая тенденция не сохранится, глубокий экономический спад может заставить руководителей компаний более тщательно относится к подбору кадров. Кроме того, все больше людей приобретают навыки программирования, чему в немалой степени способствует появление все более совершенных инструментальных средств разработки, предназначенных для массового рынка. Вполне вероятно, например, что многие из 6 млн. человек, которые сейчас, по некоторым оценкам, работают с Visual Basic, не имеют образования, связанного с информатикой. Подобная ситуация создает конкуренцию и заставляет настоящих профессионалов предпринимать особые усилия, дабы не затеряться в море любителей.

Судя по высказываниям многих менеджеров, им нужны не просто сотрудники, а великолепные разработчики. А таких действительно не хватает. Литература по программной инженерии подтверждает [3], что разница в качестве работы самого квалифицированного и самого неквалифицированного разработчика в проекте может отличаться в 20 раз. Цель образовательной программы — готовить специалистов, которые удовлетворяли бы самым высоким требованиям.

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

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

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

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

Пять целей учебного курса

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

Принципы

К самым важным вещам, которые должен знать профессиональный программный инженер, относится набор концепций, которые вновь и вновь используются в его работе. Большая часть этих концепций представляет собой не какие-то конкретные методики; если к ним и относится та или иная методика, то лишь в качестве иллюстрации лежащих в его основе логических рассуждений. Именно этим определяется самая яркая характеристика профессионального программного инженера: искусность этих мощных и элегантных интеллектуальных схем, которые, в значительно большей степени, нежели какие-то определенные трюки, и составляют признанные сокровища нашей профессии. Большую их часть невозможно постичь за один присест. Они требуют постепенного совершенствования, шаг за шагом, методом проб и ошибок и под руководством мудрых наставников.

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

Большая часть людей, сегодня в силу своего высокого служебного положения определяющих, каким быть учебным курсам по программному обеспечению, начинали свою карьеру в то время, когда компьютеры были некой тайной для избранных — одно только знание того, как с ними работать, уже ставило человека над остальными. Времена меняются. Сегодня, как заметил Дэннис Цикритзис [5], специалисты по программному обеспечению могут многое узнать о новых разработках, просматривая утренние газеты. Такая уничижительная обыденность заставляет нас в большей степени, чем раньше, четко формулировать, как для самих себя, так и для наших студентов, что дает нам право называться профессионалами.

Практика

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

Приложения

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

Речь не идет о том, чтобы искусственным образом присоединять эти дисциплины к программной инженерии. Наоборот, необходимо добиваться того, что какими бы не были индивидуальные традиции, методики и результаты, все это темы, связанные с программным обеспечением, и их изучение должно вестись согласованно с представлением о программном обеспечении, сложившемся в данном вузе. Выгода будет взаимной. Обучение специальным предметам будет вестись эффективнее, если студенты получат более глубокое представление о методологии. Например, программные проекты могут быть посвящены предмету, изучаемому студентом. Следует исходить из того, что студенты уже получили общие навыки проектирования и программирования.

Инструментальные средства

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

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

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

Эти утверждения в первую очередь применимы к языкам программирования. Каждый серьезный проект подразумевает выбор подходящего языка разработки. Очень показательно в этом отношении распространение Паскаля в 70-х годах. Если обучение основано на языке, который в настоящее время не является доминирующим для индустрии, студенты должны прослушать несколько вспомогательных курсов (или разделов курса), посвященных стандартным инструментам, как для того, чтобы употреблять правильные термины в своих резюме, так и для того, чтобы получить представление о всем разнообразии практических подходов. Хороший программный инженер в любом случае должен знать несколько языков программирования.

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

Случись это 25 лет назад, университеты никогда бы не перешли на Паскаль, поскольку знание этого языка даже не упоминалось в рекламных объявлениях; отрасль, по большей части, и не слышала о нем. Этот феномен вызывает все большее беспокойство среди преподавателей, которым хорошо известно, что популярные сегодня навыки завтра могут и вовсе не потребоваться.

Математика

Одна из тем, которые, по мнению Парнаса, относятся к курсу информатики, но не к программе по компьютерной инженерии, — это семантика. Мое мнение по этому вопросу формируется с учетом собственного опыта как разработчика и менеджера программных проектов. Как и Парнас, я не слишком заинтересован в овладении студентами скрытых деталей теории языков на уровне доктора философии, но высоко ценю способность программистов мыслить формализовано. Хотя ни в одном обычном программном проекте формальная семантика вовсе не применяется повседневно, определенное понимание того, что программирование и языки программирования — это математические объекты, подверженные формальному описанию, является ключевым преимуществом. И я пришел к выводу, что это оказывается весьма полезно с практической точки зрения в коллективах, работающих над программным обеспечением.

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

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

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

Обучение на практике

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

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

Подобная идея, на первый взгляд, может показаться нереальной, но группа энтузиастов — преподавателей Университета Монаша именно так ведет обучение последние несколько лет. В результате создана оригинальная программа графического моделирования, которую каждый новый курс совершенствует, изучает в процессе преодоления трудностей модернизации кода, разработанного кем-то раньше [7]. Есть серьезные препятствия, в частности аттестация в рамках такого проекта и трудности организации годовых проектов в рамках стандартного учебного расписания. Но с решимостью и энтузиазмом все трудности преодолимы.

Обратный учебный процесс

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

Такой подход дает несколько преимуществ. С самого начала студенты работают с интересными программами, например, с графическими системами. Обучение базируется на возможности сразу видеть результаты своей работы. Современные студенты с раннего детства знают, что такое электронные игры и персональные компьютеры, и их вряд ли заинтересуют азбучные примеры введения в программирование (задача восьми ферзей и тому подобные).

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

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

Студенты-непрограммисты

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

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

Когда несколько лет назад учебные курсы по программированию были включены в состав программы подготовительных классов французской сети элитных инженерных школ Grandes Ecoles, официальная инструкция призывала преподавателей использовать Паскаль, но останавливаться на введении в рекурсию. Самое интересное в этой инструкции то, что остальной учебный курс посвящен серьезному изучению математики, в том числе достаточному числу таких абстрактных предметов, как топология. Сильные мира сего решили, что рекурсия не нужна, поскольку общество негативно отреагирует, если мы разрешим нескольким 17-летним подросткам одним глазком взглянуть на бесконечность. Они, по-видимому, посчитали, что программисты не опираются на науку, а всего лишь знают несколько трюков.

Однако было бы несправедливо отрицать, что студенты и их будущие работодатели вправе ожидать получения практических навыков.

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

Участие в фундаментальных исследованиях

Анализируя историю развития ИТ за последние несколько десятилетий, нельзя игнорировать то обстоятельство, что, если большая часть новаторских решений в 60-е и 70-е годы были предложены вузами, то в 80-х и 90-х вклад небольших фирм и исследовательских лабораторий крупных корпораций оказался значительно весомее. Это чрезмерное обобщение, которое лишь подтверждается редкими исключениями, может обидеть некоторых читателей. Было бы, однако, сложно найти среди последних достижений неопровержимые эквиваленты таким широко известным решениям, как Паскаль и Модула-2 Вирта, операционная система THE Дейкстры, взаимодействующие последовательные процессы и мониторы Хоара, созданный в Университете Осло язык Симула. Эти и другие фундаментальные изобретения периода становления компьютерной отрасли доказали, что университеты могут предложить не только прекрасные теории.

Частично причина такого изменения ситуации связана с тем, что планка оказалась слишком высоко поднятой. Компиляторы Вирта завоевали себе громкое имя, но трудно представить компилятор, каким бы новаторским он не был, способный добиться аналогичных результатов сегодня. Университетскому коллективу очень непросто конкурировать с сотнями разработчиков, создающих Visual C++ в корпорации Microsoft, или даже специалистов, занимающихся компилятором GNU GCC.

Все, в том числе и студенты, рассчитывают на то, что компилятор будет поставляться в рамках всеобъемлющей среды разработки со всеми ее атрибутами — визуальным отладчиком, обозревателем, модулем создания графического пользовательского интерфейса и средствами конфигурационного управления. При всей критике в адрес Visual C++ и аналогичных инструментов со стороны академических кругов, которой они, в определенной степени, заслуживают, подобные инструменты предлагают множество ресурсов и функций, устанавливая тем самым высокий стандарт для каждого, кто решится с ними конкурировать. В таком соревновании академическим институтам сейчас трудно оставаться на равных. Так что ученым следует найти другие задачи, в которых они способны оставить заметный след.

Я не претендую на знание всех таких новых областей, но одна кажется мне многообещающей. Речь идет о компонентной разработке и о качестве. Программная отрасль декларирует широкое применение повторно используемых компонентов. Но нет никаких гарантий качества их, нет стандарта, нет правил, нет ведомства, которое занималось бы их сертификацией. Риск столь же велик, как и открывающиеся возможности. Крупный проект может потерпеть неудачу, причем катастрофическим образом, из-за небольшого дефекта в одном из самых незначительных компонентов. Именно это привело к катастрофе во время первого запуска ракеты Ariane 5 — из-за плохо выполненного повторного использования небольшого программного компонента — и задержало реализацию проекта на полтора года, что обошлось европейским налогоплательщикам в 10 млрд. долл. [10].

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

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

Говоря о «программном обеспечении», следует помнить, что данный термин впервые появился 35 лет назад. С того времени, однако, мы узнали достаточно много, чтобы обучать студентов согласованному набору принципов и методик, не скрывая от них (или от самих себя), как многое еще остается неизвестным.

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

Литература

1. D.L. Parnas, «Software Engineering Programmes Are Not Computer Science Programmes,» CRL Report 361, Communication Research Laboratory, McMaster Univ., Apr. 1998; to be published in Annals of Software Eng., 2001
2. Information Technology of America, «Major New Study Finds Enormous Demand for IT Workers: Research Pinpoints Hot Jobs and Skills Needed, Offers Insights on Employer Preferred Training Approaches».
3. B.W. Boehm, Software Engineering Economics, Prentice Hall, 1981
4. P.G. Neumann, «Illustrative Risks to the Public in the Use of Computer Systems and Related Technology».
5. D. Tsichritzis, «The Changing Art of Computer Science Research», in Electronic Commerce Objects, D. Tsichritzis, ed., Centre Universitaire d?Informatique, Universite de Geneve, 1998
6. B. Meyer, Introduction to the Theory of Programming Languages, Prentice Hall, 1990
7. C. Mingins et al., «How We Teach Software Engineering», J. Object-Oriented Programming, Feb. 1999
8. B. Cohen, «The Education of the Information Systems Engineer», Electronics & Power, Mar. 1987
9. B. Meyer, Object-Oriented Software Construction, 2nd ed., Prentice Hall, 1997
10. J. Jezequel and B. Meyer, «Design by Contract: The Lessons of Ariane», Computer, Jan. 1997

Бертран Мейер (Bertrand_Meyer@eiffel.com) директор по технологиям компании Interactive Software Engineering. Среди опубликованных им книг — «Объектно-ориентированное конструирование программного обеспечения» (Object-Oriented Software Construction Prentice Hall, 1997).

Принципы: что знают специалисты по программному обеспечению

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

Специалисты по программному обеспечению — лучшие в мире специалисты по созданию хаоса. Мы должны объяснить нашим студентам, что это непреложный факт и показать им, что следует в связи с этим предпринимать.

Поделитесь материалом с коллегами и друзьями

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *