Câu 1: Tại sao nên xác định sớm tất cả các bên liên quan đến dự án phần mềm?
Trả lời
- Hấu hết những người có liên quan đến dự án có thể được xác định sớm và input
của họ có thể được sử dụng để định hướng kiến trúc hệ thống; điều này đảm bảo
sự hỗ trợ của họ và tăng chất lượng cho các mô hình hệ thống.
- Hỗ trợ từ các bên liên quan mạnh mẽ hơn sẽ giúp giành chiến thắng nguồn tài
nguyên hơn, vì vậy thực hiện cam kết kiến trúc thành công hơn. Bằng việc kết nối
giữa các bên liên quan sớm và thường xuyên, đội kiến trúc có thể đảm bảo rằng
họ hiểu biết đầy đủ về quá trình kiến trúc và hiệu quả của kiến trúc nghiệp vụ;
điều này có nghĩa là họ có thể hỗ trợ đội kiến trúc tích cực hơn khi cần thiết.
- Đội kiến trúc có thể lường trước được một cách có hiệu quả với các mô hình và
các báo cáo kiến trúc,và có thể xây dựng kế hoạch hành động mà sẽ cần thiết để
tận dụng trên các phản ứng tích cực Trong khi tránh được hoặc giải quyết được
các phản ứng tiêu cực.
- Đội kiến trúc có thể xác định sớm các xung đột hoặc các mục tiêu cạnh tranh giữa
các bên liên quan và phát triển một chiến lược để giải quyết các vấn đề phát sinh
giữa họ.
- Nó là cần thiết trong một số khởi đầu để xác định các cá nhân và các nhóm với tổ
chức sẽ đóng góp để phát triển kiến trúc, xác định sự đóng góp tiêu cực và tích
cực của các bên liên quan từ các hướng dẫn của họ và sau đó phát triển một chiến
lược để đối phó với chúng.
- Sự thỏa thuận của các bên liên quan ở giai đoạn sớm của dự án có thể giảm khả
năng xung đột mà có thể làm hại đến việc thực hiện và thành công của dự án.
- Sự tham gia của các bên liên quan góp phần làm minh bạch các hoạt động chung
và riêng, các hoạt động này được giám sát bởi các bên liên quan khác nhau mà
thực hiện.
Câu 2: Những khó khăn gặp phải khi lấy yêu cầu phần mềm chính xác và đầy đủ?
Trả lời
Thu thập và hiểu các yêu cầu từ các bên liên quan gặp khó khăn vì các nguyên nhân sau:
- Người cung cấp yêu cầu không có hiểu biết nhiều về kiến thức tin học nên họ không thể
phát biểu một cách chính xác và đầy đủ các yêu cầu của họ.
- Người cung cấp yêu cầu mô tả các yêu cầu theo thuật ngữ của họ nên người thu thập
yêu cầu không hiểu.
- Với các hệ thống lớn, phức tạp, chúng ta không có hiểu biết đầy đủ về đối tượng nên
không thể thu thập đầy đủ và chính xác thông tin về đối tượng.
- Các bên liên quan khác nhau có cái nhìn khác nhau về tầm quan trọng và mức độ ưu
tiên của các yêu cầu, nhiều khi các yêu cầu của các bên liên quan có thể xung đột với
nhau.
- Có trường hợp người cung cấp yêu cầu không muốn nói điều mà người thu thập yêu cầu
cần biết do các nguyên nhân như: họ quá bận với công việc hiện tại hoặc họ không muốn
máy tính thực hiện công việc mà họ đang đảm nhiệm.
Câu 3: Các đặc điểm của hệ thống phân tán?
Trả lời
a. Khái niệm
Hệ thống phân tán là tập hợp các máy tính tự trị được kết nối với nhau bởi một
mạng máy tính và được cài đặt phần mềm hệ phân tán.
b. Đặc điểm của hệ thống phân tán.
Ưu điểm
Chia sẻ nguồn tài nguyên
Nguồn tài nguyên chia sẻ có thể là phần cứng, phần mềm hoặc dữ liệu.
Tính mở
Hệ phân tán có khả năng bổ sung thêm các dịch vụ mới mà không làm ảnh hưởng xấu
đến các dịch vụ đã có.
Tính trong suốt
Hệ phân tán có khả năng che dấu sự tách biệt giữa các thành phần của một hệ phân tán.
Khả năng co dãn
Hệ phân tán có thể thích nghi với những thay đổi về mặt quy mô của hệ thống. Tính co
dãn được thể hiện trên các khía cạnh:
- Dễ dàng bổ sung thêm tài nguyên và người sử dụng.
- Hệ thống thay đổi quy mô về mặt địa lý.
- Hệ thống thay đổi quy mô về quản trị.
Tính chịu lỗi
Hệ phân tán có khả năng tiếp tục hoạt động sau khi có một lỗi xuất hiện.
Xử lý truy cập đồng thời
Hệ phân tán có khả năng xử lý các truy cập đồng thời để nâng cao hiệu suất làm việc.
Nhược điểm
Phức tạp
Phát triển hệ thống phân tán phức tạp hơn và khó hơn => chi phí cao hơn
Khả năng quản lý
Yêu cầu nỗ lực hơn cho việc quản lý hệ thống.
Bảo mật
Hệ thống phân tán dễ bị tấn công hơn từ bên ngoài.
Không thể lường trước
Hệ thống phân tán phụ thuộc vào tải mạng nên không lường trước được hết các khả năng
xảy ra.
Câu 4: Tại sao Kiểm thử chỉ có thể chỉ ra sự tồn tại các lỗi mà không thể chỉ ra một
phần mềm không có lỗi?
Đáp án
Kiểm thử có thể chỉ ra sự tồn tại của các lỗi bởi vì:
- Kiểm thử phần mềm là quá trình thực thi một hệ thống phần mềm để xác định xem phần
mềm có đúng với đặc tả không và thực hiện trong môi trường như mong đợi hay không.
- Mục đích của kiểm thử phần mềm là tìm ra lỗi chưa được phát hiện, tìm một cách sớm
nhất và bảo đảm rằng lỗi sẽ được sửa.
Kiểm thử của không thể chỉ ra phần mềm không có lỗi bởi vì:
- Miền inputs có thể của một chương trình là quá lớn để được sử dụng đầy đủ trong quá
trình kiểm thử hệ thống. Miền Input có thể bao gồm những input hợp lệ và các input
không hợp lệ. Chương trình có thể có một số lượng lớn các trạng thái. Có thể bị giàng
buộc về thời gian vào inputs, đó là, một input có thể hợp lệ tại một thời điểm cụ thể
nhưng cũng có thể không hợp lệ ở một thời điểm khác. Một giá trị input mà hợp lệ nhưng
không phù hợp về thời gian được gọi là một input không thích nghi. Miền input của một
hệ thống có thể là rất lớn để được sử dụng hoàn toàn trong quá trình kiểm thử một
chương trình.
- Thiết kế các vấn đề có thể là quá phức tạp để có thể kiểm thử một cách đầy đủ. Thiết kế
có thể bao gồm tiềm ẩn thiết kế quyết định và các giả định. Ví dụ, một lập trình viên có
thể sử dụng một biến toàn cục hoặc một biến tĩnh để điều khiển sự thực thi của chương
trình.
- Kiểm thử phần mềm không thể tạo tất cả các môi trường thực thi có thể của hệ thống.
Điều này trở thành đáng kể khi hành vi của hệ thống phần mềm phụ thuộc vào thực tế,
thế giới bên ngoài như thời tiết, nhiệt độ, áp lực
Câu 5 : Trình bày khái niệm “asset” trong an ninh phần mềm? Cho ví dụ minh họa.
Trả lời
Asset là thông tin có giá trị mà được bảo vệ. Asset có thể là bản thân hệ thống phần mềm
hoặc dữ liệu được sử dụng bởi hệ thống.
Ví dụ: Các hồ sơ của mỗi bệnh nhân đang được điều trị hoặc đã được điều trị.
Tài liệu tham khảo (Software Engineering 9ed)
An ninh là một thuộc tính hệ thống mà phản ánh khả năng của hệ thống tự bảo vệ từ các
cuộc tấn công từ bên ngoài, mà có thể là vô tính hoặc cố ý. Các cuộc tấn công từ bên
ngoài đều có thể bởi vì hầu hết các máy tính được tạo ra với mục đích chung là kết nối
mạng với nhau và do đó có thể truy cập được từ bên ngoài.
Các ví dụ của các cuộc tấn công có thể là cài đặt các chương trình Viruses và Trojan
horses, sử dụng trái phép các dịch vụ hệ thống hoặc chỉnh sửa trái phép một hệ thống
hoặc dữ liệu của nó. Nếu bạn thực sự muốn một hệ thống an toàn, cách tốt nhất là nó
không kết nối với mạng internet. Khi ấy, các vấn đề an ninh của bạn được giới hạn để
đảm bảo rằng những người sử dụng không được phép không lạm dụng hệ thống. Trong
thực tế, tuy nhiên, có những hiệu quả rất lớn từ việc truy cập internet với hầu hết các hệ
thống lớn vì vậy không kết nối với internet là không hiệu quả về mặt kinh phí.
Với một số hệ thống, an ninh là thước đo quan trọng nhất của hệ thống. Các hệ thống
quân sự, các hệ thống thương mại điện tử và các hệ thống mà thực hiện xử lý và chuyển
đổi của thông tin bí mật phải được thiết kế vì vậy mà chúng đạt được một mức độ cao về
tính bảo mật. Nếu một hệ thống đặt chỗ vé máy bay không sẵn sàng, ví dụ, bởi vì sự làm
phiền và sự chậm trễ trong phát hành vé. Tuy nhiên, nếu hệ thống không an toàn thì một
cuộc tấn công có thể xóa hết tất cả các đặt chỗ và trên thực tế là không thể tiếp tục thực
hiện chuyến bay bình thường.
Với các khía cạnh khác của độ tin cậy, có một thuật ngữ đặc biệt liên quan đến an ninh.
Một số thuật ngữ quan trọng, được thảo luận bởi Pfleeger (Pfleeger and Pfleeger, 2007),
được định nghĩa trong hình 11.7. Hình 11.8 mô tả các khái niệm an ninh trong hình 11.7
và hiển thị cách chúng liên quan đến kịch bản sau đó từ MHC-PMS (Hệ thống quản lý
chăm sóc sức khỏe bệnh nhân tâm thần):
Nhân viên ý tế đăng nhập vào MHC-PMS với một username và mật khẩu. Hệ thống yêu
cầu mật khẩu ít nhất là 8 kí tự nhưng cho phép một số mật khẩu được cài đặt mà không
cần kiểm tra thêm. Một tên tội phạm phát hiện ra rằng một ngôi sao thể thao được trả
lương cao đang được điều trị cho các vấn đề sức khỏe tâm thần. Anh ta muốn truy cập
thông tin bất hợp pháp trong hệ thống này để anh ta có thể tống tiền các ngôi sao.
Bằng cách giả vờ thân quen và nói chuyện với các y tá trong phòng khám sức khỏe tâm
thần, Anh ta khám phá ra cách truy cập đến hệ thống và thông tin cá nhân của các y tá.
Bằng việc kiểm tra tên phù hiệu, anh t khám phá ra tên của một số người được phép truy
cập. Anh ta sau đó cố gắng đăng nhập vào hệ thống bằng việc sử dụng các tên đó và dự
đoán các mật khẩu có thể truy cập vào hệ thống (như tên của các con của nhân viên).
Câu 5: Dịch vụ web kết hợp (web service composition) là gì? Cho ví dụ minh họa.
Trả lời
- Là sự kết hợp các dịch vụ được cung cấp sẵn trên Web theo 1 trật tự
để tạo ra 1 chức năng mới.
- Được xây dựng trên nền tảng các giao thức có sẵn, thông tin được
trao đổi 1 các độc lập so với phần cứng, công nghệ, ngôn ngữ hay hệ
điều hành.
Ví dụ:
PHẦN I: TỔNG QUAN
Câu 1: Khái niệm phần mềm và phân loại phần mềm?
Trả lời
a. Khái niệm
- Phần mềm là các chương trình máy tính và các tài liệu liên quan đến nó: Các yêu
cầu, mô hình thiết kế, tài liệu hướng dẫn sử dụng…
b. Phân loại
- Phần mềm đại trà.
- Phần mềm theo đơn đặt hàng
[*] Câu 2: Sự khác biệt giữa CNPM và Khoa học máy tính?
Trả lời
o Khoa học máy tính liên quan đến lý thuyết và các nguyên tắc cơ bản; thiết
kế phần mềm liên quan với tính thiết thực của sự phát triển và cung cấp phần mềm
hữu ích.
o Các lý thuyết khoa học máy tính vẫn không đủ để làm cơ sở hoàn chỉnh
cho thiết kế phần mềm (giống như thiết kế vật lý và điện tử)
[*] Câu 3: Tiêu chí phần mềm tốt
Trả lời
1) Tính đúng đắn : Đầy đủ, chính xác.
2) Tính tiện dụng: Dễ học, dễ sử dụng, giao diện trực quan, Tự nhiên.
3) Tính hiệu quả: Tối ưu sử dụng CPU, tối ưu sử dụng bộ nhớ, tối ưu sử dụng thiết
bị.
4) Tính tương thích: Import/Export Dữ liệu, tương tác.
5) Tính tiến hóa:
6) Tính dễ kiểm tra: Việc kiểm tra các thành phần phù hợp với các yêu cầu phần
mềm là dễ dàng nhất có thể được.
7) Tính dễ sửa lỗi: Khi có sự không phù hợp (so với yêu cầu) trong quá trình kiểm
tra một thành phần, việc phát hiện chính xác vị trí lỗi và sửa lỗi là nhanh nhất có
thể.
8) Tính dễ bảo trì: Khi cần nâng cấp, cải tiến một thành phần (theo yêu cầu mới),
việc cập nhật phần mềm là nhanh, chính xác nhất có thể được và đặc biệt là cố
gắng hạn chế ảnh hưởng của các thành phần khác.
9) Tính tái sử dụng: Các thành phần đã thực hiện có thể dùng lại trong các thành
phần cùng lớp (hoặc cùng lĩnh vực) với thời gian và công sức ít nhất có thể được.
CHƯƠNG II: YÊU CẦU PHẦN MỀM
[*] Câu 1: Khái niệm, tầm quan trọng của đặc tả yêu cầu phần mềm?
Trả lời
Xác định và đặc tả yêu cầu:
- Là khâu kỹ thuật đầu tiên của quá trình phát triển phần mềm. Thiếu nó không thể
tiếp tục quá trình phát triển phần mềm.
- Là Sự phối hợp của cả nhà phát triển và khách hàng.
- Nó quyết định chất lượng phần mềm đạt được với chi phí và thời gian dự kiến.
Câu 2: Các loại yêu cầu?
Trả lời
Có 2 loại yêu cầu: Yêu cầu chức năng và yêu cầu phi chức năng.
I. Yêu cầu chức năng
- Các chức năng của phần mềm là các công việc khi được thực hiện trên máy tính bằng
phần mềm.
- Yêu cầu chức năng là danh sách các công việc sẽ được thực hiện trên máy tính cùng với
các thông tin mô tả tương ứng.
- Được chia thành 2 loại (theo ý nghĩa sử dụng)
1) Yêu cầu chức năng nghiệp vụ:
Các chức năng của phần mềm tương ứng với công việc có thật trong thế giới thực. Có 4
loại chức năng chính ứng với 4 loại nghiệp vụ thông dụng nhất trong các lĩnh vực, đó là:
Chức năng lưu trữ, chức năng tra cứu, chức năng tính toán, chức năng kết xuất.
a. Chức năng lưu trữ: tương ứng với công việc ghi chép thông tin trên sổ sách (theo các
qui định cần kiểm tra khi ghi chép).
VD:
- Ghi nhận điểm thi của học sinh (qui định về điểm số từ 0 -> 10).
- Ghi nhận việc mượn sách (theo qui định mượn).
- Ghi nhận bài giải bài tập về phân số (theo qui định về phân số), cách biến đổi phân
số tương đương, các phép tính trên
phân số.
- Ghi nhận các nước đi trong trò chơi cờ carô (theo qui định của trò chơi).
b. Chức năng tra cứu: tương ứng với các công việc tìm kiếm và xem thông tin tương
ứng, theo dõi hoạt động.
VD:
- Tìm sách và xem tình trạng sách, thông tin về độc giả mượn sách nếu sách đang
được muợn.
- Tìm học sinh và xem thông tin về điểm thi, các ngày vắng mặt.
- Tìm hợp đồng và xem thông tin tiến độ thực hiện.
- Tìm bài giảng lý thuyết về phân số và xem nội dung tương ứng.
c. Chức năng tính toán: tương ứng với các công việc tính toán (theo qui định công thức
cho trước).
VD:
- Tính tiền phạt trả sách trễ theo qui định phạt.
- Tính điểm TBM của học sinh theo qui định hệ số các bài kiểm tra.
- Tính nghiệm của tam thức bậc 2 theo công thức tính nghiệm.
- Tính kết quả thắng thua trong trò chơi cờ gánh sau mỗi nước đi theo qui địnnh của
trò chơi.
d. Chức năng kết xuất: tương ứng với các công việc lập các báo cáo. (theo biểu mẫu
cho trước).
VD:
- Lập báo cáo thống kê về số lượng mượn sách theo từng thể loại trong năm.
- Lập báo cáo thống kê về tỷ lệ xếp loại học sinh theo từng lớp.
- Lập báo cáo về công nợ khách hàng.
2) Yêu cầu chức năng hệ thống:
Đó là các chức năng phần mềm phải phát sinh thêm khi tiến hành công việc trên máy tính
thay vì trong thế giới thực, hoặc các chức năng không tương ứng với bất kỳ công việc nào
hiện tại trong thế giới thực (có nhu cầu nhưng không thể thực hiện bằng thủ công).
Một số chức năng hệ thống thông dụng như sau:
a. Phân quyền sử dụng giữa các loại người dùng
VD: Phân quyền cho 3 loại người sử dụng trong phần mềm quản lý thư viện:
- Quản lý hệ thống: administrator -> sử dụng được tất cả các chức năng.
- Thủ thư: cho sử dụng các chức năng liên quan đến việc cho mượn, trả sách.
- Độc giả: cho sử dụng chức năng tra cứu.
b. Sao lưu (backup), phục hồi thông tin (Restore)
VD: - Sao lưu thông tin về các học sinh đã ra trường và cho phục hồi lại khi cần thiết.
c. Định cấu hình thiết bị, ngày giờ làm việc, …
VD: - Chọn loại máy in, khổ giấy.
- Chọn niên khóa, ngày tháng năm hiện tại
- Chọn Font chữ mặc định, chọn màu, màu nền cho màn hình chính/phụ.
d. Mô phỏng hoạt động thế giới thực
VD: - Mô phỏng hoạt động CPU.
- Hoạt động các phản ứng hóa học, phản ứng hạt nhân, …
- Demo chương trình, chơi mẫu.
e. Báo động nhắc nhở người dùng
VD: - Nhắc nhở thủ thư gởi giấy báo đòi sách khi có độc giả mượn sách quá hạn.
- Báo động khi khách hàng thiếu nợ quá lâu hay số tiền nợ quá lớn.
- Nhắc nhở giáo viên khi học sinh trong tháng vắng quá 7 ngày có phép, 3 ngày không
phép.
II Yêu cầu phi chức năng:
Các yêu cầu về chất lượng phần mềm. Các yêu cầu này được phân thành các loại theo các
tính chất liên quan đến chất lượng phần mềm như:
1. Tính tiến hóa: cho phép người dùng thay đổi lại mô tả liên quan đến một yêu cầu chức
năng nào đó
VD: - Cho phép thay đổi qui địnnh số sách mượn tối đa.
- Cho phép thay đổi các biên trong qui định xếp loại học sinh.
- Cho phép thay đổi số các học kỳ trong 1 niên khóa.
2. Tính tiện dụng: đây là các yêu cầu liên quan đến hình thức giao diện của phần mềm
(hình thức trình bày trong quá trình sử dụng các chức năng).
VD: - Thực hiện các chuyến bay theo sơ đồ.
- Thực hiện biểu thức, phân số theo dạng tự nhiên trong thế giới thực.
- Thực hiện việc chọn nước đi trong trò chơi cờ gánh theo cách tự nhiên.
3. Tính hiệu quả: yêu cầu này qui định thời gian thực hiện các chức năng hoặc giới hạn
dung lượng lưu trữ (với số lượng cho trước)
VD: - Tốc độ nhập liệu cho mỗi phiếu mượn sách không quá 30 giây
- Thời gian tra cứu sách không quá 5 giây
4. Tính tương thích: đây là các yêu cầu liên quan đến việc chuyển đổi dữ liệu giữa phần
mềm đang xét và phần mềm khác
VD: - Cho phép chuyển tất cả các báo cáo sang dạng tập tin .XLS
- Cho phép nhập sách mới từ tập tin .XLS
- Cho phép lấy danh sách học sinh trúng tuyển đầu cấp từ tập tin .XLS, .MDB
Ngoài ra, còn có các ràng buộc trên việc thực hiện các yêu cầu chức năng như:
5. Ràng buộc về môi trường khai thác: yêu cầu về phần cứng, chạy trên môi trường
nào, …
6. Sưu liệu chương trình: tài liệu hướng dẫn sử dụng, tài liệu hướng dẫn cài đặt, …
7. Công tác huấn luyện sử dụng phần mềm
8. An toàn và bảo mật
9. Xử lý lỗi: dự kiến một số lỗi có thể xảy ra, người xây dựng phần mềm sẽ qui định cách
thức xử lý lỗi
Câu 2: Nêu các bên liên quan đến việc đặc tả các yêu cầu?
Trả lời
Khách hàng đặt hàng sản phẩm
Người sử dụng sản phẩm
Người phân tích thị trường
Lập trình viên
Người quản lý dự án
Người viết tài liệu phần mềm
Kiểm thử phần mềm
Chuyên gia miền lĩnh vực
Các chuyên gia pháp lý
Chuyên gia tư vấn
Người đào tạo
[*] Câu 3: Đặc tả yêu cầu phần mềm
Trả lời
1. Định Nghĩa: Đặc tả các yêu cầu phần mềm là công việc xây dựng các tài liệu đặc tả,
trong đó có thể sử dụng tới các công cụ như: mô hình hóa, mô hình toán học hình thức (a
formal mathematical model), tập hợp các kịch bản sử dụng, các nguyên mẫu hoặc bất kỳ
một tổ hợp các công cụ nói trên.
2. Chất lượng của hồ sơ đặc tả đánh giá qua các tiêu chí:
– Tính rõ ràng, chính xác
– Tính phù hợp
– Tính đầy đủ, hoàn thiện
3. Các thành phần của hồ sơ đặc tả :
– Đặc tả phi hình thức (Informal specifications) được viết bằng ngôn ngữ tự nhiên.
– Đặc tả hình thức (Formal specifications) được viết bằng tập các ký pháp có các quy
định về cú pháp (syntax) và ý nghĩa (sematic) rất chặt chẽ, thí dụ ký pháp đồ họa dùng
các lưu đồ.
– Đặc tả vận hành chức năng (Operational specifications) mô tả các hoạt động của hệ
thống phần mềm sẽ xây dựng: Các dịch vụ mà hệ thống phải cung cấp, hệ thống sẽ phản
ứng với đầu vào cụ thể ra sao, Hành vi của hệ thống trong các tình huống đặc biệt.
3.1. Đặc tả chức năng
Đặc tả chức năng (Funtional Specifications):
i) Miêu tả các chức năng của hệ thống, phụ thuộc vào kiểu PM và mong đợi của người
dùng
ii) Thông thường khi đặc tả các chức năng của phần mềm người ta sử dụng các công cụ
tiêu biểu sau:
– Biểu đồ luồng dữ liệu (Data Flow Diagrams) DFD
– Máy trạng thái hữu hạn (Finite State Machines) FSM
– Mạng Petri (Petri nets),…
Tuy nhiên không bắt buộc và có thể dùng Ngôn ngữ tự nhiên.
3.2 Đặc tả phi chức năng
Đặc tả phi chức năng (Non-Funtional Specifications):
i) Định nghĩa các tính chất của hệ thống, các ràng buộc. Thí dụ như độ tin cậy, thời gian
trả lời, dung lượng bộ nhớ,…
ii) Các yêu cầu do tổ chức qui định như qui định chuẩn về quá trình tiến hành, chuẩn tài
liệu,…
iii, Các yêu cầu từ bên ngoài
Đặc tả mô tả thường sử dụng các công cụ :
– Biểu đồ thực thể liên kết (Entity-Relationship Diagrams)
– Đặc tả Logic (Logic Specifications)
– Đặc tả đại số (Algebraic Specifications)
[*] Câu 4: Mục tiêu của việc biểu diễn các yêu cầu
Trả lời
- Hiểu về vấn đề hoặc các vấn đề mà hệ thống phần mềm có thể xảy ra, nếu có, nên
giải quyết.
- Nhắc lại các câu hỏi có liên quan về vấn đề và hệ thống.
- Cung cấp cơ sở cho việc trả lời các câu hỏi về các thuộc tính đặc tả của vấn đề và
hệ thống.
- Hệ thống nên được chia như thế nào?Hệ thống không nên được chia như thế nào?
- Chứng minh rằng hệ thống sẽ đáp ứng các nhu cầu của các bên tham gia.
- Cung cấp các cơ sở cho phát triển của hệ thống.
- Provide basis for V & V* of the system
[*] Câu 5: Vấn đề khó khăn đối với ngôn ngữ tự nhiên.
Trả lời
Nhập nhằng
– Người đọc và người viết phải sử dụng chung thuật ngữ theo cùng cách thức. Mà Ngôn
ngữ tự nhiên là ngôn ngữ nhập nhằng
– Quá mềm dẻo: Cùng một vấn đề có thể phát biểu theo nhiều cách khác nhau
– Thiếu tính cấu trúc: do bản chất của Ngôn ngữ tự nhiên
– Khắc phục: Form điền, ngôn ngữ PDL.
[*] Câu 6: Biểu đồ luồng dữ liệu (DFD)
Trả lời
Hệ thống (System): tập hợp các dữ liệu (data) được xử lý bằng các chức năng tương ứng
(functions)
Các ký pháp sử dụng:
Nhược điểm
- Ýnghĩa của các ký pháp sử dụng được xác định bởi các định danh lựa chọn của
NSD.
- Trong DFD không xác định rõ các hướng thực hiện (control aspects).
- DFD không xác định sự đồng bộ giữa các chứcnăng / mô-đun
Câu 7: Máy hữu hạn trạng thái
Trả lời
FSM chứa
• Tập hữu hạn các trạng thái Q
• Tập hữu hạn các đầu vào I
• Các chức năng chuyển tiếp
Câu 8: Mô hình thực thể liên kết
Trả lời
Mô hình khái niệm cho phép đặc tả các yêu cầu logic của hệ thống, thường được sử dụng
trong các hệ thống dữ liệu lớn.
ER Model
– Thực thể
– Quan hệ
– Thuộc tính
Biểu đồ thực thể
Thực thể –tập hợp các thông tin liên quan cần được xử lý trong phần mềm.
[*] Câu 9: Các yêu cầu của một đặc tả tốt.
Trả lời
• Dễ hiểu với người dùng
• Có ít điều nhập nhằng
• Có ít quy ước khi mô tả, có thể tạo đơn giản
• Với phong cách từ trên xuống (topdown)
• Dễ triển khai cho những pha sau củavòng đời: thiết kế hệ thống và thiết kế chương trình
và giao diện dễ làm, đảm bảo tính nhất quán,. . .
PHẦN III: GIAO DIỆN PHẦN MỀM
[*] Câu 1: Các nguyên tắc thiết kế giao diện người sử dụng
Trả lời
1. Thân thiện với người sử dụng
- Giao diện người sử dụng nên dược thiết kế để phù hợp với kĩ năng, kinh nghiệm
và các mong đợi được dự đoán của người sử dụng. Bởi vì người sử dụng dự đoán
hệ thống bằng giao diện của nó hơn là các chức năng của nó.
- Một giao diện có thiết kế nghèo nàn có thể khiến người sử dụng tạo ra các lỗi
nghiêm trọng.
- Khi người sử dụng gây ra lỗi và hệ thống chạy sai, các cảnh bảo không phù hợp
có thể làm tăng Stress và do đó có khả năng gây ra lỗi nhiều hơn.
- Người sử dụng có thể nhớ ngay lập tức tối đa bảy mục thông tin vì vậy nếu bạn
hiển thị nhiều hơn, người sử dụng không thể nhớ được.
2. Nhất quán
Các lệnh và Menu nên có cùng định dạng.
3. Hạn chế tối đa sự ngạc nhiên của người sử dụng.
4. Khả năng phục hồi khi gặp lỗi.
Hệ thống cung cấp khả năng phục hồi các lỗi người sử dụng. Ví dụ: Khả năng undo,
khả năng xác nhận các thao tác quan trọng: xóa, sửa…
5. Hướng dẫn người sử dụng.
6. Khả năng tương tác với các kiểu khác nhau của người sử dụng.
- Người thiết kế nên thiết kế giao diện phù hợp với đại đa số người sử dụng, không
nên thiết kế theo khả năng sử dụng chương trình của người thiết kế.
PHẦN IV: KIẾN TRÚC PHẦN MỀM
Câu 1: Khái niệm kiến trúc phần mềm? Vai trò của kiến trúc phần mềm?
Trả lời
1. Khái niệm kiến trúc phần mềm
Kiến trúc phần mềm là các cấu trúc của hệ thống phần mềm, bao gồm:
- Các thành phần.
- Các thuộc tính nhìn từ bên ngoài của các thành phần.
- Mối quan hệ giữa các thành phần phần mềm.
2. Vai trò của kiến trúc phần mềm
- Phân tích khả năng đáp ứng yêu cầu của hệ thống
- Nghiên cứu các giải pháp thay thế.
- Giảm rủi ro trong quá trình thiết kế, xây dựng hệ thống.
- Sử dụng lại.
[*]Câu 2: Tổ chức hệ thống? Các kiểu tổ chức hệ thống được sử dụng phổ biến
nhất?
Trả lời
Tổ chức hệ thống : Phản ánh chiến lược cơ bản được sử dụng để cấu trúc một hệ
thống.
Có 3 kiểu tổ chức được sử dụng rộng rãi:
- Kiểu chia sẻ kho dữ liệu
- Kiểu chia sẻ các dịch vụ và máy chủ
- Một máy trừu tượng hoặc kiểu phân lớp.
1. Mô hình kho dữ liệu
- Các hệ thống con phải chuyển đổi dữ liệu cho nhau. Việc này có thể thực hiện qua
hai cách :
o Dữ liệu được chia sẻ được giữ trong một CSDL trung tâm hoặc kho dữ
liệu và có thể được truy cập bởi tất cả các hệ thống con.
o Mỗi hệ thống con bảo trì CSDL và đi qua dữ liệu đến các hệ thống con
khác.
- Khi một lượng lớn dữ liệu được chia sẻ, mô hình kho dữ liệu chia sẻ được sử
dụng phổ biến nhất.
a. Các ưu điểm
- Cách hiệu quả để chia sẻ một lượng lớn dữ liệu
- Các hệ thống con không cần quan tâm đến với cách dữ liệu được quản lý tập
trung Backup, bảo mật…
- Mô hình chia sẻ được công bố như sơ đồ kho.
b. Nhược điểm
- Các hệ thống con phải đồng ý dựa trên một mô hình kho dữ liệu.
- Phát triển dữ liệu khó và chi phí cao;
- Không có phạm vi cho các chính sách quản lý cụ thể;
- Khó để phân tán một cách có hiệu quả.
2. Mô hình máy trừu tượng (Mô hình lớp)
- Sử dụng để mô hình hóa sự tương tác của các hệ thống con.
- Tổ chức hệ thống thành một tập các lớp (hoặc các máy trừu tượng) mỗi máy
cung cấp một tập các dịch vụ.
- Hỗ trợ phát triển gia tăng các hệ thống con trong các lớp khác nhau. Khi một
thay đổi giao diện lớp, chỉ lớp liền kề bị ảnh hưởng.
- Tuy nhiên, thường lớp liền kề đến các hệ thống có cấu trúc theo cách này.
3. Các mô hình đối tượng
- Cấu trúc hệ thống thành một tập kết nối lỏng lẻo các đối tượng với giao
diện tốt
- Phân rã Hướng đối tượng liên quan đến việc xác định các lớp đối tượng,
các thuộc tính và các hoạt động của chúng.
- Khi thực hiện, các đối tượng được tạo ra từ các lớp và một số mô hình
điều khiển được sử dụng để phối hợp các hoạt động đối tượng.
Ưu điểm
- Các đối tượng được kết nối lỏng lẻo vì vậy sự thực hiện của chúng có thể
được chỉnh sửa mà không làm ảnh hưởng đến các đối tượng khác.
- Các đối tượng có thể ánh xạ đến các thực thể thế giới thực.
- Các ngôn ngữ thực hiện hướng đối tượng được sử dụng rộng rãi.
- Tuy nhiên, thay đổi giao diện hướng đối tượng có thể bởi vì các vấn đề và
các thực thể phức tạp khó biểu diễn như các đối tượng.
Câu 3: Thin và Fat Clients
Trả lời
T h i n - c l i e n t
m o d e l
F a t - c l i e n t
m o d e l
C l i e n t
C l i e n t
S e r v e r
D a t a m a n a g e m e n t
A p p l i c a t i o n p r o c e s s i n g
P r e s e n t a t i o n
S e r v e r
D a t a m a n a g e m e n t
P r e s e n t a t i o n
A p p l i c a t i o n p r o c e s s i n g
Thin-client model
- Trong mô hình thin-client, tất cả các xử lý ứng dụng và quản lý dữ liệu được
chuyển đến thực hiện trên server. Client chịu trách nhiệm đơn giản là hiển thị
phần mềm.
- Được sử dụng khi các hệ thống kế thừa di chuyển đến các kiến trúc client server.
- Hệ thống kế thừa hoạt động giống như một server ngang bằng với một giao diện
đồ họa thực hiện trên một client.
- Nhược điểm chính đó là vấn đề tải quá trình xử lý nặng trên cả server và network.
Fat-client model
- Trong mô hình này, server chỉ chịu trách nhiệm cho quản lý dữ liệu. Phần mềm
trên client thực hiện logic ứng vụng và các tương tác với hệ thống người sử dụng.
- Nhiều xử lý được giao quyền đến client giống như xử lý ứng dụng được thực thi
cục bộ.
- Hầu hết phù hợp với các hệ thống C/S mới nơi các khả năng của hệ thống client
dược biết nâng cao
- Hầu hết phức tạp hơn mô hình thin client đặc biệt là cho quản lý. Các phiên bản
mới của ứng dụng được cài đặt trên tất cả clients.
Câu 4: Kiến trúc hướng dịch vụ
Trả lời
1. Khái niệm
- Là một hướng tiếp cận với việc thiết kế và tích hợp các thành phần, các chức năng
của hệ thống dưới dạng Modul, Mỗi Modul được xem như là một dịch vụ có thể
kết nối lỏng lẻo với nhau và có thể truy cập thông qua môi trường mạng.
- Kiến trúc hướng dịch vụ bao gồm 3 thành phần: Server Provider, Service
Consumer và Service Registry
2, Lợi ích khi sử dụng Kiến trúc hướng dịch vụ
- Sử dụng lại các thành phần có sẵn, việc sử dụng lại này bao gồm 2 thành phần:
- Giải pháp ứng dụng tổng thể cho các doanh nghiệp
- Tính kết nối lỏng lẻo giúp tăng tính linh hoạt và khả năng cài đặt
- Thích ứng với những thay đổi nghiệp vụ trong tương lai.
- Hỗ trợ đa thiết bị và đa nền tảng.
- Tăng khả năng mở rộng và khả năng cung cấp dịch vụ.
Phần V: KIỂM THỬ PHẦN MỀM
[*] Câu 1: Tại sao phần mềm chứa các lỗi?
Trả lời
Phần mềm chứa các lỗi bởi các nguyên nhân sau đây?
1) Lỗi do đặc tả
- Các yêu cầu không rõ ràng.
- Đặc tả bị thay đổi.
- Đặc tả không đồng nhất giữa các nhóm phát triển.
2) Lỗi do thiết kế phần mềm
3) Lỗi do lập trình
Công việc lập trình nặng nhọc, nhiều khi bị áp lực về thời gian => Lập trình bị lỗi.
4) Lỗi do công cụ phát triển phần mềm
5) Một số khía cạnh của hệ thống khó được dự báo trước
- Với một hệ thống lớn, Không ai có thể hiểu hết được toàn bộ hệ thống.
- Một số hành vi khó dự báo trước.
- Hệ thống phức tạp
[*] Câu 2: Khái niệm kiểm thử phần mềm? Vai trò của kiểm thử phần mềm?
Trả lời
1. Khái niệm
Kiểm thử phần mềm là quá trình thực thi phần mềm với mục tiêu tìm ra lỗi.
2. Vai trò của kiểm thử phần mềm
- Đảm bảo chất lượng phần mềm sau khi đưa ra sử dụng.
- Hoàn thiện và nâng cấp khả năng của phần mềm.
- Tránh rủi ro cho khách hàng, giảm chi phí bảo trì và bảo hành sản phẩm.
Câu 4: Những khó khăn khi kiểm thử phần mềm
1) Nâng cao chất lượng phần mềm nhưng không vượt quá chất lượng khi thiết kế:
chỉ phát hiện các lỗi tiềm tàng và sửa chúng.
2) Phát hiện lỗi bị hạn chế do thủ công là chính.
3) Dễ bị ảnh hưởng về mặt tâm lý khi kiểm thử.
4) Khó đảm bảo tính đầy đủ khi kiểm thử.
[*] Câu 5: Những điểm lưu ý khi kiểm thử phần mềm
Trả lời
1) Chất lượng phần mềm do khâu thiết kế quyết định là chủ yếu chứ không phải là
do khâu kiểm thử.
2) Tính dễ kiểm thử phụ thuộc vào cấu trúc chương trình.
3) Người kiểm thử và người phát triển lên khác nhau.
4) Dữ liệu kiểm thử cho kết quả bình thường thì không có ý nghĩa nhiều, cần có
những dữ liệu kiểm thử mà phát hiện ra lỗi.
5) Khi thiết kế trường hợp kiểm thử, không chỉ dữ liệu kiểm thử nhập vào, mà phải
thiết kế trước cả dữ liệu kết quả sẽ có.
6) Khi phát sinh thêm trường hợp kiểm thử thì nên thử lại những trường hợp kiểm
thử trước đó để tránh ảnh hưởng lan truyền sóng.
Câu 6: Kiểm thử hộp trắng.
Trả lời
- Dựa vào thuật giải cụ thể, dựa vào cấu trúc dữ liệu bên trong của đơn vị phần
mềm cần kiểm thử để xác định đơn vị phần mềm đó có thực hiện đúng hay không.
- Người kiểm thử hộp trắng phải có kĩ năng, kiến thức nhất định về ngôn ngữ lập
trình, có kiến thức về thuật toán.
Nhược điểm
- Thường rất mất thời gian và công sức.
Câu 7: Kiểm thử hộp đen
Trả lời
- Người kiểm thử xem sản phẩm phần mềm như một hộp đen. Người kiểm thử hoàn
toàn không quan tâm đến cấu trúc và hành vi bên trong của phần mềm. Người
kiểm thử chỉ quan tâm đến việc tìm ra các hiện tượng mà phần mềm không thực
hiện đúng theo đặc tả của nó.
- Kiểm thử phần mềm cố gắng tìm ra các loại lỗi:
• Các chức năng thiếu hoặc không chính xác.
• Các lỗi về giao diện.
• Các lỗi thi hành.