Câu 1: UML (Unified Modeling Language) là gì? UML có thể được sử
dụng trong những trường hợp nào? UML có những loại biểu đồ nào? - UML là một ngôn ngữ mô hình hoá trực quan mang tính khái quát, được sử dụng để mô tả, thiết kế, phát triển phầm mềm. - UML có thể được sử dụng trong các trường hợp: Các hệ thống thông tin: Lưu trữ, truy vấn, biểu diễn thông tin trong CSDL quan hệ hay CSDL hướng đối tượng. Các hệ thống kỹ thuật: Điều khiển thiết bị trong công nghiệp, quân sự. Các hệ thống nhúng thời gian thực: nhúng trong các thiết bị khác như điện thoại di động, xe ô tô Các hệ thống phân tán: phân tán trên nhiều máy và cần được đồng bộ CSDL Các hệ thống thương mại - UML có những loại biểu đồ: Biểu đồ ca sử dụng Biểu đồ trạng thái Biểu đồ tuần tự Biểu đồ lớp Biểu đồ hoạt động Biểu đồ cộng tác … Câu 2: Thiết kế hướng đối tượng là gì? Anh/chị hãy nêu các hoạt động chính trong thiết kế hướng đối tượng? Mục đích của hoạt động xác định các cơ chế thiết kế là gì? Nêu một vài cơ chế thiết kế phổ biến mà anh/chị biết? Thiết kế hướng đối tượng là phương pháp thiết kế dựa trên hoạt động phân tích hướng đối tượng. Mục đích của hoạt động xác định các cơ chế thiết kế là để tạo ra một thiết kế phần mềm hiệu quả, linh hoạt và dễ bảo trì. Các hoạt động chính trong thiết kế hướng đối tượng: - Xác định mối quan hệ giữa các lớp và đối tượng - thiết kế các mối quan hệ giữa lớp và đối tượng - Thiết kế các giao diện - Xác định cơ chế thiết kế Một vài cơ chế thiết kế phổ biến mà em đã biết: - Kế thừa: Các lớp con kế thừa thuộc tính và phương thức của lớp cha. - Đa hình: Các lớp có cùng kiểu có thể có hành vi khác nhau - Đóng gói: cho phép các đối tượng giữ thuộc tính riêng tư và chỉ có thể truy cập thông qua các phương thức công khai. Câu 3: Anh/chị hãy trình bày vai trò của biểu đồ tương tác (interaction diagram) và biểu đồ hoạt động (activity diagram)? Vai trò của biểu đồ tương tác: - mô tả sự tương tác giữa các đối tượng - Giúp người thiết kế hiểu được cách mà các đối tượng tương tác với nhau trong phần mềm Vai trò của biểu đồ hoạt động: - mô tả hoạt động của một đối tượng hoặc toàn bộ hệ thống phần mềm - giúp cho người thiết kế hiểu được cách mà hệ thống phần mềm hoạt động cũng như là các quy trình và công việc cần được thực hiện Câu 4: Anh/chị hãy trình bày 4 nguyên tắc cơ bản trong hướng đối tượng (abstraction, encapsulation, modularity, hierarchy)? Mỗi nguyên tắc đưa ra một ví dụ minh hoạ? 1. Abstraction Sự trừu tượng hoá là việc xây dựng một mô hình chỉ bao gồm đặc điểm quan trọng, cần thiết để phân biệt với các đặc điểm của mô hình khác. Qua đó giúp làm giảm độ phức tạp của hệ thống bằng cách đơn giản hoá và tập trung vào những thứ cần thiết. VD: Trong ứng dụng quản lý thư viện, một đối tượng sách có thể được trừu tượng thành các đặc điểm như tên sách, tác giả, thể loại, số lượng và trạng thái. Những chi tiết như kích thước, màu sắc, trọng lượng có thể được bỏ qua. 2. Encapsulation Tính đóng gói cho phép các đối tượng giữ thuộc tính riêng tư và chỉ có thể truy cập thông qua các phương thức công khai, cho phép dùng đối tượng mà không cần biết sự cài đặt bên trong nó, giảm thiểu việc viết lại mã nguồn chương trình. VD: Trong ứng dụng quản lý tài khoản ngân hàng, một đối tượng tài khoản có thể được đóng gói với các phương thức như rút tiền, nạp tiền, kiểm tra số dư. Thông tin nhạy cảm như số tiền trong tài khoản chỉ được truy cập thông qua các phương thức công khai nhằm đảm bảo an toàn dữ liệu. 3. Modularity Tính mô-đun hoá là các bài toán sẽ được phân chia thành những vấn đề nhỏ hơn, đơn giản, độc lập và quản lý được. VD: Trong ứng dụng quản lý bán hàng, ta có thể tách chức năng quản lý khách hàng và quản lý sản phẩm thành các module độc lập. Mỗi module có thể được phát triển và bảo trì độc lập giảm độ phức tạp và tăng tính linh hoạt của hệ thống 4. Hierarchy Sự phân cấp là sự sắp xếp thứ tự hoặc phân hạng sự trừu tượng hoá của các đối tượng theo một cấu trúc cây. Các đối tượng ở cấp cao hơn có thể kế thừa các tính năng ở cấp độ thấp hơn tạo ra cấc cấu trúc phức tạp nhưng vẫn dễ bảo trì. VD: Trong ứng dụng quản lý sách, các đối tượng ở cấp độ cao hơn như Danh mục sách có thể kế thừa các đối tượng ở cấp độ thấp hơn như sách, giúp tạo ra một cấu trúc phân cấp rõ ràng và dễ hiểu Câu 5: Anh/chị hãy trình bày sự giống nhau và khác nhau giữa biểu đồ tuần tự (sequence diagram) và biểu đồ giao tiếp (communication diagram)? Dài vl có 1 điểm bọ Giống nhau: Về ngữ nghĩa Có thể chuyển đổi giữa 2 loại biểu đồ mà không mất mát thông tin Cùng đưa ra sự tương tác giữa các đối tượng thông qua thông điệp Mô hình hoá khía cạnh động của hệ thống và kịch bản ca sử dụng Khác nhau: Biểu đồ tuần tự: Chỉ ra thứ tự rõ ràng giữa các thông điệp Thể hiện luồng công việc tốt hơn Mô hình hoá trực quan hơn các luồng thực thi Thể hiện tốt hơn các kịch bản thời gian thực và phức tạp Biểu đồ giao tiếp: Chỉ ra mối quan hệ rõ ràng hơn giữa các đối tượng Thể hiện quá trình giao tiếp tốt hơn Mô hình hoá trực quan hơn các ảnh hưởng của đối tượng Thế thôi, del nhớ đc Câu 6: Anh/chị hãy phân biệt 2 mối quan hệ extend và include giữa các ca sử dụng? - Quan hệ Include: Một ca sử dụng có thể tích hợp hành vi của các ca sử dụng khác như là một phần trong hành vi tổng thể của nó. UC này sử dụng lại chức năng của UC kia. - Quan hệ Extend: Một ca sử dụng có thể được định nghĩa như là một sự mở rộng tăng dần của 1 ca sử dụng cơ sở. UC này được mở rộng từ UC kia bằng cách thêm chức năng cụ thể. Bonus: - Quan hệ tổng quát hoá (Generalization): Một ca sử dụng được đặc biệt hoá thành một hoặc nhiều các ca sử dụng con. Sử dụng cơ chế kế thừa. Câu 7: Mô hình là gì? Lý giải tại sao cần mô hình hoá? Anh/chị hãy trình bày bốn nguyên tắc cơ bản khi mô hình hoá? Mô hình là sự trừu tượng hoá một hệ thống từ một quan điểm cụ thể, nó mô tả hệ thống hoặc thực thể ở mức độ chính xác và quan điểm đã chọn. Mục đích của mô hình hoá à làm đơn giản hoá và tăng tính hiệu quả trong quá trình phát triển hệ thống thông tin Bốn nguyên tắc cơ bản khi mô hình hoá là: 1. Loại mô hình ảnh hưởng lớn đến cách vấn đề xử lý 2. Mỗi mô hình có thể được biểu diễn ở các mức độ chính xác khác nhau. 3. Mô hình tốt nhất là các mô hình phản chiếu thế giới thực. 4. Không mô hình đơn độc nào là vừa đủ Câu 8: Phân tích hướng đối tượng là gì? Phân tích hướng đối tượng là giai đoạn phát triển một mô hình chính xác và súc tích của một vấn đề, có thành phần là các đối tượng và khái niệm đời thực, dễ hiểu đối với người sử dụng. Câu 9: Anh/chị hãy nêu các bước chính trong hoạt động phân tích kiến trúc và hoạt động phân tích ca sử dụng? Các chế tác input và output của hoạt động phân tích kiến trúc và hoạt động phân tích ca sử dụng là gì? Các bước chính trong hoạt động phân tích kiến trúc: 1. Xác định yêu cầu của hệ thống 2. Phân tích các yêu cầu và xác định các đối tượng trong hệ thống 3. Xác định mối quan hệ giữa các đối tượng 4. Xác định phương thức và thuộc tính của đối tượng 5. Xác định các lớp và gom nhóm đối tượng 6. Xác định giao diện giữa các lớp 7. Xác định cách thức triển khai hệ thống Các bước chính trong hoạt động phân tích ca sử dụng: 1. Xác định phạm vi hệ thống 2. Tìm các tác nhân và UseCase 3. Mô tả UseCase 4. Xác định mối quan hệ giữa các UseCase 5. Kiếm tra và phê chuẩn mô hình Các chế tác Input thông thường bao gồm: tài liệu hệ thống, phiếu khảo sát, các yêu cầu hệ thống,.. Các chế tác Output bao gồm mô hình kiến trúc, mô hình ca sử dụng,.. Câu 11: Anh/chị hãy mô tả quan hệ generalization giữa các ca sử dụng? Lấy ví dụ minh hoạ? Quan hệ Generalization là quan hệ mà lớp con được tạo ra từ lớp cha và kế thừa thuộc tính và phương thức của lớp cha. Nó cho phép tái sử dụng các thuộc tính và phương thức của lớp cha và định nghĩa các thuộc tính và phương thức riêng của lớp con. Ví dụ như ta có: - Lớp cha: Vehicle (xe cộ) - Lớp con: Car (ô tô), Motorbike (xe máy), Truck (xe tải) Các lớp con trên được tạo ra từ lớp cha và thừa kế các thuộc tính và phương thức của lớp cha, nhưng cũng có thể có các thuộc tính và phương thức riêng của chúng. Ví dụ, lớp Car có thêm phương thức liên quan đến việc mở cửa, điều khiển vô lăng, trong khi lớp Motorbike có thêm phương thức liên quan đến phanh tay hoặc điều khiển ga, lớp Truck có thêm thuộc tính là trọng lượng trên 1 tấn,… Câu 12: RUP (Rational Unified Process) là gì? Mô tả các pha (Inception, Elaboration, Construction, Transition) của quy trình RUP? RUP là một quy trình nghiệp vụ để sử dụng cho kỹ thuật phần mềm hướng đối tượng. Các pha của quy trình phát triển RUP: 1. Pha khởi đầu (Inception): Định nghĩa phạm vi dự án Xác định tác nhân và UC phác thảo ca sử dụng cần thiết Phát triển 1 kế hoạch để nghiên cứu đánh giá về kinh phí khả thi, lịch trình 2. Pha chi tiết (Elaboration): Tập trung nắm bắt các yêu cầu và thiết lập khung kiến trúc cho hệ thống. Output: các mô hình yêu cầu, tài liệu mô tả của hệ thống, kinh phí và tài nguyên ở mức chi tiết 3. Pha xây dựng (Construction): Thiết kế hệ thống, lập trình, tích hợp, kiểm thử. Xây dựng các thành phần của hệ thống song song Output: Các hệ thống khả dụng và tài liệu liên quan 4. Pha chuyển giao (Transition): Bàn giao cho người dùng cuối và hỗ trợ họ sử dụng Câu 13: Yêu cầu phi chức năng là gì? Hãy đề xuất 5 yêu cầu phi chức năng cho hệ thống máy rút tiền tự động ATM? Yêu cầu phi chức năng là yêu cầu không liên quan đến chức năng cốt lõi của hệ thống nhưng vẫn đảm bảo hiệu quả và đáp ứng nhu cầu của người dùng. 5 yêu cầu phi chức năng cho hệ thống máy rút tiền tự động ATM: Độ tin cậy cao: Hệ thống phải đảm bảo hoạt động ổn định và bền vững trong thời gian dài, tránh các sự cố ảnh hưởng đến người sử dụng. Bảo mật thông tin: Hệ thống phải đảm bảo an toàn và bảo mật thông tin cho người dùng, tránh việc bị đánh cắp thông tin và sử dụng sai mục đích. Dễ sử dụng: Giao diện của hệ thống phải đơn giản, dễ sử dụng và thân thiện với người dùng Tương thích và tích hợp: Có thể sử dụng nhiều loại thẻ ngân hàng khác nhau. Hiệu suất cao: Có thể xử lý lượng lớn các giao dịch trong cùng 1 thời điểm và đảm bảo xử lý nhanh tróng, không bị treo hoặc chậm. Câu 14: Kiến trúc phần mềm là gì? Anh/chị hãy trình bày kiến trúc “khung nhìn 4+1”? Kiến trúc phần mềm là kiến trúc chứa 1 tập các quyết định thiết yếu về cách tổ chức hệ thống phần mềm. Khung nhìn 4+1 có: User model View (UC view): thể hiện các vấn đề và các giải pháp liên quan đến chức năng tổng quát của hệ thống. (Khung nhìn phụ) Structural Model View (Static view): thể hiện các vấn đề liên quan đến cấu trúc của hệ thống. Behavioral Model View (Dynamic view): thể hiện các vấn đề liên quan đến giao tiếp và xử lý đồng bộ của hệ thống. Implementation Model View (Component View): thể hiện các vấn đề liên quan đến việc tổ chức thành phần trong hệ thống. Environment Model View (Deployment View): thể hiện các vấn đề liên quan đến triển khai hệ thống. Câu 15: Mô tả các loại quan hệ (association, aggregation, composition, realization, generalization, dependency) trong biểu đồ lớp UML? Lấy ví dụ minh hoạ cho từng loại quan hệ? 1. Association (Kết hợp) Một mối quan hệ giữa hai hay nhiều lớp trong đó mỗi lớp có thể truy cập các thành phần của lớp kia. VD: Quan hệ giữa lớp và sinh viên trong đó mỗi SV có thể tham gia nhiều lớp và mỗi lớp học có thể có nhiều sinh viên. 2. Aggregation (Kết tập) Một dạng đặc biệt của kết tập, mô hình hoá mối quan hệ toàn thể - bộ phận (whole-part) giữa các đối tượng toàn thể và các bộ phận của nó. Ngắn gọn là 1 lớp chứa các instance của lớp kia. Mối quan hệ là một phần của (is a part of) VD: Nếu không có trường đại học thì hiệu trưởng không thể tồn tại. Nếu không có hiệu trưởng thì trường học vẫn tồn tại. 3. Composition (Hợp thành): Một dạng đặc biệt của kết tập với quyền sở hữu mạnh và các vòng đời trùng khớp giữa 2 lớp. Whole sở hữu part, tạo và huỷ part Part không thể tồn tại nếu không có whole và ngược lại. VD: Nếu không có phòng thì nhà không thể nào tồn tại và nếu không có nhà thì các phòng cũng không tồn tại. 4. Realization (Hiện thực hoá): Một quan hệ ngữ nghĩa giữa 2 phân lớp, trong đó 1 phân lớp đặc tả hành vi của nó và phân lớp kia có trách nhiệm cài đặt hành vi đó. Quan hệ hiện thực hoá thường là quan hệ giữa giao diện và thành phần cài đặt. VD: Lớp Circle được triển khai từ interface Shape có các phương thức như chu vi hoặc diện tích. 5. Generalization (Tổng quát hoá): Quan hệ mà lớp con được tạo ra từ lớp cha và kế thừa thuộc tính và phương thức của lớp cha. VD: Lớp Dog kế thừa các thuộc tính và phương thức của Animal. 6. Dependency (Phụ thuộc): Một quan hệ ngữ nghĩa giữa 2 lớp, trong đó sự thay đổi của lớp này (lớp độc lập) kéo theo sự thay đổi của lớp kia (lớp phụ thuộc) mặc dù giữa chúng không có mối liên kết rõ ràng. VD: Mối quan hệ giữa Hoá đơn và Hàng giảm giá.