OOAD - Thiết kế hướng đối tượng
Sau giai đoạn phân tích, mô hình khái niệm được phát triển thêm thành mô hình hướng đối tượng sử dụng thiết kế hướng đối tượng (OOD). Trong OOD, các khái niệm độc lập về công nghệ trong mô hình phân tích được ánh xạ vào các lớp thực thi, các ràng buộc được xác định và các giao diện được thiết kế, dẫn đến mô hình cho miền giải pháp. Tóm lại, một mô tả chi tiết được xây dựng chỉ rõ cách thức xây dựng hệ thống dựa trên công nghệ cụ thể
Các giai đoạn cho thiết kế hướng đối tượng có thể được xác định là:
- Định nghĩa bối cảnh của hệ thống
- Thiết kế kiến trúc hệ thống
- Nhận dạng các đối tượng trong hệ thống
- Xây dựng mô hình thiết kế
- Đặc điểm kỹ thuật của giao diện đối tượng
Thiết kế hệ thống
Thiết kế hệ thống hướng đối tượng bao gồm việc xác định bối cảnh của một hệ thống, tiếp theo là thiết kế kiến trúc của hệ thống.
Context- Bối cảnh của một hệ thống có một phần tĩnh và một phần động. Bối cảnh tĩnh của hệ thống được thiết kế bằng cách sử dụng một sơ đồ khối đơn giản của toàn bộ hệ thống được mở rộng thành một hệ thống phân cấp của các hệ thống con. Mô hình hệ thống con được biểu diễn bằng các gói UML. Bối cảnh động mô tả cách hệ thống tương tác với môi trường của nó. Nó được mô hình hóa bằng cách sử dụnguse case diagrams.
System Architecture- Kiến trúc hệ thống được thiết kế trên cơ sở bối cảnh của hệ thống phù hợp với các nguyên tắc thiết kế kiến trúc cũng như kiến thức miền. Thông thường, một hệ thống được phân chia thành các lớp và mỗi lớp được phân tách để tạo thành các hệ thống con.
Phân rã hướng đối tượng
Phân rã có nghĩa là phân chia một hệ thống phức tạp lớn thành một hệ thống phân cấp của các thành phần nhỏ hơn với mức độ phức tạp ít hơn, theo nguyên tắc phân chia. Mỗi thành phần chính của hệ thống được gọi là một hệ thống con. Phân rã hướng đối tượng xác định các đối tượng tự trị riêng lẻ trong một hệ thống và giao tiếp giữa các đối tượng này.
Ưu điểm của phân hủy là -
Các thành phần riêng lẻ có độ phức tạp thấp hơn, do đó dễ hiểu và dễ quản lý hơn.
Nó cho phép phân chia lực lượng lao động có kỹ năng chuyên biệt.
Nó cho phép các hệ thống con được thay thế hoặc sửa đổi mà không ảnh hưởng đến các hệ thống con khác.
Xác định đồng tiền
Đồng thời cho phép nhiều đối tượng nhận các sự kiện cùng lúc và nhiều hoạt động được thực hiện đồng thời. Đồng thời được xác định và biểu diễn trong mô hình động.
Để kích hoạt tính năng đồng thời, mỗi phần tử đồng thời được gán một luồng điều khiển riêng biệt. Nếu đồng thời ở mức đối tượng, thì hai đối tượng đồng thời được gán hai luồng điều khiển khác nhau. Nếu hai hoạt động của một đối tượng đồng thời về bản chất, thì đối tượng đó được chia thành các luồng khác nhau.
Đồng thời liên quan đến các vấn đề về tính toàn vẹn dữ liệu, bế tắc và chết đói. Vì vậy, một chiến lược rõ ràng cần phải được thực hiện bất cứ khi nào yêu cầu đồng thời. Bên cạnh đó, tính đồng thời đòi hỏi phải được xác định ở chính giai đoạn thiết kế, và không thể để lại cho giai đoạn thực hiện.
Nhận dạng các mẫu
Trong khi thiết kế các ứng dụng, một số giải pháp thường được chấp nhận được áp dụng cho một số loại vấn đề. Đây là những mẫu thiết kế. Một mẫu có thể được định nghĩa là một tập hợp các khối xây dựng được lập thành văn bản có thể được sử dụng trong các loại vấn đề phát triển ứng dụng nhất định.
Một số mẫu thiết kế thường được sử dụng là -
- Mẫu mặt tiền
- Mô hình phân tách chế độ xem mô hình
- Mẫu người quan sát
- Mô hình điều khiển chế độ xem mô hình
- Xuất bản mẫu đăng ký của Vietnam
- Mẫu proxy
Kiểm soát sự kiện
Trong quá trình thiết kế hệ thống, các sự kiện có thể xảy ra trong các đối tượng của hệ thống cần được xác định và xử lý thích hợp.
Một sự kiện là một đặc tả của một sự kiện quan trọng có vị trí trong thời gian và không gian.
Có bốn loại sự kiện có thể được mô hình hóa, đó là -
Signal Event - Một đối tượng được đặt tên bị ném bởi một đối tượng và bị bắt bởi một đối tượng khác.
Call Event - Một sự kiện đồng bộ đại diện cho việc gửi một hoạt động.
Time Event - Một sự kiện đại diện cho thời gian trôi qua.
Change Event - Một sự kiện đại diện cho sự thay đổi trong trạng thái.
Xử lý các điều kiện ranh giới
Giai đoạn thiết kế hệ thống cần phải giải quyết việc khởi tạo và kết thúc hệ thống nói chung cũng như từng hệ thống con. Các khía cạnh khác nhau được ghi lại như sau:
Sự khởi động của hệ thống, tức là sự chuyển đổi của hệ thống từ trạng thái không khởi tạo sang trạng thái ổn định.
Việc chấm dứt hệ thống, nghĩa là đóng tất cả các luồng đang chạy, dọn dẹp tài nguyên và các thông báo sẽ được gửi đi.
Cấu hình ban đầu của hệ thống và cấu hình lại hệ thống khi cần thiết.
Biết trước các lỗi hoặc sự kết thúc không mong muốn của hệ thống.
Các điều kiện biên được mô hình hóa bằng cách sử dụng các trường hợp sử dụng biên.
Thiết kế đối tượng
Sau khi hệ thống con phân cấp được phát triển, các đối tượng trong hệ thống được xác định và thiết kế chi tiết của chúng. Ở đây, nhà thiết kế nêu chi tiết chiến lược được chọn trong quá trình thiết kế hệ thống. Sự nhấn mạnh chuyển từ khái niệm miền ứng dụng sang khái niệm máy tính. Các đối tượng được xác định trong quá trình phân tích được khắc ra để thực hiện với mục đích giảm thiểu thời gian thực hiện, tiêu thụ bộ nhớ và chi phí tổng thể.
Thiết kế đối tượng bao gồm các giai đoạn sau:
- Nhận dạng đối tượng
- Biểu diễn đối tượng, tức là xây dựng các mô hình thiết kế
- Phân loại hoạt động
- Thiết kế thuật toán
- Thiết kế các mối quan hệ
- Thực hiện kiểm soát các tương tác bên ngoài
- Đóng gói các lớp và liên kết thành các mô-đun
Nhận dạng đối tượng
Bước đầu tiên của thiết kế đối tượng là xác định đối tượng. Các đối tượng được xác định trong giai đoạn phân tích hướng đối tượng được nhóm lại thành các lớp và được tinh chỉnh để chúng phù hợp với việc triển khai thực tế.
Các chức năng của giai đoạn này là:
Xác định và tinh chỉnh các lớp trong mỗi hệ thống con hoặc gói
Xác định các liên kết và liên kết giữa các lớp
Thiết kế các liên kết phân cấp giữa các lớp, tức là tổng quát hóa / chuyên biệt hóa và kế thừa
Thiết kế tổng hợp
Biểu diễn đối tượng
Khi các lớp được xác định, chúng cần được biểu diễn bằng các kỹ thuật mô hình hóa đối tượng. Giai đoạn này về cơ bản liên quan đến việc xây dựng các sơ đồ UML.
Có hai loại mô hình thiết kế cần được sản xuất -
Static Models - Để mô tả cấu trúc tĩnh của một hệ thống bằng cách sử dụng biểu đồ lớp và biểu đồ đối tượng.
Dynamic Models - Để mô tả cấu trúc động của một hệ thống và thể hiện sự tương tác giữa các lớp bằng cách sử dụng biểu đồ tương tác và biểu đồ trạng thái.
Phân loại hoạt động
Trong bước này, thao tác được thực hiện trên các đối tượng được xác định bằng cách kết hợp ba mô hình được phát triển trong giai đoạn OOA, đó là mô hình đối tượng, mô hình động và mô hình chức năng. Một hoạt động chỉ định những gì sẽ được thực hiện và không phải cách nó được thực hiện.
Các tác vụ sau được thực hiện liên quan đến các hoạt động:
Biểu đồ chuyển trạng thái của từng đối tượng trong hệ thống được xây dựng.
Các hoạt động được xác định cho các sự kiện nhận được bởi các đối tượng.
Các trường hợp trong đó một sự kiện kích hoạt các sự kiện khác trong các đối tượng giống nhau hoặc khác nhau được xác định.
Các hoạt động phụ trong các hành động được xác định.
Các hành động chính được mở rộng thành sơ đồ luồng dữ liệu.
Thiết kế thuật toán
Các hoạt động trong các đối tượng được xác định bằng các thuật toán. Thuật toán là một thủ tục từng bước giải quyết vấn đề đặt ra trong một hoạt động. Các thuật toán tập trung vào cách nó được thực hiện.
Có thể có nhiều hơn một thuật toán tương ứng với một hoạt động nhất định. Khi các thuật toán thay thế được xác định, thuật toán tối ưu được chọn cho miền vấn đề đã cho. Các số liệu để chọn thuật toán tối ưu là:
Computational Complexity - Độ phức tạp xác định hiệu quả của một thuật toán về thời gian tính toán và yêu cầu bộ nhớ.
Flexibility - Tính linh hoạt xác định liệu thuật toán đã chọn có thể được thực hiện một cách thích hợp mà không làm mất đi tính thích hợp trong các môi trường khác nhau hay không.
Understandability - Điều này xác định xem thuật toán đã chọn có dễ hiểu và dễ thực hiện hay không.
Thiết kế các mối quan hệ
Chiến lược thực hiện các mối quan hệ cần phải được đưa ra trong giai đoạn thiết kế đối tượng. Các mối quan hệ chính được giải quyết bao gồm các liên kết, tổng hợp và kế thừa.
Nhà thiết kế nên làm những việc sau liên quan đến các liên kết -
Xác định xem liên kết là một chiều hay hai chiều.
Phân tích đường dẫn của các hiệp hội và cập nhật chúng nếu cần thiết.
Triển khai các liên kết như một đối tượng riêng biệt, trong trường hợp có nhiều mối quan hệ; hoặc như một liên kết đến đối tượng khác trong trường hợp quan hệ một-một hoặc một-nhiều.
Về phần thừa kế, nhà thiết kế nên làm như sau:
Điều chỉnh các lớp và liên kết của chúng.
Xác định các lớp trừu tượng.
Đưa ra các quy định để các hành vi được chia sẻ khi cần thiết.
Thực hiện kiểm soát
Người thiết kế đối tượng có thể kết hợp các sàng lọc trong chiến lược của mô hình biểu đồ trạng thái. Trong thiết kế hệ thống, một chiến lược cơ bản để hiện thực hóa mô hình động được đưa ra. Trong quá trình thiết kế đối tượng, chiến lược này được bổ sung một cách khéo léo để thực hiện phù hợp.
Các cách tiếp cận để thực hiện mô hình động là:
Represent State as a Location within a Program- Đây là cách tiếp cận hướng theo thủ tục truyền thống, theo đó vị trí của điều khiển xác định trạng thái chương trình. Một máy trạng thái hữu hạn có thể được thực hiện như một chương trình. Một quá trình chuyển đổi tạo thành một câu lệnh đầu vào, đường dẫn điều khiển chính tạo thành chuỗi lệnh, các nhánh tạo thành điều kiện và các đường dẫn lùi tạo thành các vòng lặp hoặc lặp lại.
State Machine Engine- Cách tiếp cận này biểu diễn trực tiếp một máy trạng thái thông qua một lớp máy trạng thái. Lớp này thực thi máy trạng thái thông qua một tập hợp các chuyển đổi và hành động do ứng dụng cung cấp.
Control as Concurrent Tasks- Trong cách tiếp cận này, một đối tượng được thực hiện như một tác vụ trong ngôn ngữ lập trình hoặc hệ điều hành. Ở đây, một sự kiện được thực hiện dưới dạng lời gọi liên tác vụ. Nó bảo tồn tính đồng thời vốn có của các đối tượng thực.
Các lớp đóng gói
Trong bất kỳ dự án lớn nào, việc phân chia tỉ mỉ việc triển khai thành các mô-đun hoặc gói là quan trọng. Trong quá trình thiết kế đối tượng, các lớp và đối tượng được nhóm thành các gói để cho phép nhiều nhóm làm việc hợp tác trong một dự án.
Các khía cạnh khác nhau của bao bì là -
Hiding Internal Information from Outside View - Nó cho phép một lớp được xem như một “hộp đen” và cho phép thay đổi việc triển khai lớp mà không yêu cầu bất kỳ máy khách nào của lớp sửa đổi mã.
Coherence of Elements - Một phần tử, chẳng hạn như một lớp, một hoạt động hoặc một mô-đun, là nhất quán nếu nó được tổ chức theo một kế hoạch nhất quán và tất cả các phần của nó có liên quan về bản chất để chúng phục vụ một mục tiêu chung.
Construction of Physical Modules - Các hướng dẫn sau đây giúp ích trong khi xây dựng các mô-đun vật lý -
Các lớp trong một mô-đun phải đại diện cho những thứ hoặc thành phần tương tự nhau trong cùng một đối tượng tổng hợp.
Các lớp kết nối chặt chẽ nên ở trong cùng một mô-đun.
Các lớp chưa kết nối hoặc kết nối yếu nên được đặt trong các mô-đun riêng biệt.
Các mô-đun cần có sự gắn kết tốt, tức là có sự hợp tác cao giữa các thành phần của nó.
Một mô-đun phải có khả năng kết hợp thấp với các mô-đun khác, tức là, sự tương tác hoặc phụ thuộc lẫn nhau giữa các mô-đun phải là tối thiểu.
Tối ưu hóa thiết kế
Mô hình phân tích nắm bắt thông tin logic về hệ thống, trong khi mô hình thiết kế bổ sung các chi tiết để hỗ trợ truy cập thông tin hiệu quả. Trước khi thiết kế được thực hiện, nó phải được tối ưu hóa để việc triển khai hiệu quả hơn. Mục đích của việc tối ưu hóa là giảm thiểu chi phí về thời gian, không gian và các chỉ số khác.
Tuy nhiên, không nên quá tối ưu hóa thiết kế, vì tính dễ thực hiện, khả năng bảo trì và khả năng mở rộng cũng là những mối quan tâm quan trọng. Người ta thường thấy rằng một thiết kế được tối ưu hóa hoàn hảo sẽ hiệu quả hơn nhưng ít khả năng đọc và tái sử dụng hơn. Vì vậy, nhà thiết kế phải đạt được sự cân bằng giữa hai điều này.
Những điều khác nhau có thể được thực hiện để tối ưu hóa thiết kế là:
- Thêm các liên kết thừa
- Bỏ qua các liên kết không sử dụng được
- Tối ưu hóa các thuật toán
- Lưu các thuộc tính dẫn xuất để tránh tính toán lại các biểu thức phức tạp
Bổ sung các Hiệp hội Dự phòng
Trong quá trình tối ưu hóa thiết kế, nó được kiểm tra xem việc tạo ra các liên kết mới có thể giảm chi phí truy cập hay không. Mặc dù các liên kết dư thừa này có thể không thêm bất kỳ thông tin nào nhưng chúng có thể làm tăng hiệu quả của mô hình tổng thể.
Bỏ qua các hiệp hội không sử dụng được
Sự hiện diện của quá nhiều liên kết có thể làm cho hệ thống không thể giải mã được và do đó làm giảm hiệu quả tổng thể của hệ thống. Vì vậy, trong quá trình tối ưu hóa, tất cả các liên kết không sử dụng được sẽ bị xóa.
Tối ưu hóa các thuật toán
Trong hệ thống hướng đối tượng, việc tối ưu hóa cấu trúc dữ liệu và các thuật toán được thực hiện theo phương thức cộng tác. Sau khi thiết kế lớp được thực hiện, các hoạt động và thuật toán cần được tối ưu hóa.
Tối ưu hóa các thuật toán được thực hiện bởi -
- Sắp xếp lại thứ tự của các nhiệm vụ tính toán
- Đảo ngược thứ tự thực hiện của các vòng lặp từ đó được trình bày trong mô hình chức năng
- Loại bỏ các đường dẫn chết trong thuật toán
Lưu và lưu trữ các thuộc tính có nguồn gốc
Thuộc tính có nguồn gốc là những thuộc tính có giá trị được tính như một hàm của các thuộc tính khác (thuộc tính cơ sở). Việc tính toán lại các giá trị của các thuộc tính dẫn xuất mỗi khi chúng cần thiết là một thủ tục tốn thời gian. Để tránh điều này, các giá trị có thể được tính toán và lưu trữ trong các biểu mẫu được tính toán của chúng.
Tuy nhiên, điều này có thể tạo ra sự bất thường về cập nhật, tức là sự thay đổi giá trị của các thuộc tính cơ sở mà không có sự thay đổi tương ứng trong giá trị của các thuộc tính dẫn xuất. Để tránh điều này, các bước sau được thực hiện:
Với mỗi lần cập nhật giá trị thuộc tính cơ sở, thuộc tính dẫn xuất cũng được tính toán lại.
Tất cả các thuộc tính dẫn xuất được tính toán lại và cập nhật định kỳ trong một nhóm thay vì sau mỗi lần cập nhật.
Tài liệu thiết kế
Tài liệu là một phần thiết yếu của bất kỳ quy trình phát triển phần mềm nào ghi lại quy trình tạo ra phần mềm. Các quyết định thiết kế cần được lập thành văn bản đối với bất kỳ hệ thống phần mềm không tầm thường nào để truyền thiết kế cho người khác.
Khu vực sử dụng
Mặc dù là sản phẩm thứ cấp, nhưng một tài liệu tốt là không thể thiếu, đặc biệt là trong các lĩnh vực sau:
- Trong thiết kế phần mềm đang được phát triển bởi một số nhà phát triển
- Trong các chiến lược phát triển phần mềm lặp đi lặp lại
- Khi phát triển các phiên bản tiếp theo của một dự án phần mềm
- Để đánh giá một phần mềm
- Để tìm kiếm điều kiện và lĩnh vực thử nghiệm
- Để bảo trì phần mềm.
Nội dung
Một tài liệu hữu ích về cơ bản phải bao gồm các nội dung sau:
High–level system architecture - Sơ đồ quy trình và sơ đồ mô-đun
Key abstractions and mechanisms - Biểu đồ lớp và biểu đồ đối tượng.
Scenarios that illustrate the behavior of the main aspects - Sơ đồ hành vi
Đặc trưng
Các tính năng của một tài liệu tốt là -
Ngắn gọn và đồng thời, rõ ràng, nhất quán và đầy đủ
Có thể theo dõi các thông số kỹ thuật yêu cầu của hệ thống
Well-structured
Theo sơ đồ thay vì mô tả