Примером практической работы может служить Репозиторий предмета.
Получить ПО для управления роботом в режиме терминала командами, графически псевдографикой.
Группа делится на подгруппы по 2 человека. Каждая подгруппа выполняет работу по одному модулю.
Каждый модуль представляется как статическая(динамическая) библиотека и объединяется в один исполняемый модуль.
Весь проект представлен и разделен при помощи cmake
, каждая подгруппа сама описывает cmake
проект.
Также, самостоятельно, пишут скрипты сборки, тестовые данные. Каждый модуль должен быть протестирован.
Код, в обязательном порядке, должен быть оформлен в соответствии со стилем
Для каждого задания, подгруппа описывает функции модуля, его взаимосвязь с другими модулями, описывается как настраивается модуль, как выстроена взаимосвязь внутренних компонент модуля.
Одна из подгрупп назначется основной и отвечает за приложение целиком. Делает сводное описание всего приложения, описывается связи всех компонент, рисует графическое представелние взаимодействия. Описывает основной проект cmake
и координирует работу подгрупп. Осуществляет взаимодействие с преподавателем. Выявляет узкие места и отставания по приложению. Мониторит репозиторий, контролирует merge
. Также, периодически основная подгруппа предоставляет merge request
в основной репозиторий с результатами. Основная группа форкается от базового репозитория, остальные подгруппы форкаются от репозитория основной шруппы.
Каждый студент заводит на github
аккаунт и форкает репозиторий основной группы себе. Далее прописывает base
удаленный репозиторий группы для актуализации соего репозитория относительно основного и периодически обновляться для того чтобы исключить конфликты.
Каждая группа форкает репозиторий: 2018 и создает свою папку с проектом.
- Приложение должно работать с 3 режимах: командном (команды передаются как аргументы командной строки), данный режим включается передачей первого аргумента
console
; меню (работа продолжнается посредством управления меню консоли), данный режим включается передачей первого аргументаmenu
; графическом (работа продолжается посредством управления псевдографическим меню), данный режим включается передачей первого агументаgui
. - Приложения должно конфигурироваться при помощи настроек хранящихся в файле. Также управлять настройками: сохранять, удалять, изменять. Формат настроек:
java properties
- Кодировка всех текстовых файлов с которыми работает приложение
cp866
- Команды: смена положения робота (
X1
,X2
,X3
,Y
) c передаче параметров (скорость, ускорение), получение значений датчиков (N1
,N2
,N3
,N4
), получение настроек (CE
), установка настроек (CE
) - Получение от робота обратные вызовы (сервер)
- Модуль по работе с аргументами командной строки. Обработка аргументов, подготовка команды к исполнению, продолжение работы осуществяется посредством обратного вызова с передачей подготовленной команды.
- Модуль по работе с меню в режиме терминала. Считывание настроек меню (описание структуры меню хранится в файле, в нем также указывается наименование меню, команда вызова, переходы - для подменю, выходы и отвена)
- Модуль по работе с графическим меню. Считывание настроек меню (описание структуры меню хранится в файле, в нем также указывается наименование меню, команда вызова, переходы - для подменю, выходы и отвена)
- Модуль по работе с настройками в режиме командной строки.
- Модуль по работе с настройками в режиме консольного меню.
- Модуль по работе с настройками в режиме графичесчкого меню.
- Модуль по управлению настройками. Регистрация, сохранения, правила проверки, граничные значения. Хранение в бинарном виде.
- Модуль по работе с командами приложения. Отвечает за регистрацию команды, удаление, передачи и управелния настройками команды, отслеживание установки обязательных для исполнения параметров.
- Модуль по работе с сетью. Настройка клиента. Взаимодействие с сервером по протоколу
HTTP
- Модуль по работе с сетью. Настройка клиента. Взаимодействие с сервером по бинарному протоколу.
- Модуль обратного вызова (сервер). Настрока сервера. Взаимодействие с клиентом по протоколу
HTTP
(запросыPUT
илиPOST
, тип содержимогоjson
, поля:status
- код статуса выполнения команды (числовой код, 0 - успешное выполнение),message
- поле сообщения об ошибки или дополнительные сведения (может отсутствовать)).
PUT /robo_call HTTP/1.1
Content-Type: application/json
{"status": 0, "message": "Операция выполнена успешно"}
- Модуль обратного вызова (сервер). Настрока сервера. Взаимодействие с клиентом по бинарному протоколу.
- Разработка программного модуля обработки аргументов команд управления роботом манипулятором
- Разработка программного модуля терминального меню управления роботом манипулятором
- Разработка программного модуля псевдографического меню управления роботом манипулятором
- Разработка программного модуля обработки аргументов команд управления настройками робота манипулятора
- Разработка программного модуля терминального меню управления настройками робота манипулятора
- Разработка программного модуля псевдографического меню управления настройками робота манипулятора
- Разработка программного модуля управления настройками робота манипулятора
- Разработка программного модуля управления командами робота манипулятора
- Разработка программного модуля передачи команд роботу манипулятору по бинарному сетевому протоколу
- Разработка программного модуля передачи команд роботу манипулятору по HTTP протоколу
- Разработка программного модуля по приему команд обратной связи от робота манипулятора по HTTP протоколу
- Разработка программного модуля по приему команд обратной связи от робота манипулятора по бинарному сетевому протоколу
26.10.2018