1....2019/02/01  · 1. Область применения и нормативные ссылки...

20

Upload: others

Post on 16-Aug-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 1....2019/02/01  · 1. Область применения и нормативные ссылки Настоящая программа учебной дисциплины устанавливает
Page 2: 1....2019/02/01  · 1. Область применения и нормативные ссылки Настоящая программа учебной дисциплины устанавливает

1. Область применения и нормативные ссылки

Настоящая программа учебной дисциплины устанавливает требования к образовательным

результатам и определяет содержание и виды учебных занятий и отчетности.

Программа предназначена для преподавателей, ведущих дисциплину «Разработка

программного обеспечения», учебных ассистентов и студентов направления 01.03.02 «Прикладная

математика и информатика» подготовки бакалавра, обучающихся по бакалаврской программе

«Прикладная математика и информатика» и изучающих дисциплину «Разработка программного

обеспечения».

Рабочая программа дисциплины разработана в соответствии с:

− Образовательным стандартом НИУ ВШЭ по направлению подготовки 01.03.02

«Прикладная математика и информатика» (уровень бакалавриата), утвержденным ученым

советом Национального исследовательского университета «Высшая школа экономики»,

протокол от 03.03.2017 №02.

− Осовной профессиональной образовательной программой «Прикладная математика и

информатика» направления подготовки 01.03.02 «Прикладная математика и информатика»;

− Объединенным учебным планом университета по образовательной программе «Прикладная

математика и информатика», утвержденным в 2018 г.

2. Цели освоения дисциплины

Целями освоения дисциплины «Разработка программного обеспечения» являются

формирование у студентов теоретических знаний и практических навыков, необходимых при

создании полноценных промышленных программных систем: анализ требований, детального

проектирования архитектуры приложения, обеспечения качества.

Предметом изучения являются модели проектирования и разработки программного

обеспечения в различных прикладных областях, а также их свойства. В рамках дисциплины

изучаются современные технологии и методы разработки программного обеспечения, особенности

архитектуры современных программных систем на уровне операционной среды и аппаратных

средств. В дисциплине изучаются основные характеристики программных продуктов, средства

стандартизации и оценивания качества программного обеспечения, рассматриваются особенности

организации работ в процессе реализации программного обеспечения на различных этапах.

Изучаются методы тестирования, снижения ошибок и рисков при разработке программного

обеспечения.

3. Компетенции обучающегося, формируемые в результате освоения дисциплины

В результате освоения дисциплины студент должен:

− Знать основные принципы построения современного программного обеспечения, типичные

формы применения шаблонов проектирования.

− Уметь строить модель программного обеспечения на основе UML-диаграмм, применять

основные паттерны проектирования, создавать эффективные сетевые и многопоточные

приложения.

− Иметь навыки (приобрести опыт) применения современных методов проектирования

программного обеспечения; современных методов оценки качества программного

обеспечения.

В результате освоения дисциплины студент осваивает следующие компетенции:

Компетенция

Код по

ОС

НИУ

ВШЭ

Уровень

формиров

ания

компетенц

ии

Дескрипторы –

основные признаки

освоения (показатели

достижения

результата)

Формы и

методы

обучения,

способствующи

е

формированию

и развитию

Форма

контроля

уровня

сформированно

сти

компетенции

Page 3: 1....2019/02/01  · 1. Область применения и нормативные ссылки Настоящая программа учебной дисциплины устанавливает

2

компетенции

Способен

выявлять

научную

сущность

проблем в

профессионально

й области

УК-2 РБ

СД

МЦ

Знает основные

характеристики

требований к

программному

обеспечению,

российские и

международные

стандарты

документирования

программных средств.

Формирует основные

программные

документы:

"Техническое задание",

"Описание

архитектуры",

"Описание программы",

"Программа и методика

испытаний".

Использует технологии

непрерывной

интеграции и

инструментов

верификации

программного

обеспечения,

средствами трассировки

спецификаций

требований.

Лекции,

подготовка к

практическим

занятиям, работа

на практических

занятиях,

самостоятельная

работа

Презентация,

домашние

задания,

контрольная

работа, устные

экзамены

Способен

работать с

информацией:

находить,

оценивать и

использовать

информацию из

различных

источников,

необходимую для

решения научных

и

профессиональны

х задач (в том

числе на основе

системного

подхода)

УК-5 РБ

СД

МЦ

Знает основные

стандарты оформления

спецификаций

требований к ПО.

Формирует

спецификацию

требований к

программному

обеспечению,

разрабатывать

спецификации

требований.

Применяет

инструментальные

средства автоматизации

создания программной

документации,

использования

стандартных шаблонов

спецификаций

Лекции,

подготовка к

практическим

занятиям, работа

на практических

занятиях,

самостоятельная

работа

Презентация,

домашние

задания,

контрольная

работа, устные

экзамены

Page 4: 1....2019/02/01  · 1. Область применения и нормативные ссылки Настоящая программа учебной дисциплины устанавливает

3

требований.

Способен

применять

фундаментальны

е знания,

полученные в

области

математических

и (или)

естественных

наук, и

использовать их в

профессионально

й деятельности

ОПК-1 РБ

СД

МЦ

Знает основные

принципы построения

современного

программного

обеспечения, типичные

формы применения

шаблонов

проектирования.

Строит модель

программного

обеспечения на основе

UML-диаграмм,

применяет основные

паттерны

проектирования,

создаёт эффективные

сетевые и

многопоточные

приложения.

Применяет

современные методы

проектирования

программного

обеспечения;

современные методы

оценки качества

программного

обеспечения.

Лекции,

подготовка к

практическим

занятиям, работа

на практических

занятиях,

самостоятельная

работа

Презентация,

домашние

задания,

контрольная

работа, устные

экзамены

Способен

использовать и

адаптировать

существующие

математические

методы и

системы

программировани

я для разработки

и реализации

алгоритмов

решения

прикладных

задач

ОПК-2 РБ

СД

МЦ

Знает основные

шаблоны

проектирования ПО.

Выбирает и применяет

необходимый шаблон

проектирования для

решения прикладных

программистских задач.

Проектирует ПО.

Лекции,

подготовка к

практическим

занятиям, работа

на практических

занятиях,

самостоятельная

работа

Презентация,

домашние

задания,

контрольная

работа, устные

экзамены

Способен вести

письменную и

устную

коммуникацию

на русском и

иностранном

языках в рамках

профессионально

го и научного

ОПК-5 РБ

СД

Знает основные

проблемы

современного

состояния науки в

области разработки

ПО.

Умеет исполнять

различные роли при

командной разработке

Лекции,

подготовка к

практическим

занятиям, работа

на практических

занятиях,

самостоятельная

работа

Презентация,

домашние

задания,

контрольная

работа, устные

экзамены

Page 5: 1....2019/02/01  · 1. Область применения и нормативные ссылки Настоящая программа учебной дисциплины устанавливает

4

общения

МЦ

проекта, умеет

взаимодействовать

согласно отведенной

роли с остальными

членами команды.

Владеет навыками

разработки, выявления

и анализа требований к

программному

обеспечению.

Способен

разрабатывать

программное и

информационное

обеспечение

компьютерных

систем, сервисов,

вычислительных

комплексов, баз

данных

ПК-3 РБ

СД

МЦ

Знает основные этапы

проектирования для

разных методологий

разработки ПО.

Разрабатывает ПО и

его компоненты,

используя разные

методологии

проектирования.

Владеет навыками

объектно-

ориентированного

проектирования,

проектирования

информационных

систем и

распределённых

приложений.

Лекции,

подготовка к

практическим

занятиям, работа

на практических

занятиях,

самостоятельная

работа

Презентация,

домашние

задания,

контрольная

работа, устные

экзамены

Способен

осуществлять

планирование

профессионально

й деятельности,

связанной с

созданием и

использованием

информационных

систем

ПК-7 РБ

СД

МЦ

Выявляет и

анализирует

требования к

программным

системам, методы

организации

требований.

Проводит анализ

функциональных

спецификаций на

наличие

характеристик:

непротиворечивость,

однозначность,

полноту,

проверяемость,

отслеживаемость,

приоритезацию.

Собирает,

анализирует,

организует и

документирует

требования.

Лекции,

подготовка к

практическим

занятиям, работа

на практических

занятиях,

самостоятельная

работа

Презентация,

домашние

задания,

контрольная

работа, устные

экзамены

4. Место дисциплины в структуре образовательной программы

Page 6: 1....2019/02/01  · 1. Область применения и нормативные ссылки Настоящая программа учебной дисциплины устанавливает

5

Для образовательной программы «Прикладная математика и информатика» направления

подготовки 01.03.02 «Прикладная математика и информатика» настоящая дисциплина относится к

базовой профильной части блока дисциплин.

Для освоения дисциплины необходимы компетенции, полученные в ходе изучения дисциплин:

− Основы и методология программирования;

− Язык программирования C++;

− Язык программирования Java.

Основные положения данной дисциплины используются для освоения следующих дисциплин:

Тестирование программного обеспечения;

Графические интерфейсы;

Компьютерная графика;

Мобильная разработка.

5. Тематический план учебной дисциплины

Курс рассчитан на 144 часов аудиторной нагрузки, из них 72 часа лекций и 72 часа

практических занятий, общим объемом 6 зачетных единиц (228 часов).

Название раздела

Всего

часов

Аудиторные часы Самостоя-

тельная

работа Лек-

ции

Семи-

нары

Практи

- ческие

занятия

1 Жизненный цикл программного

обеспечения

57 18 - 18 21

2 Управление рисками, задачами и

дефектами, системы контроля версий,

лицензирование

57 18 - 18 21

3 Основы проектирования ПО 57 18 - 18 21

4 Различные архитектурные стили

57 18 - 18 21

ИТОГО 228 72 - 72 84

6. Содержание дисциплины

Раздел 1

Жизненный цикл программного обеспечения

Тема 1 Классическая водопадная модель.

Прототипирование.

Инкрементная модель.

Спиральная модель.

Тема 2 Быстрая разработка приложений

Унифицированные процесс проектирования

Гибкие методологии. Экстремальное программирование.

Методология SCRUM.

Page 7: 1....2019/02/01  · 1. Область применения и нормативные ссылки Настоящая программа учебной дисциплины устанавливает

6

Тема 3 Инженерия требований

Классификация требований. Характеристики требований. Разработка требований. Выявление

требований. Анализ требований. Организация требований. Документирование требований.

Виды документов. Спецификация требований. Шаблоны спецификаций требований.

Критерии принятия работ. Управления требованиями. Изменение требований.

Версионирование и управления состояниями требований. Прослеживание требований.

Тема 4 Управление программными проектами

Ресурсы в программных проектах. Управление ресурсами. Роли в программных проектах.

Взаимодействие ролей. Совмещение ролей. Проектные активности. Задачи, изменения,

исправления дефектов. Временные сущности. Этап и вехи. Визуализация выполнения

проекта. Диаграммы Ганта. Диаграммы PERT. Наблюдение за проектом.

Раздел 2

Управление рисками, задачами и дефектами, системы контроля версий, лицензирование

Тема 1 Управление рисками

Риски в программных проектах. Типы рисков. Управление рисками. Идентификация рисков.

Анализ рисков. Ранжирование рисков. Планирование управления риском. Разрешение риска

Тема 2 Управление задачами и дефектами

Определение задачи. Определение дефекта. Характеристики дефектов. Систему управления

задачами и дефектами.

Тема 3 Системы контроля версий

Задачи групповой работы с программным проектом. Системы контроля версий (СКВ). Типы

СКВ. Типовые операции в СКВ. Ветвление. Системы контроля версий: CVS, svn. mercurial, git

Тема 4 Сборка проектов

Сборка программных проектов. Задачи и причины сборки. Процесс сборки. Типовые

проблемы сборки проектов. Окружение для сборки. Общие требования к системам сборки.

Тема 5 Непрерывная интеграция

Интеграция программных проектов. Непрерывная интеграция. Типовые действия при

непрерывной интеграции. Особенности запуска процедуры интеграции. Промышленные

средства непрерывной интеграции.

Тема 6 Лицензирование

Классификация программного обеспечения. Свободное ПО. Открытое ПО. Виды лицензий на

ПО. Лицензия GNU Public License (GPL). Лицензия GNU Lesser General Public License

(LGPL). Лицензии Apache License, BSD License, Mozilla Public License (MPL), MIT License.

Лицензии Microsoft.

Тема 7 Качество процесса проектирования

Стандарты качества процесса проектирования ПО. ISO 9001:2000, ISO/IEC 15504. Capability

Maturity Model (CMM). 5 уровней зрелости процесса в соответствии с CMM. Capability

Maturity Model Integration (CMMI). Процессные области. Сертификация.

Раздел 3

Основы проектирования ПО

Тема 1 Введение в проектирование ПО

Программа и программное обеспечение (ПО). Разработка ПО и Строительство. Понятие

архитектуры. Роль проектирования и архитектора в производстве ПО. Функции архитектора.

Архитектура и жизненный цикл ПО.

Page 8: 1....2019/02/01  · 1. Область применения и нормативные ссылки Настоящая программа учебной дисциплины устанавливает

7

Тема 2 Объектно-ориентированное проектирование

Декомпозиция. Базовые принципы проектирования. Восходящее и нисходящее

проектирование. Объектно-ориентированный подход. Состояние, поведение и идентичность

объекта. Принципы объектно-ориентированного проектирования. Наследование vs.

композиция. SOLID. Закон Деметры.

Тема 3 Моделирование, язык UML

Модели в различных областях человеческой деятельности. Роль моделирования в процессе

разработки. UML и его назначение. Функциональные требования и диаграммы

использования. Система, действующие лица и варианты использования. Включение и

расширение. Диаграммы активностей. Моделирование бизнес-процессов: диаграммы BPMN и

IDEF0.

Диаграммы классов и моделирование предметной области. Моделирование взаимодействия

объектов. Способы моделирования свойств. Ассоциации, обобщение, зависимости.

Диаграммы компонент и диаграммы размещения. Моделирование данных: ER, ORM, UML

диаграммы.

Диаграммы состояний и их применение для описания поведения реактивных систем.

Диаграммы последовательности и взаимодействия, коммуникационные диаграммы.

Тема 4 Шаблоны проектирования

Структурные шаблоны. Рекурсивная композиция, использование полиморфизма и

композиции при едином базовом интерфейсе. Шаблоны Composite и Decorator. Выделение

алгоритма в объект, шаблон Strategy. Сокрытие реализации, шаблоны Wrapper и Adapter.

Проектирование удаленного и отложенного выполнения. Шаблон Proxy. Шаблон Facade

Порождающие шаблоны. “Ленивая” инициализация, шаблон Singleton. Клонирование

объектов, шаблон Prototype. Фабрика, шаблоны Abstract Factory и Factory Method. Поэтапное

конструирование объекта, шаблон Builder.

Поведенческие шаблоны. Шаблон “Chain of Responsibility”. Шаблон “Context”. Архитектуры,

управляемые событиями. Шаблон “Listener”. Отложенное выполнение. Шаблон “Command”.

Инкапсуляция поведения. Шаблон “Strategy”. Подходы к реализации поведения, основанного

на модели конечного автомата. Шаблон “State”. Шаблон “Visitor”.

Раздел 4

Различные архитектурные стили

Тема 1 Архитектурные стили

Понятие архитектурного шаблона и стиля. Многоуровневая архитектура. Pipes and filters.

Интерпретатор. Blackboard. Publish-Subscribe. Событийно-ориентированные системы.

Тема 2 Проектирование распределённых приложений

Задача сетевого взаимодействия. Архитектурные элементы распределённых систем: основные

сущности, виды взаимодействия, роли и обязанности, варианты размещения. Основные

архитектурные шаблоны (Layered Architecture, Tiered Architecture, Тонкий клиент).

Межпроцессное сетевое взаимодействие: семиуровневая модель OSI, модель TCP/IP, сокеты.

Взаимодействие через удалённые вызовы (протоколы запрос-ответ, RPC, RMI). Web-сервисы.

Архитектурный стиль REST. Микросервисная архитектура. Примеры Peer-to-Peer архитектур

(Napster, Gnutella, Skype, BitTorrent/DHT).

Репликация данных: пассивная и активная модель. Критерии корректности: линеаризуемость

и последовательная согласованность. Алгоритмы голосования: Ring-based algorithm, Bully

algorithm. Проблемы соглашения в синхронных системах: задача консенсуса, задача о

византийских генералах. Алгоритм RAFT. CAP-теорема. ACID и BASE.

Page 9: 1....2019/02/01  · 1. Область применения и нормативные ссылки Настоящая программа учебной дисциплины устанавливает

8

Тема 3 Разбор архитектур существующих приложений

Case study: инфраструктура Google. Коммуникационный слой. Распределённая файловая

система Google File System: структура данных, поддержка целостности, механизмы

репликации. Распределённый сервис блокировок Chubby: архитектура, задача консенсуса,

применимость. СУБД BigTable: особенности структуры таблиц, механизм хранения в GFS,

средства мониторинга. Модель вычислений MapReduce.

Case study открытых проектов: CMake, Selenium, Mercurial. Контекст, требования, основные

архитектурные решения и особенности реализации.

7. Оценочные средства

7.1. Формы контроля знаний студентов

Тип

контроля

Форма контроля 3 год Параметры

1 модуль 3 модуль 4 модуль

Текущий Презентация *

Презентация

Текущий Домашнее задание

№1 *

Письменное домашнее задание

Текущий Домашнее задание

№2 *

Письменное домашнее задание

Текущий Домашнее задание

№3 *

Письменное домашнее задание

Текущий Домашнее задание

№4 *

Письменное домашнее задание

Текущий Домашнее задание

№5 *

Письменное домашнее задание

Текущий Домашнее задание

№6 *

Письменное домашнее задание

Текущий Домашнее задание

№7 *

Письменное домашнее задание

Текущий Домашнее задание

№8 *

Письменное домашнее задание

Промежуто

чный

Устный экзамен

№1 *

Экзамен в устной форме

Промежуто

чный

Контрольная

работа №1 *

Контрольная работа в

письменной форме

Итоговый Устный экзамен

№2 *

Экзамен в устной форме

7.2. Критерии и шкалы оценки, примеры заданий

7.2.1. Текущий контроль

Текущий контроль успеваемости по дисциплине осуществляется с помощью следующих

оценочных средств.

Page 10: 1....2019/02/01  · 1. Область применения и нормативные ссылки Настоящая программа учебной дисциплины устанавливает

9

ПРЕЗЕНТАЦИЯ

Темы презентаций выдаются студентам в 39 вариантах. Срок подготовки презентации - 5

недель.

Примерные темы презентаций:

1. Жизненный цикл ПО. Классификация стратегий конструирования ПО.

2. Стратегии конструирования ПО. Классическая модель проектирования ПО

3. Стратегии конструирования ПО. Прототипирование

4. Стратегии конструирования ПО. Инкрементная модель

5. Стратегии конструирования ПО. Спиральная модель

6. Стратегии конструирования ПО. Быстрая разработка приложений (RAD)

7. Стратегии конструирования ПО. Rational Unified Process

8. Стратегии конструирования ПО. Экстремальное программирование

9. Стратегии конструирования ПО. Методология SCRUM

10.Управление требованиями. Требования в программных проектах. Проблемы определения

требований.

11. Управление требованиями. Типы требований. Характеристики требований.

12. Разработка требований. Выявление и анализ требований.

13. Документирование и организация требований.

14. Документирование требований. Виды документов.

15. Изменения требований.

16. Планирование и управление требованиями. Прослеживание требований.

17. Ресурсы в программных проектах. Управление ресурсами

18. Роли участников в программных проектах

19. Проектные активности программных проектов

20. Временные сущности программных проектов

21. Визуализация плана. Наблюдение за программным проектом

22. Понятие дефекта программного обеспечения. Характеристики дефектов

23. Жизненный цикл дефекта.

24. Системы управления дефектами.

25. Управление риском в программных проектах: идентификация, анализ, ранжирование

26. Управление риском в программных проектах: планирование, разрешение, наблюдение.

27. Предпосылки для версионирования ПО. Ветвление.

28. Системы контроля версий. Типы СКВ. Общие принципы организации.

29. Системы контроля версий. Типовые операции

30. Сборка программных проектов. Проблемы при сборке программных проектов

31. Сборка программных проектов. Окружение для сборки. Общие требования к системе

сборки. Версии в программных проектах

32. Непрерывная интеграция.

33. Лицензирование ПО. Классификация ПО. Свободное и открытое ПО.

34. Лицензирование ПО. Лицензия GPL

35. Лицензирование ПО. Лицензия LGPL

36. Лицензирование ПО. Лицензии Apache, MIT, Mozilla, BSD

37. Лицензирование ПО. Лицензии Microsoft Shared Source

38. Качество процесса проектирования ПО. Модель зрелости процесса проектирования CMM

39. Качество процесса проектирования ПО. CMMI. Процессные области

Критерии оценивания и шкала оценки презентации

Оценка Критерии выставления оценки

«Отлично»

(8-10)

Проблема раскрыта полностью. Проведен анализ проблемы с привлечением

дополнительной литературы. Выводы обоснованы. Представляемая

Page 11: 1....2019/02/01  · 1. Область применения и нормативные ссылки Настоящая программа учебной дисциплины устанавливает

10

информация систематизирована, последовательна и логически связана.

Использовано более 5 профессиональных терминов. Широко использованы

возможности информационных технологий (например, PowerPoint).

Отсутствуют ошибки в представляемой информации. Ответы на вопросы

полные с привидением примеров и/или пояснений.

«Хорошо»

(6-7)

Проблема раскрыта полностью, но анализ проблемы не включал

дополнительную литературу либо представленная информация логически

не связана; ответы на вопросы неполные либо без приведения примеров

«Удовлетворительно»

(3-5)

Проблема раскрыта не полностью либо не обоснованы выводы;

использовано менее 3 профессиональных терминов; присутствуют ошибки

в представляемой информации

«Неудовлетворительно»

(0-3)

Проблема не раскрыта, выводы не обоснованы, профессиональные

термины не используются.

ДОМАШНИЕ ЗАДАНИЯ №№1-8

Домашнее задание выдается студентам в одном варианте и состоит из 9 задач. Срок

выполнения домашнего задания указан для каждого задания. Решения необходимо представить в

электронном виде, либо в виде ссылки на набор изменений в открытой системе контроля версий,

либо в виде файла с решением. Если задача предполагает программную реализацию, для решения

допускается использовать язык и технологию программирования на выбор студента.

Пример домашнего задания №№1-8:

Задача 1. CLI:

Разработать архитектуру и реализовать прототип интерпретатора командной строки.

Ожидается:

архитектурное описание (диаграмма с классами и их взаимосвязями, немного текста,

описывающего детали реализации)

работающий прототип

команды:

cat [FILE] — вывести на экран содержимое файла

echo — вывести на экран свой аргумент (или аргументы)

wc [FILE] — вывести количество строк, слов и байт в файле

pwd — распечатать текущую директорию

exit — выйти из интерпретатора

должны поддерживаться одинарные и двойные кавычки (full and weak quoting)

окружение (команды вида “имя=значение”), оператор $

вызов внешней программы через Process (или его аналоги)

если введено что-то, чего интерпретатор не знает

пайплайны (оператор “|”)

юнит-тесты, комментарии в коде

Всё это — в пуллреквест на Github в свой репозиторий из отдельной ветки.

Срок сдачи: 2 недели.

Задача 2. grep:

На базе своей реализации CLI реализовать команду grep,

Page 12: 1....2019/02/01  · 1. Область применения и нормативные ссылки Настоящая программа учебной дисциплины устанавливает

11

поддерживающую ключи -i (нечувствительность к регистру), -w (поиск только слов

целиком), -A n (распечатать n строк после строки с совпадением);

поддерживающую регулярные выражения в строке поиска;

использующую одну из библиотек для разбора аргументов командной строки.

Ожидается обоснование выбора библиотеки для работы с аргументами — какие были

рассмотрены, почему выбрана именно эта.

Сдавать как новый пуллреквест из новой ветки на базе предыдущей.

Срок сдачи: две недели.

Задача 3. Учёт дефектов:

проанализировать запрос https://goo.gl/MiyH8c;

нарисовать IDEF0- (контекстную и первого уровня) и BPMN-диаграммы бизнес-

процесса завода;

нарисовать диаграмму случаев использования создаваемого приложения.

Срок сдачи: две недели.

Задача 4. Магазин книг:

Выполнить анализ предметной области и построить модель в виде диаграммы классов для

интернет-магазина книг по следующему ТЗ:

- https://goo.gl/94LyFc

Обратите внимание, что это должна быть модель предметной области, детали реализации

наподобие способа хранения информации в базе данных не важны. Будет оцениваться точность

следования ТЗ, соответствие модели сущностям предметной области (в том числе, неявным) и,

естественно, пунктуальность в следовании синтаксису UML.

Срок сдачи: две недели.

Задача 5. cd, ls:

Реализовать команды ls и cd на базе кода одногруппника.

Обе команды могут принимать 0 или 1 аргумент.

Не забывайте про юнит-тесты.

Написать ревью на архитектуру оного одногруппника, указав, что оказалось

удобным, а что неудобным при реализации, что можно было бы улучшить.

Сделать fork на GitHub, выложить изменения туда и сделать пуллреквест в свой

форк.

Если вы не стесняетесь и “жертва” не против, можно и в исходный репозиторий.

Реализация, в которой надо сделать команды, определяется циклическим сдвигом на 2 вверх

по списку из сданных задач на странице поддержки курса.

Срок сдачи: две недели.

Задача 6. Roguelike

Реализовать Roguelike RPG со следующими функциональными требованиями.

Персонаж игрока, способный перемещаться по карте, управляемый с клавиатуры.

Непосредственно стрелками (или дополнительной цифровой клавиатурой), не вводом

команды.

Инвентарь персонажа, включающий элементы, влияющие на его характеристики,

которые можно надеть и снять.

Page 13: 1....2019/02/01  · 1. Область применения и нормативные ссылки Настоящая программа учебной дисциплины устанавливает

12

Карта (автоматически сгенерированная или считываемая из файла, на ваше

усмотрение).

Мобы способные перемещаться по карте.

Боевая система — движущиеся объекты, пытающиеся занять одну клетку карты,

атакуют друг друга.

Что хочется:

модель предметной области в виде диаграммы классов;

консольная графика, с возможностью далее сделать графический тайловый

интерфейс;

расширяемая и сопровождаемая архитектура;

логирование основных событий в игре;

юнит-тесты.

Срок сдачи: месяц.

Задача 7. Диздок:

Написать архитектурное описание Roguelike.

Общие сведения о системе.

Architectural drivers.

Роли и случаи использования.

Описание типичного пользователя.

Композиция (диаграмма компонентов).

Логическая структура (диаграмма классов).

Из предыдущей домашки.

Взаимодействия и состояния (диаграммы последовательностей и конечных

автоматов).

Срок сдачи: две недели.

Задача 8. Instant Messenger

Разработать сетевой чат с помощью gRPC.

Peer-to-peer, то есть соединение напрямую.

Консольный пользовательский интерфейс.

Отображение имени отправителя, даты и текста сообщения.

Адрес peer-а и порт — параметры.

Указание своего имени — параметром или в конфигурационном файле.

Логирование.

Нужны юнит-тесты.

Срок сдачи: две недели.

Критерии оценивания и шкала оценки домашних заданий №№1-8

Оценка Критерии выставления оценки

«Отлично»

(8-10)

Выполнены все требования условия, работа не содержит грубых ошибок

проектирования, в синтаксисе и семантике используемых нотаций. Решение

работоспособно, легко собирается, не имеет легкообнаружимых дефектов,

Page 14: 1....2019/02/01  · 1. Область применения и нормативные ссылки Настоящая программа учебной дисциплины устанавливает

13

приводящих к аварийному завершению работы программы, не имеет

грубых ошибок кодирования, стиль кодирования соответствует принятому

в сообществе языку или технологии программирования, на котором

реализовывалось решение.

«Хорошо»

(6-7)

Выполнены все требования условия, работа не содержит грубых ошибок

проектирования, в синтаксисе и семантике используемых нотаций. Однако

программа долго собирается либо стиль кодирования не соответствует

общепринятому.

«Удовлетворительно»

(3-5)

Выполнены не все требования условия; программа имеет грубые ошибки

кодирования; программа имеет легкообнаружимые дефекты, приводящие к

аварийному завершению работы программы

«Неудовлетворительно»

(0-3)

Не исполнены требования условия либо работа содержит грубые ошибки

проектирования, решение неработоспособно. Также решение не

зачитывается, если обнаружены неправомерные заимствования.

7.2.2. Промежуточный контроль

Проверка качества освоения дисциплины производится в форме устного экзамена.

УСТНЫЙ ЭКЗАМЕН №1

Устный экзамен №1 проводится в форме ответов на вопросы экзаменационного билета.

Экзаменационный билет содержит два вопроса из перечня вопросов к экзамену. На подготовку

ответа выделяется 2,5 часа.

Примерный перечень вопросов к экзамену:

1. Жизненный цикл ПО. Классификация стратегий конструирования ПО.

2. Стратегии конструирования ПО. Классическая модель проектирования ПО

3. Стратегии конструирования ПО. Прототипирование

4. Стратегии конструирования ПО. Инкрементная модель

5. Стратегии конструирования ПО. Спиральная модель

6. Стратегии конструирования ПО. Быстрая разработка приложений (RAD)

7. Стратегии конструирования ПО. Rational Unified Process

8. Стратегии конструирования ПО. Экстремальное программирование

9. Стратегии конструирования ПО. Методология SCRUM

10. Управление требованиями. Требования в программных проектах. Проблемы

определения требований.

11. Управление требованиями. Типы требований. Характеристики требований.

12. Разработка требований. Выявление и анализ требований.

13. Документирование и организация требований.

14. Документирование требований. Виды документов.

15. Изменения требований.

16. Планирование и управление требованиями. Прослеживание требований.

17. Ресурсы в программных проектах. Управление ресурсами

18. Роли участников в программных проектах

19. Проектные активности программных проектов

20. Временные сущности программных проектов

Page 15: 1....2019/02/01  · 1. Область применения и нормативные ссылки Настоящая программа учебной дисциплины устанавливает

14

21. Визуализация плана. Наблюдение за программным проектом

22. Понятие дефекта программного обеспечения. Характеристики дефектов

23. Жизненный цикл дефекта.

24. Системы управления дефектами.

25. Управление риском в программных проектах: идентификация, анализ, ранжирование

26. Управление риском в программных проектах: планирование, разрешение, наблюдение.

27. Предпосылки для версионирования ПО. Ветвление.

28. Системы контроля версий. Типы СКВ. Общие принципы организации.

29. Системы контроля версий. Типовые операции

30. Сборка программных проектов. Проблемы при сборке программных проектов

31. Сборка программных проектов. Окружение для сборки. Общие требования к системе

сборки. Версии в программных проектах

32. Непрерывная интеграция.

33. Лицензирование ПО. Классификация ПО. Свободное и открытое ПО.

34. Лицензирование ПО. Лицензия GPL

35. Лицензирование ПО. Лицензия LGPL

36. Лицензирование ПО. Лицензии Apache, MIT, Mozilla, BSD

37. Лицензирование ПО. Лицензии Microsoft Shared Source

38. Качество процесса проектирования ПО. Модель зрелости процесса проектирования

CMM

39. Качество процесса проектирования ПО. CMMI. Процессные области

Критерии оценивания и шкала оценки устного экзамена №1

Оценка Критерии выставления оценки

«Отлично»

(8-10)

Дан развернутый ответ на поставленные вопросы. Материал изложен

последовательно. Имеются логичные и аргументированные выводы.

«Хорошо»

(6-7)

Дан развернутый ответ на поставленные вопросы. Материал изложен

непоследовательно. Имеются логичные и аргументированные выводы.

«Удовлетворительно»

(4-5)

Ответ на вопросы не является полным. Материал изложен в целом

последовательно. Выводы не аргументированы.

«Неудовлетворительно»

(0-3)

Ответ на вопросы является неверным. Материал изложен

непоследовательно. Отсутствуют выводы.

КОНТРОЛЬНАЯ РАБОТА №1

Контрольная работа по практической составляющей курса ставится по результатам

работы в семестре. Для получения положительной оценки необходимо, чтобы были сданы на

положительную оценку все домашние задания. В случае, если к моменту проведения контрольной

работы часть домашних заданий не сдана, студенту предоставляется возможность в

электронной или письменной форме доделать и сдать невыполненные ранее задания. На

проведение контрольной работы отводится 2 часа.

Перечень вопросов/заданий: см. раздел ДОМАШНИЕ ЗАДАНИЯ №№1-8)

Шкала оценивания и критерии оценки: совпадают с критериями оценивания домашних

заданий (в ходе зачёта на усмотрение преподавателя допустимо смягчение требований условий

Page 16: 1....2019/02/01  · 1. Область применения и нормативные ссылки Настоящая программа учебной дисциплины устанавливает

15

задач).

7.2.3. Итоговый контроль по дисциплине

УСТНЫЙ ЭКЗАМЕН №2

Устный экзамен №2 проводится в форме ответов на вопросы экзаменационного билета.

Экзаменационный билет содержит два вопроса из перечня вопросов к экзамену. На подготовку

ответа выделяется 2,5 часа.

Примерный перечень вопросов к экзамену:

1. Понятие архитектуры, роль архитектуры в жизненном цикле ПО.

2. Понятие декомпозиции. Принципы модульности и информационной закрытости.

3. Связность и сопряжение.

4. Понятия класса и объекта.

5. Основные принципы ОО-проектирования.

6. Принципы SOLID. Закон Деметры.

7. Моделирование, свойства моделей.

8. Особенности моделирования ПО.

9. Язык UML.

10. Моделирование требований к ПО.

11. Диаграммы случаев использования, диаграммы активностей UML.

12. Моделирование бизнес-процессов. Диаграммы IDEF0.

13. Моделирование бизнес-процессов. Диаграммы BPMN.

14. Проектирование структуры системы.

15. Диаграммы объектов, диаграммы классов UML.

16. Диаграммы компонентов, диаграммы размещения UML.

17. Моделирование данных. Уровни моделирования.

18. Моделирование данных. Подход Entity-Relationship.

19. Моделирование данных. Подход Object-Role Modelling.

20. Моделирование поведения системы.

21. Диаграммы конечных автоматов UML.

22. Диаграммы активностей UML.

23. Диаграммы последовательностей UML.

24. Понятие архитектурного стиля и шаблона проектирования. “Model-View-Controller”.

25. Многоуровневые стили: “Клиент-сервер”, “Трёхзвенная архитектура”.

26. Архитектурные стили “Пакетная обработка”, “Каналы и фильтры”.

27. Архитектурный стиль “Blackboard”.

28. Архитектурный стиль “Publish-Subscribe”.

29. Архитектурные стили “Интерпретатор”, “Мобильный код”.

30. Событийно-ориентированные архитектурные стили.

31. Структурные шаблоны проектирования. Шаблон “Компоновщик”.

32. Структурные шаблоны проектирования. Шаблон “Декоратор”.

33. Структурные шаблоны проектирования. Шаблон “Стратегия”.

34. Структурные шаблоны проектирования. Шаблон “Адаптер”.

35. Структурные шаблоны проектирования. Шаблон “Прокси”.

36. Структурные шаблоны проектирования. Шаблон “Фасад”.

37. Порождающие шаблоны проектирования. Шаблон “Фабричный метод”.

38. Порождающие шаблоны проектирования. Шаблон “Шаблонный метод”.

39. Порождающие шаблоны проектирования. Шаблон “Абстрактная фабрика”.

40. Порождающие шаблоны проектирования. Шаблон “Одиночка”.

41. Порождающие шаблоны проектирования. Шаблон “Прототип”.

42. Порождающие шаблоны проектирования. Шаблон “Строитель”.

43. Поведенческие шаблоны проектирования. Шаблон “Посредник”.

Page 17: 1....2019/02/01  · 1. Область применения и нормативные ссылки Настоящая программа учебной дисциплины устанавливает

16

44. Поведенческие шаблоны проектирования. Шаблон “Команда”.

45. Поведенческие шаблоны проектирования. Шаблон “Цепочка ответственности”.

46. Поведенческие шаблоны проектирования. Шаблон “Наблюдатель”.

47. Поведенческие шаблоны проектирования. Шаблон “Состояние”.

48. Поведенческие шаблоны проектирования. Шаблон “Посетитель”.

49. Поведенческие шаблоны проектирования. Шаблон “Хранитель”.

50. Понятие распределённой системы, виды сущностей и взаимодействий, их роли и

обязанности.

51. Особенности архитектуры распределённых систем. Модель “Layered architecture”.

52. Особенности архитектуры распределённых систем. Модель “Tiered architecture”.

53. Особенности архитектуры распределённых систем. Модель “Тонкий клиент”.

54. Межпроцессное сетевое взаимодействие.

55. Модель OSI, стек протоколов TCP/IP.

56. Абстракция сокета, маршалинг.

57. Протоколы “запрос-ответ”.

58. Протокол HTTP.

59. Удалённые вызовы процедур (RPC).

60. Удалённые вызовы методов (RMI).

61. Веб-сервисы. SOAP.

62. Веб-сервисы. REST.

63. Микросервисная архитектура.

64. Peer-to-Peer архитектура.

65. Пример p2p реализации: Napster.

66. Пример p2p реализации: Skype.

67. Пример p2p реализации: BitTorrent.

68. Понятие репликации данных. Построение отказоустойчивых сервисов.

69. Понятие линеаризуемости.

70. Понятие последовательной согласованности.

71. Понятие репликации данных. Алгоритм пассивной репликации.

72. Понятие репликации данных. Алгоритм активной репликации.

73. Задача голосования. Алгоритм голосования на основе кольца.

74. Задача голосования. Алгоритм хулигана.

75. Задача консенсуса в синхронных системах.

76. Задача о византийских генералах.

77. Алгоритм консенсуса RAFT.

78. CAP-теорема.

79. Модели ACID и BASE.

80. Инфраструктура Google: физическая модель, коммуникационный слой.

81. Файловая система GFS: требования и основные архитектурные решения.

82. Файловая система GFS: инфраструктура для хранения данных.

83. Файловая система GFS: репликация и поддержка целостности данных.

84. Сервис блокировок Chubby: требования и основные архитектурные решения.

85. Сервис блокировок Chubby: организация ячеек и принцип работы.

86. СУБД BigTable: требования и основные архитектурные решения.

87. СУБД BigTable: инфраструктура для хранения данных.

88. СУБД BigTable: схема и индексации и хранение фрагментов данных.

89. MapReduce: требования и основные архитектурные решения.

90. MapReduce: инфраструктура для вычисления и схема работы.

Критерии оценивания и шкала оценки устного экзамена №2

Page 18: 1....2019/02/01  · 1. Область применения и нормативные ссылки Настоящая программа учебной дисциплины устанавливает

17

Оценка Критерии выставления оценки

«Отлично»

(8-10)

Дан развернутый ответ на поставленные вопросы. Материал изложен

последовательно. Имеются логичные и аргументированные выводы.

«Хорошо»

(6-7)

Дан развернутый ответ на поставленные вопросы. Материал изложен в

целом последовательно. Имеются логичные и аргументированные выводы.

«Удовлетворительно»

(4-5)

Ответ на вопросы не является полным. Материал изложен

непоследовательно. Выводы не аргументированы.

«Неудовлетворительно»

(0-3)

Ответ на вопросы является неверным. Материал изложен

непоследовательно. Отсутствуют выводы.

7.3 Порядок формирования оценок по дисциплине

Преподаватель учитывает оценку за текущий контроль (домашние задания).

Оит1 = 0,5* Опрезентация + 0,5* Оэкз1

Оит2= 0,4* Онакопленная1 + 0,6* Оэкзаменационная

где Опрезентация - оценка за презентацию,

формула для расчета Оэкзаменационная

Оэкзаменационная= 0,5* Ок/р1 + 0,5* Оэкз2

а Онакопленная1 рассчитывается как взвешенная сумма всех форм текущего контроля:

Отекущий1 = 0,125*Од/з1 +0,125*Од/з2 + 0,125*Од/з3 + 0,125*Од/з4 + 0,125*Од/з5+ 0,125*Од/з6 +

0,125*Од/з7 + 0,125*Од/з8

Действует следующий способ округления оценки за текущий контроль: при значениях от

0,1 до 0,4 оценка округляется в меньшую сторону, от 0,5 до 0,9 – в большую.

Результирующая оценка за дисциплину рассчитывается следующим образом:

ОРезультирующая= Оит2

На экзамене студенту не предоставляется возможность получить дополнительный балл для

компенсации оценки за текущий контроль.

8. Образовательные технологии

Основными образовательными технологиями являются: интерактивные лекции, работа в

группах на практических занятиях.

9. Учебно-методическое и информационное обеспечение дисциплины

9.1 Основная литература

1. UML™ Bible / By: Tom Pender. John Wiley & Sons. 2003

2. UML 2 for Dummies (--For dummies) / Michael Jesse Chonoles; James A. Schardt. John Wiley

& Sons. 2003

Page 19: 1....2019/02/01  · 1. Область применения и нормативные ссылки Настоящая программа учебной дисциплины устанавливает

18

9.2 Дополнительная литература

1. Назаров, С.В. Архитектура и проектирование программных систем: монография / С.В.

Назаров. — 2-е изд., перераб. и доп. — М. : ИНФРА-М, 2018. — 374 с.

2. Software Development, Design and Coding: With Patterns, Debugging, Unit Testing, and

Refactoring

By: Dooley, John F. Apress. 2017

3. Design patterns / Christopher G. Lasater. Jones and Bartlett Learning. 2007

10. Рекомендации для самостоятельной работы студентов.

Самостоятельная работа может рассматриваться как организационная форма обучения -

система педагогических условий, обеспечивающих управление учебной деятельностью по освоению

знаний и умений в области учебной деятельности без посторонней помощи. Студенту нужно четко

понимать, что самостоятельная работа – не просто обязательное, а необходимое условие для

получения знаний по дисциплине и развитию компетенций, необходимых в будущей

профессиональной деятельности.

Самостоятельная работа проводится с целью:

− систематизации и закрепления полученных на лекциях теоретических знаний;

− углубления и расширения теоретических знаний;

− формирования умений использовать нормативную, правовую, справочную документацию и

специальную литературу;

− развития познавательных способностей и активности студентов: творческой инициативы,

самостоятельности, ответственности и организованности;

− формирования самостоятельности мышления, способностей к саморазвитию,

самосовершенствованию и самореализации;

− формирования практических (общеучебных и профессиональных) умений и навыков;

− развития исследовательских умений;

− получения навыков эффективной самостоятельной профессиональной (практической и

научно-теоретической) деятельности.

В учебном процессе выделяют два вида самостоятельной работы:

− аудиторная;

− внеаудиторная.

Аудиторная самостоятельная работа по дисциплине выполняется на учебных занятиях под

непосредственным руководством преподавателя и по его заданию.

Внеаудиторная самостоятельная работа - планируемая учебная работа студентов, выполняемая

во внеаудиторное время по заданию и при методическом руководстве преподавателя, но без его

непосредственного участия.

Самостоятельная работа, не предусмотренная программой учебной дисциплины,

раскрывающей и конкретизирующей ее содержание, осуществляется студентом инициативно, с целью

реализации собственных учебных и научных интересов.

Для более эффективного выполнения самостоятельной работы по дисциплине преподаватель

рекомендует источники для работы, характеризует наиболее рациональную методику

самостоятельной работы, демонстрирует ранее выполненные студентами работы и т. п.

Виды заданий для внеаудиторной самостоятельной работы, их содержание и характер могут

иметь вариативный и дифференцированный характер, учитывать индивидуальные особенности

студента.

Самостоятельная работа может осуществляться индивидуально или группами студентов online

и на занятиях в зависимости от цели, объема, конкретной тематики самостоятельной работы, уровня

сложности.

Контроль результатов внеаудиторной самостоятельной работы осуществляется в пределах

Page 20: 1....2019/02/01  · 1. Область применения и нормативные ссылки Настоящая программа учебной дисциплины устанавливает

19

времени, отведенного на обязательные учебные занятия по дисциплине на практических занятиях.

Для представления результатов самостоятельной работы рекомендуется:

Составить план выступления, в котором отразить тему, самостоятельный характер

проделанной работы, главные выводы и/или предложения, их краткое обоснование и практическое

значение – с тем, чтобы в течение 3 – 5 минут представить достоинства выполненного самостоятельно

задания.

Подготовить иллюстративный материал в виде презентации для использования во время

представления результатов самостоятельной работы в аудитории. Конкретный вариант наглядного

представления результатов определяется форматом аудиторного занятия и задания преподавателя.

11. Материально-техническое обеспечение дисциплины и информационные

технологии, используемые при осуществлении образовательного процесса по дисциплине,

включая перечень программного обеспечения информационных справочных систем (при

необходимости).

Для проведения всех занятий используется проектор и компьютер для проекции слайдов. Для

самостоятельной работы необходимо следующее ПО: GNU C++, Oracle Java.

12. Особенности организации обучения для лиц с ограниченными возможностями

здоровья

В случае необходимости, обучающимся из числа лиц с ограниченными возможностями

здоровья (по заявлению обучающегося) могут предлагаться следующих варианты восприятия учебной

информации с учетом их индивидуальных психофизических особенностей, в том числе с применением

электронного обучения и дистанционных технологий:

1) для лиц с нарушениями зрения: в печатной форме увеличенным шрифтом; в форме

электронного документа; в форме аудиофайла (перевод учебных материалов в аудиоформат);

индивидуальные консультации с привлечением тифлосурдопереводчика; индивидуальные задания и

консультации.

2) для лиц с нарушениями слуха: в печатной форме; в форме электронного документа;

видеоматериалы с субтитрами; индивидуальные консультации с привлечением сурдопереводчика;

индивидуальные задания и консультации.

3) для лиц с нарушениями опорно-двигательного аппарата: в печатной форме; в форме

электронного документа; в форме аудиофайла; индивидуальные задания и консультации.