35
Инструменты разработки ПО Лаборатория Вычислительных Комплексов, 2005 http://lvk.cs.msu.su

Инструменты разработки ПО в *nix

Embed Size (px)

Citation preview

Page 1: Инструменты разработки ПО в *nix

Инструменты разработки ПО

Лаборатория Вычислительных Комплексов, 2005

http://lvk.cs.msu.su

Page 2: Инструменты разработки ПО в *nix

Цели доклада

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

Инструменты: Средства сборки make и cvslvk Системы контроля версий CVS и Subversion Редакторы Компилятор GCC Отладчики gdb, ddd, valgrind Система автоматизации тестирования QMTest Bug tracker Bugzilla Поддержка документирования Doxygen

Page 3: Инструменты разработки ПО в *nix

Цикл разработки ПО

Постановка задачи Проектирование Реализация Отладка Тестирование Документация Внедрение

Page 4: Инструменты разработки ПО в *nix

Цикл разработки ПО

Получение задания и исходных данных Редактирование Сборка Отладка Тестирование Документирование Инсталляция Передача результатов

Page 5: Инструменты разработки ПО в *nix

Проект

Средства сборки. Проект.

Базовые понятия средств сборки: Проект Исходные файлы Цели Сборка проекта

Исходные файлы

Цели

Преобразования

Page 6: Инструменты разработки ПО в *nix

Средства сборки. Зависимости

Зависимости Отслеживание

зависимостей при сборке (инкрементальная сборка)

Неявные зависимости Автоматическое

отслеживание зависимостей

Вариантность

Проект

Исходные файлы

Цели

Page 7: Инструменты разработки ПО в *nix

Средство сборки make

Проект: Makefile Автоматическое

отслеживание изменений

Иcпользование: make target

TARGET=program1

$(TARGET): file1.c

gcc -o $@ $<

clean:

rm -f $(TARGET)

Page 8: Инструменты разработки ПО в *nix

Проблемы совместной разработки сложных проектов.

Зависимости между подпроектами Общие библиотеки Параллельная разработка,

отслеживание изменений Сложность (громоздкость синтаксиса

make)

Page 9: Инструменты разработки ПО в *nix

Средство сборки cvslvk. Задачи, возможности. Упрощение Makefile для сложных проектов Репозиторий скомпилированных модулей

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

модулей с правилами

Page 10: Инструменты разработки ПО в *nix

Средство сборки cvslvk. Архитектура

Модуль Рабочая инсталляция Репозиторий рабочих инсталляций

Page 11: Инструменты разработки ПО в *nix

Средство сборки cvslvk. Сценарий использования

export CL_DIR=/space/cvslvk make make update_wi setup-cvslvk

CL_MODULE = prog1CL_USE_MODULES = Qt3 lib1

EXECUTABLE = prog1

SOURCES = main.cpp file1.cpp file2.cpp

Page 12: Инструменты разработки ПО в *nix

Цикл разработки ПО

Получение задания и исходных данных Редактирование make Отладка Тестирование Документирование make update_wi Передача результатов

Page 13: Инструменты разработки ПО в *nix

Утилиты diff и patch

diff – сравнение файлов

patch – автоматическое изменение в соответствии с результатами diff

форматы diff (-u)

файл1

файл2diff diff-файл

patch

Page 14: Инструменты разработки ПО в *nix

Средства контроля версий. Задачи

История изменений Параллельная совместная разработка Одновременная разработка нескольких

версий проекта (стабильная и экспериментальная версии, разработка независимых новых фич)

Page 15: Инструменты разработки ПО в *nix

Средства контроля версий. Архитектура Репозиторий

системы КВ, модуль. Версия. Локальная копия. diff

Репозиторий системы КВ

Module1 Module2

Локальная копия модуля

Page 16: Инструменты разработки ПО в *nix

Средства контроля версий. Параллельная разработка

checkout/commit update Конфликты

Репозиторий системы КВ

Module1 версия 5

Локальная копия модуля

checkout commit

6

Локальная копия модуля

checkout checkoutcommit

7

updatecommit

8

Page 17: Инструменты разработки ПО в *nix

STABLERELEASE

Средства контроля версий. Теги и ветви Теги HEAD Ветви Слияние ветвей,

проблемы слияния Когда и как

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

1

2 2.1

3

4

5

2.2

2.3

Page 18: Инструменты разработки ПО в *nix

Средство контроля версий CVS

export CVSROOT= cvs login cvs checkout cvs update cvs add cvs commit

Page 19: Инструменты разработки ПО в *nix

Средство контроля версий Subversion

Subversion – средство КВ нового поколения

Отличия в нумерации версий Расширенные возможности управления

файлами/каталогами (переименование, копирование, удаление, создание)

Page 20: Инструменты разработки ПО в *nix

Цикл разработки ПО

Получение задания cvs checkout Редактирование make Отладка Тестирование Документирование make update_wi cvs commit

Page 21: Инструменты разработки ПО в *nix

Редакторы

Windows-style: kate, kwrite IDE kdevelop3 emacs vi (vim – VI iMproved)

vi gvim evim

vimtutor – vim tutorial

Page 22: Инструменты разработки ПО в *nix

Компиляторы

gcc, g++ Выбор используемого компилятора,

переменные CC, CXX, CC_FLAGS, CXX_FLAGS для make

Распределенная компиляция (distcc) make -jN

Page 23: Инструменты разработки ПО в *nix

Отладчики в UNIX

gdb – стандартный отладчик в UNIX $gdb program – запуск отладчика :l(ist) [file:line] – вывод файла:строки :b(reak) source.cpp:123 – установка breakpoint :r(un) – запуск программы :s(tep)\n(ext) – выполнение шага :f(inish) – выход из функции :where – печать стека :p(rint) var – печать значения переменной var

ddd – графический frontend к gdb

Page 24: Инструменты разработки ПО в *nix

Отладка использования памяти. Valgrind

Запуск: $valgrind ./myprogram Сообщает о типичных ошибках

Использование неинициализированной переменной

Утечки (неосвобождение) памятиОбращения по «испорченным» указателям

Page 25: Инструменты разработки ПО в *nix

Цикл разработки ПО

Получение задания cvs checkout evim/gvim make gdb, valgrind Тестирование Документирование make update_wi cvs commit

Page 26: Инструменты разработки ПО в *nix

Тестирование

Для каждой функциональности необходимо писать тесты

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

Для автоматизации можно использовать специальные пакеты QMTest

Page 27: Инструменты разработки ПО в *nix

Документирование исходных текстов. Doxygen

Задача документирования Документирование интерфейсов и

типов данных Система Doxygen

Page 28: Инструменты разработки ПО в *nix

Bugtracking. Bugzilla

Задача bugtracking’а (баги, фичи) Случай одного разработчика Ситуация коллективной разработки Bugzilla - bugtracker используемый в

ЛВК.http://zigzag.lvk.cs.msu.su/bugzilla

Page 29: Инструменты разработки ПО в *nix

Цикл разработки ПО

Получение задания и исходных данных Редактирование Сборка Отладка Тестирование Документирование Инсталляция Передача результатов

Page 30: Инструменты разработки ПО в *nix

Цикл разработки ПО

Получение задания, bugzilla cvs checkout evim/gvim make gdb, valgrind QMTest doxygen, bugzilla make update_wi cvs commit

Page 31: Инструменты разработки ПО в *nix

Источники дополнительной информации. I Системы сборки:

make make(1) The GNU Make Manual

cvslvk Внутренний документ ЛВК

Средства контроля версий CVS

cvs(1) https://www.cvshome.org

Subversion svn(1), svnadmin(1) http://subversion.tigris.org/

Page 32: Инструменты разработки ПО в *nix

Источники дополнительной информации. II Редакторы

emacs http://www.gnu.org/software/emacs

vim vimtutor :help http://www.vim.org Внутренняя документация ЛВК

Компилятор gcc

gcc(1), g++(1) http://gcc.gnu.org

Отладчики gdb

gdb(1) http://www.gnu.org/software/gdb

valgrind valgrind(1) http://www.valgrind.org

Page 33: Инструменты разработки ПО в *nix

Источники дополнительной информации. III Документирование

Doxygen doxygen(1) http://www.doxygen.org

Тестирование QMTest

http://www.codesourcery.com/qmtest Bugtracking

Bugzilla http://www.bugzilla.org

Page 34: Инструменты разработки ПО в *nix

Источники дополнительной информации. IV

Русскоязычные ресурсы посвященные UNIX и OpenSource в Интернет:http://www.opennet.ruhttp://linux.org.ru/books

Page 35: Инструменты разработки ПО в *nix

Спасибо за внимание