Доклад Алексея Иванова «Стык системной и программной инженерии в учебном курсе моделеориентированной разработки программоёмких систем» на 75 заседании Русского отделения INCOSE, 24 апреля 2013г.
Алексей Иванов -- курс по стыку системной и программной инженерий
1. Стык системной и программной
инженерии в учебном курсе
моделеориентированной разработки
программоёмких систем
А.М. Иванов, amivanoff@gmail.com
старший преподаватель
каф. Информационные системы и телекоммуникации
МГТУ им. Н.Э. Баумана
расширенная и дополненная версия
доклада с 4й рабочей встречи в Бекасово
Москва, 2013
2. Статус курса
• Факультет «Информатика и системы
управления» (ИУ)
• Кафедра «Информационные Системы и
Телекоммуникации» (ИУ3)
• Специализация широкого профиля
– Встраиваемые системы
– Корпоративные системы
– Интеллектуальные системы
2
3. Формальные аспекты создания курса в
ВУЗе
• Разработка учебной программы
– Смена классификаторов
– Смена сводных шаблонов
– Смена отдельных форм
– Автоматизация
3
4. Участники учебного процесса
• Преподаватели
– Лектор Иванов А.М.
– Лаборант Иванов А.М.
• Студенты
– 2 группы по ~15 человек
4
5. Место в учебном процессе
• Предшествующие дисциплины
– Алгоритмы и структуры данных
– Инфокоммуникационные системы и сети
– Управление данными
– Программирование на языке высокого уровня
– Технологии программирования
• Последующие дисциплины
– Интеллектуальные системы и технологии
– Корпоративные информационные системы
– Распределенные информационные системы
– Проектирование информационных и
телекоммуникационных систем
5
6. Цели курса
• Знания
– Студент должен знать понятия
• Конструкции языка Java, основы работы виртуальной машины JVM, основные библиотеки
• Критерии качества архитектуры системы, шаблоны проектирования
• Российские и международные стандарты оформления технической документации
• Современные нотации описания информационных систем
• Критерии качества исходного кода; особенности языков программирования; шаблоны реализации; классификаторы ошибок;
источники ошибок
• Технологии обеспечения модульности программных систем. Модульность ПО, разбиения системы на части: структурная и
функциональная декомпозиция, аспектная декомпозиция, компоненты и компонентная система
– Методики
• Методологии разработки ПО
• Методы оценки трудоемкости и планирования разработки
• Методы управления требованиями (Discovering Requirements)
• Методы архитектурного проектирования (CMU SEI)
• Методы тестирования
• Возможности инструментов автоматизации разработки
• Умения
– Проводить анализ предметной области и составлять ТЗ.
– Выявлять требования к качеству системы на различных этапах разработки.
– Осуществлять проектирование системы.
– Создавать качественный код на этапе реализации системы.
– Составлять план тестирования и разрабатывать тестовые случаи.
• Навыки
– Программирования на Java с использованием Eclipse IDE,
– использования инструментов групповой работы в разработке ПО (система контроля версий, система учета задач, система
ведения документации, система непрерывной интеграции),
– построения бинарных сборок модульной системы и выпуска версий с использованием Apache Ant,
– использования каркасов модульного тестирования JUnit,
– поиска уязвимостей в коде с использованием инструмента анализа исходного кода FindBugs
6
7. Часы курса
Виды учебной работы
Объем в часах по семестрам
06 семестр
17 недель
Лекции 34
Лабораторные работы 34
Самостоятельная работа 34
Контрольные мероприятия 6
Итого в часах 108
Проверка знаний: экзамен
7
8. Программа курса лекций
Трудоемкость
в кредитн. ед.
Часы
общ./ауд.
Контрольные
мероприятия
Рейтинг
макс./мин.
Семестр 6
Модуль 6-1
Основы языка Java
1 33/17 Контроль по модулю 12/8
Модуль 6-2
Типовой процесс разработки ПО
1 33/17 Контроль по модулю 12/8
Модуль 6-3
Технологии декомпозиции и
обеспечения модульности
1 33/17 Контроль по модулю 12/8
Модуль 6-4
Основы организации процесса
разработки ПО
1 33/17 Контроль по модулю 12/8
Экзамен 52/28
8
9. Программа курса лабораторных
9
Лаб. работа (стадия
процесса разработки)
Методика, методы работы Результаты труда
Нотации, языки и
форматы
результатов труда
Инструменты
индивидуальной
разработки
Инструменты
групповой
работы
Знания, умения, навыки
студентов
Лаб 1. Java, OSGi, Sling,
Sakai OAE
Создание отдельных
небольших прототипов для
знакомства с основными
технологиями
Набор Eclipse
проектов
Исходный код
модуля на языке Java
Eclipse IDE:
редактор,
компилятор,
отладчик
Git, Maven
Знакомство со средой
разработки Eclipse, языком
Java и другими
технологиями
Лаб 2. Составление
требований к модулю
Сбор и документирование
требований в виде сценариев
вариантов использования.
Обсуждение требований
ТЗ на
разрабатываемый
модуль
Документ Word MS Word Git
Сбор и документирование
требований
Лаб 3.
Проектирование
модуля
Проектирование и
документирование
архитектуры.
Детальное проектирование
интерфейсов сервисов.
Обсуждение архитектуры
Высокоуровневая
архитектура.
Детальная
архитектура
UML-модель,
Archimate-модель
Eclipse Papyrus,
Archi
Git
Проектирование и
документирование
архитектуры
Лаб 4. Реализация,
проверка качества
кода
Создание реализации
сервисов с учетом соглашений
об оформлении кода,
проверки кода на уязвимости
Набор Eclipse
проектов
Исходный код
модуля на языке Java
Eclipse IDE,
CheckStyle,
FindBugs
Git, Hudson
Создание качественного
кода
Лаб 5. Реализация,
модульное
тестирование
Создание реализации
сервисов модуля и их
тестирование
Набор Eclipse
проектов
Исходный код
модуля и модульных
тестов на языке Java
Eclipse IDE, JUnit Git, Hudson Тестирование модулей
Лаб 6. Системное
тестирование,
подготовка релиза
Тестирование системы в целом
с модулем. Создание
дистрибутива плагина
Отчет о системном
тестировании,
бинарная сборка
модуля, исходный
код модуля
Документ Word, jar-
файл модуля,
исходный код
модуля на языке Java
Eclipse IDE Git, Hudson
Системное тестирование,
создание бинарных сборок
10. Системная инженерия в программной
• Разрабатывается не программа, а социо-
кибер-физическая система
• Осознанный подход к требованиям
• Осознанное проектирование на основе
заданных целевых показателей
• Сравнительный архитектурный анализ
10
11. Моделеориентированность в курсе
• Model-Based (?) – модель как эскиз системы,
модель как способ верификации
– Модели требований системы
– Модели архитектурных описаний системы
• Не Model-Driven Development (MDD/MDSD)
– Не генерация кода по модели
11
13. Источники
• Стандарты
– Archimate
– OSGi
• Литература
– Разработка ПО на практике
– Discovering Reqiorements
– OSGi for Beginners
– Git for Beginners
13
15. Студенческие проекты
• Команда 3 человека
• Примеры проектов
– Интерфейс расписания занятий
– Форум
– Wiki
– Посещаемость
15
16. Особенности мотивирования
• Генерация РПЗ по модели
• Анализ целей заинтересованных в системе
лиц в начале любого стартапа
• Как работать командой
16