Обучение специальности – программная инженерия

Инженерная деятельность в программировании близка по своей сущности к определению инженерной деятельности (например, приборостроение), определенной в толковом словаре:

1) инженерия есть применение научных результатов в практику, что позволяет получать пользу от свойств материалов и источников энергии;

2) деятельность по созданию машин для предоставления полезных услуг.

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

В отличие от другой науки, целью которой есть получение знаний, в инженерии знание является способом получения некоторой пользы. Ф.Брукс [7] считает, что «ученый строит, чтобы научиться, инженер учится, чтобы строить».

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

– традиционные ветви инженерии имеют высокую степень специализации, а у программной инженерии специализация заметна только в довольно узких применениях (например, операционные системы, трансляторы, редакторы и др.);

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

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

Приведенные отличия требуют значительных усилий и доработок для превращения программной инженерии в специальность. Мировая компьютерная общественность признала целесообразность и своевременность таких усилий. Подтверждением этого является совместное создание ядра SWEBOK, разных программ обучения (Cirricula -2001-2005) [23, 24], институтов и комитета международного профессионального объединения в области информатики. Их главной целью является проведение работ по преобразованию программной инженерии в специальность, которая имела бы зафиксированные признаки для ее распознания и официального признания в мировом сообществе специалистов [25-28].

Практика специализации профессиональной деятельности, которая сложилась в цивилизованном мире, позволяет считать профессию "зрелой", если для нее существуют:

– система начального обучения специальности;

– механизмы развития умений и навыков персонала, которые необходимы для его практической деятельности;

– квалификация персонала организована в рамках профессии;

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

– системы профессионального усовершенствования квалификации персонала и отслеживания современного уровня знаний и технологий по специальности, чтобы специалисты могли выжить в условиях интенсивного развития специальности;

– этический кодекс специалистов;

– профессиональное объединение.

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

Отметим, что указанные профессиональные организации в 1999г. приняли этический кодекс специалистов по программной инженерии [13], разработали руководства для обучения программной инженерии, а также создали программу обучения Computing Curricula (СС) 2001 [24]. Кроме того, в США работает комитет по сертификации учебных заведений (Computing Accreditation Commission of the Accreditation Board for Engineering and Technology [29].

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

– компьютерные науки;

– управление проектом;

– электротехническая инженерия;

– математика;

– телекоммуникации и сети;

– менеджмент;

– когнитивные науки;

– другие инженерные дисциплины.

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

Наши рекомендации