svetlin nakov - configuration management

49
Управление на Управление на промените при промените при разработка на разработка на софтуер софтуер Светлин Наков Светлин Наков Национална академия по Национална академия по разработка на софтуер разработка на софтуер academy.devbg.org ( ( Software Configuration Software Configuration Management Management ) )

Upload: svetlin-nakov

Post on 27-Jun-2015

911 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: Svetlin Nakov - Configuration Management

Управление на Управление на промените при промените при

разработка на софтуерразработка на софтуер

Светлин НаковСветлин НаковНационална академия по Национална академия по разработка на софтуерразработка на софтуер

academy.devbg.org

((Software Configuration ManagementSoftware Configuration Management))

Page 2: Svetlin Nakov - Configuration Management

СъдържаниеСъдържаниеСъдържаниеСъдържание

1.1. Системи за управление на промените Системи за управление на промените при разработка на софтуер (при разработка на софтуер (SCM)SCM)

2.2. Пазарът на Пазарът на SCMSCM продукти продукти

3.3. Управление на версиитеУправление на версиите – – основни основни понятия и принципипонятия и принципи

4.4. Модели на версионизацияМодели на версионизация

• Lock-Modify-UnlockLock-Modify-Unlock

• Copy-Modify-MergeCopy-Modify-Merge

5.5. Етикети и разклоненияЕтикети и разклонения

1.1. Системи за управление на промените Системи за управление на промените при разработка на софтуер (при разработка на софтуер (SCM)SCM)

2.2. Пазарът на Пазарът на SCMSCM продукти продукти

3.3. Управление на версиитеУправление на версиите – – основни основни понятия и принципипонятия и принципи

4.4. Модели на версионизацияМодели на версионизация

• Lock-Modify-UnlockLock-Modify-Unlock

• Copy-Modify-MergeCopy-Modify-Merge

5.5. Етикети и разклоненияЕтикети и разклонения

Page 3: Svetlin Nakov - Configuration Management

Какво е управление на Какво е управление на промените?промените?Какво е управление на Какво е управление на промените?промените?

• Управление на промените Управление на промените ≈≈ Software Software Configuration ManagementConfiguration Management

• Контрол на промените по време на Контрол на промените по време на целия процес на разработка на целия процес на разработка на софтуерсофтуер

• При бизнес анализа, при изготвянето При бизнес анализа, при изготвянето на архитектурата и планирането, при на архитектурата и планирането, при имплементацията и тестванетоимплементацията и тестването

• Позволява промените да се Позволява промените да се преглеждат преди да бъдат одобренипреглеждат преди да бъдат одобрени

• Управление на промените Управление на промените ≈≈ Software Software Configuration ManagementConfiguration Management

• Контрол на промените по време на Контрол на промените по време на целия процес на разработка на целия процес на разработка на софтуерсофтуер

• При бизнес анализа, при изготвянето При бизнес анализа, при изготвянето на архитектурата и планирането, при на архитектурата и планирането, при имплементацията и тестванетоимплементацията и тестването

• Позволява промените да се Позволява промените да се преглеждат преди да бъдат одобренипреглеждат преди да бъдат одобрени

Page 4: Svetlin Nakov - Configuration Management

Software Configuration Software Configuration ManagementManagement ( (SCM)SCM)Software Configuration Software Configuration ManagementManagement ( (SCM)SCM)

• Дисциплина от софтуерното Дисциплина от софтуерното инженерствоинженерство• Състои се от техники, практики и Състои се от техники, практики и

инструментиинструменти

• Управлява промените при разработка на Управлява промените при разработка на софтуерни проекти чрез:софтуерни проекти чрез:• Механизми за управление, контрол, Механизми за управление, контрол,

одитиране и отчетност на променитеодитиране и отчетност на промените

• Дефинира процеса на промянаДефинира процеса на промяна

• Проследява какво се случва в проектаПроследява какво се случва в проекта

• Решава конфликти в променитеРешава конфликти в промените

• Дисциплина от софтуерното Дисциплина от софтуерното инженерствоинженерство• Състои се от техники, практики и Състои се от техники, практики и

инструментиинструменти

• Управлява промените при разработка на Управлява промените при разработка на софтуерни проекти чрез:софтуерни проекти чрез:• Механизми за управление, контрол, Механизми за управление, контрол,

одитиране и отчетност на променитеодитиране и отчетност на промените

• Дефинира процеса на промянаДефинира процеса на промяна

• Проследява какво се случва в проектаПроследява какво се случва в проекта

• Решава конфликти в променитеРешава конфликти в промените

Page 5: Svetlin Nakov - Configuration Management

Защо ни трябваЗащо ни трябва SCM? SCM?Защо ни трябваЗащо ни трябва SCM? SCM?

• Да управлявамеДа управляваме::

• Много хора работещи по едни и същи Много хора работещи по едни и същи сорс код или документисорс код или документи

• Проекти, предавани в много издания Проекти, предавани в много издания ((buildsbuilds & & releases)releases)

• Проследяването на еволюцията на Проследяването на еволюцията на софтуера и развитието на проекта:софтуера и развитието на проекта:

• Статус, напредък, дефекти, Статус, напредък, дефекти, функционалност, ...функционалност, ...

• Управление на конкурентния достъпУправление на конкурентния достъп

• Да управлявамеДа управляваме::

• Много хора работещи по едни и същи Много хора работещи по едни и същи сорс код или документисорс код или документи

• Проекти, предавани в много издания Проекти, предавани в много издания ((buildsbuilds & & releases)releases)

• Проследяването на еволюцията на Проследяването на еволюцията на софтуера и развитието на проекта:софтуера и развитието на проекта:

• Статус, напредък, дефекти, Статус, напредък, дефекти, функционалност, ...функционалност, ...

• Управление на конкурентния достъпУправление на конкурентния достъп

Page 6: Svetlin Nakov - Configuration Management

Ползи отПолзи от SCM SCM системите (1) системите (1)Ползи отПолзи от SCM SCM системите (1) системите (1)

• Управление на променитеУправление на промените• Контрол над развитието на продукта и Контрол над развитието на продукта и

променитепромените

• Отчитане на напредъкаОтчитане на напредъка• Следене на статуса на отделните компоненти Следене на статуса на отделните компоненти

и напредъка на работата по тяхи напредъка на работата по тях

• Преглеждане и одитиранеПреглеждане и одитиране• Възможност за преглеждане на променитеВъзможност за преглеждане на промените

• Управление на билдовете (Управление на билдовете (build)build)• Следене на билдовете и информация за тяхСледене на билдовете и информация за тях

• Управление на променитеУправление на промените• Контрол над развитието на продукта и Контрол над развитието на продукта и

променитепромените

• Отчитане на напредъкаОтчитане на напредъка• Следене на статуса на отделните компоненти Следене на статуса на отделните компоненти

и напредъка на работата по тяхи напредъка на работата по тях

• Преглеждане и одитиранеПреглеждане и одитиране• Възможност за преглеждане на променитеВъзможност за преглеждане на промените

• Управление на билдовете (Управление на билдовете (build)build)• Следене на билдовете и информация за тяхСледене на билдовете и информация за тях

Page 7: Svetlin Nakov - Configuration Management

Ползи отПолзи от SCM SCM системите (2) системите (2)Ползи отПолзи от SCM SCM системите (2) системите (2)

• Управление на процесаУправление на процеса

• Следване на процеса на разработкаСледване на процеса на разработка

• Работа в екипРабота в екип

• Улесняване на съвместната работа и Улесняване на съвместната работа и взаимодействията в екипавзаимодействията в екипа

• Управление на процесаУправление на процеса

• Следване на процеса на разработкаСледване на процеса на разработка

• Работа в екипРабота в екип

• Улесняване на съвместната работа и Улесняване на съвместната работа и взаимодействията в екипавзаимодействията в екипа

Page 8: Svetlin Nakov - Configuration Management

Сорс кодСорс код

МоделиМодели

BuildBuildскриптове,скриптове,

готовготовпродуктпродукт

ТестовиТестовискриптовескриптове

и даннии данни

ГотовГотовпродуктпродукт

ИзискванияИзисквания

Имплементация

ДизайнИздаване

Тестване Анализ

Издание

SCM

SCMSCM и процесът на и процесът на разработка на софтуерразработка на софтуерSCMSCM и процесът на и процесът на разработка на софтуерразработка на софтуер

Page 9: Svetlin Nakov - Configuration Management

Пазарът на Пазарът на SCMSCM продукти продукти

Page 10: Svetlin Nakov - Configuration Management

Пазарът на Пазарът на SCM SCM продуктипродуктиПазарът на Пазарът на SCM SCM продуктипродукти

Process-centric softwareProcess-centric software configuration managementconfiguration management

Software configurationSoftware configurationmanagement (SCM)management (SCM)

Version controlVersion control

Application life-cycleApplication life-cyclemanagement (ALM)management (ALM)

Page 11: Svetlin Nakov - Configuration Management

Системи за управление на Системи за управление на версиите (версиите (Version Control)Version Control)Системи за управление на Системи за управление на версиите (версиите (Version Control)Version Control)

• ФункционалностФункционалност• Управление на версиите на файловеУправление на версиите на файлове

• Просто сливане и намиране на разликиПросто сливане и намиране на разлики

• Разклоняване (Разклоняване (branching)branching)

• Заключване на файловеЗаключване на файлове

• Конзолни и Конзолни и GUI GUI клиентиклиенти

• По-известни продуктиПо-известни продукти• CVSCVS

• SubversionSubversion

• Microsoft Visual SourceSafeMicrosoft Visual SourceSafe

• PerforcePerforce

• ФункционалностФункционалност• Управление на версиите на файловеУправление на версиите на файлове

• Просто сливане и намиране на разликиПросто сливане и намиране на разлики

• Разклоняване (Разклоняване (branching)branching)

• Заключване на файловеЗаключване на файлове

• Конзолни и Конзолни и GUI GUI клиентиклиенти

• По-известни продуктиПо-известни продукти• CVSCVS

• SubversionSubversion

• Microsoft Visual SourceSafeMicrosoft Visual SourceSafe

• PerforcePerforce

Page 12: Svetlin Nakov - Configuration Management

SCM SCM системисистемиSCM SCM системисистеми

• ФункционалностФункционалност• Управление на групи документиУправление на групи документи

• Подобрено сливане и разликиПодобрено сливане и разлики

• Управление на работно пространствоУправление на работно пространство

• Управление на поток на събитията (Управление на поток на събитията (workflow)workflow)

• Управление на билдове и изданияУправление на билдове и издания

• По-известни продуктиПо-известни продукти• Borland StarTeam StandardBorland StarTeam Standard

• IBM Rational ClearCaseIBM Rational ClearCase

• MKS Source IntegrityMKS Source Integrity

• Serena ChangeMan ProfessionalSerena ChangeMan Professional

• ФункционалностФункционалност• Управление на групи документиУправление на групи документи

• Подобрено сливане и разликиПодобрено сливане и разлики

• Управление на работно пространствоУправление на работно пространство

• Управление на поток на събитията (Управление на поток на събитията (workflow)workflow)

• Управление на билдове и изданияУправление на билдове и издания

• По-известни продуктиПо-известни продукти• Borland StarTeam StandardBorland StarTeam Standard

• IBM Rational ClearCaseIBM Rational ClearCase

• MKS Source IntegrityMKS Source Integrity

• Serena ChangeMan ProfessionalSerena ChangeMan Professional

Page 13: Svetlin Nakov - Configuration Management

Процесно-Процесно-ориентирани ориентирани SCM SCM системисистемиПроцесно-Процесно-ориентирани ориентирани SCM SCM системисистеми

• ФункционалностФункционалност• Шаблони за процеса, дизайна и Шаблони за процеса, дизайна и

имплементациятаимплементацията

• Управление на изискваниятаУправление на изискванията

• Управление на проблеми (Управление на проблеми (issue tracking)issue tracking)

• Управление на задачи, промени по задачиУправление на задачи, промени по задачи

• Контрол на достъпа (потребители, групи, ...)Контрол на достъпа (потребители, групи, ...)

• Аналитични средства и отчетиАналитични средства и отчети за напредъказа напредъка

• По-известни продуктиПо-известни продукти• Borland StarTeam StandardBorland StarTeam Standard

• IBM Rational ClearCaseIBM Rational ClearCase

• MKS Source IntegrityMKS Source Integrity

• ФункционалностФункционалност• Шаблони за процеса, дизайна и Шаблони за процеса, дизайна и

имплементациятаимплементацията

• Управление на изискваниятаУправление на изискванията

• Управление на проблеми (Управление на проблеми (issue tracking)issue tracking)

• Управление на задачи, промени по задачиУправление на задачи, промени по задачи

• Контрол на достъпа (потребители, групи, ...)Контрол на достъпа (потребители, групи, ...)

• Аналитични средства и отчетиАналитични средства и отчети за напредъказа напредъка

• По-известни продуктиПо-известни продукти• Borland StarTeam StandardBorland StarTeam Standard

• IBM Rational ClearCaseIBM Rational ClearCase

• MKS Source IntegrityMKS Source Integrity

Page 14: Svetlin Nakov - Configuration Management

Application Lifecycle Application Lifecycle Management (ALM) Management (ALM) системисистемиApplication Lifecycle Application Lifecycle Management (ALM) Management (ALM) системисистеми

• ФункционалностФункционалност• Тясна интеграция на процесите с Тясна интеграция на процесите с

инструменти за прилагането иминструменти за прилагането им

• Инструменти за дизайнИнструменти за дизайн

• Инструменти за разработкаИнструменти за разработка

• Инструменти за тестванеИнструменти за тестване

• Инструменти за управление на проектаИнструменти за управление на проекта

• По-известни продуктиПо-известни продукти• Microsoft Visual Studio Team System ServerMicrosoft Visual Studio Team System Server

• Borland StarTeam Enterprise AdvantageBorland StarTeam Enterprise Advantage

• Telelogic SYNERGYTelelogic SYNERGY

• ФункционалностФункционалност• Тясна интеграция на процесите с Тясна интеграция на процесите с

инструменти за прилагането иминструменти за прилагането им

• Инструменти за дизайнИнструменти за дизайн

• Инструменти за разработкаИнструменти за разработка

• Инструменти за тестванеИнструменти за тестване

• Инструменти за управление на проектаИнструменти за управление на проекта

• По-известни продуктиПо-известни продукти• Microsoft Visual Studio Team System ServerMicrosoft Visual Studio Team System Server

• Borland StarTeam Enterprise AdvantageBorland StarTeam Enterprise Advantage

• Telelogic SYNERGYTelelogic SYNERGY

Page 15: Svetlin Nakov - Configuration Management

УправлениеУправлениена версиитена версиите

Управление на много версииУправление на много версиина един и същ файл (документ)на един и същ файл (документ)

Page 16: Svetlin Nakov - Configuration Management

Управление на версиитеУправление на версиитеУправление на версиитеУправление на версиите

• Използва се постоянно в Използва се постоянно в инженерствотоинженерството

• При работа с документиПри работа с документи

• При разработка на софтуерПри разработка на софтуер

• Промените се идентифицират с Промените се идентифицират с увеличаване на пореден номерувеличаване на пореден номер

• ““номер на версияномер на версия””, напр. 1.0, 2.0, 2.17, напр. 1.0, 2.0, 2.17

• Номерата на версиите исторически са Номерата на версиите исторически са свързани с лицето, което ги е създалосвързани с лицето, което ги е създало

• Използва се постоянно в Използва се постоянно в инженерствотоинженерството

• При работа с документиПри работа с документи

• При разработка на софтуерПри разработка на софтуер

• Промените се идентифицират с Промените се идентифицират с увеличаване на пореден номерувеличаване на пореден номер

• ““номер на версияномер на версия””, напр. 1.0, 2.0, 2.17, напр. 1.0, 2.0, 2.17

• Номерата на версиите исторически са Номерата на версиите исторически са свързани с лицето, което ги е създалосвързани с лицето, което ги е създало

Page 17: Svetlin Nakov - Configuration Management

История на променитеИстория на променитеИстория на променитеИстория на промените

• Системите за контрол на версиите Системите за контрол на версиите запазват пълна история на променитезапазват пълна история на промените• Пазят се датата и часа на всяка Пазят се датата и часа на всяка

промянапромяна

• Пази се потребителят, направил Пази се потребителят, направил промянатапромяната

• Старите версиите могат да се Старите версиите могат да се извличат, разглеждат и сравняватизвличат, разглеждат и сравняват

• Възможно е връщане към стара Възможно е връщане към стара версия (версия (revert)revert)

• Системите за контрол на версиите Системите за контрол на версиите запазват пълна история на променитезапазват пълна история на промените• Пазят се датата и часа на всяка Пазят се датата и часа на всяка

промянапромяна

• Пази се потребителят, направил Пази се потребителят, направил промянатапромяната

• Старите версиите могат да се Старите версиите могат да се извличат, разглеждат и сравняватизвличат, разглеждат и сравняват

• Възможно е връщане към стара Възможно е връщане към стара версия (версия (revert)revert)

Page 18: Svetlin Nakov - Configuration Management

Речник на термините (1)Речник на термините (1)Речник на термините (1)Речник на термините (1)

• Хранилище (Хранилище (repository)repository)

• Сървър, който съхранява файловете Сървър, който съхранява файловете (документите)(документите)

• Поддържа история на версиитеПоддържа история на версиите

• Версия (Версия (revision, version)revision, version)

• Индивидуална версия (състояние) на файл, Индивидуална версия (състояние) на файл, получена след серия промениполучена след серия промени

• Извличане (Извличане (check-outcheck-out))

• Извлича работно копие на файловете от Извлича работно копие на файловете от хранилището в локална директорияхранилището в локална директория

• Възможно е заключване на файловетеВъзможно е заключване на файловете

• Хранилище (Хранилище (repository)repository)

• Сървър, който съхранява файловете Сървър, който съхранява файловете (документите)(документите)

• Поддържа история на версиитеПоддържа история на версиите

• Версия (Версия (revision, version)revision, version)

• Индивидуална версия (състояние) на файл, Индивидуална версия (състояние) на файл, получена след серия промениполучена след серия промени

• Извличане (Извличане (check-outcheck-out))

• Извлича работно копие на файловете от Извлича работно копие на файловете от хранилището в локална директорияхранилището в локална директория

• Възможно е заключване на файловетеВъзможно е заключване на файловете

Page 19: Svetlin Nakov - Configuration Management

Речник на термините (2)Речник на термините (2)Речник на термините (2)Речник на термините (2)

• Промяна (Промяна (change)change)

• Модификация на локален файл (документ), Модификация на локален файл (документ), за който се контролират версиитеза който се контролират версиите

• Списък с промени (Списък с промени (change list)change list)• Множество от промени в различни файлове, Множество от промени в различни файлове,

които ще бъдат потвърдени наведнъжкоито ще бъдат потвърдени наведнъж

• Потвърждаване (Потвърждаване (commit, check-in)commit, check-in)• Изпращане на промените от локалното копие Изпращане на промените от локалното копие

на файловете в хранилищетона файловете в хранилището

• Създава автоматично нова версияСъздава автоматично нова версия

• Възможно е настъпване на конфликти!Възможно е настъпване на конфликти!

• Промяна (Промяна (change)change)

• Модификация на локален файл (документ), Модификация на локален файл (документ), за който се контролират версиитеза който се контролират версиите

• Списък с промени (Списък с промени (change list)change list)• Множество от промени в различни файлове, Множество от промени в различни файлове,

които ще бъдат потвърдени наведнъжкоито ще бъдат потвърдени наведнъж

• Потвърждаване (Потвърждаване (commit, check-in)commit, check-in)• Изпращане на промените от локалното копие Изпращане на промените от локалното копие

на файловете в хранилищетона файловете в хранилището

• Създава автоматично нова версияСъздава автоматично нова версия

• Възможно е настъпване на конфликти!Възможно е настъпване на конфликти!

Page 20: Svetlin Nakov - Configuration Management

Речник на термините (3)Речник на термините (3)Речник на термините (3)Речник на термините (3)

• Конфликт (Конфликт (conflict)conflict)

• Едновременна промяна на един и същ файл Едновременна промяна на един и същ файл от няколко потребителяот няколко потребителя

• Автоматично и ръчно разрешаванеАвтоматично и ръчно разрешаване

• Обновяване (Обновяване (updateupdate, , get latest version)get latest version)• Извличане на променените файлове от Извличане на променените файлове от

хранилището в локална директорияхранилището в локална директория

• Връщане на промените (Връщане на промените (undo check-out)undo check-out)

• Отказва започнати промени по група Отказва започнати промени по група файловефайлове

• Връща състоянието им от хранилищетоВръща състоянието им от хранилището

• Конфликт (Конфликт (conflict)conflict)

• Едновременна промяна на един и същ файл Едновременна промяна на един и същ файл от няколко потребителяот няколко потребителя

• Автоматично и ръчно разрешаванеАвтоматично и ръчно разрешаване

• Обновяване (Обновяване (updateupdate, , get latest version)get latest version)• Извличане на променените файлове от Извличане на променените файлове от

хранилището в локална директорияхранилището в локална директория

• Връщане на промените (Връщане на промените (undo check-out)undo check-out)

• Отказва започнати промени по група Отказва започнати промени по група файловефайлове

• Връща състоянието им от хранилищетоВръща състоянието им от хранилището

Page 21: Svetlin Nakov - Configuration Management

Речник на термините (4)Речник на термините (4)Речник на термините (4)Речник на термините (4)

• Сливане (Сливане (merge)merge)

• Сливане на промени върху един и същ файл, Сливане на промени върху един и същ файл, направени паралелно от различни потребителинаправени паралелно от различни потребители

• Може в голяма степен да се автоматизираМоже в голяма степен да се автоматизира

• Етикет (Етикет (labellabel, , tag)tag)

• Етикетите отбелязват с име група от файлове в Етикетите отбелязват с име група от файлове в дадена версиядадена версия

• Например дадено издание (Например дадено издание (release)release)

• Разклоняване (Разклоняване (branching)branching)

• Разделяне на хранилищата в няколко отделни Разделяне на хранилищата в няколко отделни потока на работапотока на работа

• Сливане (Сливане (merge)merge)

• Сливане на промени върху един и същ файл, Сливане на промени върху един и същ файл, направени паралелно от различни потребителинаправени паралелно от различни потребители

• Може в голяма степен да се автоматизираМоже в голяма степен да се автоматизира

• Етикет (Етикет (labellabel, , tag)tag)

• Етикетите отбелязват с име група от файлове в Етикетите отбелязват с име група от файлове в дадена версиядадена версия

• Например дадено издание (Например дадено издание (release)release)

• Разклоняване (Разклоняване (branching)branching)

• Разделяне на хранилищата в няколко отделни Разделяне на хранилищата в няколко отделни потока на работапотока на работа

Page 22: Svetlin Nakov - Configuration Management

Управление на версиите: Управление на версиите: типичен сценарийтипичен сценарийУправление на версиите: Управление на версиите: типичен сценарийтипичен сценарий

ПотребителиПотребители ХранилищеХранилищеГлавнаГлавна

линия налиния наразработкаразработка

ПотребителПотребител A A

ПотребителПотребител B B

Version B Version B BranchBranch

Version A Version A BranchBranch

Version A.1 Version A.1 BranchBranchCheck Out

AA

Check Out

B

MergeMergeDD

Check In

CC

Check InEE

Page 23: Svetlin Nakov - Configuration Management

Модели на Модели на версионизацияверсионизация

Lock-Modify-Unlock иLock-Modify-Unlock иCopy-Modify-MergeCopy-Modify-Merge

Page 24: Svetlin Nakov - Configuration Management

Модели на версионизацияМодели на версионизацияМодели на версионизацияМодели на версионизация

• Заключване-промяна-отключване (Заключване-промяна-отключване (Lock-Lock-Modify-UnlockModify-Unlock))::• Само един потребител работи по даден файл в Само един потребител работи по даден файл в

даден момент, без конфликтидаден момент, без конфликти

• ПримерПример: Visual SourceSafe: Visual SourceSafe

• Копиране-промяна-сливане (Копиране-промяна-сливане (Copy-Modify-Copy-Modify-MergeMerge))::• Потребителите правят паралелни промени по Потребителите правят паралелни промени по

собствените си работни копиясобствените си работни копия

• Паралелните промени се сливат и се получава Паралелните промени се сливат и се получава финалната версияфиналната версия

• ПримериПримери: CVS, Subversion: CVS, Subversion

• Заключване-промяна-отключване (Заключване-промяна-отключване (Lock-Lock-Modify-UnlockModify-Unlock))::• Само един потребител работи по даден файл в Само един потребител работи по даден файл в

даден момент, без конфликтидаден момент, без конфликти

• ПримерПример: Visual SourceSafe: Visual SourceSafe

• Копиране-промяна-сливане (Копиране-промяна-сливане (Copy-Modify-Copy-Modify-MergeMerge))::• Потребителите правят паралелни промени по Потребителите правят паралелни промени по

собствените си работни копиясобствените си работни копия

• Паралелните промени се сливат и се получава Паралелните промени се сливат и се получава финалната версияфиналната версия

• ПримериПримери: CVS, Subversion: CVS, Subversion

Page 25: Svetlin Nakov - Configuration Management

Проблеми със Проблеми със заключванетозаключванетоПроблеми със Проблеми със заключванетозаключването

• Административни проблеми:Административни проблеми:

• Някой заключва даден файл и забравя Някой заключва даден файл и забравя за негоза него

• Губи се време в чакане някой да Губи се време в чакане някой да освободи даден файлосвободи даден файл

• Ненужно заключване на целия файлНенужно заключване на целия файл

• Различните промени не винаги са в Различните промени не винаги са в конфликтконфликт

• Например: Асен работи в началото, а Например: Асен работи в началото, а Боби – в края на файлаБоби – в края на файла

• Административни проблеми:Административни проблеми:

• Някой заключва даден файл и забравя Някой заключва даден файл и забравя за негоза него

• Губи се време в чакане някой да Губи се време в чакане някой да освободи даден файлосвободи даден файл

• Ненужно заключване на целия файлНенужно заключване на целия файл

• Различните промени не винаги са в Различните промени не винаги са в конфликтконфликт

• Например: Асен работи в началото, а Например: Асен работи в началото, а Боби – в края на файлаБоби – в края на файла

Page 26: Svetlin Nakov - Configuration Management

Проблеми със сливанетоПроблеми със сливанетоПроблеми със сливанетоПроблеми със сливането

• Ако даден файл се променя едновременно Ако даден файл се променя едновременно ((modify concurrently), modify concurrently), промените трябва да промените трябва да се сливатсе сливат

• Сливането е трудно!Сливането е трудно!

• Не винаги е възможно автоматичноНе винаги е възможно автоматично

• Необходима е отговорност и координация Необходима е отговорност и координация между разработчицитемежду разработчиците

• Правете Правете commit commit възможно най-бързовъзможно най-бързо

• Не правете Не правете commit commit на код, който не се на код, който не се компилира или спира работата на другитекомпилира или спира работата на другите

• Поставяйте коментари при Поставяйте коментари при commitcommit

• Ако даден файл се променя едновременно Ако даден файл се променя едновременно ((modify concurrently), modify concurrently), промените трябва да промените трябва да се сливатсе сливат

• Сливането е трудно!Сливането е трудно!

• Не винаги е възможно автоматичноНе винаги е възможно автоматично

• Необходима е отговорност и координация Необходима е отговорност и координация между разработчицитемежду разработчиците

• Правете Правете commit commit възможно най-бързовъзможно най-бързо

• Не правете Не правете commit commit на код, който не се на код, който не се компилира или спира работата на другитекомпилира или спира работата на другите

• Поставяйте коментари при Поставяйте коментари при commitcommit

Page 27: Svetlin Nakov - Configuration Management

Сравнение на файловеСравнение на файловеСравнение на файловеСравнение на файлове

• При ръчно сливане ползвайте При ръчно сливане ползвайте сравнение на версиитесравнение на версиите

• Съществуват визуални графични Съществуват визуални графични инструменти за сравнение:инструменти за сравнение:

• WindiffWindiff

• AraxisMergeAraxisMerge

• BeyondCompareBeyondCompare

• CompareItCompareIt

• ……

• При ръчно сливане ползвайте При ръчно сливане ползвайте сравнение на версиитесравнение на версиите

• Съществуват визуални графични Съществуват визуални графични инструменти за сравнение:инструменти за сравнение:

• WindiffWindiff

• AraxisMergeAraxisMerge

• BeyondCompareBeyondCompare

• CompareItCompareIt

• ……

Page 28: Svetlin Nakov - Configuration Management

Сравнение на файлове – Сравнение на файлове – примерпримерСравнение на файлове – Сравнение на файлове – примерпример

Page 29: Svetlin Nakov - Configuration Management

МоделътМоделът"Lock-Modify-Unlock""Lock-Modify-Unlock"

Page 30: Svetlin Nakov - Configuration Management

МоделътМоделът Lock-Modify- Lock-Modify-UnlockUnlock (1) (1)МоделътМоделът Lock-Modify- Lock-Modify-UnlockUnlock (1) (1)

ХранилищеХранилище

AA

AA

Асен и Боби Асен и Боби извличат (извличат (updateupdate) ) файл A.файл A.

Извличането е без Извличането е без заключване – заключване – просто взимат просто взимат локално копие.локално копие. UpdateUpdate

AA

UpdateUpdate

Асен

Боби

Page 31: Svetlin Nakov - Configuration Management

МоделътМоделът Lock-Modify- Lock-Modify-UnlockUnlock (2) (2)МоделътМоделът Lock-Modify- Lock-Modify-UnlockUnlock (2) (2)

ХранилищеХранилище

AA

АсенАсен

Асен заключва (Асен заключва (locklock) ) файл Aфайл A и започва да и започва да го променя.го променя.

LockLockAA

Асен

Боби

Page 32: Svetlin Nakov - Configuration Management

МоделътМоделът Lock-Modify- Lock-Modify-UnlockUnlock (3) (3)МоделътМоделът Lock-Modify- Lock-Modify-UnlockUnlock (3) (3)

ХранилищеХранилище

AA

АсенАсен

Боби се опитва също Боби се опитва също да заключи файла, да заключи файла, но не може.но не може.

Боби чака докато Боби чака докато Асен приключи Асен приключи работа и отключи работа и отключи файла.файла. AA

WaitWait

Асен

Боби

Page 33: Svetlin Nakov - Configuration Management

МоделътМоделът Lock-Modify- Lock-Modify-UnlockUnlock (4) (4)МоделътМоделът Lock-Modify- Lock-Modify-UnlockUnlock (4) (4)

ХранилищеХранилище

АсенАсен

Асен потвърждава Асен потвърждава промените и промените и отключва файла.отключва файла.

CommitCommit

Асен

Боби

АсенАсен

АсенАсен

Page 34: Svetlin Nakov - Configuration Management

МоделътМоделът Lock-Modify- Lock-Modify-UnlockUnlock (5) (5)МоделътМоделът Lock-Modify- Lock-Modify-UnlockUnlock (5) (5)

ХранилищеХранилище

АсенАсен

Боби вече може да Боби вече може да вземе променения вземе променения файл и да го файл и да го заключи за редакция.заключи за редакция.

LockLock

Асен

Боби

АсенАсен

АсенАсен

Page 35: Svetlin Nakov - Configuration Management

МоделътМоделът Lock-Modify- Lock-Modify-UnlockUnlock (6) (6)МоделътМоделът Lock-Modify- Lock-Modify-UnlockUnlock (6) (6)

ХранилищеХранилище

АсенАсен

Боби приключва и Боби приключва и нанася своите нанася своите промени (промени (commit).commit).

CommitCommit

Асен

Боби

АсенАсенБобиБоби

АсенАсенБобиБоби

Page 36: Svetlin Nakov - Configuration Management

МоделътМоделът Lock-Modify- Lock-Modify-UnlockUnlock (7) (7)МоделътМоделът Lock-Modify- Lock-Modify-UnlockUnlock (7) (7)

ХранилищеХранилище

АсенАсенБобиБоби

Асен извлича Асен извлича промените от промените от хранилището.хранилището.

Асен

Боби

АсенАсенБобиБоби

АсенАсенБобиБоби

UpdateUpdate

Page 37: Svetlin Nakov - Configuration Management

МоделътМоделът"Copy-Modify-Merge""Copy-Modify-Merge"

Page 38: Svetlin Nakov - Configuration Management

МоделътМоделът Copy-Modify- Copy-Modify-MergeMerge (1) (1)МоделътМоделът Copy-Modify- Copy-Modify-MergeMerge (1) (1)

ХранилищеХранилище

AA

AA

Боби и Асен Боби и Асен извличат за извличат за редакция файл A редакция файл A (check-out).(check-out).

Извличането е без Извличането е без заключване.заключване.

AA

АсенАсенБобиБоби

Check-outCheck-out

Check-outCheck-out

Page 39: Svetlin Nakov - Configuration Management

МоделътМоделът Copy-Modify- Copy-Modify-MergeMerge (2) (2)МоделътМоделът Copy-Modify- Copy-Modify-MergeMerge (2) (2)

И двамата И двамата редактират редактират локалните локалните копия на копия на файловете.файловете.

ХранилищеХранилище

AA

АсенАсен

БобиБоби

Page 40: Svetlin Nakov - Configuration Management

МоделътМоделът Copy-Modify- Copy-Modify-Merge (3)Merge (3)МоделътМоделът Copy-Modify- Copy-Modify-Merge (3)Merge (3)

ХранилищеХранилище

БобиБоби

АсенАсен

БобиБоби

Боби изпращаБоби изпраща (commit)(commit) своите своите промени в промени в хранилището.хранилището. CommitCommit

Page 41: Svetlin Nakov - Configuration Management

МоделътМоделът Copy-Modify- Copy-Modify-Merge (4)Merge (4)МоделътМоделът Copy-Modify- Copy-Modify-Merge (4)Merge (4)

Асен опитва да Асен опитва да изпрати (изпрати (commit) commit) своите промени.своите промени.

Получава се Получава се конфликт на конфликт на версиите.версиите. CommitCommit

ХранилищеХранилище

БобиБоби

БобиБоби

АсенАсен

Page 42: Svetlin Nakov - Configuration Management

МоделътМоделът Copy-Modify- Copy-Modify-MergeMerge (5) (5)МоделътМоделът Copy-Modify- Copy-Modify-MergeMerge (5) (5)

Асен обновява Асен обновява (update) (update) своите промени с тези своите промени с тези от хранилището.от хранилището.

Промените се сливат в Промените се сливат в локалнотолокалното му копие. му копие.

Може да се получи Може да се получи конфликт приконфликт при сливане (сливане (mergemerge conflict).conflict).

UpdateUpdate

(with merge)(with merge)

ХранилищеХранилище

БобиБоби

БобиБоби

АсенАсен&&

БобиБоби

Page 43: Svetlin Nakov - Configuration Management

МоделътМоделът Copy-Modify- Copy-Modify-Merge (6)Merge (6)МоделътМоделът Copy-Modify- Copy-Modify-Merge (6)Merge (6)

ХранилищеХранилище

Асен нанася Асен нанася промените в промените в хранилището.хранилището.

Вкарва се Вкарва се обща версия обща версия с промените с промените на Асен и на Асен и Боби.Боби.

CommitCommit БобиБоби

АсенАсен&&

БобиБоби

АсенАсен&&

БобиБоби

Page 44: Svetlin Nakov - Configuration Management

МоделътМоделът Copy-Modify- Copy-Modify-MergeMerge (7) (7)МоделътМоделът Copy-Modify- Copy-Modify-MergeMerge (7) (7)

Боби обновява Боби обновява промените от промените от хранилището.хранилището.

Взима общата Взима общата версия с версия с промените на промените на Асен и Боби.Асен и Боби.

UpdateUpdate

ХранилищеХранилище

АсенАсен&&

БобиБоби

АсенАсен&&

БобиБоби

АсенАсен&&

БобиБоби

Page 45: Svetlin Nakov - Configuration Management

Етикети и Етикети и разклоненияразклонения

Page 46: Svetlin Nakov - Configuration Management

Етикети (Етикети (Tags)Tags)Етикети (Етикети (Tags)Tags)

• Позволяват да се даде име на съвкупност Позволяват да се даде име на съвкупност от файлове в определени версииот файлове в определени версии

• Позволяват да се даде име на съвкупност Позволяват да се даде име на съвкупност от файлове в определени версииот файлове в определени версии

Main.cMain.c

Main.hMain.h

1.11.1 1.31.3 1.41.4

1.21.2

Prog.cProg.c 1.11.1 1.21.2

Tag "Beta 2"Tag "Beta 2"

1.11.1

1.31.3

1.21.2

Page 47: Svetlin Nakov - Configuration Management

Разклонения (Разклонения (BBranching)ranching)Разклонения (Разклонения (BBranching)ranching)

• Разклоненията позволяват група Разклоненията позволяват група промени да бъдат отделени в отделна промени да бъдат отделени в отделна линия на разработка (линия на разработка (development linedevelopment line))

• Разклоненията са подходящи заРазклоненията са подходящи за::

• Поправка на грешки в стара версия на Поправка на грешки в стара версия на продуктапродукта

• Разработка на допълнения в Разработка на допълнения в определена версия на продуктаопределена версия на продукта

• Допълненията са независими, извън Допълненията са независими, извън основната линия на разработкаосновната линия на разработка

• Разклоненията позволяват група Разклоненията позволяват група промени да бъдат отделени в отделна промени да бъдат отделени в отделна линия на разработка (линия на разработка (development linedevelopment line))

• Разклоненията са подходящи заРазклоненията са подходящи за::

• Поправка на грешки в стара версия на Поправка на грешки в стара версия на продуктапродукта

• Разработка на допълнения в Разработка на допълнения в определена версия на продуктаопределена версия на продукта

• Допълненията са независими, извън Допълненията са независими, извън основната линия на разработкаосновната линия на разработка

Page 48: Svetlin Nakov - Configuration Management

Разклонения – примерРазклонения – примерРазклонения – примерРазклонения – пример

Main.h 1.1 1.2 1.3 1.4

1.2.2.1 1.2.2.2

1.2.4.1 1.2.4.2 1.2.4.3

1.2.2.2.2.1 1.2.2.2.2.2Branch 1.2.2.2.2 ->

Branch 1.2.2. ->

Branch 1.2.4. ->

Main Trunk

Page 49: Svetlin Nakov - Configuration Management

Управление на промените Управление на промените при разработка на софтуерпри разработка на софтуерУправление на промените Управление на промените при разработка на софтуерпри разработка на софтуер

ВъпросиВъпроси??ВъпросиВъпроси??