Professional Documents
Culture Documents
10 - Configuration Management-Vn
10 - Configuration Management-Vn
SOICT
School of Information and Communication Technology
1
12/9/22
2
12/9/22
3
12/9/22
programs documents
The pieces
data
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
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ữ 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
12
6
12/9/22
13
13
• 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
• 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
16
8
12/9/22
STOP
17
17
Đánh giá của các nhà phát triển về thay đổi cần thực hiện
18
18
9
12/9/22
Phân công công việc theo từng thành phần cấu hình liên quan
19
19
Thực hiện các hoạt động kiểm thử và đảm bảo chất lượng
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
20
20
10
12/9/22
21
4. Version
Control
21
• 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ì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
• 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
25
25
• 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
• Ư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ý 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
• 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
Lock
A
Аndy
(Local Edit)
Bobby
Andy
33
32
32
16
12/9/22
Andy
Bobby
Andy
34
33
33
Andy
Bobby
Andy
34
34
34
17
12/9/22
Andy
Andy
(Local Edit)
Bobby
Andy
36
35
35
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
Update Andy
Bobby
Andy
Bobby
Bobby
Andy
38
37
37
Bobby
Andy
40
38
38
19
12/9/22
(Local Edit)
Bobby
Andy
41
39
39
4.2. The
Copy- Bobby
Modify-
Merge
Andy
Model (3)
Bobby
Andy
42
40
40
20
12/9/22
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
(Local
Merge) Bobby
Andy
44
42
42
21
12/9/22
Bobby
Andy
45
43
43
Bobby
Andy
46
44
44
22
12/9/22
Source: http://homes.cs.washington.edu/~mernst/advice/version-control.html
45
45
Distributed
Version
Control
Source: http://homes.cs.washington.edu/~mernst/advice/version-control.html
46
46
23
12/9/22
Local Local
Repository Repository
(Andy) (Bobby)
Andy
Bobby
48
47
47
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
Local Local
Repository Repository
(Andy) (Bobby)
Andy
Bobby
50
49
49
Version
Control (4)
Andy Andy Bobby Bobby
Local Local
Repository Repository
(Andy) (Bobby)
Andy
Bobby
51
50
50
25
12/9/22
Local Local
Repository Repository
(Andy) (Bobby)
Andy
Bobby
52
51
51
Local Local
Repository Repository
(Andy) (Bobby)
Andy
Bobby
53
52
52
26
12/9/22
Local Local
Repository Repository
(Andy) (Bobby)
Andy
Bobby
54
53
53
Local Local
Repository Repository
(Andy) (Bobby)
Andy
Bobby
55
54
54
27
12/9/22
Vocabulary (1)
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
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ụ
60
60
30
12/9/22
Git là gì?
61
61
62
62
31
12/9/22
• 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
64
64
32
12/9/22
• 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
66
66
33
12/9/22
• 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
68
68
34
12/9/22
17 – Configuration Management
(end of lecture)
69
69
35