SlideShare uma empresa Scribd logo
1 de 35
Инструменты
разработки ПО
Лаборатория Вычислительных Комплексов, 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 = prog1
CL_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
файл2
diff diff-файл
patch
Средства контроля версий.
Задачи
 История изменений
 Параллельная совместная разработка
 Одновременная разработка нескольких
версий проекта (стабильная и
экспериментальная версии, разработка
независимых новых фич)
Средства контроля версий.
Архитектура
 Репозиторий
системы КВ, модуль.
 Версия.
 Локальная копия.
 diff
Репозиторий системы КВ
Module1 Module2
Локальная копия модуля
Средства контроля версий.
Параллельная разработка
 checkout/commit
 update
 Конфликты
Репозиторий системы КВ
Module1 версия 5
Локальная копия модуля
checkout commit
6
Локальная копия модуля
checkout checkout
commit
7
update
commit
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.ru
http://linux.org.ru/books
Спасибо за внимание

Mais conteúdo relacionado

Mais procurados

Брич Наталья - Невыносимая переносимость кроссплатформенных приложений на при...
Брич Наталья - Невыносимая переносимость кроссплатформенных приложений на при...Брич Наталья - Невыносимая переносимость кроссплатформенных приложений на при...
Брич Наталья - Невыносимая переносимость кроссплатформенных приложений на при...QA Club Minsk
 
метод организации репозитория исходного кода
метод организации репозитория исходного кодаметод организации репозитория исходного кода
метод организации репозитория исходного кодаSergii Shmarkatiuk
 
Open Source Testing Framework: real project example and best practices
Open Source Testing Framework: real project example and best practicesOpen Source Testing Framework: real project example and best practices
Open Source Testing Framework: real project example and best practicesAliaksandr Ikhelis
 
Реализация тестового фреймворка на основе OPEN-SOURCE инструментов
Реализация тестового фреймворка на основе OPEN-SOURCE инструментовРеализация тестового фреймворка на основе OPEN-SOURCE инструментов
Реализация тестового фреймворка на основе OPEN-SOURCE инструментовSQALab
 
Frontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиковFrontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиковCodeFest
 
Виктор Стрелков - Jabber как инструмент разработчика
Виктор Стрелков - Jabber как инструмент разработчикаВиктор Стрелков - Jabber как инструмент разработчика
Виктор Стрелков - Jabber как инструмент разработчикаPositive Hack Days
 
Двухкратный публичный code review, Евгения Фирсова (Яндекс)
Двухкратный публичный code review, Евгения Фирсова (Яндекс)Двухкратный публичный code review, Евгения Фирсова (Яндекс)
Двухкратный публичный code review, Евгения Фирсова (Яндекс)Ontico
 
Разработка БД с использованием инструментов MS VS 2010
Разработка БД с использованием инструментов MS VS 2010Разработка БД с использованием инструментов MS VS 2010
Разработка БД с использованием инструментов MS VS 2010Александр Шамрай
 
Вячеслав Смирнов - Инструменты нагрузочного тестирования
Вячеслав Смирнов - Инструменты нагрузочного тестированияВячеслав Смирнов - Инструменты нагрузочного тестирования
Вячеслав Смирнов - Инструменты нагрузочного тестированияElias Fofanov
 
Agile software configuration management
Agile software configuration managementAgile software configuration management
Agile software configuration managementSergii Shmarkatiuk
 
управление сборками и развертыванием веб приложений
управление сборками и развертыванием веб приложенийуправление сборками и развертыванием веб приложений
управление сборками и развертыванием веб приложенийSergii Shmarkatiuk
 
Организация эффективной работы команды при разработке и поддержке сложной инф...
Организация эффективной работы команды при разработке и поддержке сложной инф...Организация эффективной работы команды при разработке и поддержке сложной инф...
Организация эффективной работы команды при разработке и поддержке сложной инф...tabtabus
 
GUI-автоматизация в Telerik Test Studio
GUI-автоматизация в Telerik Test StudioGUI-автоматизация в Telerik Test Studio
GUI-автоматизация в Telerik Test StudioSQALab
 
Как мы приручили демона или процесс тестирования демонов в Badoo
Как мы приручили демона или процесс тестирования демонов в BadooКак мы приручили демона или процесс тестирования демонов в Badoo
Как мы приручили демона или процесс тестирования демонов в BadooSQALab
 

Mais procurados (20)

Брич Наталья - Невыносимая переносимость кроссплатформенных приложений на при...
Брич Наталья - Невыносимая переносимость кроссплатформенных приложений на при...Брич Наталья - Невыносимая переносимость кроссплатформенных приложений на при...
Брич Наталья - Невыносимая переносимость кроссплатформенных приложений на при...
 
метод организации репозитория исходного кода
метод организации репозитория исходного кодаметод организации репозитория исходного кода
метод организации репозитория исходного кода
 
Open Source Testing Framework: real project example and best practices
Open Source Testing Framework: real project example and best practicesOpen Source Testing Framework: real project example and best practices
Open Source Testing Framework: real project example and best practices
 
Реализация тестового фреймворка на основе OPEN-SOURCE инструментов
Реализация тестового фреймворка на основе OPEN-SOURCE инструментовРеализация тестового фреймворка на основе OPEN-SOURCE инструментов
Реализация тестового фреймворка на основе OPEN-SOURCE инструментов
 
Frontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиковFrontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиков
 
It meetup cd
It meetup cdIt meetup cd
It meetup cd
 
Виктор Стрелков - Jabber как инструмент разработчика
Виктор Стрелков - Jabber как инструмент разработчикаВиктор Стрелков - Jabber как инструмент разработчика
Виктор Стрелков - Jabber как инструмент разработчика
 
Двухкратный публичный code review, Евгения Фирсова (Яндекс)
Двухкратный публичный code review, Евгения Фирсова (Яндекс)Двухкратный публичный code review, Евгения Фирсова (Яндекс)
Двухкратный публичный code review, Евгения Фирсова (Яндекс)
 
Java one presentation
Java one presentationJava one presentation
Java one presentation
 
Разработка БД с использованием инструментов MS VS 2010
Разработка БД с использованием инструментов MS VS 2010Разработка БД с использованием инструментов MS VS 2010
Разработка БД с использованием инструментов MS VS 2010
 
Вячеслав Смирнов - Инструменты нагрузочного тестирования
Вячеслав Смирнов - Инструменты нагрузочного тестированияВячеслав Смирнов - Инструменты нагрузочного тестирования
Вячеслав Смирнов - Инструменты нагрузочного тестирования
 
Agile software configuration management
Agile software configuration managementAgile software configuration management
Agile software configuration management
 
управление сборками и развертыванием веб приложений
управление сборками и развертыванием веб приложенийуправление сборками и развертыванием веб приложений
управление сборками и развертыванием веб приложений
 
Организация эффективной работы команды при разработке и поддержке сложной инф...
Организация эффективной работы команды при разработке и поддержке сложной инф...Организация эффективной работы команды при разработке и поддержке сложной инф...
Организация эффективной работы команды при разработке и поддержке сложной инф...
 
GUI-автоматизация в Telerik Test Studio
GUI-автоматизация в Telerik Test StudioGUI-автоматизация в Telerik Test Studio
GUI-автоматизация в Telerik Test Studio
 
Как мы приручили демона или процесс тестирования демонов в Badoo
Как мы приручили демона или процесс тестирования демонов в BadooКак мы приручили демона или процесс тестирования демонов в Badoo
Как мы приручили демона или процесс тестирования демонов в Badoo
 
МиСПИСиТ (разработка программного модуля)
МиСПИСиТ (разработка программного модуля)МиСПИСиТ (разработка программного модуля)
МиСПИСиТ (разработка программного модуля)
 
DevOps guide for awesome quality assurance
DevOps guide for awesome quality assuranceDevOps guide for awesome quality assurance
DevOps guide for awesome quality assurance
 
GitFlow_MOEX
GitFlow_MOEXGitFlow_MOEX
GitFlow_MOEX
 
Разработка БД и TFS
Разработка БД и TFSРазработка БД и TFS
Разработка БД и TFS
 

Destaque

В поисках эффективного middleware
В поисках эффективного middlewareВ поисках эффективного middleware
В поисках эффективного middlewareAlexander Gerasiov
 
Кластеризации поисковых запросов в Ipython
Кластеризации поисковых запросов в IpythonКластеризации поисковых запросов в Ipython
Кластеризации поисковых запросов в IpythonМихаил Жуковец
 
Лицензирование ПО в современном мире
Лицензирование ПО в современном миреЛицензирование ПО в современном мире
Лицензирование ПО в современном миреAlexander Gerasiov
 
RnDM MSU CMC 7.5 Управление процессом разработки
RnDM MSU CMC 7.5 Управление процессом разработкиRnDM MSU CMC 7.5 Управление процессом разработки
RnDM MSU CMC 7.5 Управление процессом разработкиAlexander Gerasiov
 

Destaque (12)

В поисках эффективного middleware
В поисках эффективного middlewareВ поисках эффективного middleware
В поисках эффективного middleware
 
Qt
QtQt
Qt
 
Qt (mvc)
Qt (mvc)Qt (mvc)
Qt (mvc)
 
Кластеризации поисковых запросов в Ipython
Кластеризации поисковых запросов в IpythonКластеризации поисковых запросов в Ipython
Кластеризации поисковых запросов в Ipython
 
Data storage systems
Data storage systemsData storage systems
Data storage systems
 
Git
GitGit
Git
 
Package maintaining in Debian
Package maintaining in DebianPackage maintaining in Debian
Package maintaining in Debian
 
Linux drivers
Linux driversLinux drivers
Linux drivers
 
Лицензирование ПО в современном мире
Лицензирование ПО в современном миреЛицензирование ПО в современном мире
Лицензирование ПО в современном мире
 
Brands.i look v5-n6
Brands.i look v5-n6Brands.i look v5-n6
Brands.i look v5-n6
 
RnDM MSU CMC 7.5 Управление процессом разработки
RnDM MSU CMC 7.5 Управление процессом разработкиRnDM MSU CMC 7.5 Управление процессом разработки
RnDM MSU CMC 7.5 Управление процессом разработки
 
iptables
iptablesiptables
iptables
 

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

Непрерывная интеграция. Практическое применение
Непрерывная интеграция. Практическое применениеНепрерывная интеграция. Практическое применение
Непрерывная интеграция. Практическое применениеdevclub
 
"Опыт создания системы управления сборкой и тестированием" (полная)
"Опыт создания системы управления сборкой и тестированием" (полная)"Опыт создания системы управления сборкой и тестированием" (полная)
"Опыт создания системы управления сборкой и тестированием" (полная)SPB SQA Group
 
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...DrupalCamp MSK
 
Тестирование весна 2013 лекция 5
Тестирование весна 2013 лекция 5Тестирование весна 2013 лекция 5
Тестирование весна 2013 лекция 5Technopark
 
Gradle. Новый уровень автоматизации для Android
Gradle. Новый уровень автоматизации для AndroidGradle. Новый уровень автоматизации для Android
Gradle. Новый уровень автоматизации для AndroidAnton Rutkevich
 
Типовая сборка и деплой продуктов в Positive Technologies
Типовая сборка и деплой продуктов в Positive TechnologiesТиповая сборка и деплой продуктов в Positive Technologies
Типовая сборка и деплой продуктов в Positive TechnologiesPositive Hack Days
 
Flex code quality measurement tools
Flex code quality measurement toolsFlex code quality measurement tools
Flex code quality measurement toolsValery
 
Moscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемы
Moscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемыMoscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемы
Moscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемыOleg Nenashev
 
"Опыт создания системы управления сборкой и тестированием" (слайдкаст)
"Опыт создания системы управления сборкой и тестированием" (слайдкаст)"Опыт создания системы управления сборкой и тестированием" (слайдкаст)
"Опыт создания системы управления сборкой и тестированием" (слайдкаст)SPB SQA Group
 
Azure DevOps сборка, развертывание и тестирование
Azure DevOps сборка, развертывание и тестированиеAzure DevOps сборка, развертывание и тестирование
Azure DevOps сборка, развертывание и тестированиеАлександр Шамрай
 
Иван Крутов - Автоматизация сборки Java-проекта
Иван Крутов - Автоматизация сборки Java-проектаИван Крутов - Автоматизация сборки Java-проекта
Иван Крутов - Автоматизация сборки Java-проектаYandex
 
Jelastic для разработчиков ПО
Jelastic для разработчиков ПОJelastic для разработчиков ПО
Jelastic для разработчиков ПОDmitry Lazarenko
 
Управление облачной инфраструктурой
Управление облачной инфраструктуройУправление облачной инфраструктурой
Управление облачной инфраструктуройdddpaul
 
Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Yandex
 
Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Yandex
 

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

Dev collaboration
Dev collaborationDev collaboration
Dev collaboration
 
Cистемы автоматической сборки проектов (Полина Фоминых)
Cистемы автоматической сборки проектов (Полина Фоминых)Cистемы автоматической сборки проектов (Полина Фоминых)
Cистемы автоматической сборки проектов (Полина Фоминых)
 
Непрерывная интеграция. Практическое применение
Непрерывная интеграция. Практическое применениеНепрерывная интеграция. Практическое применение
Непрерывная интеграция. Практическое применение
 
Simonova sql server-enginetesting
Simonova sql server-enginetestingSimonova sql server-enginetesting
Simonova sql server-enginetesting
 
"Опыт создания системы управления сборкой и тестированием" (полная)
"Опыт создания системы управления сборкой и тестированием" (полная)"Опыт создания системы управления сборкой и тестированием" (полная)
"Опыт создания системы управления сборкой и тестированием" (полная)
 
Continuous integration
Continuous integrationContinuous integration
Continuous integration
 
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...
 
Тестирование весна 2013 лекция 5
Тестирование весна 2013 лекция 5Тестирование весна 2013 лекция 5
Тестирование весна 2013 лекция 5
 
Gradle. Новый уровень автоматизации для Android
Gradle. Новый уровень автоматизации для AndroidGradle. Новый уровень автоматизации для Android
Gradle. Новый уровень автоматизации для Android
 
Типовая сборка и деплой продуктов в Positive Technologies
Типовая сборка и деплой продуктов в Positive TechnologiesТиповая сборка и деплой продуктов в Positive Technologies
Типовая сборка и деплой продуктов в Positive Technologies
 
Flex code quality measurement tools
Flex code quality measurement toolsFlex code quality measurement tools
Flex code quality measurement tools
 
Описание и архитектура TFS 2008
Описание и архитектура TFS 2008Описание и архитектура TFS 2008
Описание и архитектура TFS 2008
 
Moscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемы
Moscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемыMoscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемы
Moscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемы
 
"Опыт создания системы управления сборкой и тестированием" (слайдкаст)
"Опыт создания системы управления сборкой и тестированием" (слайдкаст)"Опыт создания системы управления сборкой и тестированием" (слайдкаст)
"Опыт создания системы управления сборкой и тестированием" (слайдкаст)
 
Azure DevOps сборка, развертывание и тестирование
Azure DevOps сборка, развертывание и тестированиеAzure DevOps сборка, развертывание и тестирование
Azure DevOps сборка, развертывание и тестирование
 
Иван Крутов - Автоматизация сборки Java-проекта
Иван Крутов - Автоматизация сборки Java-проектаИван Крутов - Автоматизация сборки Java-проекта
Иван Крутов - Автоматизация сборки Java-проекта
 
Jelastic для разработчиков ПО
Jelastic для разработчиков ПОJelastic для разработчиков ПО
Jelastic для разработчиков ПО
 
Управление облачной инфраструктурой
Управление облачной инфраструктуройУправление облачной инфраструктурой
Управление облачной инфраструктурой
 
Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"
 
Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»
 

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

  • 2. Цели доклада  Познакомить слушателей с методом разработки ПО в ЛВК и основными средствами используемыми в полном цикле разработки.  Инструменты:  Средства сборки make и cvslvk  Системы контроля версий CVS и Subversion  Редакторы  Компилятор GCC  Отладчики gdb, ddd, valgrind  Система автоматизации тестирования QMTest  Bug tracker Bugzilla  Поддержка документирования Doxygen
  • 3. Цикл разработки ПО  Постановка задачи  Проектирование  Реализация  Отладка  Тестирование  Документация  Внедрение
  • 4. Цикл разработки ПО  Получение задания и исходных данных  Редактирование  Сборка  Отладка  Тестирование  Документирование  Инсталляция  Передача результатов
  • 5. Проект Средства сборки. Проект.  Базовые понятия средств сборки:  Проект  Исходные файлы  Цели  Сборка проекта Исходные файлы Цели Преобразования
  • 6. Средства сборки. Зависимости  Зависимости  Отслеживание зависимостей при сборке (инкрементальная сборка)  Неявные зависимости  Автоматическое отслеживание зависимостей  Вариантность Проект Исходные файлы Цели
  • 7. Средство сборки make  Проект: Makefile  Автоматическое отслеживание изменений  Иcпользование:  make target TARGET=program1 $(TARGET): file1.c gcc -o $@ $< clean: rm -f $(TARGET)
  • 8. Проблемы совместной разработки сложных проектов.  Зависимости между подпроектами  Общие библиотеки  Параллельная разработка, отслеживание изменений  Сложность (громоздкость синтаксиса make)
  • 9. Средство сборки cvslvk. Задачи, возможности.  Упрощение Makefile для сложных проектов  Репозиторий скомпилированных модулей (управление библиотеками)  Управление зависимостями между модулями  Расширяемость путем добавления новых модулей с правилами
  • 10. Средство сборки cvslvk. Архитектура  Модуль  Рабочая инсталляция  Репозиторий рабочих инсталляций
  • 11. Средство сборки cvslvk. Сценарий использования  export CL_DIR=/space/cvslvk  make  make update_wi  setup-cvslvk CL_MODULE = prog1 CL_USE_MODULES = Qt3 lib1 EXECUTABLE = prog1 SOURCES = main.cpp file1.cpp file2.cpp
  • 12. Цикл разработки ПО  Получение задания и исходных данных  Редактирование  make  Отладка  Тестирование  Документирование  make update_wi  Передача результатов
  • 13. Утилиты diff и patch  diff – сравнение файлов  patch – автоматическое изменение в соответствии с результатами diff  форматы diff (-u) файл1 файл2 diff diff-файл patch
  • 14. Средства контроля версий. Задачи  История изменений  Параллельная совместная разработка  Одновременная разработка нескольких версий проекта (стабильная и экспериментальная версии, разработка независимых новых фич)
  • 15. Средства контроля версий. Архитектура  Репозиторий системы КВ, модуль.  Версия.  Локальная копия.  diff Репозиторий системы КВ Module1 Module2 Локальная копия модуля
  • 16. Средства контроля версий. Параллельная разработка  checkout/commit  update  Конфликты Репозиторий системы КВ Module1 версия 5 Локальная копия модуля checkout commit 6 Локальная копия модуля checkout checkout commit 7 update commit 8
  • 17. STABLERELEASE Средства контроля версий. Теги и ветви  Теги  HEAD  Ветви  Слияние ветвей, проблемы слияния  Когда и как использовать ветви 1 2 2.1 3 4 5 2.2 2.3
  • 18. Средство контроля версий CVS  export CVSROOT=  cvs login  cvs checkout  cvs update  cvs add  cvs commit
  • 19. Средство контроля версий Subversion  Subversion – средство КВ нового поколения  Отличия в нумерации версий  Расширенные возможности управления файлами/каталогами (переименование, копирование, удаление, создание)
  • 20. Цикл разработки ПО  Получение задания  cvs checkout  Редактирование  make  Отладка  Тестирование  Документирование  make update_wi  cvs commit
  • 21. Редакторы  Windows-style: kate, kwrite  IDE kdevelop3  emacs  vi (vim – VI iMproved)  vi  gvim  evim vimtutor – vim tutorial
  • 22. Компиляторы  gcc, g++  Выбор используемого компилятора, переменные CC, CXX, CC_FLAGS, CXX_FLAGS для make  Распределенная компиляция (distcc) make -jN
  • 23. Отладчики в 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
  • 24. Отладка использования памяти. Valgrind  Запуск: $valgrind ./myprogram  Сообщает о типичных ошибках Использование неинициализированной переменной Утечки (неосвобождение) памяти Обращения по «испорченным» указателям
  • 25. Цикл разработки ПО  Получение задания  cvs checkout  evim/gvim  make  gdb, valgrind  Тестирование  Документирование  make update_wi  cvs commit
  • 26. Тестирование  Для каждой функциональности необходимо писать тесты  Наборы тестов следует прогонять как минимум после любых значительных изменений  Для автоматизации можно использовать специальные пакеты QMTest
  • 27. Документирование исходных текстов. Doxygen  Задача документирования  Документирование интерфейсов и типов данных  Система Doxygen
  • 28. Bugtracking. Bugzilla  Задача bugtracking’а (баги, фичи)  Случай одного разработчика  Ситуация коллективной разработки  Bugzilla - bugtracker используемый в ЛВК. http://zigzag.lvk.cs.msu.su/bugzilla
  • 29. Цикл разработки ПО  Получение задания и исходных данных  Редактирование  Сборка  Отладка  Тестирование  Документирование  Инсталляция  Передача результатов
  • 30. Цикл разработки ПО  Получение задания, bugzilla  cvs checkout  evim/gvim  make  gdb, valgrind  QMTest  doxygen, bugzilla  make update_wi  cvs commit
  • 31. Источники дополнительной информации. 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/
  • 32. Источники дополнительной информации. 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
  • 33. Источники дополнительной информации. III  Документирование  Doxygen  doxygen(1)  http://www.doxygen.org  Тестирование  QMTest  http://www.codesourcery.com/qmtest  Bugtracking  Bugzilla  http://www.bugzilla.org
  • 34. Источники дополнительной информации. IV  Русскоязычные ресурсы посвященные UNIX и OpenSource в Интернет: http://www.opennet.ru http://linux.org.ru/books