You are on page 1of 32

SẢN PHẨM PHẦN MỀM KỸ THUẬT

SÁCH THẮC MẮC

1
2
Giới thiệu

Các câu hỏi trong cuốn sách này được thiết kế để hỗ trợ việc giảng dạy các khóa học công
nghệ phần mềm dựa trên cuốn sách. Có một bài kiểm tra cho mỗi chương và câu trả lời cho
các câu hỏi trong bài kiểm tra có thể được tìm thấy trong cuốn sách.
Thực hành công nghệ phần mềm không phù hợp với các bài kiểm tra trắc nghiệm có thể
được chấm điểm tự động. Đúng hơn, mỗi câu hỏi trắc nghiệm đều có một câu trả lời ngắn
(thường là một vài từ hoặc một câu).
Các câu đố được thiết kế để cho phép người đọc kiểm tra khả năng nhớ lại những gì đã
được đề cập trong một chương. Câu trả lời cho tất cả các câu hỏi có thể được tìm thấy trong
văn bản và tôi khuyên học sinh nên hoàn thành các câu hỏi sau khi đã học xong tài liệu trong
một chương. Đối với người nói tiếng Anh bản ngữ, không nên mất quá 20 phút để hoàn thành
mỗi bài kiểm tra. Nên cho phép kéo dài hơn một chút nếu học sinh chưa hoàn toàn thông thạo
tiếng Anh.
Các câu đố có thể là sách đóng hoặc sách mở nhưng tôi khuyên bạn nên giảm thời gian
dành cho sách nếu mở sách.
Sách đố vui được cố tình cung cấp ở định dạng MS Word thay vì PDF để giáo viên có
thể sắp xếp lại và trình bày tài liệu dưới dạng phù hợp với lớp học của mình.
Tất cả các câu hỏi và đáp án đều là ©Ian Sommerville 2019. Bạn có thể sửa đổi và
định dạng lại các câu hỏi trắc nghiệm theo yêu cầu nhưng không được phổ biến chúng
ngoại trừ mục đích giảng dạy và hướng dẫn.
Vui lòng không cung cấp câu trả lời cho các câu đố trên máy chủ công cộng.

3
Câu đố Ch 1: Sản phẩm phần mềm

1. Các yêu cầu đối với một hệ thống phần mềm được thiết lập như thế nào trong quy trình
công nghệ phần mềm dựa trên dự án?
2. Tại sao điều quan trọng là sản phẩm phần mềm phải được đưa ra thị trường một cách
nhanh chóng?
3. Dòng sản phẩm phần mềm là gì?
4. Liệt kê ba loại phát triển phần mềm có nhiều điểm chung với phát triển sản phẩm phần
mềm.
5. Tầm nhìn sản phẩm là gì?
6. Những câu hỏi cơ bản nào cần được trả lời trong tầm nhìn sản phẩm?
7. Liệt kê các nguồn thông tin chính có thể được sử dụng để phát triển tầm nhìn sản phẩm.
8. Quản lý sản phẩm phần mềm là gì?
9. Những yếu tố nào người quản lý sản phẩm phần mềm phải xem xét khi họ thực hiện công
việc của mình?
10. Lộ trình sản phẩm là gì?
11. Sản phẩm tồn đọng là gì?
12. Tại sao việc phát triển nguyên mẫu là giai đoạn đầu tiên của quá trình phát triển sản phẩm
lại quan trọng?

4
Ch 1: Đáp án câu hỏi trắc nghiệm
1. Các yêu cầu về phần mềm do khách hàng thiết lập đối với phần mềm dựa trên các vấn đề
họ muốn giải quyết và các quy trình hiện tại của họ (và các hệ thống hiện có).
2. Khách hàng không muốn thay đổi sau khi họ đã đưa ra quyết định về sản phẩm. Vì vậy,
nếu đối thủ cạnh tranh lần đầu tiên tung ra thị trường thì việc thiết lập cơ sở khách hàng
cho sản phẩm đang được phát triển sẽ khó khăn hơn nhiều.
3. Dòng sản phẩm phần mềm là một hệ thống phần mềm (thường là một hệ thống lớn) được
điều chỉnh phù hợp với nhu cầu của khách hàng cụ thể bằng cách thực hiện các thay đổi
đối với một phần của hệ thống. Vì vậy, mỗi khách hàng sẽ có một phiên bản khác nhau
của sản phẩm.
4. Dự án sinh viên, phát triển công cụ nội bộ, phần mềm nghiên cứu.
5. Một tuyên bố ngắn gọn xác định bản chất của sản phẩm đang được phát triển. Nó phải
giải thích sản phẩm này khác với các sản phẩm cạnh tranh như thế nào.
6. Sản phẩm được đề xuất là gì? Khách hàng và người dùng mục tiêu là ai? Tại sao khách
hàng nên mua sản phẩm này?
7. Trải nghiệm miền, trải nghiệm sản phẩm, Trải nghiệm khách hàng, tạo nguyên mẫu và
'chơi đùa'.
8. Quản lý sản phẩm phần mềm là một hoạt động kinh doanh tập trung vào các sản phẩm
phần mềm do doanh nghiệp phát triển và bán. Người quản lý sản phẩm (PM) chịu trách
nhiệm chung về sản phẩm và tham gia vào việc lập kế hoạch, phát triển và tiếp thị.
9. Nhu cầu kinh doanh, hạn chế về công nghệ, trải nghiệm của khách hàng.
10. Một kế hoạch phát triển, phát hành và tiếp thị một sản phẩm phần mềm.
11. Danh sách việc cần làm nêu ra những việc phải làm để hoàn thành quá trình phát triển sản
phẩm.
12. Việc kiểm tra xem bạn muốn làm gì là khả thi và trình diễn phần mềm cho khách hàng
tiềm năng và nhà tài trợ của công ty.

5
Câu đố Ch 2: Kỹ thuật phần mềm linh hoạt

1. Ba mục tiêu chính của công nghệ phần mềm linh hoạt là gì?
2. Phát triển và phân phối gia tăng là gì?
3. Liệt kê năm nguyên tắc phát triển linh hoạt.
4. Các phương pháp lập trình cực đoan được áp dụng rộng rãi nhất là gì?
5. Các nhóm XP được quản lý như thế nào?
6. Scrum là gì?
7. Trách nhiệm chính của Chủ sản phẩm trong nhóm Scrum là gì?
8. 'Gia tăng sản phẩm có khả năng vận chuyển được' là gì?
9. Liệt kê năm lợi ích của việc sử dụng Scrum.
10. Các hoạt động tồn đọng sản phẩm chính trong Scrum là gì?
11. Những yếu tố nào cần được tính đến khi quyết định cần bao nhiêu điểm câu chuyện để
hoàn thành một hạng mục tồn đọng.
12. Tốc độ của nhóm phát triển Scrum có ý nghĩa gì?
13. Giải thích ngắn gọn ba lợi ích chính của việc sử dụng chạy nước rút có khung thời gian.
14. Nhóm Scrum nên làm gì khi lập kế hoạch chạy nước rút?
15. Scrum là gì?
16. Những hoạt động kỹ thuật nào từ XP phải luôn được sử dụng trong quy trình phát triển
Scrum?
17. Liệt kê các mục có thể là một phần của danh sách kiểm tra tính đầy đủ của mã.
18. Đội tự tổ chức là gì?
19. Tại sao giao tiếp bằng lời nói thân mật không phải lúc nào cũng có tác dụng như một
phương tiện phối hợp nhóm?
20. Ba hoạt động quản lý dự án chính là gì? Đối với mỗi hoạt động này, hãy liệt kê hai hoạt
động liên quan là trách nhiệm quản lý.

6
Ch 2: Đáp án câu hỏi trắc nghiệm
1. Cung cấp chức năng nhanh chóng, phản hồi nhanh chóng khi thay đổi thông số kỹ thuật
của sản phẩm, giảm thiểu chi phí phát triển.
2. Việc phát triển và phân phối một sản phẩm phần mềm theo các giai đoạn riêng biệt trong
đó, trong mỗi giai đoạn, một số tính năng của sản phẩm được triển khai và thử nghiệm.
3. Thu hút khách hàng, đón nhận sự thay đổi, phát triển và cung cấp dần dần, duy trì sự đơn
giản, tập trung vào con người chứ không phải xử lý.
4. Lập kế hoạch gia tăng/câu chuyện của người dùng, Bản phát hành nhỏ, phát triển dựa trên
thử nghiệm, tích hợp liên tục, tái cấu trúc.
5. Quản lý là một hoạt động nhóm tập thể, không có người quản lý dự án được chỉ định.
6. Scrum là một khuôn khổ để tổ chức dự án linh hoạt.
7. Chủ sở hữu sản phẩm chịu trách nhiệm đảm bảo rằng nhóm phát triển luôn tập trung vào
sản phẩm mà họ đang xây dựng thay vì chuyển hướng sang công việc ít thú vị hơn về mặt
kỹ thuật.
8. Phần tăng thêm mã có chất lượng sản phẩm tức là mã đã được kiểm tra, xem xét và ghi
lại hoàn chỉnh.
9. Các yêu cầu không ổn định không cản trở tiến độ, các bên liên quan có thể liên quan đến
các bước tăng trưởng của sản phẩm, khách hàng thấy các bước tăng trưởng được giao
đúng hạn, giao tiếp nhóm được cải thiện, niềm tin được thiết lập giữa nhà phát triển và
khách hàng.
10. Sàng lọc, ước tính, sáng tạo, ưu tiên.
11. Quy mô của nhiệm vụ, độ phức tạp của nó. công nghệ cần thiết và những đặc điểm chưa
biết của công việc.
12. Vận tốc của một đội là tổng của các yếu tố kích thước đã được hoàn thành trong một lần
chạy nước rút có độ dài cố định.
13. Sự tiến bộ có thể chứng minh được khi có kết quả đầu ra hữu hình vào cuối mỗi lần chạy
nước rút, lập kế hoạch làm việc trong đó nhóm hiểu được khối lượng công việc có thể
hoàn thành, phát hiện vấn đề để yêu cầu làm lại được giới hạn trong thời gian của một lần
chạy nước rút.
14. Thiết lập mục tiêu chạy nước rút đã được thống nhất, quyết định PBI cần triển khai, tạo
hồ sơ tồn đọng cho nước rút.
15. Scrum là cuộc họp hàng ngày trong đó nhóm thảo luận về những gì đã đạt được và điều
phối công việc của họ cho ngày hôm đó.
16. Kiểm tra tự động hóa và tích hợp liên tục
17. Đã xem xét, kiểm tra đơn vị, tích hợp, kiểm tra tích hợp, chấp nhận.
18. Nhóm phát triển tự đưa ra quyết định về phân bổ công việc, điều phối, tiến độ và tương
tác với bên ngoài.
19. Các thành viên trong nhóm có thể không làm việc toàn thời gian, các thành viên trong
nhóm có thể làm việc từ xa, các thành viên trong nhóm có thể làm việc trên nhiều dự án
cùng một lúc và do đó không thể tham gia các cuộc scrum hàng ngày.

7
20. Báo cáo cho ban quản lý công ty (báo cáo rủi ro, báo cáo tiến độ, rút vốn ngân sách),
quản lý (quản lý tuân thủ, mua sắm thiết bị và vật liệu, phê duyệt chi tiêu), quản lý nhân
sự (quản lý vắng mặt, đánh giá công việc, tuyển dụng)

8
Câu đố Ch 3: Tính năng, Kịch bản và Câu chuyện

1. Những yếu tố nào thúc đẩy việc thiết kế hầu hết các sản phẩm phần mềm?
2. “Tính năng” của sản phẩm phần mềm là gì?
3. Giải thích cách các nhân vật, kịch bản và câu chuyện của người dùng có thể đóng góp vào
thiết kế tính năng.
4. Một nhân cách là gì?
5. Những thông tin nào nên được bao gồm trong một mô tả cá nhân?
6. Kịch bản là gì?
7. Các yếu tố quan trọng nhất có thể được đưa vào mô tả kịch bản là gì?
8. Vấn đề chính khi sử dụng cách tiếp cận có cấu trúc để mô tả kịch bản là gì?
9. Các vấn đề khi viết kịch bản dựa trên mục tiêu là gì?
10. Làm thế nào người dùng có thể tham gia vào việc phát triển các kịch bản?
11. Câu chuyện của người dùng là gì?
12. Hiển thị một dạng câu chuyện điển hình của người dùng và giải thích các phần cấu thành
của nó.
13. Tại sao bạn nên sử dụng câu chuyện của người dùng cũng như các tình huống khi lập
danh sách tính năng cho một sản phẩm phần mềm?
14. Giải thích lý do tại sao bạn thường tránh viết 'những câu chuyện tiêu cực'.
15. Các đặc điểm quan trọng nhất của các tính năng phần mềm là gì?
16. Liệt kê sáu yếu tố quan trọng trong thiết kế bộ tính năng.
17. 'Tính năng leo' là gì?
18. Giải thích cách bạn có thể xác định các tính năng từ mô tả kịch bản.
19. Giải thích cách mô tả và xác định các tính năng bằng cách sử dụng các câu chuyện của
người dùng.
20. Giải thích tại sao chỉ nghiên cứu người dùng là chưa đủ khi thiết kế sản phẩm phần mềm.

9
Ch 3: Đáp án câu hỏi trắc nghiệm
1. Những nhu cầu của doanh nghiệp và người tiêu dùng không được đáp ứng bởi các sản
phẩm hiện tại, Không hài lòng với các sản phẩm hiện có, những thay đổi về công nghệ
tạo ra các loại sản phẩm mới.
2. Tính năng là một phần chức năng được cung cấp bởi một sản phẩm phần mềm.
3. Personas truyền cảm hứng cho các kịch bản; kịch bản được phát triển thành câu chuyện
và tính năng truyền cảm hứng; câu chuyện xác định các tính năng.
4. Nhân cách là một người dùng tưởng tượng trong đó bạn tạo chân dung nhân vật của một
kiểu người dùng có thể sử dụng sản phẩm của bạn.
5. Thông tin về bản thân người đó, công việc, trình độ học vấn và kinh nghiệm của họ cũng
như lý do tại sao họ có thể quan tâm đến việc sử dụng sản phẩm.
6. Tường thuật mô tả cách người dùng hoặc nhóm người dùng có thể sử dụng hệ thống phần
mềm để thực hiện điều gì đó mà họ muốn làm.
7. Tên kịch bản, mục tiêu tổng thể, những gì liên quan đến việc đạt được mục tiêu, tính cách
của các tác nhân liên quan, vấn đề mà hệ thống hiện tại không thể giải quyết, các cách có
thể giải quyết vấn đề và chúng có thể là yêu cầu đưa một tính năng rất cụ thể vào một hệ
thống.
8. Những người dùng phải hiểu các tình huống sẽ thấy các mô tả có cấu trúc đáng sợ và khó
hiểu.
9. Người dùng thường dễ dàng trình bày rõ ràng cách thực hiện một số nhiệm vụ bằng cách
sử dụng hệ thống hiện có thay vì cung cấp mô tả trừu tượng hơn về mục tiêu của họ. Đôi
khi, việc đưa vào các chi tiết triển khai là điều hợp lý vì kịch bản liên quan đến việc sử
dụng chức năng phổ biến phổ biến như cắt và dán.
10. Người dùng tham gia tốt nhất với tư cách là người phê bình kịch bản hơn là người viết
kịch bản. Dựa trên kịch bản ban đầu, người dùng có thể chỉ ra điều gì sai, đề xuất cách
mở rộng nó và đặt câu hỏi về những khía cạnh mà họ không hiểu.
11. Câu chuyện của người dùng là một câu chuyện chi tiết, trình bày một cách có cấu trúc
một điều duy nhất mà người dùng muốn từ một hệ thống phần mềm.
12. Với tư cách là một <vai trò> tôi <muốn|cần> <làm điều gì đó> để <lý do>
13. Câu chuyện của người dùng thêm chi tiết vào kịch bản và có thể dùng làm mô tả tính
năng hệ thống. Chúng đủ chi tiết để có thể được sử dụng cho việc lập kế hoạch triển khai
hệ thống.
14. Bạn nên tránh những câu chuyện tiêu cực vì không thể viết bài kiểm tra chứng minh một
cách thuyết phục điều tiêu cực.
15. Độc lập, gắn kết và phù hợp.
16. Đơn giản, chức năng, quen thuộc, mới lạ, tự động hóa, kiểm soát.
17. Số lượng tính năng của một sản phẩm sẽ 'tăng lên' khi dự tính được những ứng dụng tiềm
năng mới của sản phẩm đó.
18. Đánh dấu các cụm từ chính trong phần mô tả tương tác mô tả chức năng phần mềm cụ thể
được sử dụng.
19. Mô tả tính năng phải bao gồm mô tả tổng thể về tính năng, một tập hợp các câu chuyện
của người dùng trong đó mỗi câu chuyện mô tả các khía cạnh khác nhau của tính năng,

10
các ràng buộc trong việc triển khai tính năng và phần nhận xét về bất kỳ thông tin nào
khác có thể hữu ích khi triển khai tính năng.
20. Nghiên cứu người dùng cho thấy cách mọi người làm việc vào lúc này và có xu hướng
tuân theo những cách làm việc hiện có. Nó không tính đến khả năng đổi mới sản phẩm
làm thay đổi cách thức thực hiện mọi việc.

11
Câu đố Ch 4:

1. Tại sao kiến trúc phần mềm lại quan trọng?


2. Định nghĩa của IEEE về kiến trúc phần mềm là gì?
3. Sự khác biệt giữa kiến trúc bảo mật tập trung và phân tán là gì?
4. Liệt kê các vấn đề kiến trúc quan trọng nhất để phát triển sản phẩm
5. Lựa chọn kiến trúc nào có thể làm tăng khả năng bảo trì hệ thống
6. Giải thích ý nghĩa của tính khả dụng của hệ thống
7. Ba câu hỏi cơ bản bạn nên cân nhắc trong quá trình thiết kế kiến trúc là gì?
8. Liệt kê 4 loại mối quan hệ thành phần phần mềm.
9. Đề xuất ba cách kiểm soát độ phức tạp của kiến trúc.
10. Tại sao đôi khi không thể bản địa hóa các tương tác thành phần trong một lớp duy nhất?
11. Mối quan tâm kiến trúc xuyên suốt là gì?
12. Những loại tích hợp nào có thể thực hiện được khi có nhiều dịch vụ trong một sản phẩm
phần mềm?
13. Tại sao bạn cần xem xét các công nghệ được sử dụng trong kiến trúc phân lớp khi phân
tách hệ thống thành các thành phần?
14. Mô tả ngắn gọn khái niệm về kiến trúc client-server.
15. Chức năng của các thành phần cơ bản của mẫu MVC là gì?
16. JSON là gì và nó khác với XML như thế nào?
17. Kiến trúc hướng dịch vụ là gì?
18. Liệt kê 5 lựa chọn công nghệ mà bạn phải thực hiện khi thiết kế kiến trúc phần mềm
19. Những yếu tố nào phải được xem xét khi triển khai một sản phẩm di động?
20. Ưu điểm và nhược điểm của việc sử dụng phần mềm nguồn mở.

12
Ch 4: Đáp án câu hỏi trắc nghiệm
1. Kiến trúc rất quan trọng vì nó ảnh hưởng đến hiệu suất, khả năng sử dụng, bảo mật, độ tin
cậy và khả năng bảo trì của hệ thống phần mềm.
1.2. Kiến trúc là tổ chức cơ bản của một hệ thống phần mềm được thể hiện trong
các thành phần của nó, các mối quan hệ của chúng dạy cho các thành phần khác cũng
như môi trường và các nguyên tắc hướng dẫn thiết kế và sự phát triển của nó.
1.3. Trong kiến trúc bảo mật tập trung, tất cả tài sản được lưu trữ ở một nơi với các
lớp bảo vệ bảo mật xung quanh chúng. Trong kiến trúc phân tán, tài sản được lưu trữ
ở những nơi khác nhau nên một cuộc tấn công thành công sẽ không giành được quyền
truy cập vào tất cả tài sản.
1.4. Đặc điểm sản phẩm phi chức năng, vòng đời sản phẩm, tái sử dụng phần mềm,
số lượng người dùng, khả năng tương thích của phần mềm.
1.5. Xây dựng một hệ thống từ một số thành phần tương tác chi tiết trong đó mỗi
thành phần có một trách nhiệm duy nhất.
1.6. Tính sẵn sàng được biểu thị bằng phần trăm thời gian khi hệ thống hoạt động
và sẵn sàng cung cấp dịch vụ của mình.
1.7. Một hệ thống nên được tổ chức như một tập hợp các thành phần kiến trúc như
thế nào? Các thành phần nên được phân phối và giao tiếp như thế nào? Những công
nghệ nào nên được sử dụng để xây dựng hệ thống.
1.8. Một phần của, sử dụng, được đặt cùng, chia sẻ dữ liệu với.
1.9. Các thành phần nên tập trung vào việc triển khai một mối quan tâm duy nhất,
chức năng không được trùng lặp ở những vị trí khác nhau trong hệ thống, giao diện
thành phần phải ổn định.
1.10. Vì lý do hiệu quả, có thể cần phải phân chia chức năng để triển khai thành các
lớp riêng biệt (nếu không chức năng sẽ bị trùng lặp). Một số mối lo ngại mang tính
xuyên suốt và không thể bản địa hóa trong một lớp.
1.11. Đây là những mối quan tâm, chẳng hạn như bảo mật và hiệu suất, không thể
tập trung vào một lớp duy nhất trong kiến trúc hệ thống.
1.12. Tích hợp đầy đủ trong đó các dịch vụ nhận biết và có thể giao tiếp với các dịch
vụ khác thông qua API của chúng, tích hợp một phần trong đó các dịch vụ chia sẻ các
thành phần và cơ sở dữ liệu nhưng không tương tác trực tiếp và độc lập khi không có
dịch vụ hoặc cơ sở dữ liệu dùng chung.
1.13. Việc lựa chọn công nghệ được sử dụng trong một lớp sẽ ảnh hưởng đến các
thành phần ở lớp trên.
1.14. Người dùng tương tác bằng máy khách hoặc thiết bị di động, nơi lưu trữ giao
diện người dùng cho hệ thống; chức năng hệ thống được thực hiện trên một máy chủ
từ xa. Giao tiếp bây giờ thường dựa trên giao thức http.
1.15. Model , quản lý dữ liệu sẽ được hiển thị; Chế độ xem, quản lý việc trình bày
hoặc trình bày dữ liệu như được trình bày cho người dùng; Bộ điều khiển, quản lý các
thay đổi được thực hiện đối với mô hình và liên lạc với Chế độ xem để đảm bảo các
biểu diễn được cập nhật.

13
1.16. JSON là ngôn ngữ để mô tả dữ liệu được truyền đạt giữa các thành phần trong
hệ thống; nó khác với XML ở chỗ nó dựa trên một tổ chức có cấu trúc mà không cần
các thẻ rõ ràng cho mọi mục dữ liệu.
1.17. Một kiến trúc trong đó các thành phần phần mềm cơ bản là các dịch vụ phần
mềm độc lập, không trạng thái.
1.18. Cơ sở dữ liệu, nền tảng, máy chủ, mã nguồn mở, công cụ phát triển
1.19. Kết nối không liên tục, sức mạnh xử lý, quản lý năng lượng, bàn phím ảo.
1.20. Ưu điểm: chi phí thấp hơn, phần mềm đã được thử nghiệm và thời gian đưa ra
thị trường nhanh hơn; nhược điểm là thiếu khả năng kiểm soát quá trình phát triển
phần mềm, thiếu lợi thế cạnh tranh và có thể có các điều kiện cấp phép hạn chế.

14
Câu đố Ch 5: Phần mềm trên nền tảng đám mây

1. Bạn hiểu gì về các thuật ngữ khả năng mở rộng và khả năng phục hồi?
2. Liệt kê 4 lợi ích của việc sử dụng đám mây để phát triển phần mềm.
3. Điều gì khiến phần mềm chạy trên máy chủ ảo có thể “chạy mọi nơi”?
4. Container trong điện toán đám mây là gì?
5. Liệt kê các thành phần của hệ thống Docker container.
6. Bốn lợi ích quan trọng nhất của việc sử dụng container là gì?
7. Lợi ích của việc sử dụng PaaS nếu bạn đang phát triển phần mềm dựa trên đám mây là
gì?
8. 'Chức năng như một dịch vụ' là gì?
9. Liệt kê 2 ưu điểm và 2 nhược điểm của SaaS đối với khách hàng.
10. Các vấn đề thiết kế mà bạn phải cân nhắc khi triển khai SaaS là gì?
11. Cơ sở dữ liệu nhiều người thuê là gì?
12. Liệt kê năm tùy chỉnh có thể có cho SaaS.
13. Các vấn đề của việc cung cấp khả năng mở rộng cơ sở dữ liệu bằng cách thêm các trường
bổ sung là gì?
14. Hệ thống đa phiên bản là gì?
15. Liệt kê những ưu điểm và nhược điểm của cơ sở dữ liệu đa phiên bản.
16. Các quyết định kiến trúc quan trọng đối với công nghệ phần mềm đám mây là gì?
17. Các câu hỏi chính cần đặt ra khi lựa chọn một tổ chức cơ sở dữ liệu là gì?
18. Giải thích ngắn gọn cách hệ thống dựa trên đám mây có thể phục hồi.
19. Liệt kê ba vấn đề kỹ thuật và ba vấn đề kinh doanh sẽ ảnh hưởng đến việc lựa chọn nền
tảng đám mây.
20. Thỏa thuận cấp độ dịch vụ (SLA) là gì?

15
Ch 5: Đáp án câu hỏi trắc nghiệm
1. Khả năng mở rộng - khả năng đáp ứng nhu cầu ngày càng tăng mà không làm giảm dịch
vụ hoặc hiệu suất; khả năng phục hồi - khả năng tiếp tục cung cấp dịch vụ bất chấp lỗi
phần mềm hoặc phần cứng.
2. Không tốn chi phí vốn, không chậm trễ trong việc thiết lập máy chủ, lựa chọn loại máy
chủ, khả năng phát triển phân tán.
3. Tất cả phần mềm cần thiết đều được tải lên máy chủ ảo nên đơn vị có tính di động là máy
chủ chứ không phải chương trình riêng lẻ.
4. Một công nghệ ảo hóa hệ điều hành nhẹ có thể chứa tất cả phần mềm cần thiết để chạy
một chương trình.
5. Trình nền Docker, ứng dụng khách Docker, Dockerfiles, Hình ảnh, Docker hub,
Container.
6. Thời gian khởi động nhanh, cơ chế di chuyển phần mềm trên các đám mây, cơ chế chạy
dịch vụ hiệu quả, hỗ trợ DevOps.
7. Bạn có thể sử dụng chức năng do nhà cung cấp đám mây cung cấp để giúp dễ dàng mở
rộng quy mô phần mềm của mình (tăng hoặc giảm) và làm cho phần mềm trở nên linh
hoạt.
8. Một chức năng duy nhất được triển khai dưới dạng dịch vụ không cần máy chủ rõ ràng;
nhà cung cấp đám mây khởi động chức năng khi được yêu cầu và tắt nó khi không còn
cần thiết.
9. Ưu điểm:Không mất chi phí trả trước cho phần mềm hoặc máy chủ, Cập nhật phần mềm
ngay lập tức, giảm chi phí quản lý.
Nhược điểm: Khóa dịch vụ, có thể truyền dữ liệu chậm, các vấn đề về quy định quyền
riêng tư.
10. Xử lý cục bộ/từ xa, xác thực, rò rỉ thông tin, quản lý cơ sở dữ liệu nhiều đối tượng thuê
hoặc đa phiên bản
11. Cơ sở dữ liệu nơi thông tin của tất cả khách hàng được lưu giữ trong cùng một cơ sở dữ
liệu và được xác định bằng cách sử dụng một số mã định danh khách hàng.
12. Xác thực, xây dựng thương hiệu, quy tắc kinh doanh, lược đồ dữ liệu, kiểm soát truy cập
13. Cần bao gồm bao nhiêu trường bổ sung? Cách cung cấp tính năng gõ khi các khách hàng
khác nhau cần lưu trữ các loại dữ liệu khác nhau trong từng trường bổ sung.
14. Hệ thống SaaS nơi có cơ sở dữ liệu riêng cho từng khách hàng.
15. Thuận lợi; linh hoạt hơn, an toàn hơn, dễ dàng mở rộng quy mô hơn, dễ dàng cung cấp
khả năng phục hồi hơn; Nhược điểm: chi phí cao hơn, quản lý cập nhật chậm hơn và tốn
kém hơn.
16. Cơ sở dữ liệu: nhiều người thuê hoặc nhiều phiên bản; Khả năng mở rộng: các yêu cầu về
khả năng mở rộng và khả năng phục hồi là gì; Cấu trúc phần mềm: nguyên khối hoặc
microservices
17. Ai là khách hàng mục tiêu, có cần giao dịch ACID không, cơ sở dữ liệu sẽ lớn đến mức
nào, có cần chuyển thông tin từ cơ sở dữ liệu này sang cơ sở dữ liệu khác không, DB có
thể được tổ chức thành một tập hợp các cơ sở dữ liệu nhỏ hơn cho các dịch vụ vi mô hay
không.

16
18. Sao chép phần mềm trong các thùng chứa trên các máy chủ vật lý khác nhau; cung cấp
các cơ chế như sao chép cơ sở dữ liệu, để chuyển sang bản sao trong trường hợp hệ thống
giám sát phát hiện lỗi.
19. Kỹ thuật: Khả năng phục hồi, quyền riêng tư và bảo vệ dữ liệu, tải dự kiến; Kinh doanh:
Chi phí, kinh nghiệm của nhà phát triển, thỏa thuận cấp độ dịch vụ
20. Thỏa thuận giữa người dùng đám mây và nhà cung cấp đám mây đặt ra mức độ dịch vụ
mong đợi từ nhà cung cấp đám mây.

17
Câu đố Ch 6: Microservices

1. Dịch vụ vi mô là gì?
2. Liệt kê năm đặc điểm của microservice.
3. Khớp nối là gì và tại sao nó quan trọng trong kiến trúc microservices?
4. Nguyên tắc trách nhiệm duy nhất là gì?
5. Giải thích ý nghĩa của 'quy tắc số hai'.
6. Cần có mã hỗ trợ nào trong microservice?
7. Những vấn đề cơ bản nào được giải quyết theo phong cách kiến trúc microservices?
8. Liệt kê 3 câu hỏi thiết kế chính cần được giải quyết khi thiết kế kiến trúc microservice.
9. Bốn nguyên tắc thiết kế chung hỗ trợ việc phân tách hệ thống thành các vi dịch vụ là gì.
10. Sự khác biệt giữa tương tác vi dịch vụ đồng bộ và không đồng bộ là gì?
11. Giải thích ý nghĩa của giao tiếp dịch vụ gián tiếp.
12. Giải thích ý nghĩa của sự không nhất quán trong bản sao.
13. Giao dịch đền bù là gì và khi nào giao dịch đền bù được sử dụng.
14. Tính nhất quán cuối cùng là gì?
15. Giải thích sự khác biệt giữa dàn nhạc và vũ đạo.
16. Liệt kê ba loại lỗi có thể xảy ra trong kiến trúc microservices.
17. Bộ ngắt mạch hoạt động như thế nào?
18. Trong phong cách RESTful, tài nguyên là gì?
19. Bốn hoạt động dịch vụ RESTful cơ bản là gì và chúng ánh xạ tới các động từ HTTP như
thế nào?
20. Tại sao bạn nên sử dụng các dịch vụ được phiên bản trong kiến trúc microservices?

18
Ch 6: Đáp án câu hỏi trắc nghiệm
1. Một thành phần phần mềm không trạng thái, quy mô nhỏ, hoàn toàn độc lập và thực hiện
một chức năng kinh doanh duy nhất.
2. khép kín, nhẹ, triển khai độc lập, có thể triển khai độc lập, định hướng kinh doanh.
3. Khớp nối là thước đo số lượng mối quan hệ giữa các thành phần. Để độc lập, các thành
phần phải có khớp nối thấp.
4. Mỗi phần tử trong hệ thống nên làm một việc và phải làm tốt việc đó.
5. Một microservice có thể được phát triển trong hai tuần; một nhóm phát triển microservice
phải đủ nhỏ để có thể ăn được bằng hai chiếc pizza lớn.
6. Mã quản lý tin nhắn, mã quản lý lỗi, mã triển khai giao diện người dùng, mã quản lý tính
nhất quán của dữ liệu.
7. Chỉ những phần của hệ thống đã được thay đổi mới cần được kiểm tra lại và triển khai
lại; không cần thiết phải mở rộng quy mô toàn bộ hệ thống khi nhu cầu về các bộ phận
của hệ thống tăng lên.
8. Ba dịch vụ bất kỳ từ: microservice nào tạo nên hệ thống; microservice nên giao tiếp như
thế nào; lỗi dịch vụ nên được phát hiện và quản lý như thế nào; các dịch vụ vi mô nên
được phối hợp như thế nào; dữ liệu nên được phân phối và chia sẻ như thế nào.
9. Cân bằng chức năng chi tiết và hiệu suất hệ thống; tuân theo nguyên tắc đóng cửa chung;
liên kết dịch vụ với khả năng kinh doanh; thiết kế các dịch vụ để họ chỉ truy cập vào dữ
liệu mà họ cần.
10. Tương tác đồng bộ: một microservice đưa ra yêu cầu tới một dịch vụ khác và chờ phản
hồi của dịch vụ đó; Tương tác không đồng bộ: khi yêu cầu dịch vụ được thực hiện, dịch
vụ yêu cầu sẽ tiếp tục xử lý và không chờ phản hồi.
11. Giao tiếp dịch vụ gián tiếp có nghĩa là dịch vụ yêu cầu không yêu cầu dịch vụ bằng địa
chỉ (URI) của nó mà yêu cầu dịch vụ theo tên. Nhà môi giới dịch vụ có trách nhiệm
chuyển yêu cầu dịch vụ đến dịch vụ được đặt tên và trả lời phản hồi cho dịch vụ yêu cầu.
12. Sự không nhất quán trong bản sao có nghĩa là các phiên bản khác nhau của cùng một dịch
vụ có cơ sở dữ liệu không nhất quán.
13. Giao dịch bù trừ là giao dịch đảo ngược hoạt động trước đó. Chúng được sử dụng khi một
trong các dịch vụ trong quá trình tương tác bị lỗi sau khi các dịch vụ khác đã thay đổi cơ
sở dữ liệu của chúng để khôi phục tính nhất quán.
14. Tính nhất quán cuối cùng có nghĩa là nó được đảm bảo rằng tất cả cơ sở dữ liệu trong các
dịch vụ bản sao cuối cùng sẽ trở nên nhất quán.
15. Trong hệ thống được điều phối, có một bộ điều khiển dịch vụ duy nhất chịu trách nhiệm
quản lý các tương tác dịch vụ; trong một hệ thống được dàn dựng, không có bộ điều
khiển trung tâm và mỗi dịch vụ sẽ phát ra các sự kiện để cho biết nó đã được xử lý xong.
Các dịch vụ cần phối hợp, theo dõi những sự kiện này và phản ứng khi chúng được quan
sát.
16. Lỗi dịch vụ bên trong, lỗi dịch vụ bên ngoài, lỗi hiệu suất dịch vụ.
17. Các yêu cầu dịch vụ được định tuyến thông qua bộ ngắt mạch giám sát các dịch vụ được
yêu cầu để kiểm tra xem chúng có sẵn không. Nếu một dịch vụ không khả dụng, yêu cầu

19
dịch vụ sẽ bị từ chối ngay lập tức mà không cần dịch vụ yêu cầu phải chờ xem yêu cầu đã
được xử lý hay chưa.
18. Tài nguyên là một mục thông tin có địa chỉ duy nhất được truy cập thông qua URI của
nó.
19. Tạo (HTTP POST), Đọc (HTTP GET), Cập nhật (HTTP PUT), Xóa (HTTP DELETE).
20. Nên sử dụng các dịch vụ đã được phiên bản để trong trường hợp dịch vụ bị lỗi sau khi
cập nhật, các yêu cầu có thể được chuyển đến phiên bản trước của dịch vụ; chúng cũng
cho phép các dịch vụ dựa trên các tính năng của phiên bản dịch vụ cũ hơn tiếp tục hoạt
động cho đến khi chúng được cập nhật.

20
Câu đố Ch 7: Bảo mật và quyền riêng tư

1. Liệt kê ba loại mối đe dọa an ninh.


2. Liệt kê bốn loại thủ tục quản lý cần thiết để duy trì an ninh hệ thống tổng thể.
3. Đề xuất ba tính năng có thể được đưa vào các hệ thống dựa trên đám mây để giúp người
dùng bảo mật hoạt động.
4. Một cuộc tấn công tiêm chích là gì?
5. Tấn công kịch bản chéo trang hoạt động như thế nào?
6. Chiếm quyền điều khiển phiên là gì?
7. Tấn công từ chối dịch vụ phân tán là gì?
8. Liệt kê ba cách xác thực người dùng sản phẩm phần mềm.
9. Điểm yếu chính của xác thực dựa trên mật khẩu là gì?
10. Giải thích ý nghĩa của 'bản sắc liên kết'.
11. 'Danh sách kiểm soát truy cập' là gì?
12. Sự khác biệt giữa mã hóa đối xứng và bất đối xứng là gì?
13. Tại sao chúng ta tiếp tục sử dụng mã hóa đối xứng?
14. Liệt kê năm thành phần chính của chứng chỉ số.
15. Bốn cấp độ khác nhau trong một hệ thống nơi dữ liệu có thể được mã hóa là gì?
16. Hạn chế chính của mã hóa cấp ứng dụng là gì?
17. Giải thích ngắn gọn ý nghĩa của 'quản lý khóa'.
18. 'Quyền riêng tư' là gì?
19. Những lĩnh vực nào có thể được bảo vệ bởi luật bảo vệ dữ liệu?
20. Liệt kê 5 nguyên tắc bảo vệ dữ liệu làm nền tảng cho GDPR.

21
Quiz Ch 7: Đáp án câu hỏi trắc nghiệm
1. Các mối đe dọa đối với tính sẵn sàng của hệ thống, các mối đe dọa đối với tính toàn vẹn
của hệ thống hoặc dữ liệu của hệ thống, các mối đe dọa đối với tính bảo mật của dữ liệu
do hệ thống quản lý.
2. Quản lý xác thực và ủy quyền, quản lý cơ sở hạ tầng hệ thống, giám sát tấn công, chính
sách và quản lý sao lưu.
3. Tự động đăng xuất, ghi lệnh người dùng, xác thực đa yếu tố.
4. Một kiểu tấn công trong đó người dùng độc hại sử dụng trường nhập hợp lệ để nhập mã
độc hoặc lệnh cơ sở dữ liệu nhằm mục đích gây ra một số thiệt hại cho hệ thống.
5. Kẻ tấn công đưa mã độc vào một trang web hợp pháp bằng cách sử dụng một số điểm yếu
về bảo mật. Khi một yêu cầu hợp lệ được gửi tới trang web đó, mã độc sẽ được thực thi
và thông tin, chẳng hạn như tổ hợp phím của người dùng, sẽ được gửi từ trình duyệt của
người dùng đến kẻ tấn công.
6. Chiếm quyền điều khiển phiên là một kiểu tấn công trong đó thông tin xác thực được
thiết lập trong phiên người dùng (cookie phiên) bị đánh cắp bởi kẻ tấn công sử dụng
thông tin này để mạo danh người dùng hợp pháp.
7. Kẻ tấn công từ chối dịch vụ phân tán liên quan đến một mạng lưới các máy tính từ xa làm
tràn ngập một trang web hợp pháp với các yêu cầu khiến nó bị quá tải và không thể cung
cấp dịch vụ bình thường.
8. Thứ gì đó mà người dùng biết như mật khẩu, thứ gì đó mà người dùng sở hữu, chẳng hạn
như điện thoại di động, một số thuộc tính của người dùng như dấu vân tay.
9. Mật khẩu không an toàn, tấn công lừa đảo, sử dụng lại mật khẩu, quên mật khẩu.
10. Danh tính liên kết là một phương pháp xác thực trong đó trang web xác thực dựa vào dịch
vụ bên ngoài, chẳng hạn như Google, để xác thực người dùng.
11. Danh sách kiểm soát truy cập là danh sách các quyền của người dùng đặt ra quyền truy
cập vào tài nguyên hệ thống được phép cho mỗi người dùng.
12. Trong mã hóa đối xứng, cùng một khóa được sử dụng để mã hóa và giải mã thông tin bí
mật; trong mã hóa bất đối xứng, một khóa khác được sử dụng để mã hóa và giải mã.
13. Mã hóa đối xứng được sử dụng rộng rãi vì nó nhanh hơn nhiều so với mã hóa bất đối
xứng.
14. Thông tin chủ đề về chủ sở hữu chứng chỉ, thông tin tổ chức phát hành chứng chỉ, thông
tin chứng chỉ, chữ ký số của chứng chỉ, thông tin khóa công khai của chủ sở hữu chứng
chỉ.
15. Cấp độ phương tiện (ví dụ: mã hóa ổ đĩa), cấp độ tệp, cấp độ cơ sở dữ liệu, cấp độ ứng
dụng.
16. Hầu hết các kỹ sư phần mềm không phải là chuyên gia mã hóa và do đó có thể mắc lỗi
trong quá trình triển khai mã hóa, mã hóa và giải mã làm chậm hiệu suất ứng dụng, các
khóa mã hóa phải được quản lý cẩn thận trong KMS.
17. Quản lý khóa có nghĩa là tạo và lưu trữ an toàn các khóa mã hóa cũng như quản lý các
khóa này theo thời gian. Chúng phải được liên kết với đúng phiên bản của thông tin được
mã hóa.

22
18. Quyền riêng tư là một khái niệm xã hội liên quan đến việc thu thập, phổ biến và sử dụng
thông tin cá nhân do bên thứ ba nắm giữ.
19. Trách nhiệm của người kiểm soát dữ liệu như lưu trữ dữ liệu, sử dụng dữ liệu, bảo mật và
quyền truy cập của chủ thể. Quyền của chủ thể dữ liệu bao gồm quyền truy cập, sửa lỗi,
xóa dữ liệu và đồng ý sử dụng.
20. Bất kỳ năm từ nào: người dùng phải biết dữ liệu nào được thu thập và có quyền kiểm soát
việc sử dụng dữ liệu đó, mục đích thu thập và lưu trữ dữ liệu phải được giải thích, phải có
sự đồng ý của người dùng đối với việc lưu trữ dữ liệu, dữ liệu chỉ được lưu trữ trong
khoảng thời gian bắt buộc, dữ liệu phải được lưu trữ an toàn, người dùng phải có khả
năng tìm hiểu thông tin nào được lưu trữ và được phép sửa lỗi, dữ liệu không được lưu
trữ ở các quốc gia có luật bảo vệ dữ liệu yếu hơn.

23
Câu đố Ch 8: Lập trình đáng tin cậy

1. Các nhóm thuộc tính chất lượng chính là gì và mỗi nhóm có những thuộc tính gì?
2. Liệt kê ba kỹ thuật chi phí thấp để cải thiện độ tin cậy của phần mềm.
3. Giải thích ý nghĩa của từ 'tránh lỗi'.
4. Hãy đưa ra ba nguyên nhân cơ bản gây ra lỗi chương trình.
5. Độ phức tạp của chương trình là gì?
6. Tại sao độ phức tạp tăng lên dẫn đến lỗi chương trình?
7. Ba loại độ phức tạp chính của chương trình là gì?
8. Cho 2 ví dụ về hướng dẫn giảm độ phức tạp cho từng loại độ phức tạp của chương trình
mà bạn đã xác định ở câu hỏi 7.
9. Tại sao điều quan trọng là phải tránh hệ thống phân cấp thừa kế sâu?
10. 'Mẫu thiết kế' là gì?
11. Liệt kê ba nhóm phân loại có thể có cho các mẫu thiết kế.
12. 'Tái cấu trúc chương trình' là gì?
13. Đưa ra bốn ví dụ về 'mùi mã'.
14. 'Xác thực đầu vào' nghĩa là gì?
15. Liệt kê bốn cách thực hiện xác nhận đầu vào.
16. Biểu thức chính quy là gì và nó hữu ích như thế nào trong việc xác thực đầu vào.
17. Tại sao việc kiểm tra số lại quan trọng?
18. Ba loại lỗi phần mềm quan trọng nhất là gì?
19. 'Ngoại lệ' và 'xử lý ngoại lệ' của chương trình nghĩa là gì?
20. Giải thích hai cơ chế có thể được sử dụng để giúp người dùng khôi phục công việc sau
khi hệ thống gặp lỗi.

24
Quiz Ch 8: Đáp án câu hỏi trắc nghiệm
1. Thuộc tính độ tin cậy (độ tin cậy, tính sẵn có, bảo mật, khả năng phục hồi), thuộc tính trải
nghiệm người dùng (khả năng đáp ứng, khả năng sử dụng), khả năng bảo trì.
2. Tránh lỗi, xác nhận đầu vào, quản lý lỗi.
3. Tránh lỗi là một cách tiếp cận lập trình với mục đích là tránh các lỗi được đưa vào
chương trình và do đó, giảm lỗi chương trình.
4. Lập trình viên mắc sai lầm vì (1) họ không hoàn toàn hiểu vấn đề họ đang cố gắng giải
quyết (2) họ sử dụng công nghệ không phù hợp hoặc không hiểu các công nghệ được sử
dụng (3) họ mắc lỗi đơn giản hoặc không hiểu ý nghĩa của các thành phần tương tác.
5. Độ phức tạp của một chương trình phụ thuộc vào số lượng các mối quan hệ giữa các
thành phần trong chương trình cũng như loại và tính chất của các mối quan hệ này.
6. Độ phức tạp ngày càng tăng dẫn đến sai sót vì bộ não của chúng ta chỉ có thể xử lý một
lượng lượng thông tin hạn chế trong trí nhớ ngắn hạn. Độ phức tạp càng cao thì càng phải
truyền nhiều thông tin giữa bộ nhớ ngắn hạn và dài hạn và dễ xảy ra lỗi trong quá trình
truyền thông tin này.
7. Độ phức tạp về cấu trúc, độ phức tạp của dữ liệu, độ phức tạp có điều kiện.
8. Độ phức tạp về cấu trúc (các hàm chỉ nên làm một việc và một việc duy nhất, các hàm
không bao giờ có tác dụng phụ), độ phức tạp dữ liệu (xác định giao diện cho tất cả các
khái niệm trừu tượng, xác định kiểu dữ liệu trừu tượng), độ phức tạp có điều kiện (tránh
các câu lệnh điều kiện lồng nhau sâu, tránh các biểu thức điều kiện phức tạp ). Các hướng
dẫn khác từ Bảng 8.1 cũng có thể thực hiện được.
9. Bạn nên tránh các hệ thống phân cấp kế thừa sâu vì bạn phải kiểm tra tất cả các lớp cao
hơn trong hệ thống phân cấp khi thực hiện các thay đổi đối với một lớp đối tượng ở mức
thấp. Điều này liên quan đến việc xử lý nhiều thông tin hơn và do đó có khả năng xảy ra
lỗi.
10. Một giải pháp chung có thể tái sử dụng cho một vấn đề thường xảy ra trong bối cảnh nhất
định trong thiết kế phần mềm.
11. Các mô hình sáng tạo, các mô hình cấu trúc, các mô hình hành vi.
12. Thay đổi chương trình để giảm độ phức tạp của nó mà không thay đổi hành vi bên ngoài
của chương trình.
13. Bất kỳ bốn từ nào: lớp lớn, phương thức/hàm dài, mã trùng lặp, tên vô nghĩa, mã không
được sử dụng.
14. Xác thực đầu vào có nghĩa là kiểm tra mọi đầu vào của chương trình để đảm bảo rằng nó
có định dạng đúng và nằm trong phạm vi được xác định bởi quy tắc đầu vào.
15. Các hàm xác thực tích hợp, hàm ép buộc kiểu, so sánh rõ ràng, biểu thức chính quy.
16. Biểu thức chính quy là định nghĩa của mẫu văn bản. Để sử dụng trong xác thực đầu vào,
bạn xác định biểu thức chính quy dựa trên các quy tắc cú pháp cho đầu vào dự kiến và
kiểm tra xem đầu vào có khớp với mẫu đó không.
17. Việc kiểm tra số rất quan trọng vì các số quá lớn hoặc quá nhỏ có thể dẫn đến hoạt động
không thể đoán trước của chương trình và vì các giá trị không hợp lệ của một số sẽ 'làm ô
nhiễm' cơ sở dữ liệu và ảnh hưởng đến các chương trình/chức năng khác sử dụng thông
tin đó.

25
18. Lỗi dữ liệu, ngoại lệ chương trình, lỗi thời gian.
19. Ngoại lệ chương trình là một sự kiện bất ngờ hoặc bất thường xảy ra trong quá trình thực
hiện chương trình; trình xử lý ngoại lệ là một đơn vị chương trình bao gồm mã để xử lý
các sự kiện không mong muốn như vậy.
20. Ghi nhật ký hoạt động và tự động lưu dữ liệu người dùng trong các phiên tương tác.

26
Câu đố Ch 9: Kiểm tra

1. Liệt kê hai nguyên nhân gây ra lỗi chương trình.


2. Xác định ý nghĩa của 'kiểm tra chức năng'.
3. Ngoài thử nghiệm chức năng, hãy liệt kê ba loại thử nghiệm chương trình khác.
4. Hai giai đoạn thử nghiệm người dùng là gì?
5. Nguyên tắc chung nào làm nền tảng cho thử nghiệm đơn vị?
6. Phân vùng tương đương là gì? Cho một ví dụ.
7. Liệt kê năm hướng dẫn kiểm tra đơn vị.
8. Hai loại thử nghiệm liên quan đến thử nghiệm tính năng là gì?
9. Kiểm tra hệ thống liên quan đến bốn điều gì?
10. Con đường từ đầu đến cuối là gì?
11. Bạn hiểu thế nào về 'kiểm tra có thể thực hiện được'?
12. Phác thảo ngắn gọn cấu trúc thường được sử dụng cho một bài kiểm tra thực thi.
13. Kiểm tra hồi quy là gì?
14. Các công cụ ghi lại tương tác hỗ trợ kiểm tra hệ thống như thế nào?
15. Phát triển dựa trên thử nghiệm là gì?
16. Lợi ích của việc phát triển dựa trên thử nghiệm là gì?
17. Liệt kê ba thách thức chính của kiểm tra bảo mật.
18. Cho năm ví dụ về rủi ro bảo mật.
19. Ba vấn đề cơ bản của thử nghiệm là gì?
20. Phác thảo ngắn gọn quá trình xem xét mã.

27
Câu đố Ch 9: Đáp án câu hỏi trắc nghiệm
1. Lỗi lập trình và lỗi hiểu biết
2. Kiểm tra chức năng của chương trình để tìm lỗi và chứng minh rằng phần mềm hoạt động
như mong đợi.
3. Kiểm tra người dùng, kiểm tra hiệu suất và tải, kiểm tra bảo mật.
4. Thử nghiệm Alpha, trong đó mục đích của thử nghiệm là trả lời câu hỏi 'người dùng có
muốn các tính năng hệ thống theo kế hoạch không?' và thử nghiệm beta trong đó người
dùng kiểm tra khả năng sử dụng của sản phẩm.
5. Nếu một chương trình hoạt động như mong đợi đối với một tập hợp đầu vào có một số
đặc điểm chung thì nó cũng sẽ hoạt động theo cách tương tự đối với một tập hợp lớn hơn
có các thành viên có chung những đặc điểm này.
6. Một tập hợp các đầu vào có một số đặc điểm chung, chẳng hạn như số nguyên dương nhỏ
hơn 1000.
7. Năm bất kỳ từ: kiểm tra các trường hợp cạnh, lỗi bắt buộc, điền vào bộ đệm, lặp lại chính
bạn, tràn và tràn, đừng quên null và 0, giữ nguyên số lượng, một cái thì khác.
8. Kiểm tra tương tác và kiểm tra tính hữu ích.
9. Kiểm tra để khám phá các tương tác của tính năng, kiểm tra để khám phá xem các tính
năng có làm theo ý muốn của người dùng hay không, kiểm tra hệ thống trong các môi
trường hoạt động khác nhau, kiểm tra khả năng phản hồi của hệ thống, bảo mật, v.v.
10. Một chuỗi các sự kiện của người dùng thể hiện sự tương tác của người dùng từ đầu đến
cuối. Thông thường, chúng sẽ sử dụng một số tính năng của hệ thống.
11. Kiểm thử thực thi là một thành phần chương trình có thể được thực thi và có thể tự động
xác định xem kiểm thử có thành công hay không.
12. Sắp xếp - setup hệ thống để chạy thử; Hành động - gọi đơn vị đang được thử nghiệm;
Khẳng định - kiểm tra kết quả kiểm tra so với kết quả mong đợi.
13. Kiểm tra hồi quy là quá trình chạy các thử nghiệm hiện có khi một thay đổi được thực
hiện đối với chương trình để kiểm tra xem thay đổi đó có ảnh hưởng xấu đến chức năng
đã được kiểm tra trước đó hay không.
14. Họ ghi lại chuyển động của chuột và nhấp chuột, lựa chọn menu và tổ hợp phím. Sau đó,
chúng có thể được phát lại để lặp lại bài kiểm tra. Chúng cũng cho phép viết và thực thi
các kịch bản kiểm thử.
15. TDD là quá trình viết bài kiểm tra đơn vị trước khi xác định chức năng của đơn vị
chương trình. Sau đó, thiết bị này được sửa đổi để vượt qua bài kiểm tra viết trước đó.
Điều này có nghĩa là một đơn vị phải luôn vượt qua tất cả các bài kiểm tra viết trước đó.
16. Các thử nghiệm được liên kết rõ ràng với các phần mã, các thử nghiệm đóng vai trò là
đặc tả cho mã, việc gỡ lỗi được đơn giản hóa vì nó được liên kết với mã được viết gần
đây nhất, TDD có thể dẫn đến mã đơn giản hơn.
17. Nó liên quan đến việc kiểm tra những thứ mà hệ thống không nên thực hiện, các lỗ hổng
thường ẩn trong mã hiếm khi được sử dụng nên không được tiết lộ trong các thử nghiệm
chức năng, các lỗ hổng có thể đến từ phần mềm bên ngoài như trình duyệt, v.v.
18. Bất kỳ năm từ nào: Kẻ tấn công giành quyền truy cập bằng thông tin xác thực được ủy
quyền, người dùng được ủy quyền truy cập tài nguyên bị cấm, hệ thống xác thực không

28
xác định kẻ tấn công, kẻ tấn công giành quyền truy cập cơ sở dữ liệu bằng cách sử dụng
SQL, phiên HTTTP được quản lý không đúng cách, cookie phiên bị tiết lộ cho kẻ tấn
công, dữ liệu bí mật không được mã hóa, mã hóa khóa được lưu trữ không an toàn.
19. Kiểm thử phụ thuộc vào sự hiểu biết của người kiểm thử về những gì mã nên làm và điều
này có thể không chính xác, kiểm thử đôi khi khó thiết kế nên phạm vi kiểm thử không
đầy đủ, kiểm thử không cho bạn biết bất cứ điều gì về các thuộc tính của chương trình
như khả năng đọc hoặc cấu trúc.
20. Thiết lập review và phân phối code để review (lập trình viên), kiểm tra code và viết báo
cáo review (reviewer), thảo luận các đề xuất review (lập trình viên và reviewer), thực
hiện thay đổi code (lập trình viên)

29
Câu đố Ch 10: DevOps và quản lý mã

1. Bạn hiểu thuật ngữ 'DevOps' là gì?


2. Ba yếu tố nào dẫn đến sự phát triển và áp dụng DevOps?
3. Ba nguyên tắc cơ bản của Devops là gì?
4. Liệt kê bốn lợi ích quan trọng của Devops.
5. Quản lý mã là gì?
6. Những lĩnh vực chung nào được hệ thống quản lý mã hỗ trợ?
7. Liệt kê năm tính năng của hệ thống quản lý mã.
8. Ba ưu điểm của hệ thống quản lý mã phân tán là gì?
9. 'Chi nhánh và hợp nhất' là gì?
10. Bốn khía cạnh của tự động hóa DevOps là gì?
11. Mục đích chính của hệ thống quản lý vấn đề là gì?
12. Tích hợp liên tục có nghĩa là gì?
13. Việc xây dựng hệ thống gia tăng hoạt động như thế nào?
14. Phân phối liên tục là gì và nó khác với triển khai liên tục như thế nào?
15. Liệt kê bốn lợi ích của việc triển khai liên tục.
16. 'Cơ sở hạ tầng như mã' nghĩa là gì?
17. Lợi ích chính của việc thể hiện cơ sở hạ tầng của bạn dưới dạng mã là gì?
18. Bốn loại phép đo có thể được sử dụng trong phát triển phần mềm là gì?
19. Tại sao việc liên kết các phép đo thành công của doanh nghiệp với các phép đo phần
mềm khác là không đáng tin cậy?
20. Liệt kê năm số liệu có thể được sử dụng khi đánh giá các quy trình DevOps.

30
Quiz Ch 10: Đáp án câu hỏi trắc nghiệm
1. DevOps (phát triển + vận hành) tích hợp phát triển, triển khai và hỗ trợ, với một nhóm
duy nhất chịu trách nhiệm về tất cả những việc đó.
2. Các phương pháp linh hoạt giúp giảm thời gian phát triển phần mềm nhưng việc triển
khai và phân phối vẫn là một nút thắt cổ chai, Amazon đã thử nghiệm tích hợp phát triển
và hỗ trợ dịch vụ, phần mềm như một dịch vụ đã trở thành một mô hình triển khai thực tế.
3. Mọi người đều chịu trách nhiệm về mọi thứ, mọi thứ có thể tự động hóa đều phải được tự
động hóa, đo lường trước, thay đổi sau.
4. Triển khai nhanh hơn, giảm rủi ro, sửa lỗi và ngừng hoạt động nhanh hơn, nhóm làm việc
hiệu quả hơn.
5. Một tập hợp các phương pháp được hỗ trợ bằng phần mềm dùng để quản lý cơ sở mã
đang phát triển, theo dõi các thay đổi được thực hiện và đảm bảo các nhà phát triển có thể
làm việc độc lập trên cùng một mã mà không bị can thiệp.
6. Truyền mã, lưu trữ và truy xuất phiên bản, hợp nhất và phân nhánh, thông tin phiên bản.
7. Nhận dạng phiên bản và bản phát hành, ghi lại lịch sử thay đổi, phát triển độc lập, hỗ trợ
dự án, quản lý lưu trữ.
8. Khả năng phục hồi, tốc độ, linh hoạt.
9. Việc phân nhánh xảy ra khi nhà phát triển thực hiện các thay đổi đối với cơ sở mã chung
và một nhánh độc lập được tạo để cho phép thực hiện những thay đổi này mà không can
thiệp vào các nhà phát triển khác. Hợp nhất là quá trình tích hợp các thay đổi được thực
hiện trong một nhánh vào cơ sở mã được chia sẻ.
10. Tích hợp liên tục, phân phối liên tục, triển khai liên tục, cơ sở hạ tầng dưới dạng mã.
11. Để theo dõi các vấn đề và vấn đề do nhà phát triển và khách hàng nêu ra cũng như phản
hồi của nhóm phát triển đối với các vấn đề đã được nêu ra.
12. Tích hợp liên tục có nghĩa là mỗi khi nhà phát triển thực hiện thay đổi đối với một đơn vị
mã, đơn vị mã đó sẽ ngay lập tức được tích hợp vào cơ sở mã chung.
13. Xây dựng hệ thống gia tăng có nghĩa là chỉ những phần của hệ thống đã được thay đổi
mới được biên dịch lại và xây dựng lại. Nó dựa trên biểu đồ phụ thuộc hiển thị các phụ
thuộc của đơn vị mã và dấu thời gian hiển thị khi đơn vị mã được thay đổi.
14. Phân phối liên tục là quá trình tạo phiên bản có thể triển khai của hệ thống mỗi khi có
thay đổi được tích hợp vào cơ sở mã dự án. Nó khác với việc triển khai liên tục ở chỗ
việc triển khai liên quan đến việc thúc đẩy thay đổi đó tới khách hàng phần mềm; Trong
quá trình phân phối liên tục, không có yêu cầu phát hành phần mềm đã thay đổi.
15. Giảm chi phí, giải quyết vấn đề nhanh hơn, phản hồi của khách hàng nhanh hơn, thử
nghiệm A/B.
16. Một mô hình thực thi của cơ sở hạ tầng phần mềm (cơ sở dữ liệu, thư viện, trình duyệt,
v.v.) được duy trì để có thể tạo lại cơ sở hạ tầng cụ thể này theo yêu cầu.
17. Tính trực quan - mô hình làm cho cơ sở hạ tầng trở nên dễ hiểu; khả năng tái tạo - luôn có
thể tạo lại cơ sở hạ tầng mà phần mềm dựa vào; độ tin cậy - giảm thiểu lỗi của con người
khi cập nhật cơ sở hạ tầng; khôi phục - việc xây dựng lại cơ sở hạ tầng cụ thể sẽ nhanh
chóng sau khi xảy ra sự cố.

31
18. Đo lường quy trình, đo lường dịch vụ, đo lường mức sử dụng, đo lường sự thành công
trong kinh doanh.
19. Bởi vì thành công trong kinh doanh là một vấn đề phức tạp phụ thuộc vào nhiều yếu tố,
chẳng hạn như kỹ năng quản lý, không liên quan gì đến phát triển phần mềm. Chúng tôi
không biết cách đánh giá sự đóng góp của những thay đổi trong phát triển phần mềm vào
thành công của doanh nghiệp.
20. Năm bất kỳ từ: thời gian trung bình đến khi khôi phục, tỷ lệ triển khai không thành công,
tần suất triển khai, khối lượng thay đổi, thời gian thực hiện từ khi phát triển đến triển
khai, tỷ lệ phần trăm tăng số lượng khách hàng, số lượng khiếu nại của khách hàng, tính
khả dụng, hiệu suất.

32

You might also like