Tải bản đầy đủ (.docx) (25 trang)

CÂU hỏi ôn tập CÔNG NGHỆ PHẦN mềm

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (332.89 KB, 25 trang )

CÂU HỎI ÔN TẬP CÔNG NGHỆ PHẦN MỀM

Chương 1: Tổng quan về công nghệ phần mềm
Câu 1:
Khái niệm phần mềm? Phân biệt phần mềm và phần cứng? Phân loại phần mềm?
Trả lời:
Khái niệm về phần mềm:
Phần mềm gồm 3 phần:
 Chương trình máy tính: mã nguồn, mã máy
 Cấu trúc dữ liệu: cấu trúc làm việc (bộ nhớ trong), cấu trúc lưu trữ (bộ nhớ
ngoài)
 Các tài liệu liên quan: Hướng dẫn sử dụng (người dùng), tham khảo kỹ
thuật (người bảo trì), tài liệu phát triển (nhà phát triển)
Ba cách phân loại phần mềm
 Theo mức độ hoàn thiện
o Chương trình
o

Sản phẩm phần mềm

Theo chức năng thực hiện
o Phần mềm hệ thống


o

Phần mềm nghiệp vụ

o

Phần mềm công cụ



Theo lĩnh vực ứng dụng
o Phần mềm hệ thống


o

Phần mềm thời gian thực

o

Phần mềm nghiệp vụ

o

Phần mềm khoa học kỹ thuật

o

Phần mềm nhúng

o

Phần mềm máy tính cá nhân

o

Phần mềm trí tuệ nhân tạo

o


Phần mềm dựa trên nền web

Câu 2:
Kiến trúc phần mềm là gì? Thế nào là một phần mềm tốt?
Trả lời:
1


Kiến trúc phần mềm của một chương trình máy tính hay một hệ thống tính toán là cấu
trúc của các thành phần trong hệ thống đó. Kiến trúc phần mềm bao gồm các phần
tử phần mềm, các thuộc tính và mối quan hệ giữa chúng.
Tiêu chí phần mềm tốt hiện nay ??
Người dùng:
• Đủ chức năng nghiệp vụ
• Dễ sử dụng, tinh vi (tính thông minh)
• Tin cậy, an toàn
Nhà phát triển

Dễ bảo trì
Câu 3:
Khái niệm phần mềm? Vai trò và đặc trưng của phần mềm?
Trả lời:
Khái niệm về phần mềm:
Phần mềm gồm 3 phần:
 Chương trình máy tính: mã nguồn, mã máy
 Cấu trúc dữ liệu: cấu trúc làm việc (bộ nhớ trong), cấu trúc lưu trữ (bộ nhớ
ngoài)
 Các tài liệu liên quan: Hướng dẫn sử dụng (người dùng), tham khảo kỹ
thuật (người bảo trì), tài liệu phát triển (nhà phát triển)

Vai trò của phần mềm
 Phần mềm – linh hồn của các hệ thống máy tính
 Có vai trò nền tảng của mọi hoạt động xã hội tổ chức.
 Mọi nền kinh tế phụ thuộc rất lớn vào phần mềm
 Phần mềm sai hỏng, kinh tế tổn thất lớn
Đặc trưng của phần mềm
• Không mòn cũ, những thoái hóa theo thời gian
• Môi trường sử dụng, nhu cầu thay đổi
• Lỗi phát sinh tăng do nâng cấp
• Không được lắp ráp từ mẫu có sẵn
• Phức tạp, khó hiểu, vô hình
 Phần mềm là hệ thống logic khó hiểu

Nhiều khái niệm khác nhau

Mối liên kết là logic (không nhìn thấy)

Để hiểu phải tư duy trừu tượng
 Không nhìn thấy

Không phải vật thể vật lý

Mỗi biểu diễn chỉ một khía cạnh, không phải một hệ thống tổng thể
Câu 4:
Khái niệm phần mềm? Nêu vắn tắt các giai đoạn phát triển của phần mềm?
2


Trả lời:
Khái niệm về phần mềm:

Phần mềm gồm 3 phần:
 Chương trình máy tính: mã nguồn, mã máy
 Cấu trúc dữ liệu: cấu trúc làm việc (bộ nhớ trong), cấu trúc lưu trữ (bộ nhớ
ngoài)
 Các tài liệu liên quan: Hướng dẫn sử dụng (người dùng), tham khảo kỹ
thuật (người bảo trì), tài liệu phát triển (nhà phát triển)
Giai đoạn phát triển phần mềm :
 Giai đoạn một: 1950 – 1960:
 Chương trình nhỏ, tính toán chuyên dụng
 Xử lý số, theo lô
 Ngôn ngữ máy, hợp ngữ, đặc thù cho từng máy
 Tiêu chí đánh giá:
 Tính nhanh
 Giải được bài toán
Công nghệ: bóng điện tử (chậm, bộ nhớ nhỏ)
 Giai đoạn 2: giữa thập kỷ 70
 Sản phẩm: đa dạng, đa người sử dụng
 Xử lý số, ký tự, theo lô, thời gian thực
 Xuất hiện lưu trữ trực tuyến
 Ngôn ngữ: Algol, Fortran
Tiêu chí đánh giá:
- Nhanh
- Giải được bài toán lớn
- Nhiều người dùng
Công nghệ:
Bán dẫn (nhanh hơn, bộ nhớ khá hơn), CSDL
Yêu cầu bảo trì (sửa lỗi, thích nghi)
 Giai đoạn 3: đầu những năm 1990
• Phần mềm cá nhân + mạng, hệ lớn, chia sẻ được
• Ra đời phần mềm nhúng

• Xử lý số, ký tự, âm thanh, hình ảnh; theo lô, thời gian thực, phân tán, song
song
• Truy nhập dữ liệu phát triển, từ xa
• Ngôn ngữ: bậc cao, hướng đối tượng, logic
• Tiêu chí: Tiện dụng, tin cậy, dễ bảo trì
• Công nghệ: mạch tích hợp lớn, vi mạch, các cấu hình mạng Internet, CSDL
quan hệ
 Giai đoạn 4: từ năm 1990 đến nay
3


• Phần mềm lớn, tinh vi, tin cậy, hướng người dùng
• Hệ chuyên gia, trí tuệ nhân tạo, phần mềm nhúng, webserrvice sử dụng rộng





rãi, internet mở rộng
CSDL hướng đối tượng, kho dữ liệu phát triển
Ngôn ngữ: hướng đối tượng, thế hệ thứ 4, visual
Tiêu chí: Tiện dụng, tinh vi, tin cậy, dễ bảo trì
Công nghệ: Vi mạch siêu tích hợp, internet, mạng không dây tốc độ cao,
hướng đối tượng, web

Câu 5:
Nêu sơ lược lịch sử phát triển của phần mềm? Tiêu chí để đánh giá một phần mềm
tốt hiện nay là gì?
Trả lời:
Sự phát triển của phần mềm:

Phần mềm tiến hóa cùng phần cứng
 Về qui mô, sự phức tạp và tốc độ
 Về chức năng và mức độ hoàn thiện
Công nghệ liên tục phát triển, nhu cầu tăng
Khó khăn thách thức ngày càng nhiều
Giai đoạn phát triển phần mềm :
 Giai đoạn một: 1950 – 1960:
 Chương trình nhỏ, tính toán chuyên dụng
 Xử lý số, theo lô
 Ngôn ngữ máy, hợp ngữ, đặc thù cho từng máy
 Tiêu chí đánh giá:
 Tính nhanh
 Giải được bài toán
Công nghệ: bóng điện tử (chậm, bộ nhớ nhỏ)
 Giai đoạn 2: giữa thập kỷ 70
 Sản phẩm: đa dạng, đa người sử dụng
 Xử lý số, ký tự, theo lô, thời gian thực
 Xuất hiện lưu trữ trực tuyến
 Ngôn ngữ: Algol, Fortran
Tiêu chí đánh giá:
- Nhanh
- Giải được bài toán lớn
- Nhiều người dùng
Công nghệ:
Bán dẫn (nhanh hơn, bộ nhớ khá hơn), CSDL
Yêu cầu bảo trì (sửa lỗi, thích nghi)
 Giai đoạn 3: đầu những năm 1990
• Phần mềm cá nhân + mạng, hệ lớn, chia sẻ được
• Ra đời phần mềm nhúng
4



• Xử lý số, ký tự, âm thanh, hình ảnh; theo lô, thời gian thực, phân tán, song

song
• Truy nhập dữ liệu phát triển, từ xa
• Ngôn ngữ: bậc cao, hướng đối tượng, logic
• Tiêu chí: Tiện dụng, tin cậy, dễ bảo trì
• Công nghệ: mạch tích hợp lớn, vi mạch, các cấu hình mạng Internet, CSDL
quan hệ
 Giai đoạn 4: từ năm 1990 đến nay
• Phần mềm lớn, tinh vi, tin cậy, hướng người dùng
• Hệ chuyên gia, trí tuệ nhân tạo, phần mềm nhúng, webserrvice sử dụng rộng
rãi, internet mở rộng
• CSDL hướng đối tượng, kho dữ liệu phát triển
• Ngôn ngữ: hướng đối tượng, thế hệ thứ 4, visual
• Tiêu chí: Tiện dụng, tinh vi, tin cậy, dễ bảo trì
• Công nghệ: Vi mạch siêu tích hợp, internet, mạng không dây tốc độ cao,
hướng đối tượng, web
Tiêu chí phần mềm tốt hiện nay ??
Người dùng:
• Đủ chức năng nghiệp vụ
• Dễ sử dụng, tinh vi (tính thông minh)
• Tin cậy, an toàn
Nhà phát triển

Dễ bảo trì

Chương 2: Tiến trình phát triển phần mềm
Câu 6:

Vòng đời của phần mềm? Mô hình vòng đời phần mềm của Boehm?
Trả lời:
Vòng đời của phần mềm là thời kỳ tính từ khi phàn mềm được tạo ra cho đến khi
chết đi (từ lúc hình thành đáp ứng yêu cầu, vận hành, bảo dưỡng cho đến khi loại bỏ
không đâu dùng)
Mô hình vòng đời phần mềm của Boehm

5


Vòng đời phần mềm được chia thành
các pha chính: phân tích, thiết kế,
chế tạo, kiểm thử, bảo trì

13
Câu 7:
Phân tích mô hình thác nước? Ưu và nhược điểm của mô hình?
Trả lời:
Phân tích
Thiết kế
Mã hóa
Kiểm thử
Phân tích: tập trung vào việc thu thập phân tích các thông tin cần cho phần mềm,
Bảo trì
các chức năng phần mềm cần phải thực hiện, hiệu năng cần có của mỗi chức năng,
các giao diện cho người sử dụng, các ràng buộc mà phần mềm cần tuân thủ…
 Thiết kế: là quá trình chuyển hóa các yêu cầu phần mềm thành các mô tả thiết kế
mà từ đó nhà phát triển và lập trình có thể lắp đặt hệ thống và chuyển thiết kế
thành chương trình vận hành được.



6


Mã hóa: Dịch các đặc tả thiết kế thành các chương trình mã nguồn trong một ngôn
ngữ lập trình nào đó mà mã mãy có thể thực hiện được.
 Kiểm thử: Phát hiện lỗi và sửa lỗi trong chương trình.
 Bảo trì: trong môi trường hoạt động thực tế, hệ thống có đáp ứng được các yêu
cầu đặt ra ban đầu và đề xuất những thay đổi, bổ sung để hoàn thiện hệ thống.
Ưu nhược điểm của mô hình thác nước
- Thực tế các dự án ít khi tuân theo các dòng tuần tự của mô hình, mà thường có lặp
lại.
- Khách hàng ít khi tuyên bố rõ Ràng khi nào xong hết các yêu cầu
- Khách hàng phải có lòng kiên nhẫn chờ đợi thời gian nhất định mới có sản phẩm.
Nếu phát hiện lỗi nặng thì là một thảm họa.


7


Câu 8:
Phân tích mô hình xoắn ốc? Ưu và nhược điểm của mô hình?
Trả lời:

Giao tiếp khách hàng: giữa người phát triển và khách hàng để tìm hiểu yêu cầu, ý
kiến
 Lập kế hoạch: Xác lập tài nguyên, thời hạn và những thông tin khác.
 Phân tích rủi ro: xem xét mạo hiểm kỹ thuật và mạo hiểm quản lý
 Kỹ nghệ: xây dựng một hay một số biểu diễn của ứng dụng.
 Xây dựng và xuất xưởng: xây dựng, kiểm thử, cài đặt và cung cấp hỗ trợ người

dùng (tư liệu, huấn luyện…)
 Đánh giá của khách hàng: nhận các phản hồi của người sử dụng về biểu diễn phần
mềm trong giai đoạn kỹ nghệ và cài đặt.
Ưu nhược điểm của mô hình xoắn ốc
- Tốt cho các hệ phần mềm quy mô lớn
- Dễ kiểm soát các mạo hiểm ở từng mức tiến háo
- Khó thuyết phục khách hàng là phương pháp tiến hóa xoắn ốc có thể kiểm soát
được.
- Chưa được dùng rộng rãi như các mô hình tuyến tính hoặc chế thử


8


Chương 3: Phân tích đặc tả yêu cầu
Câu 9:
Anh (chị) hãy trình bày khái niệm yêu cầu phần mềm, phân loại yêu cầu phần
mềm ? cho ví dụ minh họa?
Trả lời:
Yêu cầu cho một hệ thống phần mềm mô tả những công việc mà hệ thống làm và
những ràng buộc mà nó phải tuân thủ khi hoạt động. Yêu cầu có thể là yêu cầu chức
năng(các chức năng, dịch vụ) hay yêu cầu phi chức năng (các ràng buộc)
Phân loại yêu cầu phần mềm
 Các yêu cầu chức năng: là những phát biểu về chức năng hay dịch vụ mà hệ thống
cung cấp. Yêu cầu chức năng cũng có thể là chức năng mà hệ thống không nên
thực hiện.
 Các yêu cầu phi chức năng: những ràng buộc lên các dịch vụ, hoặc chức năng mà
hệ thống cung cấp. Nó bao gồm các ràng buộc về thời gian, về ngân sách, các ràng
buộc trong quá trình phát triển hay các ràng buộc về chuẩn sử dụng…
 Các yêu cầu miền lĩnh vực: là các yêu cầu xuất phát từ miền ứng dụng, phản ánh

đặc trưng của lĩnh vực ứng dụng này (các quy tắc nghiệp vụ).Có thể là chức năng
hay phi chức năng.
Câu 10.
Anh (Chị) hãy trình bầy các kỹ thuật đặc tả yêu cầu ?
Trả lời:
 Đặc tả chức năng: 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 đồ phân rã chức năng (Functional Decomposition Diagram – FDD)
- Biểu đồ luồng dữ liệu (Data Flow Diagrams- DFD)
- Máy trạng thái hữu hạn
- Mạng Petri
 Đặc tả mô tả:
- Biểu đồ thực thể liên kết (Entity- Relationship Diagrams - ERD)
- Đặc tả Logic (Logic Specifications)
- Đặc tả đại số (Algebraic Specifications)

9


Câu 11.
Anh (Chị) hãy trình bày quy trình xác định yêu cầu ?
Trả lời:
Quy trình xác định yêu cầu
1. Khảo sát hệ thống và phân tích khả thi
- Khả thi về kinh tế
- Khả thi về kinh tế
- Khả thi về kỹ thuật
- Khả thi về pháp lý
- Khả thi về hoạt động
- Khả thi về thời gian

- 2. Phát hiện và phân tích yêu cầu
• Những khó khăn trong việc nhận ra yêu cầu
- Người liên quan thường không thực sự biết mình cần gì từ hệ thống, họ thường
bày tỏ những yêu cầu của mình theo cách nói riêng.
- Họ có thể có cách yêu cầu khác nhau mà các kỹ sư phải nhận ra điểm chung cũng
như điểm khác biệt giữa chúng.
- Quá trình phân tích diễn ra trong bối cảnh cụ thể của tổ chức nên các yêu cầu có
thể bị ảnh hưởng bởi các yếu tố chính trị.
- Môi trường kinh doanh luôn biến động do vậy yêu cầu mới có thể xuất hiện từ
những người liên quan mà lúc đầu không được tham khảo.
- Khó khăn có tính nguyên tắc của việc thiết lập các yêu cầu hệ thống phần mềm,
các vấn đề không được định nghĩa, không có công thức cho trước.
 Tiến trình phát hiện và phân tích yêu cầu
- Tìm hiểu miền ứng dụng
- Thu thập các yêu cầu
- Phân loại các yêu cầu
- Giải quyết xung đột
- Sắp ưu tiên
- Kiểm tra yêu cầu
Câu 12.
Anh (Chị) hãy trình bày các kỹ thuật phân tích và xác định yêu cầu?
Trả lời:
- Kỹ thuật xác định phân tích yêu cầu:
10

















Tiếp cận định hướng cách nhìn

Ghi nhận những cách nhìn khác nhau của những người liên quan và sử
dụng nó vào tiến trình phát hiện yêu cầu và tổ chức các yêu cầu
Các góc độ khác nhau có thể được xem xét
Từ nguồn hay đích tới của dữ liệu
Từ khung làm việc
Từ sự tiếp nhận dịch vụ
Xác định yêu cầu định hướng cách nhìn gồm 4 giai đoạn cơ bản:
Xác định viewpoint
Cấu trúc viewpoint
Làm tài liệu viewpoint
Ánh xạ hệ thống viewpoint

Kỹ thuật phân tích yêu cầu dựa trên mô hình














Được sử dụng rộng rãi để phân tích yêu cầu
Kỹ thuật này đi theo 2 hướng tiếp cận
Tiếp cận định hướng chức năng (Hướng cấu trúc dựa trên luồng dữ liệu)
Tiếp cận hướng đối tượng
Tập trung hướng vào mô tả nghiệp vụ của hệ thống thực, kết quả thu được là MÔ
HÌNH NGHIỆP VỤ
Mô hình nghiệp vụ theo phương pháp này gồm:
Mô hình ngữ cảnh: Mô tả hệ thống được xét trong môi trường của nó
Các mô hình cấu trúc chức năng mô tả cấu trúc chức năng của hệ thống
Mô tả chi tiết các chức năng: cho đến mức thấp nhất
Mô tả các đối tượng dữ liệu: Theo hướng cấu trúc là bao gồm tất cả các hồ sơ và
bản mẫu, theo HĐT gồm các đối tượng và khái niệm của thế giới thực
Mô tả các mối liên kết của dữ liệu và chức năng – chỉ cần thiết với cách tiếp cận
hướng cấu trúc
Từ điển giải thích


Kỹ thuật phân tích hình thức hoá
 Dựa trên việc sử dụng các khái niệm, ký pháp và mô hình toán học để

phân tích và biểu diễn hệ thống
 Phân tích sẽ không tách thành mô hình riêng. Kết quả của việc phân tích

và mô hình hóa cho ta ngay đặc tả của hệ thống.
Câu 13.
Anh (Chị) hãy trình bày Các kỹ thuật và phương pháp hỗ trợ phân tích yêu cầu?
Trả lời:
• Các mô hình hệ thống: Phương pháp biểu diễn yêu cầu hệ thống một cách
có kỹ thuật (thay vì văn bản dạng text)
11




Use Case (UC)
 UC chỉ ra chức năng của một hệ thống bằng cách mô tả hành vi của hệ

thống (nghĩa là tương tác giữa người sử dụng và hệ thống).
 UC có thể được sử dụng để mô tả hành vi của hệ thống phần mềm.
 Các khái niệm cơ bản trong UC:
 Actor: Nhân vật sự dụng hệ thống để đạt được một mục đích nào đó.
 Primary actor là nhân vật chính khởi tạo một UC.
 Hoạt cảnh (Scenario): Tập hợp các hành động nhằm đạt được mục


đích
Data Flow Diagram (DFD)
 DFD phổ biến trong phân tích bài toán.
 DFD thể hiện dòng dữ liệu trong một hệ thống. DFD coi hệ thống như



là một hàm chuyển dữ liệu đầu vào thành dữ liệu đầu ra.

 DFD biểu diễn sự di chuyển dữ liệu giữa các tiến trình xử lý dữ liệu.
 Ký hiệu trong DFD:
 Tiến trình : Đường tròn
 Dòng dữ liệu là đường cong có mũi tên
 Hình chữ nhật là nguồn sinh hay tiêu thụ dữ liệu
 Sự cần thiết nhiều dòng dữ liệu được biểu dễn bởi “*” đặt giữa hai
dòng (AND). Nghĩa là cả hai dòng đều cần thiết.
 Tương tự, kí hiệu “+” dùng cho phép toán OR.
Các mô hình khác
 Mô hình ER cho phân tích dữ liệu
 Mô hình đối tượng cho phân tích dự liệu

Câu 14.
Anh (Chị) hãy trình khái niệm kiến trúc phần mềm, vai trò của kiến trúc phần
mềm, và các mô hình kiến trúc phần mềm ?
Trả lời:
- Khái niệm kiến trúc phần mềm:
• Kiến trúc phần mềm (Software Architecture) <-> một cấu trúc phần mềm
và qua đó cung cấp một sự tích hợp chặt về mặt khái niệm của hệ thống
• Qui trình thiết kế các hệ thống con cũng như mô hình điều khiển/giao tiếp
giữa các hệ thống con <-> architectural design. Kết quả của qui trình thiết
kế này chính là software architecture.
• Kiến trúc phần mềm của một hệ thống bao gồm các thành phần phần mềm,
các thuộc tính của chúng cũng như mối quan hệ giữa các thành phần.
- Vai trò của kiến trúc phần mềm:
• Có vai trò quan trọng trong p/triển phần mềm (PM):
 Công cụ giao tiếp giữa những người liên quan (understanding and
communication): Tài liệu mô tả kiến trúc sẽ đựoc sử dụng bởi nhiều
thành viên liên quan tới dự án phần mềm
12



 Để phân tích hệ thống/xây dựng hệ thống: Kiến trúc phần mềm có thể

được sử dụng để chỉ ra/dự đoán các thuộc tính của hệ thống. Ngoài ra
nếu kiến trúc phần mềm có phân hoạch tốt, thì việc sử dụng phân hoạch
để phát triển các chức năng dễ dàng hơn.
 Sử dụng lại ở quy mô lớn: Chúng ta có xu hướng sử dụng lại các phần
của phần mềm, do đó, kiến trúc là thông thông tin quan trọng trong việc
hiểu biết các phần của phần mềm.
• Kiến trúc không phải là thành phần hoạt động nhưng nó có tác động sâu
rộng đến quá trình phát triển PM, nó là một lọat mô tả PM mà cho phép các
kỹ sư PM thực hiện công việc:
 Tăng cường hiểu biết về hệ thống cần xây dựng
 Phân tích hiệu quả
 Xem xét, sửa đổi kiến trúc từ sớm, giảm rủi ro
- Các mô hình kiến trúc phần mềm:
• Có nhiều mô hình khác nhau, thường được nhìn nhận dưới một số mặt:
 Mô hình kiến trúc tĩnh – các hệ con hay các thành phần được phát triển
độc lập
 Mô hình tiến trình động- hệ thống được tổ chức thành các tiến trình vận
hành
 Mô hình giao diện – xác định giao diện đưa ra các dịch vụ
 Mô hình liên kết – chỉ ra mối liên kết giữa các hệ con hay giữa các
thành phần
 Mô hình phân tán
• Cách nhìn khác
 Module
 Thành phần và kết nối (Component & Connector – C&C)
 Cấp phát (Allocation)

Câu 15.
Anh (Chị ) hãy trình bày khái niện thiết kế và vai trò của thiết kế ?
Trả lời:
• Khái niệm thiết kế:
Thiết kế phần mềm là quá trình chuyển các đặc tả yêu cầu phần mềm thành một
biểu diễn thiết kế của hệ thống phần mềm cần xây dựng sao cho người lập trình có thể
ánh xạ nó thành chương trình vận hành được.
 Vai trò của thiết kế
- Thiết kế là cách duy nhất để chuyển hóa một cách chính xác các yêu cầu của
khách hàng thành mô hình thiết kế hệ thống phần mềm cuối cùng, làm cơ sở cho
việc triển khai chương trình phần mềm.
- Tài liệu thiết kế phần mềm là công cụ giao tiếp giữa nhóm cùng tham gia vào việc
phát triển sản phẩm, để quản lý các rủi ro, đạt đến phần mềm hiệu quả.
13


Thiết kế phần mềm là tài liệu cung cấp đầy đủ các thông tin cần thiết cho những
người kỹ sư hệ thống để bảo trì hệ thống sau này.
Câu 16.
Anh (Chị) hãy trình bày các bước trong giai đoạn thiết kế và hình thức biểu diễn
thiết kế ?
Trả lời:
Các bước trong giai đoạn thiết kế
-

Thiết kế logic: xác định cấu trúc thiết kế logic mô tả thành phần của hệ thống và
các mối quan hệ giữa chúng mà ko gắn với bất kỳ một phương tiện vật lý nào.
 Thiết kế vật lý: chọn các giải pháp công nghệ hiện hữu để thực hiện các cấu trúc
logic đã cho phù hợp với điều kiện của môi trường đích dự kiến của hệ thống phần
mềm.

Hình thức biểu diễn thiết kế
- Một bản thiết kế phần mềm là một mô hình mô tả một đối tượng của thế giới thực
với nhiều thành phần và các mối quan hệ giữa chúng với nhau. Có 3 hình thức
thường được sử dụng để mô tả:
- Các biểu đồ: được dùng để thể hiện các mối quan hệ giữa các thành phần lập nên
hệ thống và là mô hình mô tả thế giới thực
- Ngôn ngữ mô tả chương trình: dùng để kiểm tra và cấu trúc các cơ cấu thiết kế
dựa trên các cấu trúc của một ngôn ngữ lập trình
- Dạng văn bản không hình thức hóa: mô tả các thông tin không thể hình thức hóa
được .
Câu 17.


14


-

Anh (Chị) hãy trình bày phương pháp thiết kế cấu trúc?
Trả lời:
Định nghĩa kiến trúc: Kiến trúc phần mềm chỉ một cấu trúc tổng thể của phần
mềm và qua đó cung cấp một sự tích hợp về mật khái niệm của một hệ thống. Kiến trúc
biểu diễn các thành phần lớn, cốt lõi của hệ thống và mối quan hệ giữa chúng với nhau
được nhìn theo những quan điểm khác nhau.
- Tiến trình thiết kế kiến trúc
 Tiến trình xác định các hệ thống con của một hệ thống và thiết lâp một khung làm
việc cho việc điều khiển và giao tiếp giữa chúng gọi là thiết kế kiến trúc.
 Hoạt động chung của mọi tiến trình:
+ Cấu trúc hệ thống: một hệ thống được cấu trúc thành một số hệ thống con
+ Mô hình hóa điều khiển: thiết lập một mô hình chung mô tả mối quan hệ điều

khiển giữa các phần trong hệ thống.
+ Phân rã các modun: mỗi hệ thống con được phân rã thanh các modun. Kiến trúc
này chỉ ra các loại modun và liên kết giữa chúng.
Câu 18.
Anh (Chị) hãy trình bày phương pháp thiết kế hướng đối tượng ?
Trả lời:
- Tiến trình thiết kế hướng đối tượng(Lớp, Các mối quan hệ: kế thừa, phụ
thuộc, kết hợp, kết tập, liên kết. )







Xác định kiến trúc của hệ thống
Sắp thứ tự ưu tiên giữa các gói
Với mỗi gói, thiết kế cho mỗi ca sử dụng thuộc gói bằng cách xác định các lớp
thiết kế tham gia triển khai các lớp phân tích
Xây dựng biểu đồ tương tác giữa các lớp
Thiết kế chi tiết các lớp
Phân tích và hoàn thiện biểu đồ lớp dựa trên các mẫu thiết kế

15


Câu 19.
Anh (Chị) hãy cho biết Sự khác nhau giữa thiết kế hướng chức năng và thiết kế
hướng đối tượng?
Trả lời:

Phương
pháp thiết
kế

Hướng chức năng

Hướng đối tượng

Đây là cách tiếp cận truyền thống.
– Quan tâm chủ yếu tới những thông
tin mà hệ thống sẽ giữ gìn. Chúng ta
hỏi người dùng xem họ sẽ cần những
thông tin nào, rồi chúng ta thiết kế
ngân hàng dữ liệu để chứa những
thông tin đó, cung cấp Forms để nhập
thông tin và in báo cáo để trình bày
các thông tin.
–> tập trung vào thông tin và không
mấy để ý đến những gì có thể xảy ra
Khác nhau
với những hệ thống đó và cách hoạt
động (ứng xử) của hệ thống là ra sao

– Lối tiếp cận hướng đối tượng là một
lối tư duy về vấn đề theo lối ánh xạ
các thành phần trong bài toán vào các
đối tượng ngoài đời thực. Với lối tiếp
cận này, chúng ta chia ứng dụng thành
các thành phần nhỏ, gọi là các đối
tượng, chúng tương đối độc lập với

nhau. Sau đó ta có thể xây dựng ứng
dụng bằng cách chắp các đối tượng đó
lại với nhau.
– Chức năng của hệ thống được biểu
diễn thông qua cộng tác của đối tượng,
việc thay đổi chức năng, tiến hóa chức
năng không làm thay đổi đến cấu trúc
tĩnh của phần mềm.

– Ưu điểm: đơn giản, là phương pháp
tốt cho việc thiết kế ngân hàng dữ liệu – Ưu điểm: Một trong những ưu điểm
và nắm bắt thông tin,
quan trọng bậc nhất của phương pháp
phân tích và thiết kế hướng đối tượng
– Nhược điểm:
là tính tái sử dụng: bạn có thể tạo các
thành phần (đối tượng) một lần và
+ áp dụng cho việc thiết kế ứng dụng dùng chúng nhiều lần sau đó.
lại có thể khiến phát sinh nhiều khó –> giảm thiểu lỗi và các khó khăn
khăn.
trong việc bảo trì, giúp tăng tốc độ
+ Không phù hợp với hệ thống thường thiết kế và phát triển phần mềm.
xuyên thay đổi.
Câu 20.
Anh (Chị) trình bày khái niệm và mục đích thiết kế giao diện người dùng ?
Trả lời:
- Khái niệm UI: Là không gian nơi mà sự tương tác giữa người sử dụng và máy
tính được thực hiện.
• UID là thành phần quan trọng trong thiết kế phần mềm
16





Yếu tố con người phải được coi trọng đặc biệt (user-centric design)
 Chúng ta có trí nhớ giới hạn
 Chúng ta đều có thể có sai lầm trong thao tác với phần mềm
 Chúng ta có khả năng vật lý khác nhau: nghe nhìn, vv
 Chúng ta có sở thích tương tác với phần mềm khác nhau
• Người sử dụng thông thường đánh giá phần mềm thông qua giao diện hơn
là chức năng
• Giao diện tồi là nguyên nhân mà phần mềm không được sử dụng
• Phần lớn là giao diện đồ họa
- Các mô hình thiết kế giao diện:
• Mô hình thiết kế do kỹ sư phần mềm xây dựng: tổ hợp biểu diễn dữ liệu,
kiến trúc và thủ tục của phần mềm để thực hiện được chức năng
• Mô hình người dùng: do kỹ sư phần mềm và người chịu trách nhiệm làm
việc với người sử dụng xây dựng, nó mô tả sơ lược hệ thống cho người
dùng cuối
• Mô hình người dùng cảm nhận hệ thống do người dùng cuối cùng xây dựng
• Hình ảnh hệ thống do người cài đặt hệ thống xây dựng, nó tổ hợp các biểu
lộ bên ngoài của hệ thống dựa trên máy tính.
Tương tác của người sử dụng:
• Thao tác trực tiếp:
• Lựa chọn menu
• Nhập form
• Sử dụng ngôn ngữ dòng lệnh
• Sử dụng ngôn ngữ tự nhiên
Trình bày thông tin:
• Một số câu hỏi cần phải đặt ra để xác định kiểu trinhg bày thông tin

• Người sử dụng quan tâm tới độ chính xác thông tin hay là mối quan hệ giữa
các giá trị dữ liệu?
• Tốc độ thay đổi thông tin? Và liệu người sử dụng có cần htông báo về thay
đổi này?
• Liệu người sử dụng có bắt buộc phải tác động phản ứng lại thay đổi này?
• Người sử dụng có phải tương tác với thông tin trình bày?
• Kiểu dữ liệu trình bày là gi?

17


Chương 5: Lập trình hiệu quả
Câu 21:
Một ngôn ngữ lập trình có các yếu tố đặc trưng cơ bản gì?
Trả lời:
 Đặc trưng của ngôn ngữ lập trình
- Dễ dịch thiết kế sang chương trình
- Từ khóa gần với ngôn ngữ tự nhiên
- Có trình biên dịch hiệu quả
- Khả chuyển chương trình gốc
- Có sẵn công cụ phát triển
- Dễ bảo trì
Câu 22:
Khi nói về phong cách lập trình là nói về những yếu tố nào?
Trả lời:
 Phong cách lập trình bao hàm một triết lý về lập trình nhấn mạnh tính dễ hiểu của
chương trình nguồn. Các yếu tố phong cách bao gồm tài liệu bên trong chương
trình, phương pháp khai báo dữ liệu, cách xây dựng câu lệnh và các kỹ thuật vào
ra.
Câu 23:

Lời chú thích trong mã nguồn chương trình thường được đặt ở đâu? Nội dung mô
tả những gì?
Trả lời:
- Vị trí đặt các chú thích trong chương trình
+ thành phần/ Module
+ Lớp
+ Hàm/thủ tục
+ Các vị trí đặc biệt khác
Nội dung mô tả đoạn lệnh dùng để làm gì, có ý nghĩa như thế nào
Câu 24:
Khi lựa chọn ngôn ngữ lập trình để viết phần mềm thường dựa trên các yếu tố nào?
Trả lời:
 Các đặc trưng của ngôn ngữ lập trình sẽ quyết định miền ứng dụng của ngôn ngữ.
Miền ứng dụng là yếu tố chính để chúng ta lựa chọn ngôn ngữ cho một dự án phần
mềm.

18


Câu 25:
Tính hiệu quả của chương trình thể hiện trên những yếu tố nào?
Trả lời:
 Lập trình hướng tới hiệu quả thực hiện tức là tiết kiệm tài nguyên phần cứng
Câu 26:
Để cải thiện hiệu xuất của chương trình cần làm những gì?
Trả lời:
 Để tăng cường hiệu quả vào/ra:
- Số các yêu cầu vào/ra nên giữa mức tối thiểu
- Mọi việc vào/ra nên qua bộ đệm
- Nên tối ưu thao tác vào/ra với từng chủng loại thiết bị đầu cuối ví dụ như màn

hình, máy in, mạng hay các loại bộ nhớ ngoài.
Câu 27:
Trình bày ngắn gọn hiểu biết của anh/chị về lập trình hướng thủ thục?
Trả lời:
 Những ngôn ngữ lập trình truyền thống như: Pascal, C, Foxpro.. được gọi chung là
ngôn ngữ lập trình hướng thủ tục. Theo cách tiếp cận hướng thủ tục thì hệ thống
phần mềm được xem như là dãy các công việc cần thực hiện như đọc dữ liệu, tính
toán, xử lý, lập báo cáo và in ấn kết quả...Mỗi công việc đó sẽ dược thực hiện bởi
một hàm hay thủ tục nhất định.
 Câu lệnh không chỉ đơn thuần là gán
 Ba cấu trúc lệnh cơ bản:
 Selection: if B then S1 else S2 if B then S1
 Iteration: While B do S
repeat S until B
 Sequencing: S1; S2; S3;...
Câu 28:
Trình bày ngắn gọn hiểu biết của anh/chị về lập trình hướng đối tượng?
Trả lời:
Phong cách của phương pháp lập trình hướng đối tượng (OOP - Object Oriented
Programming) là tập chung vào dữ liệu. Theo cách tiếp cận này thì một câu hỏi thường
được đặt ra là dữ liệu nào thì được các phương thức(hay các hàm) nào xử lý và người ta
đem gói tất cả dữ liệu và các phương thức có liên quan với nhau thành một nhóm giống
như một lọ thuốc bao giờ cũng có hai thứ: Các viên thuốc(dữ liệu) và tờ giấy trên đó ghi
cách dùng các viên thuốc đó(phương thức). Hai thứ đó gộp lại thành một kiểu dữ liệu gọi
là dữ liệu đối tượng(Object). Lập trình có sử dụng kiểu dữ liệu loại này gọi là lập trình
hướng đối tượng.
 Dựa trên ba đặc trưng cơ bản:
- Bao gói/ che dấu thông tin
- Kế thừa
19



-

Đa hình

20


Chương 7: Kiểm thử phần mềm
Câu 29:
Kiểm thử phần mềm là gì?
Trả lời:
 Kiểm thử phầm mềm là yếu tố quyết định của đảm bảo chất lượng phần mềm
SQA(Software Quality Assuarance), là khâu điển hình của rà soát đặc tả, thiết kế,
lập mã
 Kiểm thử theo Glen Myers là quá trình vận hành chương trình để tìm ra lỗi.
Câu 30:
Có những loại kiểm thử nào?
Trả lời:
- Kiểm thử đơn vị
- Kiểm thử tích hợp
- Kiểm thử hệ thống
- Kiểm thử chấp nhận(aceptance testing)
+ Kiểm thử alpha(alpha testing)
+ Người dùng thực hiện
+ Trong môi trường được quản lý
+ Kiểm thử Beta(beta testing)
+ Người dùng thực hiện
+ trong môi trường thực

Câu 31:
Những hạn chế thường gặp phải khi kiểm thử phần mềm?
Trả lời:
 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
 Phát hiện lỗi bị hạn chế do thủ công là chính
 Dễ bị ảnh hưởng tâm lý khi kiểm thử
 Khó bảo đảm tính đầy đủ khi kiểm thử
Câu 32:
Có những mức kiểm thử phần mềm nào?
Trả lời:
 Kiểm thử đơn vị(unit testing)
 Kiểm thử tích hợp(integration testing)
21


Kiểm thử hệ thống(system testing)
+ Kiểm thử chức năng(functional testing)
+ Kiểm thử phục hồi(recovery test)
+ Kiểm thử chịu tải(extra: stress & load test)
+ Kiểm thử thi hành(performance test)
+ Kiểm thử an ninh(sercurity test)
Câu 33:
Khi kiểm thử phần mềm phải tuân thủ các nguyên tắc nào?
Trả lời:
 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 khâu
kiểm thử
 Tính dễ kiểm thử phụ thuộc vào cấu trúc chương trình
 Người kiểm thử và người phát triển nên khác nhau
 Dữ liệu thử 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
 Khi thiết kế trường hợp 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ó
 Khi phát sinh thêm trường hợp thử thì nên thử lại những trường hợp thử trước đó
để tránh ảnh hưởng lan truyền
Câu 34:
Trình bày tóm tắt hiểu biết của anh/chị về kiểm thử hộp trắng
Trả lời:
 Khái niệm
• Đối tượng: mã nguồn
• Mức: các modun đơn vị
• Nội dung là khám xét:
+ Các chi tiết thủ tục(thuật toán)
+ Con đường logic(luồng điều khiển)
+ Các trạng thái của chương trình (dữ liệu)
 Nội dung
 Kiểm thử cái gì?
- Mọi lệnh (đầy đủ)
- Mọi điều kiện logic có thể (rẽ nhánh)
- Mọi chu trình trong chương trình (lặp lại)
- Mọi cấu trúc dữ liệu được dùng (dữ liệu)
- Mọi tiến trình từ đầu – kết thúc(từng luồng điều khiển)
 Yêu cầu của KT


22


Yêu cầu đặt ra:
- Mọi con đường độc lập trong mọi modun cần được thực hiện ít nhất một lần.

- Mọi ràng buộc logic được thực hiện cả hai phía đúng và phía sai
- Tất cả các vòng lặp ở biên của nó và cả các biên vận hành phải được thực hiện
- Mọi cấu trúc dữ liệu nội tại được dùng để đảm bảo hiệu lực thi hành của nó
 Lý do kiểm thử
 Vì sao tốn tiền cho kiểm thử hộp trắng
- Các sai logic và giả thiết không đúng tỷ lệ nghịch với xác suất để một con đường
logic được thi hành
- Thực tế: mọi con đường logic đều có thể được thi hành trên một cơ sở nhất định
- Có những sai chính tả có thể là ngẫu nhiên trên đường ta không kiểm tra.
 Các kỹ thuật sử dụng
- Đồ thị dòng (Tom MacCabe đưa ra đầu tiên)
- Ma trận kiểm thử (số đường đi, trọng số)
- Điều kiện logic (chiến lược miền và BRO)
- Điều khiển theo dòng dữ liệu
- Các cấu trúc chu trình – giá trị đặc trưng
Câu 35:
Trình bày tóm tắt hiểu biết của anh/chị về kiểm thử hộp đen
Trả lời:
Khái niệm
- Là kiểm thử yêu cầu chức năng
- Đối tượng: modun, hệ con, toàn hệ thống
- Đặc trưng:
+ Thuyết minh: các chức năng đủ & vận hành đúng
+ thực hiện: qua giao diện
+ Cơ sở: đặc tả, điều kiện vào/ra và cấu trúc dữ liệu
+ Ít chú ý tới cấu trúc logic và nội tại của nó
Mục đích
 Tìm các loại sai liên quan:
- Chức năng: đủ, đúng đắn
- Giao diện: vào/ra: đủ, phù hợp, đúng, tiện lợi

- Cấu trúc truy nhập dữ liệu: thông suốt, đúng đắn
- Thực thi: trôi chảy, kịp thời, chịu lỗi, phục hồi


23


Khởi đầu- kết thúc: mỗi tiến trình thông suốt
Các câu hỏi mà kiểm thử hộp đen trả lời
 Các câu hỏi tập trung trả lời:
- Hiệu lực của chức năng (chức năng, hiệu suất, giao diện) đạt được đến đâu
- Lớp đầu vào nào cho các ca kiểm thử tốt
- Sự nhạy cảm của modun với giá trị vào nào
- Các biên của lớp dữ liệu được cô lập chưa
- Chịu lỗi với nhịp điệu /khối lượng dữ liệu như thế nào
- Tổ hợp dữ liệu đặc biệt ảnh hưởng gì tới hoạt động hệ thống
- Những tiến trình nào (khởi đầu, kết thúc) chưa thông suốt.
Vấn đề và tiêu chuẩn lựa chọn
 Vấn đề:
- Các tiến trình của mỗi chức năng hệ thống đủ lớn
- Các dữ liệu dày đặc, đa dạng
- Không dự kiến tới mọi sự bất thường
 Tiêu chuẩn hướng đến
- Thu gọn ca kiểm thử đến mức có thể (ít, đơn giản)
- Phát hiện sai trên lớp dữ liệu, số đặc biệt (không phải một sai cụ thể gắn với một
kiểm thử cụ thể
Các kỹ thuật kiểm thử
1. Phân hoạch tương đương
2. Phân tích giá trị biên
3. Đồ thị nhân quả

Những hạn chế của KT hộp đen
 Khi hệ thống có nhiều loại dữ liệu đầu vào khác nhau, điều này có thể dẫn tới sự
bùng nổ các ca kiểm thử.
 Do không thể biết được modun nào của chương trình đã hay chưa được kiểm thử,
khi đó phải kiểm thử lại hay bỏ qua những lỗi tiềm ẩn trong gói phần mềm.
 Nếu không có bản đặc tả rõ ràng súc tích rất khó thiết kế các ca kiểm thử đúng đắn
Câu 36:
Việc kiểm thử phần mềm nên được làm ở những giai đoạn nào của quá trình phát
triển phần mềm? vì sao?
Trả lời:
-

24


Tùy thuộc vào từng phương pháp, việc kiểm thử có thể được thực hiện bất cứ lúc nào
trong quá trình phát triển phần mềm. Theo truyền thống thì các nỗ lực kiểm thử được tiến
hành sau khi các yêu cầu được xác định và việc lập trình được hoàn tất nhưng
trong Agile (là một tập hợp các phương pháp phát triển phần mềm linh hoạt dựa trên việc
lặp đi lặp lại và gia tăng giá trị) thì việc kiểm thử được tiến hành liên tục trong suốt quá
trình xây dựng phần mềm. Như vậy, mỗi một phương pháp kiểm thử bị chi phối theo một
quy trình phát triển phần mềm nhất định.

25


×