You are on page 1of 35

12/9/22

SOICT
School of Information and Communication Technology

1
12/9/22

IT3180 – Introduction to Software


Engineering
10 – Configuration Management
Quản lý cấu hình phần mềm

Nội dung bài học

1.Thay đổi và cấu hình phần mềm


2.Quản lý cấu hình phần mềm (Software Configuration
Management – SCM)
3.Chu trình quản lý cấu hình phần mềm
4.Các công cụ quản lý mã nguồn

2
12/9/22

1. Thay đổi - Changes

The “First Law”

No matter where you are in the system life cycle,


the system will change, and the desire to change it
will persist throughout the life cycle.

Bersoff et al., 1980


Không cần biết chúng ta đang ở giai đoạn nào trong
quá trình phát triển hệ thống, hệ thống sẽ thay đổi và
nhu cầu để thay đổi nó sẽ tồn tại xuyên suốt vòng đời
của sản phẩm

Thay đổi đến từ đâu

Yêu cầu nghiệp vụ


Các loại
Yêu cầu kỹ thuật tài lieu khác

Yêu cầu người dùng

Mô hình phần mềm


Project
Plan
data
Test
code

3
12/9/22

Cấu hình phần mềm

programs documents

The pieces
data

Baseline – Cấu hình cơ sở

• The IEEE (IEEE Std. No. 610.12-1990) defines a baseline as:


• A specification or product that has been formally reviewed and agreed
upon, that thereafter serves as the basis for further development, and that
can be changed only through formal change control procedures.
• Cấu hình cơ sở là một mốc quan trọng trong quá trình phát triển phần
mềm được đánh dấu bằng việc cung cấp một hoặc nhiều mục cấu
hình phần mềm và sự chấp thuận của các SCI này có được thông qua
chu trình đánh giá kỹ thuật chính thức

• SCIs: Software Configuration Items (software configuration objects)

4
12/9/22

modified
SCIs
Project database
approved
Software Formal
engineering SCIs technical SCIs
Làm thế nào tasks reviews

để cập nhật
stored

SCIs

cấu hình cơ extracted

sở? SCM
controls
SCIs

BASELINES:
System Specification
Software Requirements
Design Specification
Source Code
Test Plans/Procedures/Data
Operational System

SCI – Software Configuration Items (Thành phần cấu hình phần mềm)

Data model

Design specification

data design
architectural design
module design
interface design

Component N

interface description
algorithm description
Test specification PDL

test plan
test procedure
test cases

Source code

10

10

5
12/9/22

Kho lưu trữ cấu hình phần mềm - SCM Repository

• Kho lưu trữ SCM là tập hợp các cơ chế và cấu trúc dữ liệu cho phép
nhóm phần mềm quản lý thay đổi một cách hiệu quả
• Kho lưu trữ thực hiện hoặc đảm bảo các chức năng sau [For89]:
• Toàn vẹn dữ liệu - Data integrity
• Chia sẻ thông tin
• Công cụ tích hợp
• Công cụ tích hợp dữ liệu
• Chuẩn hoá tài liệu

11

11

use-cases
business rules analysis model source code
business functions scenario-based diagrams object code
organization structure flow-oriented diagrams system build instructions
information architecture class-based diagrams
behavioral diagrams Construction
design model Content
architectural diagrams
Business interface diagrams
Content component-level diagrams
technical metrics test cases

Thành phần
test scripts
test results
quality metrics
Model

của kho lưu Content


V&V
Content

trữ cấu hình


Project
Management
project estimates Content
project schedule
SCM requirements
Project Plan
change requests Documents SCM/SQA Plan
change reports
System Spec
SQA requirements
Requirements Spec
project reports/audit reports
Design Document
project metrics
Test Plan and Procedure
Support documents
User manual

12

6
12/9/22

Các tính năng của kho lưu trữ

• Versioning – Quản lý phiên bản


• lưu tất cả các phiên bản hệ thống cho phép quản lý hiệu quả các bản phát hành sản phẩm và cho phép
đội ngũ phát triển quay lại các phiên bản trước
• Dependency tracking and change management – Theo dõi các phụ thuộc và quản lý thay
đổi
• Kho lưu trữ quản lý nhiều mối quan hệ khác nhau giữa các thành phần dữ liệu được lưu trữ trong đó.
• Requirements tracing – Theo vết yêu cầu
• Cung cấp khả năng theo dõi tất cả các thành phần thiết kế và xây dựng cũng như các sản phẩm có
được từ một đặc tả yêu cầu cụ thể
• Configuration management – Quản lý cấu hình
• Theo dõi một loạt cấu hình đại diện cho các mốc quan trọng của dự án hoặc bản phát hành sản phẩm.
• Quản lý phiên bản cung cấp các phiên bản cần thiết và quản lý liên kết theo dõi các phụ thuộc lẫn nhau.
• Audit trails – Theo vết kiểm định
• thiết lập thông tin bổ sung về thời gian, lý do và người thay đổi được thực hiện

13

13

Các thành phần trong quản lý cấu hình

• Các phần tử thành phần—một bộ công cụ được kết hợp trong một hệ
thống quản lý tệp (ví dụ: cơ sở dữ liệu) cho phép truy cập và quản lý từng
mục cấu hình phần mềm.
• Các yếu tố quy trình—một tập hợp các thủ tục và nhiệm vụ xác định cách
tiếp cận hiệu quả để quản lý thay đổi (và các hoạt động liên quan) cho tất
cả các thành phần liên quan đến quản lý, kỹ thuật và sử dụng phần mềm
máy tính.
• Các thành phần xây dựng—một bộ công cụ tự động hóa việc xây dựng
phần mềm bằng cách đảm bảo rằng tập hợp các thành phần hợp lệ (nghĩa
là phiên bản chính xác) đã được lắp ráp.
• Yếu tố con người—để triển khai SCM hiệu quả, nhóm phần mềm sử dụng
một bộ công cụ và tính năng quy trình (bao gồm các yếu tố CM khác)

14

14

7
12/9/22

3. Chu trình quản lý cấu hình phần mềm

• Làm thế nào để một nhóm phần mềm xác định các yếu tố khác nhau và
rời rạc của cấu hình phần mềm?
• Làm thế nào để một tổ chức quản lý nhiều phiên bản hiện có của một
chương trình (và tài liệu của nó) theo cách cho phép xem vết thay đổi
được một cách hiệu quả?
• Làm thế nào để một tổ chức kiểm soát các thay đổi trước và sau khi
phần mềm được phát hành cho khách hàng?
• Ai chịu trách nhiệm phê duyệt và xếp hạng các thay đổi?
• Làm thế nào chúng ta có thể đảm bảo rằng các thay đổi đã được thực
hiện đúng cách?
• Cơ chế nào được sử dụng để đánh giá những thành phần khác khi có
những thay đổi được thực hiện?
15

15

Software
Vm.n

reporting

configuration auditing

Chu trình version control

quản lý cấu change control


hình phần identification
mềm
SCIs

16

8
12/9/22

Chu trình quản lý thay đổi

STOP

17

17

Chu trình quản lý thay đổi – Phase 1

Nhận ra rằng thay đổi là cần thiết

Nhận được yêu cầu thay đổi từ người dùng

Đánh giá của các nhà phát triển về thay đổi cần thực hiện

Báo cáo về thay đổi được thành lập


Quyết định về trách nhiệm và vai trò của các bên

Yêu cầu thực hiện thay đổi


Yêu cầu thay đổi bị từ chối
Người dùng được thông báo
Chu trình quản lý thay đổi – Phase II

18

18

9
12/9/22

Chu trình quản lý thay đổi – Phase 2

Phân công công việc theo từng thành phần cấu hình liên quan

Lấy các thành phần trên cấu hình cơ sở về


Thực hiện thay đổi

Xem xét và thẩm định thay đổi

Thiết lập một cấu hình cơ sở mới để kiểm thử

Chu trình quản lý thay đổi – Phase III

19

19

Chu trình quản lý thay đổi – Phase 3

Thực hiện các hoạt động kiểm thử và đảm bảo chất lượng

Cập nhật các thành phần cấu hình thay đổi

Thông báo về các thành phần sẽ thay đổi cho phiên bản bàn giao tiếp theo

Xây dựng phiên bản bàn giao

Thẩm định lại thay đổi

Tich hợp thay đổi vào phiên bản bàn giao

20

20

10
12/9/22

21

4. Version
Control

21

Tại sao cần quản lý mã nguồn?

• Tình huống 1:
• Chương trình chúng ta code đã chạy
• Chúng ta chỉ thay đổi một “chút xíu” trong chương trình
• Chương trình phát sinh lỗi
• Chúng ta thay đổi ngược lại về ban đầu

• Chương trình vẫn không thể chạy như lúc đầu – Tại sao?

22

22

11
12/9/22

Tại sao cần quản lý mã nguồn?

• Tình huống 2:
• Chương trình của bạn đã hoạt động đủ tốt ngày hôm qua
• Bạn đã thực hiện rất nhiều cải tiến đêm qua ...
• ...nhưng bạn vẫn chưa làm cho chúng hoạt động

• Bạn cần chương trình của mình ngay bây giờ ? Làm thế nào để quay về thời điểm
trước khi bạn thực hiện thay đổi?

23

23

Version control for teams

• Tình huống làm việc trong nhóm:


• Một người thay đổi 1 phần trong chương trình và chương trình chạy rất tốt
• Một người khác cũng thay đổi chương trình đó với phần khác và chương trình
chạy tốt
• Khi tích hợp hai thành phần thay đổi lại thì chương trình lại không chạy được
nữa
• Sự thay đổi ở thành phần này khiến cho thành phần khác bị ảnh hưởng

• Làm thế nào để xem xét tất cả các thay đổi vừa thực hiện?

24

24

12
12/9/22

Version control for teams

• Tình huống làm việc nhóm 2:


• Một người thực hiện một loạt thay đổi trên 1 thành phần
• Một người khác cũng thực hiện thay đổi trên thành phần đó

• Làm thế nào để tích hợp các thay đổi?

25

25

Công cụ: diff

• Có một số công cụ giúp phát hiện các thay đổi (sự khác biệt) giữa hai
tệp
• Các công cụ bao gồm diff, rcsdiff, jDiff, v.v.
• Tất nhiên, chúng sẽ không giúp được gì trừ khi chúng ta giữ một bản
sao của phiên bản cũ hơn

• Các công cụ phân biệt rất hữu ích để tìm một số lượng nhỏ khác biệt
trong một vài tệp

26

26

13
12/9/22

jDiff

• jDiff là một plugin của trình soạn thảo jEdit

• Ưu điểm:
• Mọi thứ đều được mã hóa màu
• Sử dụng cuộn được đồng bộ hóa
• Nó nằm trong trình chỉnh sửa—chúng ta có thể thực hiện các thay đổi trực tiếp

• Nhược điểm:
• Không độc lập, phải được sử dụng trong jDiff
• Chỉ là một công cụ tìm khác biệt, không phải là một giải pháp hoàn chỉnh

27

27

jDiff - demo

28

28

14
12/9/22

Hệ thống quản lý mã nguồn

• Hệ thống quản lý phiên bản (thường được gọi là hệ thống kiểm soát mã
nguồn) thực hiện những việc sau:
• Giữ nhiều phiên bản (cũ hơn và mới hơn) của mọi thứ (không chỉ mã
nguồn)
• Yêu cầu mô tả về mọi thay đổi
• Cho phép “check in” và “check out” các tệp để biết người khác đang
làm việc trên tệp nào
• Hiển thị sự khác biệt giữa các phiên bản

29

29

Mô hình quản lý mã nguồn

• 2 mô hình chính:
• Lock-Modify-Unlock
• Copy-Modify-Merge

30

30

15
12/9/22

4.1. Lock-Modify-Unlock
The Lock-Modify-Unlock Model (1) Model
Andy and Bobby
check-out file A.
Repository
The check-out is done
without locking. They A
just get a local copy. Check-out

Check-out
A

Bobby
Andy
32

31

31

The Lock-Modify-Unlock Model (2) Model (2)


4.1. Lock-Modify-Unlock

Andy locks file A and Repository


begins modifying it.
A

Lock
A

Аndy

(Local Edit)
Bobby
Andy
33

32

32

16
12/9/22

The Lock-Modify-Unlock Model (3) Model (3)


4.1. Lock-Modify-Unlock

Bobby tries to lock the


file too, but she can’t. Repository
Bobby waits for Andy to
A
finish and unlock the file. Wait

Andy

Bobby
Andy
34

33

33

The Lock-Modify-Unlock Model (3) Model (4)


4.1. Lock-Modify-Unlock

Bobby tries to lock the


file too, but she can’t. Repository
Bobby waits for Andy to
A
finish and unlock the file. Wait

Andy

Bobby
Andy
34

34

34

17
12/9/22

The Lock-Modify-Unlock Model (5)


4.1. Lock-Modify-Unlock Model (5)

Now Bobby can take the


modified file and lock it. Repository
Bobby edits her local Andy
copy of the file. Lock

Andy

Andy
(Local Edit)

Bobby
Andy
36

35

35

The Lock-Modify-Unlock Model (6)


4.1. Lock-Modify-Unlock Model (6)

Bobby finishes,
Repository
commits her changes
and unlocks the file. Andy
Bobby
Commit

Andy
Bobby

Andy

Bobby
Andy
37

36

36

18
12/9/22

The Lock-Modify-Unlock Model (7)


4.1. Lock-Modify-Unlock Model (7)

Andy updates the


Repository
changes from the
repository. Andy
Bobby

Update Andy
Bobby

Andy
Bobby

Bobby
Andy
38

37

37

The Copy-Modify-Merge Model (1)


Andy and Bobby
check-out a file A.
Repository
The check-out is
done without A
4.2. The locking. Check-out
Copy-
Check-out
Modify- A
Merge
Model (1) A

Bobby
Andy
40

38

38

19
12/9/22

The Copy-Modify-Merge Model (2)


Both of them
edit the local
Repository
copies of the
file (in the A
4.2. The same time).
Copy-
Bobby
Modify-
Merge
Andy
Model (2) (Local Edit)

(Local Edit)
Bobby
Andy
41

39

39

The Copy-Modify-Merge Model (3)

Bobby commits Repository


her changes to
the repository. Bobby Commit

4.2. The
Copy- Bobby
Modify-
Merge
Andy
Model (3)

Bobby
Andy
42

40

40

20
12/9/22

The Copy-Modify-Merge Model (4)

Andy tries to
commit his Repository
changes.
Bobby
A conflict occurs.
4.2. The
Copy- Commit Bobby
Bobby
Modify-
Merge
Model (4) Andy
Andy

(Local
Conflict) Bobby
Andy
43

41

41

The Copy-Modify-Merge Model (5)


Andy updates his
changes with the ones
from the repository. Repository
The changes merge
into his local copy. Bobby
4.2. The
Copy- A merge conflict can
Modify- occur. Bobby
Merge
Model (5) Andy
&
Bobby

(Local
Merge) Bobby
Andy
44

42

42

21
12/9/22

The Copy-Modify-Merge Model (6)


Andy commits the
merged changes to
the repository. Repository
A common version Andy
4.2. The with the changes of &
Bobby
Copy- Andy and Bobby is
Modify- inserted. Commit Bobby
Merge
Model (6) Andy
&
Bobby

Bobby
Andy
45

43

43

The Copy-Modify-Merge Model (7)


Bobby updates the
changes from the
repository. Repository
She gets the common Andy
4.2. The version with both & Update
Bobby
Copy- changes from Andy
Andy
Modify- and Bobby. &
Merge Bobby

Model (7) Andy


&
Bobby

Bobby
Andy
46

44

44

22
12/9/22

Centralized Version Control

4.3. Central vs.


Distributed
Version Control
Only one repository – Version
Control

Source: http://homes.cs.washington.edu/~mernst/advice/version-control.html

45

45

Distributed Version Control

Distributed
Version
Control

Source: http://homes.cs.washington.edu/~mernst/advice/version-control.html
46

46

23
12/9/22

Distributed Version Control (1)


Andy and Bobby
clone the remote
repository locally. Remote
Repository
They both have the (Server)
A
same files in their
Distributed local repositories.
Clone Clone
Version
Control (1)
A A

Local Local
Repository Repository
(Andy) (Bobby)
Andy
Bobby
48

47

47

Distributed Version Control (2)

Andy and Bobby Remote


work locally on a Repository
(Server)
certain file A. A

Distributed
Version
Control (2) (Local Edit)
(Local Edit)
Andy A A Bobby

Local Local
Repository Repository
(Andy) (Bobby)
Andy
Bobby
49

48

48

24
12/9/22

Distributed Version Control (3)


Andy and Bobby
commit locally the Remote
modified file A Repository
(Server)
into their local A
repositories.

Distributed Commit (locally) Commit (locally)


Version
Control (3)
Andy Andy Bobby Bobby

Local Local
Repository Repository
(Andy) (Bobby)
Andy
Bobby
50

49

49

Distributed Version Control (4)


Andy pushes the
file A to the remote Remote
repository. Repository
(Server)
Still no conflicts Andy
occur.
Distributed Push

Version
Control (4)
Andy Andy Bobby Bobby

Local Local
Repository Repository
(Andy) (Bobby)
Andy
Bobby
51

50

50

25
12/9/22

Distributed Version Control (5)

Bobby tries to push


her changes. Remote
Repository
A versioning conflict (Server)
Andy
occurs.

Distributed Push (conflict)


Version
Control (5) Andy Andy Bobby Bobby

Local Local
Repository Repository
(Andy) (Bobby)
Andy
Bobby
52

51

51

Distributed Version Control (6)


Bobby merges the
her local files with
the files from the Remote
Repository
remote repository. (Server)
Andy
Conflicts are locally
resolved.
Distributed Pull (Fetch + Merge)
Version
Control (6) Bobby Bobby
Andy Andy
+Andy +Andy

Local Local
Repository Repository
(Andy) (Bobby)
Andy
Bobby
53

52

52

26
12/9/22

Distributed Version Control (7)

Bobby commits her Remote


merged changes. Repository
(Server)
No version conflict. Bobby
Andy
+Andy

Push (no conflict)


Distributed
Version
Control (7) Andy Andy Bobby Bobby
+Andy +Andy

Local Local
Repository Repository
(Andy) (Bobby)
Andy
Bobby
54

53

53

Distributed Version Control (8)


Andy pulls
(updates) the Remote
changed files Repository
(Server)
from the remote Bobby
Andy
+Andy
repository.
Pull
Distributed
Version
Control (8) Bobby Bobby Bobby Bobby
+Andy +Andy +Andy +Andy

Local Local
Repository Repository
(Andy) (Bobby)
Andy
Bobby
55

54

54

27
12/9/22

Vocabulary (1)

• Repository (source control repository)


• Kho lưu trữ chứa các file đặt tại 1 server
• Lưu trữ các log về thay đổi
• Revision, Version
• Phiên bản (trạng thái) riêng lẻ của 1 tài liệu, là kết quả của nhiều thay đổi
• Check-Out, Clone
• Truy xuất một bản sao hoạt động của các tệp từ kho lưu trữ từ xa vào thư mục cục bộ
• Có thể khóa các tập tin

55

55

Vocabulary (2)

• Change
• Sửa đổi tệp cục bộ (tài liệu) dưới sự kiểm soát phiên bản
• Change Set / Change List
• Một tập hợp các thay đổi đối với nhiều tệp sẽ được đưa lên kho lưu trữ cùng một lúc
• Commit, Check-In
• Gửi các thay đổi được thực hiện từ bản sao làm việc cục bộ tới kho lưu trữ
• Tự động tạo phiên bản mới
• Xung đột có thể xảy ra!

56

56

28
12/9/22

Vocabulary (3)

• Conflict
• Việc thay đổi đồng thời một tệp nhất định bởi nhiều người dùng
• Có thể được giải trừ tự động và thủ công
• Update, Get Latest Version, Fetch / Pull
• Tải xuống phiên bản mới nhất của tệp từ kho lưu trữ vào thư mục làm việc cục bộ +
hợp nhất các tệp xung đột
• Undo Check-Out, Revert / Undo Changes
• Huỷ bỏ các thay đổi cục bộ

57

57

Vocabulary (4)

• Merge
• Kết hợp các thay đổi đối với một tệp được thay đổi cục bộ và đồng thời trong kho lưu
trữ
• Có thể được tự động hóa trong hầu hết các trường hợp
• Label / Tag
• Nhãn đánh dấu tên một nhóm tệp trong một phiên bản nhất định
• Ví dụ như một bản phát hành
• Branch / Branching
• Phân chia các kho lưu trữ trong một số quy trình công việc riêng biệt

58

58

29
12/9/22

Version Control: Typical Scenario


Users Repository
Main
development Version A Branch
User X line (trunk)

Version A.1 Branch


Kịch bản sử Check In
Check Out

dụng chung C A
của các công
cụ quản lý User Y
mã nguồn B Version B Branch
Check Out
D

Merge E
Check In

59
13

59

Công cụ

• Quản lý mã nguồn tập trung


• SVN
• TFS
• Source Safe
• Quản lý mã nguồn phân tán
• GIT
• Mercurial

60

60

30
12/9/22

Git là gì?

• Hệ thống kiểm soát nguồn phân tán


• Làm việc với các kho lưu trữ cục bộ và từ xa
• Git bash – giao diện dòng lệnh cho Git
• Miễn phí, mã nguồn mở
• Có phiên bản Windows (msysGit)
• http://msysgit.github.io
• https://www.atlassian.com/git/tutorials/setting-up-a-repository

61

61

Cài đặt GIT

• msysGit Installation on Windows


• Download Git for Windows from: http://msysgit.github.io
• “Next, Next, Next” does the trick
• Options to select (they should be selected by default)
• “Use Git Bash only”
• “Checkout Windows-style, commit Unix-style endings”
• Git installation on Linux:
sudo apt-get install git

62

62

31
12/9/22

Basic GIT commands (1)

• Check the status of your local repository (see the local changes)
git status
• Creating a new local repository (in the current directory)
git init
• Creating a remote (assign a short name for remote Git URL)
git remote add [remote name] [remote url]
• Pushing to a remote (send changes to the remote repository)
git push [remote name] [local name]

63

63

Basic GIT commands (2)

• Cloning an existing Git repository


• git clone [remote url]
• Fetch and merge the latest changes from the remote repository
• git pull
• Preparing (adding / selecting) files for a commit
• git add [filename] ("git add ."adds everything)
• Committing to the local repository
• git commit –m "[your message here]"

64

64

32
12/9/22

Project Hosting Sites (1)

• GitHub – https://github.com
• The #1 project hosting site in the world
• Free for open-source projects
• Paid plans for private projects
• GitHub provides own Windows client
• GitHub for Windows
• http://windows.github.com
• Dramatically simplifies Git
• For beginners only

65

65

Project Hosting Sites (2)

• Google Code – http://code.google.com/projecthosting/


• Source control (SVN), file release, wiki, tracker
• Very simple, basic functions only, not feature-rich
• Free, all projects are public and open source
• 1-minute signup, without heavy approval process
• SourceForge – http://www.sourceforge.net
• Source control (SVN, Git, ...), web hosting, tracker, wiki, blog, mailing lists, file release,
statistics, etc

66

66

33
12/9/22

Project Hosting Sites (3)

• CodePlex – http://www.codeplex.com
• Microsoft's open source projects site
• Team Foundation Server (TFS) infrastructure
• Source control (TFS), issue tracker, downloads, discussions, wiki, etc.
• Free, all projects are public and open source
• Bitbucket – http://bitbucket.org
• Source control (Mercurial), issue tracker, wiki, management tools
• Private projects, free and paid editions

67

67

Bitbucket Demo

• Introduction to version control


• https://www.youtube.com/watch?v=gY2JwRfin1M
• See Episode 1-> 5
• Bitbucket
• https://www.youtube.com/watch?v=BtEvnE79jxY&list=PL57RkP_325rLuT3EmFTf3lkoLw
93Iw1_8

68

68

34
12/9/22

17 – Configuration Management
(end of lecture)

69

69

35

You might also like