Лекционные материалы

  1. Презентация лекций v1.16
  2. Конспект лекций. Исправлены главы 1-3. Не для распространения вне ИТМО! Требуется регистрация v1.16

Задания к лабораторным работам

Лабораторная работа #1

Чтобы узнать сайт, введите свой номер варианта.
Составить список требований, предъявляемых к разрабатываемому веб-сайту (в соответствии с вариантом). Требования должны делиться на следующие категории:
  • Функциональные.
    • Требования пользователей сайта.
    • Требования владельцев сайта.
  • Нефункциональные.

Требования необходимо оформить в соответствии с шаблонами RUP (документ SRS - Software Requirements Specification). Для каждого из требований нужно указать его атрибуты (в соответствии с методологией RUP), а также оценить и аргументировать приблизительное количество часов, требующихся на реализацию этого требования.

Для функциональных требований нужно составить UML UseCase-диаграммы, описывающие реализующие их прецеденты использования.

Отчёт по лабораторной работе должен содержать:

  1. Документ Software Requirements Specification, содержащий список требований к сайту.
  2. UseCase-диаграммы прецедентов использования, реализующих функциональные требования.
  3. Выводы по работе.

Вопросы к защите лабораторной работы:

  1. Методологии разработки ПО. Унифицированный процесс.
  2. Требования и их категоризация. Атрибуты требований.
  3. Язык UML.
  4. Прецеденты использования. UseCase-диаграммы - состав, виды связей.

Лабораторная работа #2

Сконфигурировать в своём домашнем каталоге репозитории svn и git и загрузить в них начальную ревизию файлов с исходными кодами (в соответствии с выданным вариантом).

Воспроизвести последовательность команд для систем контроля версий svn и git, осуществляющих операции над исходным кодом, приведённые на блок-схеме.

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

  • Цвет элементов схемы указывает на пользователя, совершившего действие (красный - первый, синий - второй).
  • Цифры над узлами - номер ревизии. Ревизии создаются последовательно.
  • Необходимо разрешать конфликты между версиями, если они возникают.

Отчёт по работе должен содержать:

  1. Задание и блок-схему в соответствии с вариантом.
  2. Список команд, использованных при создании и конфигурации репозиториев в домашнем каталоге пользователя.
  3. Номера ревизий и соответствующие им последовательности команд с комментариями (для svn и git).
  4. Выводы по работе.

Вопросы к защите лабораторной работы:

  1. Системы контроля версий - назначение, примеры решений.
  2. Ревизии и ветки.
  3. Основные операции над данными в системах контроля версий. Основные команды svn и git.
  4. Виды конфликтов и способы их решения.

Лабораторная работа #3

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

Вопросы к защите лабораторной работы:

  1. Тестирование ПО. Цель тестирования, виды тестирования.
  2. Модульное тестирование, основные принципы и используемые подходы.
  3. Пакет JUnit, основные API.
  4. Системы автоматической сборки. Назначение, принципы работы, примеры систем.
  5. Утилита make. Make-файлы, цели и правила.
  6. Утилита Ant. Сценарии сборки, цели и команды.

Лабораторная работа #4

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

Отчёт по работе должен содержать:

  1. Текст задания.
  2. Исходный код разработанных MBean-классов и сопутствующих классов.
  3. Скриншоты программы JConcole со снятыми показаниями, выводы по результатам мониторинга.
  4. Скриншоты программы VisualVM со снятыми показаниями, выводы по результатам профилирования.
  5. Скриншоты программы VisualVM с комментариями по ходу поиска утечки памяти.
  6. Выводы по работе.

Вопросы к защите лабораторной работы:

  1. Мониторинг и профилирование. Основные понятия. Отличия мониторинга от профилирования.
  2. Инфраструктура для организации мониторинга и профилирования в составе JDK. JMX.
  3. MBeans. Основные понятия. Архитектура фреймворка.
  4. Утилита JConsole. Возможности, область применения.
  5. Утилита Visual VM. Возможности, область применения.
  6. Удалённый мониторинг и профилирование приложений на платформе Java.