19

Click here to load reader

Алексей Иванов -- курс по стыку системной и программной инженерий

Embed Size (px)

DESCRIPTION

Доклад Алексея Иванова «Стык системной и программной инженерии в учебном курсе моделеориентированной разработки программоёмких систем» на 75 заседании Русского отделения INCOSE, 24 апреля 2013г.

Citation preview

Page 1: Алексей Иванов -- курс по стыку системной и программной инженерий

Стык системной и программной инженерии в учебном курсе

моделеориентированной разработки программоёмких систем

А.М. Иванов, [email protected]старший преподавателькаф. Информационные системы и телекоммуникацииМГТУ им. Н.Э. Баумана

расширенная и дополненная версия доклада с 4й рабочей встречи в Бекасово

Москва, 2013

Page 2: Алексей Иванов -- курс по стыку системной и программной инженерий

2

Статус курса

• Факультет «Информатика и системы управления» (ИУ)

• Кафедра «Информационные Системы и Телекоммуникации» (ИУ3)

• Специализация широкого профиля– Встраиваемые системы– Корпоративные системы– Интеллектуальные системы

Page 3: Алексей Иванов -- курс по стыку системной и программной инженерий

3

Формальные аспекты создания курса в ВУЗе• Разработка учебной программы– Смена классификаторов– Смена сводных шаблонов– Смена отдельных форм– Автоматизация

Page 4: Алексей Иванов -- курс по стыку системной и программной инженерий

4

Участники учебного процесса

• Преподаватели– Лектор Иванов А.М.– Лаборант Иванов А.М.

• Студенты– 2 группы по ~15 человек

Page 5: Алексей Иванов -- курс по стыку системной и программной инженерий

5

Место в учебном процессе

• Предшествующие дисциплины– Алгоритмы и структуры данных– Инфокоммуникационные системы и сети– Управление данными– Программирование на языке высокого уровня – Технологии программирования

• Последующие дисциплины– Интеллектуальные системы и технологии– Корпоративные информационные системы– Распределенные информационные системы– Проектирование информационных и

телекоммуникационных систем

Page 6: Алексей Иванов -- курс по стыку системной и программной инженерий

6

Цели курса• Знания

– Студент должен знать понятия• Конструкции языка Java, основы работы виртуальной машины JVM, основные библиотеки• Критерии качества архитектуры системы, шаблоны проектирования• Российские и международные стандарты оформления технической документации• Современные нотации описания информационных систем• Критерии качества исходного кода; особенности языков программирования; шаблоны реализации; классификаторы ошибок; источники ошибок• Технологии обеспечения модульности программных систем. Модульность ПО, разбиения системы на части: структурная и функциональная

декомпозиция, аспектная декомпозиция, компоненты и компонентная система– Методики

• Методологии разработки ПО• Методы оценки трудоемкости и планирования разработки• Методы управления требованиями (Discovering Requirements)• Методы архитектурного проектирования (CMU SEI)• Методы тестирования• Возможности инструментов автоматизации разработки

• Умения– Проводить анализ предметной области и составлять ТЗ.– Выявлять требования к качеству системы на различных этапах разработки.– Осуществлять проектирование системы.– Создавать качественный код на этапе реализации системы.– Составлять план тестирования и разрабатывать тестовые случаи.

• Навыки– Программирования на Java с использованием Eclipse IDE, – использования инструментов групповой работы в разработке ПО (система контроля версий, система учета задач, система ведения

документации, система непрерывной интеграции), – построения бинарных сборок модульной системы и выпуска версий с использованием Apache Ant, – использования каркасов модульного тестирования JUnit, – поиска уязвимостей в коде с использованием инструмента анализа исходного кода FindBugs

Page 7: Алексей Иванов -- курс по стыку системной и программной инженерий

7

Часы курса

Виды учебной работы

Объем в часах по семестрам

06 семестр17 недель

Лекции 34

Лабораторные работы 34

Самостоятельная работа 34

Контрольные мероприятия 6

Итого в часах 108

Проверка знаний: экзамен

Page 8: Алексей Иванов -- курс по стыку системной и программной инженерий

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

Page 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 Системное тестирование, создание бинарных сборок

Page 10: Алексей Иванов -- курс по стыку системной и программной инженерий

10

Системная инженерия в программной

• Разрабатывается не программа, а социо-кибер-физическая система

• Осознанный подход к требованиям• Осознанное проектирование на основе

заданных целевых показателей• Сравнительный архитектурный анализ

Page 11: Алексей Иванов -- курс по стыку системной и программной инженерий

11

Моделеориентированность в курсе

• Model-Based (?) – модель как эскиз системы, модель как способ верификации– Модели требований системы– Модели архитектурных описаний системы

• Не Model-Driven Development (MDD/MDSD)– Не генерация кода по модели

Page 12: Алексей Иванов -- курс по стыку системной и программной инженерий

12

Принципы выставления оценок в курсе

• Выполнение лабораторных• Защита лабораторных• Экзамен

Page 13: Алексей Иванов -- курс по стыку системной и программной инженерий

13

Источники

• Стандарты– Archimate– OSGi

• Литература– Разработка ПО на практике– Discovering Reqiorements– OSGi for Beginners– Git for Beginners

Page 14: Алексей Иванов -- курс по стыку системной и программной инженерий

14

Подготовительные материалы

• Шаблонный проект Archimate• Проекты экспериментов с OSGi

Page 15: Алексей Иванов -- курс по стыку системной и программной инженерий

15

Студенческие проекты

• Команда 3 человека

• Примеры проектов– Интерфейс расписания занятий– Форум– Wiki– Посещаемость

Page 16: Алексей Иванов -- курс по стыку системной и программной инженерий

16

Особенности мотивирования

• Генерация РПЗ по модели• Анализ целей заинтересованных в системе

лиц в начале любого стартапа• Как работать командой

Page 17: Алексей Иванов -- курс по стыку системной и программной инженерий

17

Instructional design

• Упражнений кроме проектов не было• В начале каждой лабораторной вводная и

анализ результатов предыдущей

Page 18: Алексей Иванов -- курс по стыку системной и программной инженерий

18

Возможности отчуждения курса

• Сообщество, мыслящее теми же понятиями

Page 19: Алексей Иванов -- курс по стыку системной и программной инженерий

19

СПАСИБО ЗА ВНИМАНИЕ!