Преподавание программной инженерии в России Проф. Андрей Терехов Андрей Терехов-мл. Владимир Павлов
Computing Curricula В рамках проекта Computing Curricula 2001 были опубликованы рекомендации по преподаванию следующих дисциплин компьютинга: – Информатика (Сomputer Science) – 2001 – Программная инженерия (Software Engineering) – 2004 – Проектирование аппаратных платформ (Computer engineering) – 2004 – Информационные системы (Information Systems) – 2002 – В 2005г. вышел том СС2005, который описывает роль и место каждой из дисциплин в компьютинге, выделяет еще одну новую дисциплину – информационные технологии (Information Technologies) – и знаменует начало работы над новым циклом развития Computing Curricula Данный доклад посвящен вопросу преподавания программной инженерии
Software Engineering 2004 Русский перевод этого документа под нашей редакцией только что опубликован в издательстве Интуит.ру Проект выполнен под эгидой комитета по образованию АП КИТ В данное издание включен также перевод рекомендаций по информатике, т.к. это связанные между собой науки
Что такое программная инженерия? Программная инженерия посвящена систематическим, управляемым и эффективным методам создания высококачественного программного обеспечения. Поэтому особое внимание уделяется анализу и оценке, спецификации, проектированию и эволюции программного обеспечения. Кроме того, в рамки данной дисциплины попадают вопросы, связанные с управлением и качеством, новизной и творчеством, стандартами, индивидуальными навыками и командной работой, а также профессиональной деятельностью, которые играют жизненно важную роль в программной инженерии.
Программная инженерия по CC2005 Потребности организаций и предприятий Прикладные технологии Методы и технологии создания ПО Системная инфрастуктура Аппаратные платформы и архитектуры Теоретические основы РазработкаПрактическое применение
Программная инженерия в России К сожалению, программная инженерия еще не состоялась как самостоятельная учебная дисциплина Российские университеты по-прежнему сосредоточены на преподавании информатики Де-факто мы готовим исследователей, хотя индустрии нужны грамотные инженеры. В SE2004 сформулировано, что должен знать и уметь программный инженер.
Общие для всех инженерных дисциплин характеристики [1] Инженеры в своей деятельности принимают ряд решений, тщательно оценивая альтернативы и выбирая в каждой точке принятия решения подход, оптимально соответствующий решаемой задаче с учетом существующего контекста. Выбор подхода осуществляется в процессе анализа альтернатив, во время которого тщательно сопоставляются возможные затраты и ожидаемая прибыль. [2] Инженеры, по возможности, работают с использованием измеримых количественных характеристик; они совершенствуют и уточняют существующие методы измерений и при необходимости выдают приближенные решения на основе опыта и эмпирических данных. [3] Инженеры придают особое значение использованию дисциплинированного процесса при осуществлении проекта и понимают важность вопросов эффективной организации командной работы. [4] Инженеры могут отвечать за выполнение самого широкого спектра задач, начиная с исследований, разработки, проектирования, производства, тестирования, внедрения, эксплуатации и управления, и заканчивая продажами, консультированием и обучением. [5] Инженеры в процессе выполнения своих обязанностей широко используют инструментальные средства. Поэтому выбор и использование подходящих средств является крайне важным вопросом. [6] Объединяясь в профессиональные сообщества, инженеры способствуют развитию своей отрасли путем разработки и внедрения рекомендаций, аттестационных принципов, стандартов, распространению хорошо зарекомендовавших себя подходов (best practices). [7] Инженеры повторно используют результаты проектирования и проектные артефакты.
Отличия программной инженерии Программная инженерия качественно отличается от других инженерных дисциплин нематериальностью программного обеспечения и дискретной природой его функционирования. Программная инженерия стремится интегрировать принципы математики и информатики с инженерными подходами, разработанными для производства осязаемых материальных артефактов.
SE2004: совокупность знаний по программной инженерии 1.Основы информационных технологий (CMP) 2.Основы математики и инженерии (FND) 3.Профессиональная практика (PRF) 4.Моделирование и анализ программного обеспечения (MAA) 5.Проектирование программного обеспечения (DES) 6.Верификация и аттестация программного обеспечения (VAV) 7.Эволюция программного обеспечения (EVL) 8.Процессы разработки программного обеспечения (PRO) 9.Качество программного обеспечения (QUA) 10.Управление программными проектами (MGT)
Наши рекомендации (1/3) Специалистам в области преподавания ИТ: – Ознакомиться с рекомендациями Software Engineering 2004 – Привести свои учебные курсы и программы обучения в соответствие с SE2004 – Разработать новые учебные курсы и пособия по темам SE2004, которые мало представлены в России (например, групповая динамика, профессиональная практика, эволюция программного обеспечения, проектирование человеко-машинного интерфейса, инженерная экономика программного обеспечения) – Принять участие в разработке следующей волны учебных стандартов серии Computing Curricula
Наши рекомендации (2/3) Университетам: – В соответствии с рекомендациями SE2004 изменить подходы к курсовым и дипломным работам (групповые проекты, ориентация на производственный характер, измерения и т.д.) – Развивать практику сотрудничества с предприятиями отрасли Разработка ПО (организация производственной практики для студентов, совместные проекты, привлечение сотрудников компаний в качестве тьюторов и т.п.) – Идеальный вариант – работа с IT-технопарками (больше разнообразия для студентов, не будет монополизма одной фирмы, сильнее финансовая поддержка для университета)
Наши рекомендации (3/3) Министерству образования и науки: – Привести структуру государственных образовательных стандартов в части ИТ в соответствие с рекомендациями Computing Curricula – Выделить программную инженерию в самостоятельную учебную специальность, наравне с информатикой, математикой и т.п. – За основу предлагаем взять учебный план, реализуемый в данный момент на мат-мехе СПбГУ в рамках специальности «Информационные технологии» по специализации «Программная инженерия»
Ссылки по теме доклада Английские тексты документов Computing Curricula на сайте IEEE Computer Societyсайте IEEE Computer Society Русский перевод Software Engineering + Computer Science на сайте кафедры системного программирования СПбГУсайте кафедры системного программирования СПбГУ Статья о применении рекомендаций SE2004 для российского образования в журнале «Открытые системы», 8, 2006в журнале «Открытые системы», 8, 2006
Вопросы? Контактная информация докладчика: Проф. Андрей Николаевич Терехов +7 (812)