Một mô hình độc lập với nền tảng (PIM) là mô hình chính xác của kiến trúc phần mềm trước khi cam kết với một nền tảng cụ thể. Nó là bước quan trọng trong quá trình phát triển phần mềm, giúp đảm bảo rằng phần mềm có thể được triển khai trên nhiều nền tảng khác nhau mà không cần thay đổi đáng kể. Mô hình PIM thường được sử dụng trong các phương pháp phát triển phần mềm như MDA (Model-Driven Architecture) và OMG (Object Management Group). Nó cho phép các nhà phát triển tạo ra mô hình phần mềm độc lập với nền tảng, sau đó có thể được chuyển đổi thành mã nguồn cho các nền tảng khác nhau.
Quiz: SWD392_RE_SU25 - Có đáp án và giải thích chi tiết
Phiên có lưu tiến độ dùng toàn bộ 60 câu của bộ đề để tiến độ khớp với máy chủ.
Bạn cần đăng nhập để bắt đầu làm bài và lưu tiến độ.
60
Không giới hạn
11
59
60
Xem trước câu hỏi
Một mô hình cụ thể của kiến trúc phần mềm được ánh xạ vào một nền tảng cụ thể được gọi là mô hình nền tảng cụ thể (PSM). PSM là một mô hình chi tiết và chính xác của kiến trúc phần mềm, được tạo ra sau khi đã chọn nền tảng cụ thể để triển khai phần mềm. Nó mô tả cách phần mềm sẽ hoạt động trên nền tảng đó, bao gồm các chi tiết về cấu trúc, giao tiếp và các yêu cầu khác. PSM giúp đảm bảo rằng phần mềm được thiết kế phù hợp với nền tảng và có thể hoạt động hiệu quả trên đó.
UML là viết tắt của Unified Modeling Language, là một ngôn ngữ mô hình hóa thống nhất được sử dụng để mô tả và thiết kế các hệ thống phần mềm. UML cung cấp một bộ công cụ để mô tả các đối tượng, mối quan hệ và hành vi của các đối tượng trong một hệ thống. Nó giúp các nhà phát triển phần mềm tạo ra các mô hình và thiết kế hệ thống một cách rõ ràng và thống nhất. UML bao gồm các yếu tố như lớp, đối tượng, mối quan hệ, hoạt động và quy trình, giúp các nhà phát triển phần mềm hiểu rõ về cấu trúc và hành vi của hệ thống. Sử dụng UML giúp tăng cường hiệu suất và giảm thiểu sai sót trong quá trình phát triển phần mềm.
Deployment Diagrams trong kiến trúc phần mềm là một công cụ quan trọng để mô tả và minh họa cấu trúc phân phối vật lý của các thành phần phần mềm. Mục đích chính của Deployment Diagrams là thể hiện cách các thành phần phần mềm được triển khai và phân phối trên các hệ thống và thiết bị khác nhau. Điều này giúp các nhà phát triển phần mềm hiểu rõ hơn về cấu trúc và tổ chức của hệ thống phần mềm, từ đó có thể dễ dàng quản lý và bảo trì hệ thống. Deployment Diagrams cũng giúp các nhà phát triển phần mềm xác định và giải quyết các vấn đề liên quan đến phân phối và triển khai phần mềm, chẳng hạn như vấn đề về hiệu suất, bảo mật và khả năng mở rộng.
Trong UML, sơ đồ cấu trúc phức hợp (composite structure diagram) được sử dụng để mô tả tổ chức và hành vi của các đối tượng bên trong một phân loại duy nhất. Nó giúp chúng ta hiểu rõ về mối quan hệ giữa các thành phần và cách chúng tương tác với nhau để đạt được mục tiêu chung. Sơ đồ này thường được sử dụng để mô hình hóa các hệ thống phức tạp, nơi mà các đối tượng có quan hệ chặt chẽ với nhau và cần được quản lý một cách hiệu quả. Bằng cách sử dụng sơ đồ cấu trúc phức hợp, chúng ta có thể xác định rõ ràng về tổ chức và hành vi của các đối tượng, từ đó giúp cải thiện chất lượng và hiệu suất của hệ thống.
Trong sơ đồ trường hợp sử dụng (use case diagram), một diễn viên (actor) đại diện cho một thực thể bên ngoài (external entity) tương tác với hệ thống. Điều này có nghĩa là diễn viên thể hiện một người, tổ chức hoặc hệ thống khác có thể tương tác với hệ thống thông qua giao diện người-máy (human-computer interface). Ví dụ, trong một hệ thống bán hàng trực tuyến, diễn viên có thể đại diện cho khách hàng, nhân viên bán hàng hoặc hệ thống thanh toán. Mục đích của diễn viên là thể hiện cách hệ thống tương tác với các thực thể bên ngoài và cung cấp thông tin về các yêu cầu của hệ thống.
Khi sử dụng mô hình phần mềm, có nhiều lợi ích mà chúng ta có thể tận dụng. Một trong số đó là việc cải thiện giao tiếp giữa các bên liên quan. Mô hình phần mềm giúp các bên hiểu rõ hơn về yêu cầu và mục tiêu của dự án, từ đó có thể trao đổi thông tin một cách hiệu quả hơn. Ngoài ra, mô hình phần mềm còn giúp dễ dàng bảo trì mã nguồn, giảm thiểu thời gian và chi phí cho việc sửa lỗi. Tuy nhiên, một số người có thể nghĩ rằng mô hình phần mềm có thể giúp tăng cường hiệu suất của phần cứng, nhưng thực tế thì không phải vậy. Mô hình phần mềm không liên quan trực tiếp đến hiệu suất của phần cứng. Vì vậy, lựa chọn không đúng là "Tăng cường hiệu suất của phần cứng".
Mục tiêu chính của việc xác minh phần mềm (software validation) là đảm bảo rằng hệ thống phần mềm được xây dựng đúng và đáp ứng được các yêu cầu chức năng và yêu cầu kỹ thuật. Điều này có nghĩa là hệ thống phần mềm cần phải hoạt động chính xác và hiệu quả trong môi trường thực tế. Xác minh phần mềm giúp đảm bảo rằng hệ thống phần mềm không chỉ được xây dựng đúng (có thể hoạt động) mà còn đáp ứng được các yêu cầu chức năng và kỹ thuật của người dùng. Điều này đòi hỏi phải có một quá trình xác minh kỹ lưỡng và chi tiết để đảm bảo rằng hệ thống phần mềm đáp ứng được các yêu cầu của người dùng.
Tính chất của một phương thức (operation) được gọi là dấu hiệu (signature) của nó. Dấu hiệu của một phương thức bao gồm tên phương thức, tham số và giá trị trả về. Điều này giúp xác định rõ ràng cách thức hoạt động của phương thức và cách thức giao tiếp giữa các phần tử trong hệ thống. Ví dụ, khi gọi một phương thức, chúng ta cần biết tên phương thức, các tham số cần cung cấp và giá trị nào sẽ được trả về. Điều này giúp đảm bảo tính nhất quán và dễ dàng sử dụng trong việc gọi và triển khai phương thức.
Mục đích chính của việc ẩn thông tin trong thiết kế đối tượng là cho phép các nhà phát triển quyết định những thông tin nào nên được hiển thị và những thông tin nào nên được ẩn. Điều này giúp giảm thiểu sự phụ thuộc giữa các phần của đối tượng và tăng cường tính bảo mật. Thông qua việc ẩn thông tin, các nhà phát triển có thể kiểm soát cách thức mà các phần của đối tượng tương tác với nhau, từ đó tạo ra các đối tượng linh hoạt và dễ dàng bảo trì. Điều này cũng giúp giảm thiểu sự phức tạp của mã và tăng cường tính bảo mật của hệ thống.
Một đối tượng trong lập trình thường được định nghĩa là một nhóm dữ liệu và các thủ tục (hàm, thủ tục, v.v.) có thể hoạt động trên dữ liệu đó. Điều này cho phép chúng ta tổ chức và quản lý dữ liệu một cách hiệu quả. Ví dụ, một đối tượng có thể đại diện cho một khách hàng, với các thuộc tính như tên, địa chỉ, số điện thoại, v.v. và các phương thức như thêm, sửa, xóa khách hàng. Đối tượng giúp chúng ta viết mã dễ đọc, dễ hiểu và dễ bảo trì hơn.
Các quy trình trong USDP bao gồm các bước sau: Thu thập yêu cầu, phân tích, thiết kế, triển khai và kiểm tra. USDP là một phương pháp phát triển phần mềm được sử dụng rộng rãi trong các công ty và tổ chức. Mục tiêu của USDP là đảm bảo rằng các sản phẩm phần mềm được phát triển đáp ứng được yêu cầu của khách hàng và đáp ứng được các tiêu chuẩn chất lượng cao. Các bước trong USDP được thiết kế để giúp các nhà phát triển phần mềm thực hiện các nhiệm vụ một cách có hệ thống và hiệu quả.
Đáp án đúng: A. Mô hình Client-Server tách hệ thống thành các bên phục vụ và bên sử dụng có ranh giới rõ ràng, giao tiếp qua giao diện chuẩn. Nhờ tách rời đó, có thể nhân bản thêm máy chủ khi tải tăng (mở rộng) và thay đổi từng phía độc lập (mô-đun hoá). B sai vì kiến trúc nguyên khối gộp mọi thứ vào một khối duy nhất, mở rộng phải nhân bản cả khối và sửa đâu cũng phải triển khai lại toàn bộ. C sai vì lập trình thủ tục là một mô hình lập trình, không phải thành phần kiến trúc. D sai vì khung kiểm thử là công cụ hỗ trợ chất lượng, không quyết định khả năng mở rộng hay mô-đun hoá.
Đáp án đúng: B. Mô hình phân tích tập trung vào việc HIỂU miền bài toán: có những khái niệm nào, quan hệ ra sao, hệ thống phải làm gì — cố tình chưa quyết định làm bằng cách nào. Đó là ranh giới phân biệt pha phân tích với pha thiết kế. A sai vì thiết kế giao diện là hoạt động của pha thiết kế. C sai vì viết mã là pha hiện thực. D sai vì kiểm thử hệ thống là pha sau cùng. Cả ba đều thuộc vùng lời giải, trong khi mô hình phân tích còn đang ở vùng bài toán.
Một use case thường mô tả cách thức tương tác giữa một người dùng (actor) và hệ thống để đạt được một mục tiêu cụ thể. Điều này bao gồm việc mô tả các bước thực hiện, các yêu cầu và các kết quả mong muốn. Mục đích của việc mô tả use case là để hiểu rõ hơn về cách người dùng sẽ tương tác với hệ thống và xác định các yêu cầu chức năng cần thiết.
Đáp án đúng: D. Use case mở rộng (extension use case) mô tả một phần CÓ ĐIỀU KIỆN của một use case khác — phần chỉ chạy trong hoàn cảnh nhất định, tại một điểm mở rộng đã định trước của use case cơ sở. Nhờ vậy luồng chính giữ được sự gọn gàng, còn các nhánh ngoại lệ hoặc tuỳ chọn được tách riêng. C là bẫy sát nhất nhưng mô tả ngược vai: đó là use case CƠ SỞ (bị mở rộng bởi use case khác), không phải use case mở rộng. B sai vì phần chức năng dùng chung cho nhiều use case được tách bằng quan hệ include, không phải extend. A sai vì độ dài của tương tác không liên quan gì đến khái niệm mở rộng.
Sử dụng mô hình Use Case trong phát triển hệ thống nhằm xác định mục đích chính là xác định các tương tác giữa người dùng và hệ thống. Mô hình này giúp các nhà phát triển hiểu rõ về nhu cầu và hành vi của người dùng, từ đó thiết kế hệ thống đáp ứng được nhu cầu của họ. Quá trình này bao gồm việc xác định các trường hợp sử dụng (Use Case) và mô tả các tương tác giữa người dùng và hệ thống trong từng trường hợp sử dụng. Điều này giúp đảm bảo rằng hệ thống được phát triển đáp ứng được nhu cầu của người dùng và đạt được hiệu suất cao.
Một cấu trúc tổ chức gọi là hiệp hội cấu trúc (composition hierarchy) mô tả mối quan hệ giữa một đối tượng và các thành phần của nó. Trong một hiệp hội cấu trúc, các thành phần được coi là một phần không thể tách rời của đối tượng. Ví dụ, một chiếc xe có thể được xem là một hiệp hội cấu trúc bao gồm các thành phần như khung xe, động cơ, bánh xe, v.v. Mỗi thành phần trong hiệp hội cấu trúc đều đóng vai trò quan trọng và không thể thiếu trong cấu trúc tổng thể của đối tượng. Điều này khác với mối quan hệ tổng thể và bộ phận, trong đó các bộ phận có thể được thêm hoặc loại bỏ mà không ảnh hưởng đến cấu trúc tổng thể của đối tượng.
Một thuộc tính (attribute) trong lập trình là một giá trị dữ liệu được lưu trữ bởi một đối tượng trong một lớp. Nó là một phần quan trọng của lớp và được sử dụng để mô tả các đặc điểm hoặc tính chất của đối tượng. Ví dụ, trong một lớp 'Xe', thuộc tính 'màu sắc' có thể được sử dụng để mô tả màu sắc của xe. Thuộc tính có thể là một giá trị đơn giản như số hoặc chuỗi, hoặc có thể là một đối tượng phức tạp như một mảng hoặc một lớp khác. Thuộc tính được sử dụng để lưu trữ và truy cập dữ liệu của đối tượng, và nó giúp tạo nên cấu trúc và tính chất của lớp.
Đáp án đúng: B. Lớp thực thể (entity class) là lớp lưu trữ dữ liệu — đối tượng của nó sống lâu, giữ thông tin bền vững của hệ thống và thường được ánh xạ xuống cơ sở dữ liệu. A sai vì đó chỉ là mô tả vị trí xuất hiện của lớp trên một sơ đồ ER, không phải định nghĩa vai trò của nó. C sai vì lớp giao tiếp với một thực thể bên ngoài là lớp BIÊN (boundary class) — chữ "entity" ở đây bị dùng theo nghĩa "thực thể ngoài hệ thống", đây là bẫy chơi chữ của câu. D sai vì lớp thực thể nằm bên trong hệ thống, không phải lớp ngoài.
Khái niệm lớp (class) và giao diện (interface) trong lập trình là hai khái niệm cơ bản và quan trọng. Lớp là một đơn vị tổ chức code, bao gồm các biến và phương thức, có thể chứa các thực thi (implementations) của phương thức. Ngược lại, giao diện chỉ là một tập hợp các phương thức, không chứa các thực thi. Điều này có nghĩa là một lớp có thể chứa các thực thi của phương thức, trong khi một giao diện không thể. Điều này giúp phân biệt rõ ràng giữa lớp và giao diện, giúp lập trình viên sử dụng chúng một cách hiệu quả và chính xác.
Một đối tượng ẩn thông tin là một khái niệm trong lập trình hướng đối tượng, trong đó một đối tượng được thiết kế để ẩn dữ liệu của nó khỏi các phần khác của chương trình. Đối tượng ẩn thông tin thường được sử dụng để ngăn chặn truy cập trực tiếp vào dữ liệu của nó, từ đó giúp bảo vệ dữ liệu khỏi bị thay đổi hoặc bị xâm phạm. Đối tượng ẩn thông tin thường được tạo ra bằng cách sử dụng các kỹ thuật như encapsulation, trong đó dữ liệu và các phương thức liên quan đến dữ liệu được nhóm lại trong một đối tượng duy nhất. Điều này giúp tăng cường bảo mật và giảm thiểu rủi ro xảy ra khi sử dụng dữ liệu.
Trong lập trình hướng đối tượng, Encapsulation, Class và Subclass là những khái niệm quan trọng. Encapsulation giúp cô lập dữ liệu và phương thức, Class là một mẫu thiết kế mô tả một loại đối tượng, Subclass là một lớp con kế thừa tính chất của lớp cha. Tuy nhiên, Subroutine không phải là một khái niệm liên quan đến lập trình hướng đối tượng. Subroutine thường được sử dụng trong lập trình thủ tục, nơi mà một đoạn mã được gọi nhiều lần trong chương trình. Vì vậy, trong bối cảnh lập trình hướng đối tượng, Subroutine không phải là một khái niệm liên quan.
Một sơ đồ chuỗi trong UML được sử dụng để mô tả các tương tác giữa các đối tượng trong một hệ thống. Nó cho thấy cách các đối tượng tương tác với nhau theo thời gian, bao gồm các sự kiện và các tín hiệu được gửi và nhận giữa chúng. Sơ đồ chuỗi giúp các nhà phát triển hiểu rõ hơn về cách các thành phần của hệ thống tương tác với nhau và giúp họ xác định các vấn đề tiềm ẩn trong thiết kế hệ thống. Nó cũng giúp các nhà phát triển tạo ra các giao diện người dùng tốt hơn và cải thiện hiệu suất của hệ thống.
Một sơ đồ chuỗi (sequence diagram) là một loại sơ đồ được sử dụng để minh họa các giao tiếp giữa các đối tượng trong một hệ thống. Nó cho thấy các đối tượng tương tác với nhau theo một thứ tự nhất định, giúp dễ dàng hiểu và phân tích các giao tiếp giữa các phần tử trong hệ thống. Sơ đồ chuỗi thường được sử dụng trong thiết kế và phát triển phần mềm để mô tả các giao tiếp giữa các lớp, các đối tượng và các dịch vụ.
Một sơ đồ tương tác (interaction diagram) là một công cụ được sử dụng để mô tả các tương tác giữa các đối tượng trong một hệ thống. Nó cho thấy các đối tượng tương tác với nhau như thế nào và theo trình tự nào. Trong một sơ đồ tương tác, các đối tượng được thể hiện dưới dạng các hình dạng khác nhau, chẳng hạn như hình vuông, hình tròn, v.v. Các mối quan hệ giữa các đối tượng được thể hiện bằng các đường kết nối. Sơ đồ tương tác giúp các nhà phát triển hiểu rõ hơn về các tương tác giữa các đối tượng và có thể dự đoán được các hành vi của hệ thống. Nó cũng giúp các nhà phát triển xác định các vấn đề tiềm ẩn và cải thiện hệ thống.
Máy trạng thái hữu hạn (Finite State Machine - FSM) là một mô hình được sử dụng trong mô hình hóa phần mềm để mô tả và phân tích hành vi của hệ thống. Nó giúp chúng ta mô tả hệ thống bằng cách sử dụng các trạng thái và chuyển tiếp giữa các trạng thái. Điều này cho phép chúng ta hiểu rõ hơn về cách hệ thống phản ứng với các sự kiện và dữ liệu đầu vào khác nhau. FSM thường được sử dụng trong thiết kế và phát triển phần mềm để mô hình hóa các quy trình và giao tiếp giữa các thành phần khác nhau. Nó giúp chúng ta xác định và giải quyết các vấn đề về tính toàn vẹn dữ liệu, đồng bộ hóa và bảo mật.
Khi một trạng thái máy trạng thái (state machine) chuyển sang một trạng thái hợp thành (composite state), điều này tương đương với việc chuyển sang một trong các trạng thái con (substates) của trạng thái hợp thành đó. Trạng thái hợp thành có thể bao gồm một hoặc nhiều trạng thái con, và việc chuyển sang trạng thái hợp thành có thể được xem như là một cách để mô tả một chuỗi các trạng thái con.
Khi một trạng thái phức tạp (composite state) chuyển sang trạng thái khác, điều này tương đương với việc chuyển trạng thái ra khỏi tất cả các trạng thái con (substates) của nó. Điều này có nghĩa là khi trạng thái phức tạp kết thúc, tất cả các trạng thái con cũng sẽ kết thúc cùng với nó. Ví dụ, nếu một trạng thái phức tạp đại diện cho một quá trình mua hàng, thì khi quá trình mua hàng kết thúc, trạng thái phức tạp sẽ chuyển sang trạng thái khác, tương đương với việc chuyển trạng thái ra khỏi trạng thái "đang mua hàng" của từng bước trong quá trình mua hàng.
Một thông điệp đầu ra từ một đối tượng kiểm soát phụ thuộc vào trạng thái tương ứng với một hành động trên máy trạng thái nội bộ. Điều này có nghĩa là thông điệp đầu ra được tạo ra bởi một hành động cụ thể được thực hiện bởi máy trạng thái nội bộ. Ví dụ, trong một hệ thống kiểm soát nhiệt độ, một thông điệp đầu ra có thể được tạo ra khi máy trạng thái nội bộ chuyển sang trạng thái 'nhiệt độ cao' và hành động được thực hiện là bật quạt gió để làm mát. Trong trường hợp này, thông điệp đầu ra tương ứng với hành động 'bật quạt gió' trên máy trạng thái nội bộ.
Các mô hình tương tác động động phụ thuộc vào trạng thái được sử dụng để mô tả và phân tích hành vi của hệ thống trong các kịch bản thực thi khác nhau. Điều này cho phép các nhà phát triển và nhà phân tích hiểu rõ hơn về cách hệ thống phản ứng với các sự kiện và thay đổi trong thời gian chạy. Mô hình này đặc biệt hữu ích trong việc mô tả và phân tích các hệ thống phức tạp, chẳng hạn như các hệ thống phân tán hoặc các hệ thống dựa trên dịch vụ.
Trên một sơ đồ tương tác, có thể xảy ra các tình huống sau: Một đối tượng kiểm soát phụ thuộc vào trạng thái gửi một tin nhắn đến một đối tượng thực thể. Một đối tượng kiểm soát phụ thuộc vào trạng thái gửi một tin nhắn đến một đối tượng điều phối. Một đối tượng kiểm soát phụ thuộc vào trạng thái gửi một tin nhắn đến một đối tượng in. Tất cả các tình huống trên đều có thể xảy ra trên một sơ đồ tương tác. Điều này cho thấy sự linh hoạt và đa dạng của các tương tác trong một hệ thống, từ việc điều phối các hoạt động đến việc thực hiện các tác vụ cụ thể.
Mô hình giao tiếp kiến trúc giúp cải thiện hiệu suất hệ thống bằng cách cho phép giao tiếp không đồng bộ và trao đổi dữ liệu hiệu quả. Điều này cho phép các thành phần hệ thống hoạt động độc lập và giảm thiểu thời gian chờ đợi, từ đó tăng cường hiệu suất tổng thể. Ngoài ra, mô hình giao tiếp kiến trúc cũng giúp giảm thiểu lỗi và tăng cường độ tin cậy của hệ thống. Bằng cách sử dụng các mô hình giao tiếp phù hợp, các nhà phát triển có thể thiết kế và triển khai hệ thống một cách hiệu quả hơn, đáp ứng nhu cầu của người dùng và đạt được mục tiêu kinh doanh.
Kỹ thuật thiết kế phần mềm (software architecture) mô tả tổng thể cấu trúc của một hệ thống phần mềm. Nó bao gồm các thành phần chính như mô hình tổ chức, giao tiếp giữa các thành phần, và cách thức hoạt động của hệ thống. Mục tiêu của kỹ thuật thiết kế phần mềm là đảm bảo hệ thống phần mềm có thể mở rộng, dễ dàng bảo trì và sửa lỗi, đồng thời đáp ứng được các yêu cầu chức năng và hiệu suất. Nó giống như một bản thiết kế kiến trúc cho một tòa nhà, giúp đảm bảo rằng tòa nhà được xây dựng một cách hợp lý và hiệu quả.
Cấu trúc phần mềm được định nghĩa bởi Bass, Clements và Kazman là mô hình phần mềm của một chương trình hoặc hệ thống tính toán, bao gồm cấu trúc hoặc cấu trúc của hệ thống, bao gồm các phần tử phần mềm, các tính chất có thể nhìn thấy bên ngoài của các phần tử đó và mối quan hệ giữa chúng. Điều này bao gồm các thành phần phần mềm, các thuộc tính có thể nhìn thấy bên ngoài và mối quan hệ giữa chúng. Cấu trúc phần mềm này là nền tảng để xây dựng và phát triển các hệ thống phần mềm phức tạp. Nó giúp các nhà phát triển hiểu rõ về các phần tử và mối quan hệ giữa chúng, từ đó có thể thiết kế và xây dựng các hệ thống phần mềm hiệu quả và đáng tin cậy.
Một hệ thống dịch vụ thường được chia thành các phần tử nhỏ hơn gọi là subsystem. Các phần tử này thường bao gồm các đối tượng logic kinh doanh và đối tượng điều phối. Đối tượng logic kinh doanh chịu trách nhiệm thực hiện các hoạt động kinh doanh cụ thể, trong khi đối tượng điều phối chịu trách nhiệm quản lý và điều phối các hoạt động của hệ thống. Ví dụ, đối tượng logic kinh doanh có thể là một lớp thực hiện việc tính toán thuế, trong khi đối tượng điều phối có thể là một lớp quản lý việc lưu trữ và truy xuất dữ liệu. Các phần tử này thường được thiết kế để hoạt động độc lập và có thể được sử dụng lại trong nhiều hệ thống khác nhau.
Một hệ thống tương tác người dùng phức tạp thường bao gồm nhiều cửa sổ và nhiều luồng kiểm soát. Điều này cho phép người dùng tương tác với hệ thống theo nhiều cách khác nhau, chẳng hạn như sử dụng nhiều cửa sổ để thực hiện các tác vụ khác nhau. Hệ thống cũng có thể sử dụng nhiều luồng kiểm soát để thực hiện các tác vụ song song, cải thiện hiệu suất và hiệu quả. Ví dụ, một hệ thống quản lý dự án có thể bao gồm nhiều cửa sổ để quản lý các dự án khác nhau, và sử dụng nhiều luồng kiểm soát để thực hiện các tác vụ như lập kế hoạch, theo dõi tiến độ và quản lý nguồn lực.
Khi thiết kế một đối tượng bên ngoài để giao tiếp với hệ thống, chúng ta cần xem xét cách thức giao tiếp này sẽ diễn ra. Mỗi hệ thống đều có các thành phần riêng biệt, được gọi là các subsystem. Để giao tiếp hiệu quả, đối tượng bên ngoài nên giao tiếp với một subsystem duy nhất. Điều này giúp giảm thiểu sự phức tạp và tăng cường khả năng bảo trì. Giao tiếp với một subsystem duy nhất cũng giúp đối tượng bên ngoài có thể tập trung vào việc giao tiếp với một thành phần cụ thể của hệ thống, thay vì phải xử lý nhiều thành phần khác nhau. Điều này giúp giảm thiểu khả năng xảy ra lỗi và tăng cường khả năng tương tác giữa đối tượng bên ngoài và hệ thống.
Inheritance là một khái niệm quan trọng trong lập trình hướng đối tượng. Nó cho phép một lớp con kế thừa các tính chất, phương thức và thuộc tính từ lớp cha. Điều này giúp giảm thiểu sự lặp lại mã và tăng cường tính tái sử dụng. Khi một lớp con kế thừa từ lớp cha, nó có thể sử dụng các phương thức và thuộc tính đã được định nghĩa trong lớp cha mà không cần phải định nghĩa lại. Điều này giúp đơn giản hóa quá trình lập trình và tăng cường tính linh hoạt.
Một lớp thực thể (entity class) là lớp có chứa dữ liệu và phương thức liên quan đến dữ liệu đó. Nó là một phần quan trọng trong lập trình hướng đối tượng, giúp cô lập dữ liệu và phương thức, tạo điều kiện thuận lợi cho việc tái sử dụng và mở rộng mã nguồn. Ví dụ, lớp 'Khách hàng' có thể có các thuộc tính như 'tên', 'địa chỉ', 'số điện thoại' và các phương thức như 'thêm khách hàng', 'xóa khách hàng', 'cập nhật thông tin khách hàng'.
Các lớp giao diện người dùng đồ họa thường bao gồm các thành phần như menu, cửa sổ, nút bấm, v.v. Tuy nhiên, 'A pin' không phải là một thành phần giao diện người dùng đồ họa điển hình. Một 'A pin' thường được hiểu là một vật thể nhỏ được sử dụng để giữ hoặc cố định một vật thể khác, chẳng hạn như một bản đồ hoặc một bức ảnh. Vì vậy, 'A pin' không phải là một lớp giao diện người dùng đồ họa.
Một trong những đặc điểm chính của lớp máy trạng thái được mô tả trong ngữ cảnh này là sự đóng gói thông tin trạng thái chart và ẩn bảng chuyển trạng thái. Điều này có nghĩa là lớp máy trạng thái sẽ chứa tất cả thông tin về trạng thái và chuyển trạng thái, nhưng không cung cấp quyền truy cập trực tiếp vào bảng chuyển trạng thái. Thay vào đó, lớp máy trạng thái sẽ cung cấp các phương thức để xử lý các sự kiện nhập vào và thực hiện các chuyển trạng thái phù hợp. Điều này giúp bảo vệ bảng chuyển trạng thái khỏi việc truy cập không mong muốn và đảm bảo rằng trạng thái của hệ thống được quản lý một cách hợp lý.
Polymorphism và động kết hợp (dynamic binding) cho phép một đối tượng thực hiện các hành động khác nhau dựa trên loại của nó. Điều này có nghĩa là một đối tượng có thể thực hiện các phương thức khác nhau mặc dù nó được gọi bằng cùng một tên. Ví dụ, nếu bạn có một lớp Animal và một lớp Dog kế thừa từ Animal, bạn có thể tạo một đối tượng Dog và gọi phương thức bark() mà không cần phải biết rằng đối tượng đó là một Dog. Điều này cho phép bạn viết mã linh hoạt hơn và dễ dàng thêm mới các lớp con mà không cần phải thay đổi mã hiện có.
Một lớp bọc cơ sở dữ liệu (database wrapper class) là một lớp lập trình được thiết kế để ẩn đi chi tiết về cách truy cập dữ liệu trong cơ sở dữ liệu. Lớp này thường bao gồm các phương thức để thực hiện các hoạt động cơ bản như tạo kết nối, thực hiện truy vấn, cập nhật và xóa dữ liệu. Mục đích chính của lớp bọc cơ sở dữ liệu là cung cấp một giao diện đơn giản và thống nhất để truy cập dữ liệu, giúp giảm thiểu sự phức tạp và tăng cường tính linh hoạt trong việc phát triển ứng dụng. Điều này cho phép các nhà phát triển tập trung vào logic kinh doanh và giao diện người dùng mà không cần lo lắng về chi tiết kỹ thuật về cơ sở dữ liệu.
Khi thiết kế kiến trúc dịch vụ hướng chức năng (SOA), một mối quan tâm chính là sự kết nối lỏng lẻo giữa các thành phần để tăng tính linh hoạt. Điều này có nghĩa là các thành phần có thể được thiết kế và triển khai độc lập mà không ảnh hưởng đến các thành phần khác. Sự kết nối lỏng lẻo giúp tăng cường khả năng mở rộng, giảm thiểu rủi ro và cải thiện khả năng bảo trì. Ngoài ra, nó cũng giúp tăng cường khả năng thích nghi với các thay đổi trong yêu cầu của hệ thống. Vì vậy, sự kết nối lỏng lẻo giữa các thành phần là một yếu tố quan trọng khi thiết kế kiến trúc dịch vụ hướng chức năng.
Mô hình đàm phán (Negotiation pattern) cho phép hai bên trao đổi và thỏa thuận về một dịch vụ. Trong mô hình này, bên yêu cầu (client agent) có thể đề xuất một dịch vụ, và bên cung cấp (service agent) có thể đáp ứng yêu cầu đó bằng cách cung cấp dịch vụ. Tuy nhiên, bên cung cấp không thể tự động đề xuất dịch vụ cho bên yêu cầu mà không có yêu cầu trước đó. Vì vậy, câu trả lời đúng là "The service agent can offer a service in response to a client agent request."
SOA (Service-Oriented Architecture) là một phương pháp thiết kế hệ thống dựa trên các dịch vụ độc lập. Một trong những đặc điểm quan trọng của SOA là các dịch vụ tự chủ (autonomous). Điều này có nghĩa là mỗi dịch vụ có thể được triển khai, quản lý và duy trì độc lập với các dịch vụ khác. Các dịch vụ tự chủ cho phép hệ thống trở nên linh hoạt, dễ dàng mở rộng và nâng cấp. Điều này cũng giúp giảm thiểu sự phụ thuộc giữa các dịch vụ, từ đó tăng cường khả năng chịu lỗi và độ tin cậy của hệ thống. Ngoài ra, các dịch vụ tự chủ cũng cho phép các tổ chức dễ dàng tích hợp các dịch vụ từ các nguồn khác nhau, tạo điều kiện cho việc hợp tác và cạnh tranh.
Mô hình kiến trúc dựa trên thành phần (Component-Based Architecture) mang lại nhiều lợi thế trong việc phát triển phần mềm. Một trong những lợi thế chính là tính dễ bảo trì (Enhanced maintainability). Khi sử dụng mô hình này, các thành phần được tách biệt và độc lập, giúp giảm thiểu tác động khi có thay đổi. Điều này cho phép các nhà phát triển dễ dàng cập nhật, sửa lỗi và thêm mới các thành phần mà không ảnh hưởng đến các thành phần khác. Tính dễ bảo trì này giúp giảm thiểu thời gian và chi phí cần thiết cho việc bảo trì và sửa lỗi phần mềm.
CBSA (Component-Based Software Architecture) là một phương pháp thiết kế phần mềm tập trung vào việc xây dựng các thành phần phần mềm độc lập và có thể tái sử dụng. Mục tiêu chính của CBSA là tạo ra các ứng dụng phần mềm có thể được xây dựng từ các thành phần phần mềm đã tồn tại, giúp giảm thiểu thời gian và chi phí phát triển phần mềm. Điều này đạt được thông qua việc tạo ra các thành phần phần mềm có thể được tái sử dụng trong nhiều ứng dụng khác nhau, giúp tăng cường tính linh hoạt và khả năng mở rộng của phần mềm. Ngoài ra, CBSA cũng giúp cải thiện tính bảo trì và sửa lỗi của phần mềm, vì các thành phần phần mềm độc lập có thể được sửa lỗi và cập nhật độc lập.
Một giao diện được cung cấp bởi một thành phần bao gồm các phương thức mà thành phần đó phải thực hiện. Nó là một tập hợp các phương thức mà thành phần phải cung cấp để tương tác với các thành phần khác trong ứng dụng. Giao diện được cung cấp bởi một thành phần thường bao gồm các phương thức như khởi tạo, cập nhật trạng thái, xử lý sự kiện, v.v. Mục đích của giao diện được cung cấp là giúp các thành phần khác trong ứng dụng biết cách tương tác với thành phần đó một cách chính xác và an toàn. Điều này giúp tránh các lỗi và sự cố không mong muốn trong ứng dụng.
Trong kiến trúc phần mềm đồng thời và thời gian thực, một đối tượng hoạt động (active object) và một đối tượng thụ động (passive object) là hai khái niệm quan trọng. Đối tượng hoạt động có khả năng tự thực hiện các hành động và quản lý các hoạt động của mình, trong khi đối tượng thụ động không có khả năng tự thực hiện và cần được quản lý bởi một đối tượng hoạt động khác. Điều này có nghĩa là đối tượng hoạt động có một luồng kiểm soát (thread of control), trong khi đối tượng thụ động không có. Ví dụ, một hệ thống có thể có một đối tượng hoạt động chịu trách nhiệm quản lý các yêu cầu của người dùng, trong khi các đối tượng thụ động chịu trách nhiệm thực hiện các nhiệm vụ cụ thể. Tóm lại, đối tượng hoạt động có khả năng tự thực hiện và quản lý các hoạt động của mình, trong khi đối tượng thụ động không có khả năng tự thực hiện và cần được quản lý bởi một đối tượng hoạt động khác.
Một nhiệm vụ chu kỳ là một loại nhiệm vụ được kích hoạt theo một lịch trình đã được định nghĩa. Nó được thực hiện một cách tự động và thường được sử dụng để thực hiện các tác vụ lặp lại như gửi tin nhắn hàng ngày, cập nhật dữ liệu hàng tuần, v.v. Nhiệm vụ chu kỳ có thể được kích hoạt bởi một timer, một lịch trình hoặc một sự kiện cụ thể. Ví dụ, một ứng dụng có thể có một nhiệm vụ chu kỳ để gửi thông báo hàng ngày về các sự kiện quan trọng. Nhiệm vụ chu kỳ giúp giảm tải công việc của người dùng và đảm bảo rằng các tác vụ quan trọng được thực hiện một cách đều đặn.
Đáp án đúng: A. Trong mẫu Distributed Control, quyền điều khiển được chia cho nhiều thành phần điều khiển, mỗi thành phần điều khiển một phần của hệ thống và trao đổi trực tiếp với nhau — không có một thành phần trung tâm nào nắm toàn quyền. C sai vì "điều phối nhiều thành phần điều khiển" là đặc trưng của Hierarchical Control, nơi có một thành phần cấp trên phối hợp các thành phần cấp dưới. D sai vì "điều khiển toàn bộ các đối tượng vào/ra" là đặc trưng của Centralized Control. B sai vì đáp ứng yêu cầu từ nhiều hệ thống con khách là đặc trưng của mẫu client/service, không phải mẫu điều khiển.
Một điểm biến đổi trong trường hợp sử dụng (use case variation point) là một vị trí trong trường hợp sử dụng nơi có thể xảy ra sự thay đổi. Nó đại diện cho một điểm trong trường hợp sử dụng nơi có thể có nhiều cách giải quyết khác nhau. Ví dụ, trong trường hợp sử dụng 'Mua hàng trực tuyến', điểm biến đổi có thể là 'Xác nhận đơn hàng', nơi có thể có nhiều cách giải quyết khác nhau như gửi email xác nhận, gửi tin nhắn xác nhận hoặc hiển thị thông báo xác nhận trên màn hình.
Trong một trạng thái máy (state machine) của SPL (Software Product Line), điều kiện tính năng (feature condition) được sử dụng để xác định xem tính năng nào đã được chọn hay chưa. Điều này cho phép trạng thái máy phản ứng khác nhau tùy thuộc vào tính năng nào được chọn. Ví dụ, nếu tính năng 'tích hợp GPS' được chọn, trạng thái máy có thể chuyển sang trạng thái 'chọn địa điểm' khi người dùng chọn địa điểm. Ngược lại, nếu tính năng 'tích hợp GPS' không được chọn, trạng thái máy có thể chuyển sang trạng thái 'chọn địa điểm thủ công'. Điều kiện tính năng giúp trạng thái máy linh hoạt và dễ dàng mở rộng khi thêm hoặc xóa tính năng.
SPL (Software Product Line) là một phương pháp thiết kế phần mềm giúp tạo ra một dòng sản phẩm phần mềm có tính linh hoạt và tái sử dụng cao. SPL mô tả cấu trúc tổng thể của một dòng sản phẩm phần mềm, bao gồm các thành phần, mối quan hệ và quy tắc thiết kế. Nó giúp các nhà phát triển tạo ra các sản phẩm phần mềm có tính tương thích và dễ dàng mở rộng.
Tính chất chất lượng phần mềm (software quality attributes) là những đặc điểm không liên quan trực tiếp đến chức năng của phần mềm mà ảnh hưởng đến hiệu suất và khả năng sử dụng của nó. Chúng bao gồm các yếu tố như độ ổn định, độ tin cậy, khả năng mở rộng, bảo mật, tính dễ sử dụng và khả năng tương thích. Tính chất chất lượng phần mềm giúp đảm bảo rằng phần mềm hoạt động một cách hiệu quả và đáp ứng được nhu cầu của người dùng.
Câu hỏi này yêu cầu bạn xác định yếu tố không liên quan đến hiệu suất của hệ thống. Hệ thống có thể được đo bằng nhiều chỉ số khác nhau, bao gồm thời gian phản hồi (system response time), khả năng xử lý (system throughput), khả năng sẵn sàng (system availability) và khả năng chứa (system capacity). Trong số các yếu tố này, khả năng sẵn sàng (system availability) không phải là một chỉ số hiệu suất. Khả năng sẵn sàng được đo bằng tỷ lệ thời gian hệ thống hoạt động bình thường và sẵn sàng phục vụ người dùng. Mặc dù khả năng sẵn sàng là một yếu tố quan trọng, nhưng nó không phải là một chỉ số hiệu suất như thời gian phản hồi, khả năng xử lý và khả năng chứa.
Tính chất chất lượng phần mềm là những đặc điểm quan trọng mà phần mềm cần có để đáp ứng nhu cầu của người dùng. Trong các lựa chọn trên, tính maintainability (tính dễ bảo trì) là một trong những đặc điểm quan trọng của phần mềm. Tính maintainability cho phép phần mềm được cập nhật, sửa lỗi và mở rộng dễ dàng mà không ảnh hưởng đến hiệu suất và tính ổn định của phần mềm. Điều này giúp giảm thiểu chi phí và thời gian cần thiết để duy trì phần mềm.
Người học chấm Quiz: SWD392_RE_SU25 - Có đáp án và giải thích chi tiết ra sao?
Trung bình từ các phiên học hợp lệ.