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 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ữ
Trang 1CÂ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
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)
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:
Trang 2Kiế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
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
Trang 3 Để hiểu phải tư duy trừu tượng
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 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ùngCông nghệ:
Bán dẫn (nhanh hơn, bộ nhớ khá hơn), CSDL
Trang 4Yê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, songsong
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, CSDLquan 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ộngrã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
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:
Trang 5 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ùngCông nghệ:
Bán dẫn (nhanh hơn, bộ nhớ khá hơn), CSDLYê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, songsong
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, CSDLquan 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ộngrã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
Trang 6 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
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
Trang 7Câ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: 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,
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ủ…
Phân tích
Thiết kế
Mã hóa
Kiểm thử
Bảo trì
Vòng đời phần mềm được chia thànhcác pha chính: phân tích, thiết kế, chế tạo, kiểm thử, bảo trì
Trang 8 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
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ặplạ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
Trang 9 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ử
Trang 10Chươ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ứcnă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ênthự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àngbuộ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ănghay phi chức năng
Câu 1 0
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)
Trang 11Câu 1 1
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ề 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ườngbà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ũngnhư đ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
Trang 12• 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
• 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ườngcủ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áiniệ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ếtvớ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 1 3
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?
Trang 13• 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 haidò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 1 4
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):
Trang 14 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
Để 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 ranế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ệchiể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âurộ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ậnhà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ácthành phần
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ộtbiể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ế
Trang 15- 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ủakhá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ở choviệ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ệcphát triển sản phẩm, để quản lý các rủi ro, đạt đến phần mềm hiệu quả
- 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ữngngười kỹ sư hệ thống để bảo trì hệ thống sau này
Câu 1 6
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ầnmề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