Индивидуальный процесс разработки
Курс для опытных разработчиков ПО и их руководителей. Знания, полученные за время курса — база для улучшения как процесса разработки внутри организации, так и для развития индивидуальных навыков разработчика. Индивидуальный процесс разработки — начальный набор необходимых инструментов для практикующего специалиста. Курс описывает основные метрики, необходимые для достижения наилучших результатов при разработке ПО. В первую очередь курс затрагивает вопросы оценки времени и снижения числа дефектов. Предметом курса является не конечный продукт, а именно процесс разработки. Студентам предстоит прослушать 14 лекций, решить 10 задач по программированию, написать 4 отчета, прочитать некоторые главы из книг Уотта Хэмфри. Занятия на курсе позволят студенту сразу применить принципы индивидуального процесса разработки в своей ежедневной работе. По завершению курса сертификат SEI не предоставляется.
Модели программных систем
Научные основы, применяемые при разработке программного обеспечения, зависят от использования как точных, так и абстрактных моделей для описания и обоснования свойств создаваемой системы. В рамках курса рассматриваются стандартные модели для представления последовательных и параллельных систем, таких как конечные автоматы, алгебры и протоколы. Курс показывает, как применять различные принципы логики для уточнения свойств конструируемой системы, таких как функциональная правильность, отсутствие взаимной блокировки и внутреннее единство.Основные понятия курса — механизмы композиции, функции абстракции, инварианты, недетерминизм, индуктивные определения.
Методы проектирования
На этом курсе студент познакомится с разными способами, помогающими понять задачу, которую необходимо решить с помощью разрабатываемого ПО; факторами, ограничивающими число возможных решений; и подходами к выбору оптимального варианта. Студенты познакомятся с методами документирования процесса определения требований под конкретного заказчика, научится управлять рисками и сообщать о решениях, относящихся к требованиям, конечным пользователям, инвесторам, дизайнерам и членам команды разработчиков.
Управление разработкой
Масштабная разработка программного обеспечения требует умения управлять ресурсами как человеческими, так и вычислительными, посредством контроля процесса разработки ПО. Курс дает знания и навыки, необходимые для руководства командой разработчиков, учит оценивать время и затраты, а также понимать процесс разработки в целом. Природа разработки ПО достаточно уникальна для использования особых техник управления проектами, особенно в сферах оценки, планирования и отслеживания прогресса проекта.
Архитектура программных систем
Основная цель курса — дать студентам ясное понимание того, насколько важную роль играет архитектура в разработке сложных систем. Проектирование архитектуры подобных систем — трудная задача. Требования, которые обуславливают архитектуру системы, часто отличаются от требований, определяющих её функционал. Они более продолжительно воздействуют на систему в отличие от большинства функциональных требований, некоторые являются высоко субъективными или недостаточно четкими. Архитектурные требования имеют неявную связь между собой, и многие заказчики не понимают архитектурные особенности разрабатываемых продуктов. Следовательно, заказчики могут недооценить требования, важные с точки зрения архитектуры. Архитектура предусматривает возможные изменения функциональных требований, условий ведения бизнеса, существующих технологий, развития организации и так далее. Архитектура должна быть стабильной, в то время как многие функциональные и бизнес-требования могут оставаться непостоянными. Архитектурно значимые требования порой трудно протестировать до момента запуска системы. Зачастую они имеют прямое воздействие, что делает сложным исправление недочетов, возникших на поздних стадиях разработки продукта. Вследствие чего увеличивается степень риска. Таким образом, еще одной целью курса является знакомство студентов с основными концепциями, техниками и методами, применяемыми для создания и управления архитектуры системы ресурсоемкого ПО.
Анализ компонентов ПО
Курс учит использовать техники оценки и повышения качества ПО вне зависимости от его размера и области применения. Курс рассматривает качество не только как отсутствие дефектов, но и как способность удовлетворить скрытые и явные потребности пользователей системы. Таким образом, качество программного обеспечения рассматривается в нескольких плоскостях: качество продукта, качество услуг и качество процесса. В курсе систематически рассматриваются различные характеристики качества и наиболее подходящие методы для их верификации. Курс отдельно рассматривает такие темы, как тестирование ПО, статический анализ и проверку моделей, инспекции, технический долг, стоимость качества, планирование качества, количественные модели и классификацию дефектов.
Коммуникации для разработчиков ПО
В рамках этого курса студенты изучат принципы и подходы эффективных навыков общения и переписки. Ключевой элемент курса — участие в практических семинарах, на которых у студентов будет возможность применить и проверить свои навыки. По окончании курса студенты научатся проводить презентации продуктов, создавать четкие и краткие документы и применять принципы эффективного общения в переписке и личной коммуникации.
После окончания студенты научатся:
-
Планировать и вести проект
-
Применять принципы тайм-менеджмента
-
Выделять ресурсы под разные задачи
-
Взаимодействовать с заказчиком проекта
-
Определять потребности клиента и пользователя
-
Выводить из бизнес-требований требования для разработчика
-
Проектировать программные решения
-
Проводить анализ и контролировать качество проекта
-
Разрабатывать техническую документацию ПО
-
Разрабатывать архитектуру ПО
-
Брать ответственность за принятие выбранных технических решений
-
Планировать контроль качества, контролировать и составлять отчеты
-
Взаимодействовать с командой разработчиков
Обучение состоит из 7 обязательных курсов и заканчивается подготовкой итогового проекта в августе следующего календарного года.
В качестве итоговой работы студенты реализуют реальный проект с компаниями-партнерами университета. Он предоставляет студентам возможность продемонстрировать навыки, которые они получили, при решении практических задач. Проектные группы работают под наблюдением менторов. Наличие менторов позволяет студентам самостоятельно принимать решения и вести проект, в то же время получать помощь от практикующих специалистов индустрии.
Длительность программы: 1 год + 1 год участия в индустриальном проекте IT-компании (рыночные условия оплаты).
Выпускники программы получают ключевые компетенции в области разработки ПО, аналитики и предпринимательства, а также умение применять приобретенные знания на практике. Они получают опыт управления проектами: сбор, анализ требований, взаимодействие с заказчиком, решение проблем, выбор стека технологий для выполнения проекта, планирование и оценка сроков, презентация результатов проекта.
Компетенции, которые получат выпускники, позволят им быстрее коллег подняться по карьерной лестнице и стать:
-
Архитектором программного обеспечения ;
-
Техническим лидером;
-
Менеджером проекта.
Критерии отбора:
-
Наличие релевантного опыта работы;
-
Английский язык — Intermediate и выше;
-
Знание языков программирования (Java, C++, С, C# и др.);
-
Знание базовых предметов Computer Science;
-
Глубокое знание минимум 2-х дисциплин из 4-х: техники компилирования, сравнительный анализ ЯП, ОС, системы баз данных.
На основе программы Software Engineering университета Карнеги-Меллон (США).