Описание курса

Описание курса #

Знания и умения студентов #

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

  • Знать детали работы протокола HTTP
    • Клиент-серверная модель взаимодействия
    • Взаимодействие без сохранения состояния
    • Поддержка сессий с помощью технологий cookies
    • Коды ответа
    • Заголовки
    • Структура URI для описания пути к ресурсам
    • Возможности, предоставляемые новыми версиями протокола HTTP 2 и 3
  • Знать возможности современных Веб-клиентов, браузеров
    • Язык HTML 5 версии
    • Язык CSS
    • Язык JavaScript
    • Технологии WebAssembly
    • Знать средства разработчика, предоставляемые браузером
      • Средства анализа взаимодействия между браузером и сервером
      • Средства анализа структуры HTML-документов
  • Знать сферы деятельности ИТ-специалистов, вовлечённых в процесс создания веб-приложений
  • Знать способы организации взаимодействия с веб-приложением
    • Знать REST
    • Знать JSON API
    • Знать OpenAPI (swagger)
    • Знать GraphQL
    • Знать Web Services
  • Знать о вариантах архитектуры веб-приложений
    • Серверные веб-приложения
    • Клиентские веб-приложения
  • Знать о 12 факторах для разворачивания продуктового приложения и как эти факторы учтены в рамках курса
  • Уметь реализовывать веб-приложение
    • Выдача HTML и JSON-документов при обращении за данными
    • Уметь взаимодействовать с базой данных, основное хранилище состояния — база данных
    • Постраничная выдача данных при обращении к спискам
    • Изменение данных при выполнении соответствующих запросов от пользователей
    • Проверка параметров, которые передаёт пользователь
    • Реализация авторизации внутренними силами
    • Реализация авторизации с помощью внешнего приложения
    • Реализация фоновой обработки сложных запросов
    • Реализация системы ролей, при которой разные пользователи получают доступ к различным частям пользовательского интерфейса
    • Разумное формирование HTML-документов при обращении с использованием механизма шаблонизации
    • Использовать CSS-фреймворки для форматирования HTML-документов
    • Реализовывать корректное журналирование запросов, поступающих от клиента
    • Уметь реализовывать REST-интерфейсы для работы с данными
    • Уметь описывать REST-интерфейсы с помощью OpenAPI
  • Уметь писать автоматические тесты
    • Тесты модульные
    • Тесты системные
  • Уметь разворачивать приложение на сервере
  • Уметь сохранять состояние приложения в базе данных
  • Уметь использовать инструменты автоматического анализа исходного кода

Инструменты, которые студент должен освоить в рамках курса #

  • Язык Kotlin в уровне достаточном для использования в других частях курса. Предполагается, что студенты знакомы с языком программирования Java.
  • Система сборки и запуска задач Gradle Build Tool.
  • Библиотека для написания HTTP-серверов и HTTP-клиентов http4k.
  • Фреймворк для написания модульных тестов kotest.
  • Движок для формирования шаблонов Pebble Templates.
  • CSS-фреймворк Foundation.

Проверка знаний студентов #

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

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

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

Изначально необходимо разработать веб-приложение, которое будет успешно выполнять обработку данных для одного набора объектов из предметной области. Необходимо обеспечить стандартный набор операций: просмотр списка элементов, просмотр одного элемента, отображение статистической информации.

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

Обеспечить корректную проверку параметров, которые передаёт пользователь в приложение. При работе с формами пользователь должен получать назад форму, на которой есть введённые пользователем данные и сообщения об ошибках. С помощью форм необходимо добиться корректного редактирования списка данных. Приложение должно соответствовать требованиям статических анализаторов кода.

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

Необходимо отделить операции по изменению данных за стеной авторизации в системе: только авторизованные пользователи смогут добавлять данные. Для ряда задач следует добавить признак «авторства» или «владения» объектом. Например, только владельцы этой информации могут её редактировать и удалять.

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

Необходимо обеспечить взаимодействие между веб-приложением и клиентским приложением. Взаимодействие между этими элементами должен происходить путём обмена структурированными сообщениями в формате JSON. Для описания интерфейса для взаимодействия между клиентом и сервером следует использовать спецификацию OpenAPI.

© A. M. Васильев, 2024, CC BY-SA 4.0, andrey@crafted.su