Методы и средства инженерии программного обеспечения

       

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


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

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 имеет связь со  смежными дисциплинами:

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

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

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

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

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

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

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

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

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

 


Содержание раздела