Click here to load reader
Upload
anatoly-levenchuk
View
3.025
Download
6
Embed Size (px)
DESCRIPTION
Доклад Алексея Иванова «Стык системной и программной инженерии в учебном курсе моделеориентированной разработки программоёмких систем» на 75 заседании Русского отделения INCOSE, 24 апреля 2013г.
Citation preview
Стык системной и программной инженерии в учебном курсе
моделеориентированной разработки программоёмких систем
А.М. Иванов, [email protected]старший преподавателькаф. Информационные системы и телекоммуникацииМГТУ им. Н.Э. Баумана
расширенная и дополненная версия доклада с 4й рабочей встречи в Бекасово
Москва, 2013
2
Статус курса
• Факультет «Информатика и системы управления» (ИУ)
• Кафедра «Информационные Системы и Телекоммуникации» (ИУ3)
• Специализация широкого профиля– Встраиваемые системы– Корпоративные системы– Интеллектуальные системы
3
Формальные аспекты создания курса в ВУЗе• Разработка учебной программы– Смена классификаторов– Смена сводных шаблонов– Смена отдельных форм– Автоматизация
4
Участники учебного процесса
• Преподаватели– Лектор Иванов А.М.– Лаборант Иванов А.М.
• Студенты– 2 группы по ~15 человек
5
Место в учебном процессе
• Предшествующие дисциплины– Алгоритмы и структуры данных– Инфокоммуникационные системы и сети– Управление данными– Программирование на языке высокого уровня – Технологии программирования
• Последующие дисциплины– Интеллектуальные системы и технологии– Корпоративные информационные системы– Распределенные информационные системы– Проектирование информационных и
телекоммуникационных систем
6
Цели курса• Знания
– Студент должен знать понятия• Конструкции языка Java, основы работы виртуальной машины JVM, основные библиотеки• Критерии качества архитектуры системы, шаблоны проектирования• Российские и международные стандарты оформления технической документации• Современные нотации описания информационных систем• Критерии качества исходного кода; особенности языков программирования; шаблоны реализации; классификаторы ошибок; источники ошибок• Технологии обеспечения модульности программных систем. Модульность ПО, разбиения системы на части: структурная и функциональная
декомпозиция, аспектная декомпозиция, компоненты и компонентная система– Методики
• Методологии разработки ПО• Методы оценки трудоемкости и планирования разработки• Методы управления требованиями (Discovering Requirements)• Методы архитектурного проектирования (CMU SEI)• Методы тестирования• Возможности инструментов автоматизации разработки
• Умения– Проводить анализ предметной области и составлять ТЗ.– Выявлять требования к качеству системы на различных этапах разработки.– Осуществлять проектирование системы.– Создавать качественный код на этапе реализации системы.– Составлять план тестирования и разрабатывать тестовые случаи.
• Навыки– Программирования на Java с использованием Eclipse IDE, – использования инструментов групповой работы в разработке ПО (система контроля версий, система учета задач, система ведения
документации, система непрерывной интеграции), – построения бинарных сборок модульной системы и выпуска версий с использованием Apache Ant, – использования каркасов модульного тестирования JUnit, – поиска уязвимостей в коде с использованием инструмента анализа исходного кода FindBugs
7
Часы курса
Виды учебной работы
Объем в часах по семестрам
06 семестр17 недель
Лекции 34
Лабораторные работы 34
Самостоятельная работа 34
Контрольные мероприятия 6
Итого в часах 108
Проверка знаний: экзамен
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
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
Системная инженерия в программной
• Разрабатывается не программа, а социо-кибер-физическая система
• Осознанный подход к требованиям• Осознанное проектирование на основе
заданных целевых показателей• Сравнительный архитектурный анализ
11
Моделеориентированность в курсе
• Model-Based (?) – модель как эскиз системы, модель как способ верификации– Модели требований системы– Модели архитектурных описаний системы
• Не Model-Driven Development (MDD/MDSD)– Не генерация кода по модели
12
Принципы выставления оценок в курсе
• Выполнение лабораторных• Защита лабораторных• Экзамен
13
Источники
• Стандарты– Archimate– OSGi
• Литература– Разработка ПО на практике– Discovering Reqiorements– OSGi for Beginners– Git for Beginners
14
Подготовительные материалы
• Шаблонный проект Archimate• Проекты экспериментов с OSGi
15
Студенческие проекты
• Команда 3 человека
• Примеры проектов– Интерфейс расписания занятий– Форум– Wiki– Посещаемость
16
Особенности мотивирования
• Генерация РПЗ по модели• Анализ целей заинтересованных в системе
лиц в начале любого стартапа• Как работать командой
17
Instructional design
• Упражнений кроме проектов не было• В начале каждой лабораторной вводная и
анализ результатов предыдущей
18
Возможности отчуждения курса
• Сообщество, мыслящее теми же понятиями
19
СПАСИБО ЗА ВНИМАНИЕ!