Associate Professor
at SE&CS Faculty
at ITMO University
Russia
by Aleksandr Penskoi
Цель: сформировать учебную программу в области вычислительной техники, адресованную следующим возможностям:
и при этом позволяющей разрешать возникающие противоречия между заинтересованными сторонами.
Учебная программа (методика) – совокупность шаблонов, учебных приёмов и рекомендаций, позволяющих сформировать и адаптировать учебный план для конкретного учащегося (индивидуальную траекторию).
Учебный план (метод, индивидуальная траектория) – совокупность учебных мероприятий, которая, будучи применённой к отвечающему заданным требованиям студенту, позволит по прошествии заданного времени получить требуемого специалиста. Должен быть гибким, так как в процессе обучения могут меняться требования, узнаваться/уточняться начальные условия. При этом должен реализовываться в водопадном стиле с заранее заданными коридорами возможностей и сроками. Выход за пределы учебной программы приемлем (смена направления или отчисление студента).
Учебная программа должна включать в себя:
Примечания:
Для создания качественной учебной программы необходимо решить следующие задачи:
Начнём с первой задачи, что мы хотим получить в результате учебного процесса? В соответствии с системным подходом, system-of-interest определяется с точки зрения её функционального места и операционного окружения. Другими словами – будущее место работы студента в некоторой организационной структуре, где он должен поддерживать процесс (performing process), решать определенный круг технических, организационных и социальных задач, причём большая часть из них не может быть артикулирована (см. практическая информация и неравномерность распределения информации в австрийской экономической школе).
По задумке, процесс и роль человека задаёт методология разработки (возможно, тут есть подмена понятий), вне зависимости от того была она описана или нет1. При этом любая методология в той или иной степени направлена на специализацию труда и формирование шаблонов деятельности/процессов, за счет чего происходит рост эффективности, снижение рисков и издержек, механизация работы, взаимозаменяемость кадров.
Что бы определить роль человека необходимо определить методологию разработки, а значит его функциональное место.
Сегодня существует огромное количество подходов к разработке компьютерных систем, отличия между которыми лежат в технической, бизнес и социальных плоскостях. Многие методологии прямо противоречат друг-другу, имеют разные области применения, соответствуют разным типам коллективов.
Одним из актуальных стандартов в области работы с методологиями разработки компьютерных систем (software intensive system) является стандарт Essence, разработанный для их описания, разработки и сравнения 2.
Предлагаемый стандартом язык 3 для описания методологий включает в себя следующие элементы:
При этом стандарт постулирует что метод разработки системы всегда ситуативен (разрабатывается под конкретный проект и адаптируется вслед за изменениями ситуации). Со стороны языка эта идеология поддержана наличием шаблонов, которые позволяют определить элементы ситуативной инженерии методов, а именно:
Таким образом, стандарт Essence позволяет нам задокументировать семейство методик разработки компьютерных систем, выделить из них типовые шаблоны активностей и ролей. Фактически, задокументированные методики являются описанием приготовленного для студента будущего, в которое ему будет необходимо встроиться.
Ценность такого описания методик заключается в том, что есть возможность продемонстрировать учащимся их область деятельности в целом, все взаимосвязи и сделать акцент на их специализации. Это должно в значительной степени облегчить рационализацию учебного процесса и оценку его качества. Предоставить общее видение того, что такое разработка компьютерной системы и из чего она состоит.
Но у него есть и недостатки, он будет заострять проблемы и противоречия такие как специализация/универсальность или прикладник/специалист по ВТ. К примеру, зачем бизнес программисту лямбда исчисление, архитектура процессоров, OSI модель, верилоги и математика, если не для удовлетворения честолюбия?
Отсюда можно поставить следующие задачи:
Пока, в этой части, остановимся.
Если решены описанные выше задачи, то мы можем применить язык Essence для описания учебной программы (методика ситуативной инженерии методов) и учебного плана (индивидуальной траектории):
Автоматически такая модель учебного плана будет включать в себя шаблоны синхронизации прогресса обучения по альфам (нет смысла учить разработке компиляторов того, кто программировать не умеет), а также шаблоны активностей и выбора активностей (к примеру, устройство процессора можно рассказывать с позиции аппаратчика и с позиции программиста4).
Визуально это будет выглядеть примерно следующим образом (на схеме представление водопадной модели разработки):
Где у разработчика учебного плана (методики) есть возможность:
Причём такой подход позволяет динамически адаптировать учебный план, делать его индивидуальным. Главное, что бы достигнутый профиль получился осмысленным (не нарушались инварианты заложенные на уровне учебного плана).
См. отношение архитектуры и архитектурного описания по ISO/IEC/IEEE 42010 Systems and software engineering – Architecture description. 2011. ↩
Ivar Jacobson, Discover the Essence of Software Engineering. CSI Communications, July 2011, http://semat.org/documents/20181/27952/Technical_Trends_3.pdf/f12257fc-81e9-4a25-8fef-c2076ebce105 ↩
Essence – Kernel and Language for Software Engineering Methods. Foundation for the Agile Creation and Enactment of Software Engineering Methods (FACESEM) RFP, 2012. ↩
Возможно, имеет смысл отказать от жёсткой привязки курсов к тому или иному семестру. ↩