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

Post on 15-Jul-2015

81 Views

Category:

Software

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

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

http://lvk.cs.msu.su

Цели доклада

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

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

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

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

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

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

Проект

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

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

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

Цели

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

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

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

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

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

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

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

Проект

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

Цели

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

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

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

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

TARGET=program1

$(TARGET): file1.c

gcc -o $@ $<

clean:

rm -f $(TARGET)

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

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

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

make)

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

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

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

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

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

Средство сборки 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

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

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

Утилиты diff и patch

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

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

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

файл1

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

patch

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

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

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

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

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

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

Module1 Module2

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

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

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

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

Module1 версия 5

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

checkout commit

6

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

checkout checkoutcommit

7

updatecommit

8

STABLERELEASE

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

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

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

1

2 2.1

3

4

5

2.2

2.3

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

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

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

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

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

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

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

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

Редакторы

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

vi gvim evim

vimtutor – vim tutorial

Компиляторы

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

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

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

Отладчики в 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

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

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

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

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

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

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

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

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

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

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

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

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

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

Bugtracking. Bugzilla

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

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

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

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

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

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

Источники дополнительной информации. 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/

Источники дополнительной информации. 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

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

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

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

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

Bugzilla http://www.bugzilla.org

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

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

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

top related