Сетевые инструменты распределенной разработки ПО
Курс предназначен для выработки и закрепления практических навыков использования инструментальных средств и систем для автоматизации разработки программного обеспечения.
В рамках курса выполняются практические задания по созданию артефактов разрабатываемого проекта с использованием инструментальных средств. Целью заданий — унификация производимых артефактов, автоматизация создания и модификации, изучение предоставляемых инструментальными средствами возможностей.
Конференция для занятий: https://meet.cs.petrsu.ru/cs.petrsu.ru-chistyakov
Практические задания
- Автоматизация сборки проекта
- Планирование
- Системы управления версиями
- Проектирование
- Стили кодирования
- Автоматическая верификация
- Автоматическое тестирование
Вопросы к экзамену IT-специальности
Дополнительная литература
Вверх
1. Автоматизация сборки проекта
ПО и документация
Лекция 1GNU Make
- Полное руководство: //www.opennet.ru/docs/RUS/make_compile/
- На одной странице: //kappa.cs.karelia.ru/~kulakov/courses/casetools/autobuild/make/gnu-make-ru.html
- Краткий пример: //www.opennet.ru/base/dev/mini_make.txt.html
- Еще краткий пример: //www.linux.org.ru/books/make.html (локальная копия)
- Книжка Robert Mecklenburg Managing projects with GNU Make (en)
Apache Ant
- Полное руководство: //ant.apache.org/manual/
- Краткий пример //netunix.ru/archive/ant_2.html (локальная копия)
- Книжка Matthew Moodie Pro Apache Ant (en)
- Книжка J. Tilly и E. M. Burke Ant: The Defenitive Guide (en)
- Книжка A. Williamson и др. Ant developer's handbook (en)
Autotools
- Статьи по использованию autotools (локальная копия)
- Книжка Gary V. Vaughan GNU Autoconf, Automake, and Libtool (en)
- Miika Komu Quick and Dirty Autotools Howto (локальная копия)
Задание
Разработать или взять готовый проект, содержащий исходный код и документацию (справка, readme, man, latex, etc.). Создать конфигурационные файлы по выбору для двух утилит из трех: Make (проект на С, С++), Ant (проект на Java) или Autotools (проект на С, С++), удовлетворяющие следующим требованиям:
- компиляция проекта;
- тестовый запуск проекта;
- установка скомпилированного проекта (напр., копирование в директорию);
- создание дистрибутива проекта;
- создание документации ('cat file1 file2 >manual', 'latex manual.tex', doxygen, 'javadoc *.java', etc);
- очистка проекта (без удаления некоторых файлов) и полная очистка (приведение к исходному состоянию);
- справка об использовании файла сборки (отдельная цель и в случае неправильно заданной цели);
- запуск внешних скриптов и утилит (напр., wc).
Срок: 19.02.2023
Вверх
2. Планирование
Лекция 2ПО для построения диаграмм
Задание
Составить план проекта. Сделать распределение ресурсов (время, стоимость, люди) для каждой задачи. Нарисовать диаграммы Гантта и Перта для точки начала проекта и для произвольного внутреннего состояния проекта. Найти критический путь проекта.
План должен отвечать следующим требованиям:
- Не менее 10 задач
- Не менее 3 ключевых точек
- Не менее 3 участников проекта
- Наличие участка с не менее 3 параллельными задачами за 1 момент времени
Срок: 05.03.2023
Вверх
3. Системы управления версиями
Документация и ПО
- Лекция 3
- Документация по CVS
- Краткая документация по CVS
- Создание веток и меток в CVS
- Subversion (SVN) Официальный сайт
- Книжка Управление версиями в Subversion
- CVSNT
- Microsoft Visual SourceSafe
- Rational ClearCase
- GNU Arch
- Git
Задание
По выбору выполнить задание для репозитория CVS, Subversion или Git:
а) Работа с репозиторием CVS
- Настроить подключение к репозиторию на сервере kappa.cs.karelia.ru (/groups/repos/cvs/casetools или CVSROOT=/groups/repos/cvs/)
- Получить версию проекта casetools с меткой INIT_VERSION
- Сделать собственную ветку проекта
- Добавить в проект каталоги с выполнеными заданиями по Make, Ant и планированию
- Произвести модификацию файлов проекта
- Добавить и удалить файлы из проекта
- Получить историю изменения файлов и историю работы с проектом
- Добавить в конец файла README основной ветки проекта строчку с меткой и автором метки проекта
- По результатам работы сформировать отчет содержащий структуру каталогов проекта, описание использованных команд, истории изменений файлов и работы с проектом
б) Работа с репозиторием Subversion
- Получить копию проекта casetools с меткой INIT_VERSION ("svn co svn+ssh://$USER@kappa.cs.karelia.ru/groups/repos/svn/casetools", tags)
- Сделать собственную ветку проекта (branches)
- Добавить в проект каталоги с выполнеными заданиями по Make, Ant и планированию
- Произвести модификацию файлов проекта с фиксированием изменений в репозитории
- Добавить и удалить файлы из проекта с фиксированием изменений в репозитории
- Получить историю изменения файлов и историю работы с проектом
- Добавить в конец файла README основной ветки проекта (trunc) строчку с меткой и автором метки проекта
- По результатам работы сформировать отчет содержащий структуру каталогов проекта, описание использованных команд, истории изменений файлов и работы с проектом
в) Работа с репозиторием Git
- Настроить подключение к репозиторию на сервере kappa.cs.karelia.ru (/groups/repos/git/casetools или создать свой репозиторий на стороннем сервере, напр. GitLab на серверах ИМИТ или GitHub)
- Получить(клонировать) репозиторий casetools
- Сделать собственную ветку проекта (название - ваш логин)
- Добавить в проект каталоги с выполнеными заданиями по Make, Ant и планированию
- Произвести модификацию файлов проекта
- Добавить и удалить файлы из проекта
- Получить историю изменения файлов и историю работы с проектом
- Добавить в конец файла README основной ветки проекта строчку с меткой и автором метки проекта
- По результатам работы сформировать отчет содержащий структуру каталогов проекта, описание использованных команд, истории изменений файлов и работы с проектом
Срок: 19.03.2023
Вверх
4. Проектирование
Документация и ПО
- Лекция 4
- Fundamental Modeling Concepts (FMC)
- Unified Modeling Language (UML)
- Systems Modeling Language (SysML)
- Astah (ранее Jude)
- Dia
- Eclipse
- Kivio
- Calligra
- ConceptDraw
- Rational Software Modeler, Rational Software Architect(ранее Rational Rose)
- Poseidon for UML
- ERwin/BPwin
- MS Visio
Задание
Построить высокоуровневые модели (структурные и поведенческие) разрабатываемого ПО. Произвести не менее 3-х детализаций. Произвести автоматическую генерацию кода (если поддерживается). Составить отчет содержащий:- описание проектируемого ПО;
- построенные диаграммы моделей;
- анализ недостатков и свойств.
Срок: 02.04.2023
Вверх
5. Стили кодирования
Лекция 5Документация и ПО
- perltidy (Perl)
- Artistic Style (C, C++, C#, Java)
- GNU Indent (C)
- Jalopy (Java)
- PHPFormatter (PHP)
- Перечень ПО для форматирования кода для Web языков
- Standards and Style for Coding in ANSI C (Локальная копия)
- C++ Coding Standard (Локальная копия)
- Code Conventions for the JavaTM Programming Language (Локальная копия)
- Соглашения по оформлению кода команды RSDN (Локальная копия)
Задание
Написать текст программы в соответствии со стилем программирования. Выполнить форматирование с помощью инструментальных средств. Сравнить результаты. Представить отчет содержащий информацию о выбранном стиле кодирования, написанном коде и результатах автоматического форматирования.
Срок: 16.04.2023
Вверх
6. Автоматическая верификация
Лекция 6ПО и документация
Задание
Выполнить верификацию кода написанной программы. Исправить найденные ошибки. По результатам сформировать отчет с описанием найденных ошибок и вариантов исправления.
Срок: 30.04.2023
Вверх
7. Автоматическое тестирование
Лекция 7Автоматизация тестирования
ПО и документация
- JUnit
- Автоматизация тестирования Илья Бромберг
- Unit tests with JUnit
- NUnit
Задание
Реализовать набор тестов (не менее 10 тестов, общие, краевые и негативные) и провести автоматическое тестирование программы. По результатам сформировать отчет.
Срок: 21.05.2023
Вопроcы к ЗАЧЕТУ
- Назначение и компоненты CASE
- Средства автоматизации сборки
- GnuMake, понятия правила, цели, зависимости и т.д.
- AutoTools, состав, использование, макросы
- Планирование, временные и сетевые диаграммы
- Системы управления версиями. предпосылки и проблемы
- Обзор архитектур, моделей хранения,модель изменения.
- CVS, модель, система команд.
- SubVersion, модель, система команд.
- Моделирование, классический подход, MVC.
- Agile Modelling, IDEF
- Модель ERD, DFD.
- UML, преимущества и недостатки
- Стили кодирование, предпосылки и проблемы.
- Автоматическая верификация кода.
- Методы и инструменты тестирования.
- Модель звелости возможностей.