Керування конфігурацією та версіями ПЗ

Розділ: Інженерія систем і програмного забезпечення

📌 Про що ця тема

Тут перевіряють, як організовують і контролюють зміни у програмному забезпеченні протягом усього його життєвого циклу. Ключове поняття — керування конфігурацією (Software Configuration Management, SCM) та його частина — керування версіями (контроль версій). Знати це треба, щоб розуміти командну розробку, відстеження змін і повернення до робочих станів ПЗ.


📖 Головне

• Керування конфігурацією — це процес систематичного обліку, контролю й документування змін у складових частинах ПЗ (код, документація, налаштування, ресурси).

• Конфігураційна одиниця — окремий елемент, який відстежують (файл, модуль, документ).

• Базова лінія (baseline) — зафіксований, погоджений стан продукту на певний момент, від якого ведуть подальші зміни.

• Основні завдання SCM: ідентифікація елементів, контроль змін, облік стану, аудит конфігурації.

• Керування версіями — підтримка історії змін: хто, коли і що змінив; можливість повернутися до попередньої версії.

• Репозиторій — сховище, де зберігаються всі версії файлів та історія змін.

• Коміт (commit) — фіксація набору змін у репозиторії з описом (повідомленням).

• Гілка (branch) — окрема лінія розробки, що дозволяє працювати паралельно, не чіпаючи основну версію.

• Злиття (merge) — обʼєднання змін з різних гілок в одну.

• Конфлікт — ситуація, коли той самий фрагмент змінено по-різному; розвʼязується вручну.

• Типи систем контролю версій: централізовані (один сервер-репозиторій, напр. SVN) і розподілені (повна копія історії в кожного, напр. Git).

• Нумерація версій часто має вигляд МАЖОРНА.МІНОРНА.ПАТЧ (напр. 2.3.1): велике число — суттєві зміни, середнє — нові можливості, мале — виправлення.


🔢 Як це працює на прикладі

Команда розробляє застосунок у Git:

1) Створюють репозиторій і роблять перший коміт — це базова лінія версії 1.0.0.

2) Для нової функції розробник створює гілку feature.

3) Вносить зміни, робить кілька комітів з описами.

4) Тим часом у головній гілці виправили помилку — версія стала 1.0.1.

5) Розробник завершує функцію і виконує merge гілки feature у головну — версія стає 1.1.0.

6) Якщо той самий рядок коду змінено й там, і там, виникає конфлікт — його вручну узгоджують, після чого завершують злиття.


⚠️ Типові помилки

• Плутають керування конфігурацією (ширше поняття — весь облік змін) і керування версіями (лише історія версій файлів).

• Вважають, що Git і GitHub — одне й те саме: Git — система контролю версій, GitHub — лише вебсервіс для зберігання репозиторіїв.

• Плутають централізовані й розподілені системи: у розподілених кожен має повну історію локально.

• Думають, що гілка — це копія файлів вручну; насправді це керована лінія розробки в самій системі.

• Не розуміють, що коміт обовʼязково супроводжується описом змін.


🎯 Що завчити напамʼять

• Завдання SCM: ідентифікація, контроль змін, облік стану, аудит.

• Базова лінія — зафіксований погоджений стан.

• Коміт, гілка, злиття, конфлікт, репозиторій — базові терміни.

• Централізовані (SVN) vs розподілені (Git).

• Схема версій: МАЖОРНА.МІНОРНА.ПАТЧ.


🧠 Перевір себе

1) Чим керування версіями відрізняється від керування конфігурацією?

2) Що таке базова лінія?

3) Чим розподілена система контролю версій відрізняється від централізованої?

4) Що означає конфлікт при злитті і як його розвʼязують?


Відповіді: 1 — керування версіями відстежує історію змін файлів, а керування конфігурацією ширше: охоплює весь облік, контроль і аудит усіх складових ПЗ; 2 — зафіксований погоджений стан продукту на певний момент, від якого ведуть подальші зміни; 3 — у розподіленій кожен учасник має повну копію історії локально, у централізованій історія зберігається на одному сервері; 4 — це коли той самий фрагмент змінено по-різному у різних гілках; розвʼязують вручну, обираючи потрібний варіант, після чого завершують злиття.

Перевірити себе на практиці

Прочитати — половина справи. Далі потрібні завдання цієї ж теми з розбором кожної відповіді: саме на них видно, чи справді тема закрита.