OOAD - Hướng dẫn nhanh
Lược sử
Mô hình hướng đối tượng hình thành từ khái niệm ban đầu về một cách tiếp cận lập trình mới, trong khi sự quan tâm đến các phương pháp thiết kế và phân tích đến muộn hơn nhiều.
Ngôn ngữ hướng đối tượng đầu tiên là Simula (Mô phỏng các hệ thống thực) được phát triển vào năm 1960 bởi các nhà nghiên cứu tại Trung tâm Máy tính Na Uy.
Năm 1970, Alan Kay và nhóm nghiên cứu của ông tại Xerox PARK đã tạo ra một máy tính cá nhân tên là Dynabook và ngôn ngữ lập trình hướng đối tượng thuần túy đầu tiên (OOPL) - Smalltalk, để lập trình Dynabook.
Vào những năm 1980, Grady Booch đã xuất bản một bài báo có tiêu đề Thiết kế hướng đối tượng chủ yếu trình bày một thiết kế cho ngôn ngữ lập trình, Ada. Trong các ấn bản tiếp theo, ông đã mở rộng ý tưởng của mình thành một phương pháp thiết kế hướng đối tượng hoàn chỉnh.
Trong những năm 1990, Coad đã kết hợp các ý tưởng hành vi với các phương pháp hướng đối tượng.
Những đổi mới quan trọng khác là Kỹ thuật tạo mô hình đối tượng (OMT) của James Rumbaugh và Kỹ thuật phần mềm hướng đối tượng (OOSE) của Ivar Jacobson.
Phân tích hướng đối tượng
Phân tích hướng đối tượng (OOA) là quy trình xác định các yêu cầu kỹ thuật phần mềm và phát triển các đặc tả phần mềm về mô hình đối tượng của hệ thống phần mềm, bao gồm các đối tượng tương tác.
Sự khác biệt chính giữa phân tích hướng đối tượng và các dạng phân tích khác là trong cách tiếp cận hướng đối tượng, các yêu cầu được tổ chức xung quanh các đối tượng, tích hợp cả dữ liệu và chức năng. Chúng được mô phỏng theo các đối tượng trong thế giới thực mà hệ thống tương tác. Trong các phương pháp phân tích truyền thống, hai khía cạnh - chức năng và dữ liệu - được xem xét riêng biệt.
Grady Booch đã định nghĩa OOA là, “Phân tích hướng đối tượng là một phương pháp phân tích xem xét các yêu cầu từ quan điểm của các lớp và đối tượng được tìm thấy trong từ vựng của miền vấn đề” .
Các nhiệm vụ chính trong phân tích hướng đối tượng (OOA) là:
- Xác định đối tượng
- Tổ chức các đối tượng bằng cách tạo sơ đồ mô hình đối tượng
- Xác định nội dung của đối tượng hoặc thuộc tính đối tượng
- Xác định hành vi của các đối tượng, tức là các hành động của đối tượng
- Mô tả cách các đối tượng tương tác
Các mô hình phổ biến được sử dụng trong OOA là các ca sử dụng và mô hình đối tượng.
Thiết kế hướng đối tượng
Thiết kế hướng đối tượng (OOD) liên quan đến việc thực hiện mô hình khái niệm được tạo ra trong quá trình phân tích hướng đối tượng. Trong OOD, các khái niệm trong mô hình phân tích, không phụ thuộc vào công nghệ, đượ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ức là mô tả chi tiết về cách hệ thống được xây dựng trên công nghệ bê tông.
Các chi tiết triển khai thường bao gồm:
- Cấu trúc lại dữ liệu lớp (nếu cần),
- Triển khai các phương pháp, tức là, cấu trúc dữ liệu nội bộ và thuật toán,
- Thực hiện kiểm soát và
- Thực hiện các hiệp hội.
Grady Booch đã định nghĩa thiết kế hướng đối tượng là “một phương pháp thiết kế bao gồm quá trình phân rã hướng đối tượng và ký hiệu để mô tả cả mô hình logic và vật lý cũng như tĩnh và động của hệ thống được thiết kế” .
Lập trình hướng đối tượng
Lập trình hướng đối tượng (OOP) là một mô hình lập trình dựa trên các đối tượng (có cả dữ liệu và phương thức) nhằm mục đích kết hợp các lợi thế của tính mô đun và khả năng tái sử dụng. Các đối tượng, thường là các thể hiện của các lớp, được sử dụng để tương tác với nhau để thiết kế các ứng dụng và chương trình máy tính.
Các tính năng quan trọng của lập trình hướng đối tượng là:
- Cách tiếp cận từ dưới lên trong thiết kế chương trình
- Các chương trình được tổ chức xung quanh các đối tượng, được nhóm trong các lớp
- Tập trung vào dữ liệu với các phương pháp hoạt động dựa trên dữ liệu của đối tượng
- Tương tác giữa các đối tượng thông qua các chức năng
- Khả năng tái sử dụng thiết kế thông qua việc tạo các lớp mới bằng cách thêm các tính năng vào các lớp hiện có
Một số ví dụ về ngôn ngữ lập trình hướng đối tượng là C ++, Java, Smalltalk, Delphi, C #, Perl, Python, Ruby và PHP.
Grady Booch đã định nghĩa lập trình hướng đối tượng là “một phương pháp triển khai trong đó các chương trình được tổ chức như một tập hợp các đối tượng hợp tác, mỗi đối tượng đại diện cho một thể hiện của một số lớp và các lớp của chúng đều là thành viên của một hệ thống phân cấp các lớp được thống nhất thông qua các mối quan hệ kế thừa ” .
Mô hình đối tượng trực quan hóa các phần tử trong một ứng dụng phần mềm dưới dạng các đối tượng. Trong chương này, chúng ta sẽ xem xét các khái niệm và thuật ngữ cơ bản của hệ thống hướng đối tượng.
Đối tượng và Lớp
Các khái niệm về các đối tượng và các lớp về bản chất được liên kết với nhau và tạo thành nền tảng của mô hình hướng đối tượng.
Vật
Đối tượng là một phần tử thế giới thực trong môi trường hướng đối tượng có thể tồn tại vật chất hoặc khái niệm. Mỗi đối tượng có -
Nhận dạng để phân biệt nó với các đối tượng khác trong hệ thống.
Trạng thái xác định các thuộc tính đặc trưng của một đối tượng cũng như các giá trị của các thuộc tính mà đối tượng đó nắm giữ.
Hành vi thể hiện các hoạt động có thể nhìn thấy bên ngoài được thực hiện bởi một đối tượng trong điều kiện thay đổi trạng thái của nó.
Các đối tượng có thể được mô hình hóa theo nhu cầu của ứng dụng. Một đối tượng có thể tồn tại vật chất, như khách hàng, ô tô, v.v.; hoặc một tồn tại khái niệm vô hình, như một dự án, một quy trình, v.v.
Lớp học
Một lớp đại diện cho một tập hợp các đối tượng có cùng các thuộc tính đặc trưng thể hiện hành vi chung. Nó cung cấp bản thiết kế hoặc mô tả của các đối tượng có thể được tạo ra từ nó. Việc tạo một đối tượng với tư cách là một thành viên của một lớp được gọi là khởi tạo. Vì vậy, đối tượng là một thể hiện của một lớp.
Các thành phần của một lớp là -
Một tập hợp các thuộc tính cho các đối tượng sẽ được khởi tạo từ lớp. Nói chung, các đối tượng khác nhau của một lớp có một số khác biệt về giá trị của các thuộc tính. Các thuộc tính thường được gọi là dữ liệu lớp.
Một tập hợp các hoạt động mô tả hành vi của các đối tượng của lớp. Các phép toán cũng được gọi là các hàm hoặc phương thức.
Example
Chúng ta hãy xem xét một lớp đơn giản, Circle, đại diện cho hình tròn hình học trong không gian hai chiều. Các thuộc tính của lớp này có thể được xác định như sau:
- x – coord, để biểu thị tọa độ x của tâm
- y – coord, để biểu thị tọa độ y của tâm
- a, để biểu thị bán kính của hình tròn
Một số hoạt động của nó có thể được định nghĩa như sau:
- findArea (), phương thức tính diện tích
- findCircumference (), phương thức tính chu vi
- scale (), phương thức tăng hoặc giảm bán kính
Trong quá trình khởi tạo, các giá trị được gán cho ít nhất một số thuộc tính. Nếu chúng ta tạo một đối tượng my_circle, chúng ta có thể gán các giá trị như x-coord: 2, y-coord: 3 và a: 4 để mô tả trạng thái của nó. Bây giờ, nếu thao tác scale () được thực hiện trên my_circle với hệ số tỉ lệ là 2, giá trị của biến a sẽ trở thành 8. Thao tác này mang đến sự thay đổi trong trạng thái của my_circle, tức là đối tượng đã thể hiện một số hành vi nhất định.
Đóng gói và ẩn dữ liệu
Đóng gói
Đóng gói là quá trình liên kết cả hai thuộc tính và phương thức với nhau trong một lớp. Thông qua tính năng đóng gói, các chi tiết bên trong của một lớp có thể được ẩn từ bên ngoài. Nó cho phép các phần tử của lớp chỉ được truy cập từ bên ngoài thông qua giao diện do lớp cung cấp.
Ẩn dữ liệu
Thông thường, một lớp được thiết kế sao cho dữ liệu (thuộc tính) của nó chỉ có thể được truy cập bằng các phương thức của lớp và được cách ly khỏi truy cập trực tiếp từ bên ngoài. Quá trình cách ly dữ liệu của một đối tượng này được gọi là ẩn dữ liệu hoặc ẩn thông tin.
Example
Trong lớp Circle, ẩn dữ liệu có thể được kết hợp bằng cách làm cho các thuộc tính ẩn từ bên ngoài lớp và thêm hai phương thức nữa vào lớp để truy cập dữ liệu lớp, đó là:
- setValues (), phương thức để gán giá trị cho x-coord, y-coord và a
- getValues (), phương thức để truy xuất các giá trị của x-coord, y-coord và a
Ở đây, dữ liệu riêng tư của đối tượng my_circle không thể được truy cập trực tiếp bằng bất kỳ phương thức nào không được đóng gói trong lớp Circle. Thay vào đó, nó phải được truy cập thông qua các phương thức setValues () và getValues ().
Thông qua
Bất kỳ ứng dụng nào cũng yêu cầu một số đối tượng tương tác một cách hài hòa. Các đối tượng trong một hệ thống có thể giao tiếp với nhau bằng cách truyền thông điệp. Giả sử một hệ thống có hai đối tượng: obj1 và obj2. Đối tượng obj1 gửi thông báo đến đối tượng obj2, nếu obj1 muốn obj2 thực thi một trong các phương thức của nó.
Các tính năng của truyền tin là -
- Thông điệp truyền giữa hai đối tượng thường là một chiều.
- Truyền thông điệp cho phép tất cả các tương tác giữa các đối tượng.
- Truyền thông điệp về cơ bản liên quan đến việc gọi các phương thức lớp.
- Các đối tượng trong các quy trình khác nhau có thể tham gia vào quá trình truyền thông điệp.
Di sản
Kế thừa là cơ chế cho phép các lớp mới được tạo ra từ các lớp hiện có bằng cách mở rộng và tinh chỉnh các khả năng của nó. Các lớp hiện có được gọi là lớp cơ sở / lớp cha / lớp siêu và các lớp mới được gọi là lớp dẫn xuất / lớp con / lớp con. Lớp con có thể kế thừa hoặc dẫn xuất các thuộc tính và phương thức của (các) lớp siêu với điều kiện lớp siêu cho phép như vậy. Bên cạnh đó, lớp con có thể thêm các thuộc tính và phương thức của riêng nó và có thể sửa đổi bất kỳ phương thức siêu lớp nào. Thừa kế xác định mối quan hệ “là - một”.
Example
Từ một lớp Động vật có vú, một số lớp có thể được bắt nguồn như Người, Mèo, Chó, Bò, ... Con người, mèo, chó và bò đều có những đặc điểm riêng biệt của động vật có vú. Ngoài ra, mỗi loại đều có những đặc điểm riêng biệt. Có thể nói bò “là - một loài động vật có vú”.
Các loại thừa kế
Single Inheritance - Một lớp con bắt nguồn từ một siêu lớp duy nhất.
Multiple Inheritance - Một lớp con dẫn xuất từ nhiều hơn một lớp siêu.
Multilevel Inheritance - Một lớp con dẫn xuất từ một siêu lớp mà đến lượt nó được dẫn xuất từ một lớp khác, v.v.
Hierarchical Inheritance - Một lớp có một số lớp con, mỗi lớp có thể có các lớp con tiếp theo, tiếp tục cho một số mức, để tạo thành một cấu trúc cây.
Hybrid Inheritance - Sự kết hợp của sự kế thừa đa cấp và đa cấp để tạo thành cấu trúc mạng tinh thể.
Hình dưới đây mô tả các ví dụ về các kiểu thừa kế.
Đa hình
Đa hình nguyên gốc là một từ Hy Lạp có nghĩa là khả năng có nhiều dạng. Trong mô hình hướng đối tượng, tính đa hình ngụ ý sử dụng các hoạt động theo những cách khác nhau, tùy thuộc vào trường hợp mà chúng đang hoạt động. Tính đa hình cho phép các đối tượng có cấu trúc bên trong khác nhau có một giao diện bên ngoài chung. Tính đa hình đặc biệt hiệu quả trong khi thực hiện kế thừa.
Example
Chúng ta hãy xem xét hai lớp, Circle và Square, mỗi lớp có một phương thức findArea (). Mặc dù tên và mục đích của các phương thức trong các lớp là giống nhau, nhưng việc thực hiện bên trong, tức là, thủ tục tính diện tích là khác nhau đối với mỗi lớp. Khi một đối tượng của lớp Circle gọi phương thức findArea () của nó, thao tác này sẽ tìm diện tích của hình tròn mà không có bất kỳ xung đột nào với phương thức findArea () của lớp Square.
Tổng quát hóa và Chuyên môn hóa
Tổng quát hóa và đặc biệt hóa đại diện cho một hệ thống phân cấp các mối quan hệ giữa các lớp, trong đó các lớp con kế thừa từ các siêu lớp.
Sự khái quát
Trong quá trình khái quát hóa, các đặc điểm chung của các lớp được kết hợp để tạo thành một lớp ở mức cao hơn của hệ thống phân cấp, tức là các lớp con được kết hợp để tạo thành một siêu lớp tổng quát hóa. Nó thể hiện mối quan hệ “là - một - loại - của”. Ví dụ: “ô tô là một loại phương tiện trên bộ” hoặc “tàu là một loại phương tiện thủy”.
Chuyên môn hóa
Chuyên môn hóa là quá trình ngược lại của tổng quát hóa. Ở đây, các đặc điểm phân biệt của các nhóm đối tượng được sử dụng để tạo thành các lớp chuyên biệt từ các lớp hiện có. Có thể nói rằng các lớp con là phiên bản chuyên biệt của lớp siêu.
Hình sau đây cho thấy một ví dụ về tổng quát hóa và đặc biệt hóa.
Liên kết và liên kết
Liên kết
Một liên kết đại diện cho một kết nối mà qua đó một đối tượng cộng tác với các đối tượng khác. Rumbaugh đã định nghĩa nó là “một kết nối vật lý hoặc khái niệm giữa các đối tượng”. Thông qua một liên kết, một đối tượng có thể gọi các phương thức hoặc điều hướng qua một đối tượng khác. Một liên kết mô tả mối quan hệ giữa hai hoặc nhiều đối tượng.
Hiệp hội
Liên kết là một nhóm liên kết có cấu trúc chung và hành vi chung. Mối quan hệ mô tả mối quan hệ giữa các đối tượng của một hoặc nhiều lớp. Một liên kết có thể được định nghĩa là một thể hiện của một liên kết.
Bằng cấp của một Hiệp hội
Mức độ của một liên kết biểu thị số lượng các lớp tham gia vào một kết nối. Mức độ có thể là một bậc, nhị phân hoặc bậc ba.
A unary relationship kết nối các đối tượng cùng lớp.
A binary relationship kết nối các đối tượng của hai lớp.
A ternary relationship kết nối các đối tượng của ba hoặc nhiều lớp.
Tỷ lệ Cardinality của các Hiệp hội
Cardinality của một liên kết nhị phân biểu thị số lượng cá thể tham gia vào một liên kết. Có ba loại tỷ lệ bản số, đó là -
One–to–One - Một đối tượng duy nhất của lớp A được liên kết với một đối tượng duy nhất của lớp B.
One–to–Many - Một đối tượng duy nhất của lớp A được liên kết với nhiều đối tượng của lớp B.
Many–to–Many - Một đối tượng lớp A có thể liên kết với nhiều đối tượng lớp B và ngược lại một đối tượng lớp B có thể liên kết với nhiều đối tượng lớp A.
Tổng hợp hoặc Thành phần
Tổng hợp hoặc thành phần là mối quan hệ giữa các lớp mà một lớp có thể được tạo thành từ bất kỳ sự kết hợp nào của các đối tượng của các lớp khác. Nó cho phép các đối tượng được đặt trực tiếp trong phần thân của các lớp khác. Tổng hợp được gọi là mối quan hệ “part – of” hoặc “has – a”, với khả năng điều hướng từ tổng thể sang các bộ phận của nó. Đối tượng tổng hợp là đối tượng được cấu tạo bởi một hoặc nhiều đối tượng khác.
Example
Trong mối quan hệ, “ô tô có - động cơ”, ô tô là toàn bộ vật thể hoặc tổng thể, và động cơ là “bộ phận” của ô tô. Tổng hợp có thể biểu thị -
Physical containment - Ví dụ, một máy tính bao gồm màn hình, CPU, chuột, bàn phím, v.v.
Conceptual containment - Ví dụ, cổ đông có – một cổ phần.
Lợi ích của mô hình đối tượng
Bây giờ chúng ta đã đi qua các khái niệm cốt lõi liên quan đến hướng đối tượng, sẽ rất đáng để lưu ý những ưu điểm mà mô hình này mang lại.
Lợi ích của việc sử dụng mô hình đối tượng là:
Nó giúp phát triển phần mềm nhanh hơn.
Nó rất dễ dàng để bảo trì. Giả sử một mô-đun phát triển lỗi, thì một lập trình viên có thể sửa mô-đun cụ thể đó, trong khi các phần khác của phần mềm vẫn hoạt động.
Nó hỗ trợ nâng cấp tương đối phức tạp.
Nó cho phép tái sử dụng các đối tượng, thiết kế và chức năng.
Nó làm giảm rủi ro phát triển, đặc biệt là trong việc tích hợp các hệ thống phức tạp.
Chúng ta biết rằng kỹ thuật Mô hình hướng đối tượng (OOM) trực quan hóa mọi thứ trong một ứng dụng bằng cách sử dụng các mô hình được tổ chức xung quanh các đối tượng. Mọi cách tiếp cận phát triển phần mềm đều trải qua các giai đoạn sau:
- Analysis,
- Thiết kế và
- Implementation.
Trong kỹ thuật phần mềm hướng đối tượng, nhà phát triển phần mềm xác định và tổ chức ứng dụng theo các khái niệm hướng đối tượng, trước khi trình bày cuối cùng của chúng trong bất kỳ ngôn ngữ lập trình hoặc công cụ phần mềm cụ thể nào.
Các giai đoạn trong phát triển phần mềm hướng đối tượng
Các giai đoạn chính của phát triển phần mềm sử dụng phương pháp hướng đối tượng là phân tích hướng đối tượng, thiết kế hướng đối tượng và triển khai hướng đối tượng.
Phân tích hướng đối tượng
Trong giai đoạn này, vấn đề được xây dựng, các yêu cầu của người dùng được xác định và sau đó một mô hình được xây dựng dựa trên các đối tượng trong thế giới thực. Việc phân tích tạo ra các mô hình về cách thức hoạt động của hệ thống mong muốn và cách nó phải được phát triển. Các mô hình không bao gồm bất kỳ chi tiết triển khai nào để nó có thể được hiểu và kiểm tra bởi bất kỳ chuyên gia ứng dụng phi kỹ thuật nào.
Thiết kế hướng đối tượng
Thiết kế hướng đối tượng bao gồm hai giai đoạn chính, đó là thiết kế hệ thống và thiết kế đối tượng.
System Design
Trong giai đoạn này, kiến trúc hoàn chỉnh của hệ thống mong muốn được thiết kế. Hệ thống được hình thành như một tập hợp các hệ thống con tương tác, đến lượt nó được cấu tạo bởi một hệ thống phân cấp các đối tượng tương tác, được nhóm lại thành các lớp. Thiết kế hệ thống được thực hiện theo cả mô hình phân tích hệ thống và kiến trúc hệ thống được đề xuất. Ở đây, trọng tâm là các đối tượng bao gồm hệ thống hơn là các quá trình trong hệ thống.
Object Design
Trong giai đoạn này, một mô hình thiết kế được phát triển dựa trên cả hai mô hình được phát triển trong giai đoạn phân tích hệ thống và kiến trúc được thiết kế trong giai đoạn thiết kế hệ thống. Tất cả các lớp cần thiết được xác định. Nhà thiết kế quyết định xem -
- các lớp mới sẽ được tạo từ đầu,
- bất kỳ lớp hiện có nào có thể được sử dụng ở dạng ban đầu của chúng, hoặc
- các lớp mới nên được kế thừa từ các lớp hiện có.
Các liên kết giữa các lớp đã xác định được thiết lập và phân cấp của các lớp được xác định. Bên cạnh đó, nhà phát triển thiết kế các chi tiết bên trong của các lớp và các liên kết của chúng, tức là cấu trúc dữ liệu cho từng thuộc tính và các thuật toán cho các hoạt động.
Thực hiện và kiểm tra hướng đối tượng
Trong giai đoạn này, mô hình thiết kế được phát triển trong thiết kế đối tượng được dịch sang mã bằng ngôn ngữ lập trình hoặc công cụ phần mềm thích hợp. Các cơ sở dữ liệu được tạo ra và các yêu cầu phần cứng cụ thể đã được xác định. Khi mã đã thành hình, nó sẽ được kiểm tra bằng các kỹ thuật chuyên dụng để xác định và loại bỏ các lỗi trong mã.
Nguyên tắc của các hệ thống hướng đối tượng
Khung khái niệm của hệ thống hướng đối tượng dựa trên mô hình đối tượng. Có hai loại phần tử trong hệ thống hướng đối tượng:
Major Elements- Về cơ bản, điều đó có nghĩa là nếu một mô hình không có bất kỳ yếu tố nào trong số các yếu tố này, nó sẽ không còn là hướng đối tượng. Bốn yếu tố chính là -
- Abstraction
- Encapsulation
- Modularity
- Hierarchy
Minor Elements- Theo quan điểm nhỏ, nó có nghĩa là những yếu tố này hữu ích, nhưng không phải là một phần không thể thiếu của mô hình đối tượng. Ba yếu tố phụ là -
- Typing
- Concurrency
- Persistence
Trừu tượng
Trừu tượng có nghĩa là tập trung vào các tính năng thiết yếu của một phần tử hoặc đối tượng trong OOP, bỏ qua các thuộc tính không liên quan hoặc ngẫu nhiên của nó. Các tính năng cần thiết có liên quan đến ngữ cảnh mà đối tượng đang được sử dụng.
Grady Booch đã định nghĩa sự trừu tượng như sau:
“Sự trừu tượng biểu thị các đặc điểm cơ bản của một đối tượng giúp phân biệt nó với tất cả các loại đối tượng khác và do đó cung cấp các ranh giới khái niệm được xác định rõ ràng, liên quan đến quan điểm của người xem.”
Example - Khi một lớp Học sinh được thiết kế, các thuộc tính enrolment_number, tên, khóa học và địa chỉ được bao gồm trong khi các đặc điểm như xung_ tốc và size_of_shoe bị loại bỏ, vì chúng không liên quan theo quan điểm của tổ chức giáo dục.
Đóng gói
Đóng gói là quá trình liên kết cả hai thuộc tính và phương thức với nhau trong một lớp. Thông qua tính năng đóng gói, các chi tiết bên trong của một lớp có thể được ẩn từ bên ngoài. Lớp có các phương thức cung cấp giao diện người dùng mà các dịch vụ do lớp cung cấp có thể được sử dụng.
Môđun
Modularity là quá trình phân tách một vấn đề (chương trình) thành một tập hợp các mô-đun để giảm độ phức tạp tổng thể của vấn đề. Booch đã xác định mô-đun là -
"Tính mô-đun là thuộc tính của một hệ thống đã được phân tách thành một tập hợp các mô-đun gắn kết và được kết hợp lỏng lẻo."
Về bản chất, tính mô-đun được liên kết với tính đóng gói. Mô-đun có thể được hình dung như một cách ánh xạ các phần trừu tượng được đóng gói thành các mô-đun thực, vật lý có tính liên kết cao trong các mô-đun và sự tương tác hoặc ghép nối giữa các mô-đun của chúng thấp.
Hệ thống cấp bậc
Theo cách nói của Grady Booch, “Hệ thống phân cấp là thứ hạng hoặc thứ tự của sự trừu tượng”. Thông qua hệ thống phân cấp, một hệ thống có thể được tạo thành từ các hệ thống con có liên quan với nhau, các hệ thống này có thể có các hệ thống con riêng của chúng, v.v. cho đến khi đạt được các thành phần cấp nhỏ nhất. Nó sử dụng nguyên tắc “chia để trị”. Cấu trúc phân cấp cho phép mã tái sử dụng.
Hai loại phân cấp trong OOA là -
“IS–A” hierarchy- Nó định nghĩa mối quan hệ phân cấp trong kế thừa, theo đó từ siêu lớp, một số lớp con có thể được dẫn xuất mà có thể lại có các lớp con, v.v. Ví dụ, nếu chúng ta lấy được một loại Hoa hồng từ một loại Hoa cùng loại, chúng ta có thể nói rằng hoa hồng “là – một” hoa.
“PART–OF” hierarchy- Nó định nghĩa mối quan hệ thứ bậc trong tập hợp mà một lớp có thể được cấu tạo từ các lớp khác. Ví dụ, một bông hoa bao gồm các lá đài, cánh hoa, nhị hoa và lá noãn. Có thể nói rằng cánh hoa là “một phần của” hoa.
Đánh máy
Theo các lý thuyết về kiểu dữ liệu trừu tượng, kiểu là một đặc điểm của một tập hợp các phần tử. Trong OOP, một lớp được hình dung như một kiểu có các thuộc tính khác biệt với bất kỳ kiểu nào khác. Đánh máy là việc thực thi khái niệm rằng một đối tượng là một thể hiện của một lớp hoặc một kiểu. Nó cũng bắt buộc rằng các đối tượng thuộc các loại khác nhau nói chung không được hoán đổi cho nhau; và chỉ có thể được hoán đổi cho nhau một cách rất hạn chế nếu thực sự bắt buộc phải làm như vậy.
Hai kiểu gõ là -
Strong Typing - Ở đây, hoạt động trên một đối tượng được kiểm tra tại thời điểm biên dịch, như trong ngôn ngữ lập trình Eiffel.
Weak Typing- Tại đây, tin nhắn có thể được gửi đến bất kỳ lớp nào. Hoạt động chỉ được kiểm tra tại thời điểm thực thi, như trong ngôn ngữ lập trình Smalltalk.
Đồng tiền
Tính đồng thời trong hệ điều hành cho phép thực hiện nhiều tác vụ hoặc quy trình đồng thời. Khi một quy trình duy nhất tồn tại trong một hệ thống, người ta nói rằng có một luồng điều khiển duy nhất. Tuy nhiên, hầu hết các hệ thống có nhiều luồng, một số đang hoạt động, một số đang chờ CPU, một số bị treo và một số đã kết thúc. Các hệ thống có nhiều CPU vốn đã cho phép các luồng điều khiển đồng thời; nhưng các hệ thống chạy trên một CPU sử dụng các thuật toán thích hợp để cung cấp thời gian CPU công bằng cho các luồng để kích hoạt tính đồng thời.
Trong môi trường hướng đối tượng, có các đối tượng hoạt động và không hoạt động. Các đối tượng hoạt động có các luồng điều khiển độc lập có thể thực thi đồng thời với các luồng của các đối tượng khác. Các đối tượng hoạt động đồng bộ hóa với nhau cũng như với các đối tượng tuần tự thuần túy.
Sự bền bỉ
Một đối tượng chiếm một không gian bộ nhớ và tồn tại trong một khoảng thời gian cụ thể. Trong lập trình truyền thống, tuổi thọ của một đối tượng thường là tuổi thọ của quá trình thực thi chương trình đã tạo ra nó. Trong tệp hoặc cơ sở dữ liệu, tuổi thọ của đối tượng dài hơn thời gian của quá trình tạo đối tượng. Thuộc tính này mà đối tượng tiếp tục tồn tại ngay cả sau khi người tạo ra nó không còn tồn tại được gọi là tính bền bỉ.
Trong giai đoạn phân tích hệ thống hoặc phân tích hướng đối tượng của phát triển phần mềm, các yêu cầu hệ thống được xác định, các lớp được xác định và mối quan hệ giữa các lớp được xác định.
Ba kỹ thuật phân tích được sử dụng kết hợp với nhau để phân tích hướng đối tượng là mô hình hóa đối tượng, mô hình động và mô hình chức năng.
Mô hình hóa đối tượng
Mô hình hóa đối tượng phát triển cấu trúc tĩnh của hệ thống phần mềm về các đối tượng. Nó xác định các đối tượng, các lớp mà các đối tượng có thể được nhóm vào và mối quan hệ giữa các đối tượng. Nó cũng xác định các thuộc tính và hoạt động chính đặc trưng cho mỗi lớp.
Quá trình mô hình hóa đối tượng có thể được hình dung theo các bước sau:
- Xác định các đối tượng và nhóm thành các lớp
- Xác định mối quan hệ giữa các lớp
- Tạo sơ đồ mô hình đối tượng người dùng
- Xác định thuộc tính đối tượng người dùng
- Xác định các hoạt động sẽ được thực hiện trên các lớp
- Xem lại bảng thuật ngữ
Mô hình động
Sau khi hành vi tĩnh của hệ thống được phân tích, hành vi của nó đối với thời gian và những thay đổi bên ngoài cần được kiểm tra. Đây là mục đích của mô hình động.
Mô hình động có thể được định nghĩa là “một cách mô tả cách một đối tượng riêng lẻ phản ứng với các sự kiện, các sự kiện bên trong do các đối tượng khác kích hoạt hoặc các sự kiện bên ngoài được kích hoạt bởi thế giới bên ngoài”.
Quá trình mô hình hóa động có thể được hình dung theo các bước sau:
- Xác định trạng thái của từng đối tượng
- Xác định các sự kiện và phân tích khả năng áp dụng của các hành động
- Xây dựng sơ đồ mô hình động, bao gồm các sơ đồ chuyển đổi trạng thái
- Thể hiện từng trạng thái dưới dạng thuộc tính đối tượng
- Xác thực các sơ đồ chuyển đổi trạng thái đã vẽ
Mô hình hóa chức năng
Mô hình hóa chức năng là thành phần cuối cùng của phân tích hướng đối tượng. Mô hình chức năng cho thấy các quy trình được thực hiện trong một đối tượng và cách dữ liệu thay đổi khi nó di chuyển giữa các phương thức. Nó chỉ rõ ý nghĩa của các hoạt động của mô hình đối tượng và các hoạt động của mô hình động. Mô hình chức năng tương ứng với sơ đồ luồng dữ liệu của phân tích có cấu trúc truyền thống.
Quá trình mô hình hóa chức năng có thể được hình dung theo các bước sau:
- Xác định tất cả các đầu vào và đầu ra
- Xây dựng sơ đồ luồng dữ liệu hiển thị các phụ thuộc chức năng
- Nêu mục đích của từng chức năng
- Xác định các ràng buộc
- Chỉ định tiêu chí tối ưu hóa
Phân tích có cấu trúc so với Phân tích hướng đối tượng
Phương pháp phân tích có cấu trúc / thiết kế có cấu trúc (SASD) là cách tiếp cận truyền thống của phát triển phần mềm dựa trên mô hình thác nước. Các giai đoạn phát triển của một hệ thống sử dụng SASD là:
- Nghiên cứu khả thi
- Phân tích yêu cầu và đặc điểm kỹ thuật
- Thiết kế hệ thống
- Implementation
- Đánh giá sau khi triển khai
Bây giờ, chúng ta sẽ xem xét những ưu và nhược điểm tương đối của phương pháp phân tích cấu trúc và phương pháp phân tích hướng đối tượng.
Ưu điểm / Nhược điểm của Phân tích Hướng đối tượng
Ưu điểm | Nhược điểm |
---|---|
Tập trung vào dữ liệu hơn là các thủ tục như trong Phân tích có cấu trúc. | Chức năng bị hạn chế trong các đối tượng. Điều này có thể gây ra vấn đề cho các hệ thống về bản chất là thủ tục hoặc tính toán. |
Các nguyên tắc đóng gói và ẩn dữ liệu giúp nhà phát triển phát triển hệ thống mà các phần khác của hệ thống không thể giả mạo được. | Nó không thể xác định đối tượng nào sẽ tạo ra một thiết kế hệ thống tối ưu. |
Các nguyên tắc đóng gói và ẩn dữ liệu giúp nhà phát triển phát triển hệ thống mà các phần khác của hệ thống không thể giả mạo được. | Các mô hình hướng đối tượng không dễ dàng hiển thị các giao tiếp giữa các đối tượng trong hệ thống. |
Nó cho phép quản lý hiệu quả độ phức tạp của phần mềm nhờ tính mô đun. | Tất cả các giao diện giữa các đối tượng không thể được biểu diễn trong một sơ đồ duy nhất. |
Nó có thể được nâng cấp từ hệ thống nhỏ lên hệ thống lớn một cách dễ dàng hơn so với các hệ thống theo phân tích cấu trúc. |
Ưu điểm / Nhược điểm của Phân tích có cấu trúc
Ưu điểm | Nhược điểm |
---|---|
Vì nó theo cách tiếp cận từ trên xuống trái ngược với cách tiếp cận từ dưới lên của phân tích hướng đối tượng, nó có thể dễ hiểu hơn OOA. | Trong các mô hình phân tích có cấu trúc truyền thống, một giai đoạn nên được hoàn thành trước giai đoạn tiếp theo. Điều này đặt ra một vấn đề trong thiết kế, đặc biệt nếu lỗi xuất hiện hoặc các yêu cầu thay đổi. |
Nó dựa trên chức năng. Mục đích tổng thể được xác định và sau đó phân rã chức năng được thực hiện để phát triển phần mềm. Sự nhấn mạnh không chỉ giúp hiểu rõ hơn về hệ thống mà còn tạo ra các hệ thống hoàn thiện hơn. | Chi phí xây dựng hệ thống ban đầu cao, vì toàn bộ hệ thống cần được thiết kế cùng một lúc nên rất ít tùy chọn bổ sung chức năng sau này. |
Các thông số kỹ thuật trong đó được viết bằng ngôn ngữ tiếng Anh đơn giản và do đó nhân viên không chuyên về kỹ thuật có thể dễ dàng phân tích hơn. | Nó không hỗ trợ khả năng tái sử dụng của mã. Vì vậy, thời gian và chi phí phát triển vốn đã cao. |
Mô hình động thể hiện các khía cạnh phụ thuộc vào thời gian của một hệ thống. Nó liên quan đến những thay đổi theo thời gian trong trạng thái của các đối tượng trong một hệ thống. Các khái niệm chính là -
Trạng thái, là tình trạng tại một điều kiện cụ thể trong suốt thời gian tồn tại của một đối tượng.
Sự chuyển đổi, một sự thay đổi trong trạng thái
Sự kiện, sự kiện kích hoạt chuyển đổi
Hành động, một phép tính nguyên tử và không bị gián đoạn xảy ra do một số sự kiện và
Đồng thời của quá trình chuyển đổi.
Máy trạng thái mô hình hóa hành vi của một đối tượng khi nó đi qua một số trạng thái trong vòng đời của nó do một số sự kiện cũng như các hành động xảy ra do các sự kiện đó. Máy trạng thái được biểu diễn bằng đồ thị thông qua biểu đồ chuyển trạng thái.
Tiểu bang và Chuyển đổi trạng thái
Tiểu bang
Trạng thái là một trừu tượng được đưa ra bởi các giá trị của các thuộc tính mà đối tượng có tại một khoảng thời gian cụ thể. Đó là một tình huống xảy ra trong một khoảng thời gian hữu hạn trong thời gian tồn tại của một đối tượng, trong đó nó đáp ứng các điều kiện nhất định, thực hiện các hoạt động nhất định hoặc chờ đợi các sự kiện nhất định xảy ra. Trong biểu đồ chuyển đổi trạng thái, một trạng thái được biểu diễn bằng các hình chữ nhật tròn.
Các phần của một trạng thái
Name- Một chuỗi phân biệt trạng thái này với trạng thái khác. Một tiểu bang có thể không có bất kỳ tên nào.
Entry/Exit Actions - Nó biểu thị các hoạt động được thực hiện khi vào và ra khỏi trạng thái.
Internal Transitions - Những thay đổi bên trong một trạng thái mà không gây ra sự thay đổi trong trạng thái.
Sub–states - Các tiểu bang trong các tiểu bang.
Trạng thái ban đầu và cuối cùng
Trạng thái bắt đầu mặc định của một đối tượng được gọi là trạng thái ban đầu của nó. Trạng thái cuối cùng chỉ ra sự hoàn thành việc thực thi của máy trạng thái. Trạng thái đầu và trạng thái cuối là trạng thái giả và có thể không có các phần của trạng thái thông thường ngoại trừ tên. Trong biểu đồ chuyển trạng thái, trạng thái ban đầu được biểu diễn bằng một vòng tròn màu đen được tô đầy. Trạng thái cuối cùng được biểu thị bằng một vòng tròn màu đen được tô bao quanh trong một vòng tròn màu đen chưa được tô màu khác.
Chuyển tiếp
Quá trình chuyển đổi biểu thị sự thay đổi trạng thái của một đối tượng. Nếu một đối tượng ở trạng thái nhất định khi một sự kiện xảy ra, đối tượng có thể thực hiện các hoạt động nhất định với các điều kiện xác định và thay đổi trạng thái. Trong trường hợp này, một sự chuyển đổi trạng thái được cho là đã xảy ra. Sự chuyển đổi đưa ra mối quan hệ giữa trạng thái đầu tiên và trạng thái mới. Quá trình chuyển đổi được biểu diễn bằng đồ thị bằng một vòng cung có hướng đặc từ trạng thái nguồn đến trạng thái đích.
Năm phần của quá trình chuyển đổi là -
Source State - Trạng thái bị ảnh hưởng bởi quá trình chuyển đổi.
Event Trigger - Sự xuất hiện do một đối tượng ở trạng thái nguồn trải qua quá trình chuyển đổi nếu điều kiện bảo vệ được thỏa mãn.
Guard Condition - Biểu thức Boolean nếu True, gây ra chuyển đổi khi nhận trình kích hoạt sự kiện.
Action - Một tính toán nguyên tử và không gián đoạn xảy ra trên đối tượng nguồn do một số sự kiện.
Target State - Trạng thái đích sau khi hoàn thành quá trình chuyển đổi.
Example
Giả sử một người đang đi taxi từ địa điểm X đến địa điểm Y. Trạng thái của người đó có thể là: Đang chờ (chờ taxi), Đi xe (anh ta đã có taxi và đang di chuyển trong đó), và Đạt (anh ta đã đến Nơi Đến). Hình sau mô tả sự chuyển đổi trạng thái.
Sự kiện
Sự kiện là một số sự kiện có thể kích hoạt quá trình chuyển đổi trạng thái của một đối tượng hoặc một nhóm đối tượng. Sự kiện có vị trí theo thời gian và không gian nhưng không có khoảng thời gian gắn liền với nó. Các sự kiện thường được liên kết với một số hành động.
Ví dụ về các sự kiện là nhấp chuột, nhấn phím, ngắt, tràn ngăn xếp, v.v.
Các sự kiện kích hoạt chuyển đổi được viết cùng với cung chuyển tiếp trong biểu đồ trạng thái.
Example
Xét ví dụ minh họa trong hình trên, quá trình chuyển đổi từ trạng thái Chờ sang trạng thái Cưỡi diễn ra khi người đó bắt taxi. Tương tự như vậy, trạng thái cuối cùng đạt được, khi anh ta đến đích. Hai sự kiện này có thể được gọi là sự kiện Get_Taxi và Reach_Destination. Hình sau đây cho thấy các sự kiện trong một máy trạng thái.
Sự kiện bên ngoài và bên trong
Sự kiện bên ngoài là những sự kiện truyền từ người dùng của hệ thống đến các đối tượng trong hệ thống. Ví dụ, nhấp chuột hoặc nhấn phím của người dùng là các sự kiện bên ngoài.
Sự kiện bên trong là những sự kiện truyền từ đối tượng này sang đối tượng khác trong hệ thống. Ví dụ: tràn ngăn xếp, lỗi chia, v.v.
Sự kiện hoãn lại
Các sự kiện bị hoãn lại là những sự kiện không được đối tượng xử lý ngay lập tức ở trạng thái hiện tại nhưng được xếp vào hàng đợi để chúng có thể được đối tượng xử lý ở một số trạng thái khác sau đó.
Lớp sự kiện
Lớp sự kiện chỉ ra một nhóm sự kiện có cấu trúc và hành vi chung. Như với các lớp đối tượng, các lớp sự kiện cũng có thể được tổ chức theo cấu trúc phân cấp. Các lớp sự kiện có thể có các thuộc tính liên kết với chúng, thời gian là một thuộc tính ngầm định. Ví dụ, chúng ta có thể xem xét các sự kiện khởi hành của một chuyến bay của một hãng hàng không, chúng ta có thể nhóm thành loại sau:
Flight_Departs (Chuyến bay_No, Từ_ Thành phố, Đến_ Thành phố, Tuyến đường)
Hành động
Hoạt động
Hoạt động là một hoạt động dựa trên các trạng thái của một đối tượng yêu cầu một khoảng thời gian. Chúng là những thực thi đang diễn ra trong một hệ thống có thể bị gián đoạn. Các hoạt động được thể hiện trong sơ đồ hoạt động mô tả dòng chảy từ hoạt động này sang hoạt động khác.
Hoạt động
Một hành động là một hoạt động nguyên tử thực hiện do kết quả của các sự kiện nhất định. Theo nguyên tử, nó có nghĩa là các hành động là không thể bị gián đoạn, tức là, nếu một hành động bắt đầu thực hiện, nó sẽ hoàn thành mà không bị gián đoạn bởi bất kỳ sự kiện nào. Một hành động có thể hoạt động trên một đối tượng mà sự kiện đã được kích hoạt trên đó hoặc trên các đối tượng khác mà đối tượng này nhìn thấy. Một tập hợp các hành động bao gồm một hoạt động.
Hành động nhập và thoát
Hành động nhập là hành động được thực hiện khi vào một trạng thái, bất kể quá trình chuyển đổi dẫn đến trạng thái đó.
Tương tự như vậy, hành động được thực hiện trong khi rời khỏi một trạng thái, bất kể quá trình chuyển đổi đã dẫn ra khỏi nó, được gọi là hành động thoát.
Tình huống
Kịch bản là mô tả của một chuỗi hành động cụ thể. Nó mô tả hành vi của các đối tượng trải qua một chuỗi hành động cụ thể. Các kịch bản chính mô tả các trình tự thiết yếu và các kịch bản phụ mô tả các trình tự thay thế.
Sơ đồ cho mô hình động
Có hai sơ đồ chính được sử dụng để lập mô hình động -
Sơ đồ tương tác
Biểu đồ tương tác mô tả hành vi động giữa các đối tượng khác nhau. Nó bao gồm một tập hợp các đối tượng, mối quan hệ của chúng và thông điệp mà các đối tượng gửi và nhận. Do đó, một tương tác mô hình hóa hành vi của một nhóm các đối tượng có liên quan với nhau. Hai loại sơ đồ tương tác là -
Sequence Diagram - Nó đại diện cho thứ tự thời gian của các thông điệp theo cách lập bảng.
Collaboration Diagram - Nó thể hiện tổ chức cấu trúc của các đối tượng gửi và nhận thông điệp qua các đỉnh và cung.
Sơ đồ chuyển đổi trạng thái
Biểu đồ chuyển trạng thái hoặc máy trạng thái mô tả hành vi động của một đối tượng duy nhất. Nó minh họa chuỗi các trạng thái mà một đối tượng trải qua trong thời gian tồn tại của nó, sự chuyển đổi của các trạng thái, các sự kiện và điều kiện gây ra quá trình chuyển đổi và các phản ứng do các sự kiện đó.
Đồng thời của các sự kiện
Trong một hệ thống, có thể tồn tại hai loại đồng thời. Họ là -
Hệ thống đồng thời
Ở đây, đồng thời được mô hình hóa ở mức hệ thống. Hệ thống tổng thể được mô hình hóa là tập hợp các máy trạng thái, trong đó mỗi máy trạng thái thực thi đồng thời với các máy khác.
Đồng thời trong một đối tượng
Ở đây, một đối tượng có thể đưa ra các sự kiện đồng thời. Một đối tượng có thể có các trạng thái bao gồm các trạng thái con, và các sự kiện đồng thời có thể xảy ra trong mỗi trạng thái con.
Các khái niệm liên quan đến đồng thời trong một đối tượng như sau:
Các tiểu bang đơn giản và hỗn hợp
Một trạng thái đơn giản không có cấu trúc con. Một trạng thái có các trạng thái đơn giản hơn được lồng vào bên trong nó được gọi là trạng thái hỗn hợp. Trạng thái con là trạng thái được lồng bên trong trạng thái khác. Nó thường được sử dụng để giảm độ phức tạp của một máy trạng thái. Các trạng thái con có thể được lồng vào bất kỳ số cấp nào.
Các trạng thái tổng hợp có thể có các trạng thái con tuần tự hoặc các trạng thái con đồng thời.
Trạng thái con tuần tự
Trong các trạng thái con tuần tự, việc kiểm soát việc thực thi lần lượt chuyển từ trạng thái con này sang trạng thái con khác một cách tuần tự. Có nhiều nhất một trạng thái ban đầu và một trạng thái cuối cùng trong các máy trạng thái này.
Hình dưới đây minh họa khái niệm về trạng thái con tuần tự.
Các trạng thái con đồng thời
Trong các trạng thái con đồng thời, các trạng thái con thực thi song song, hay nói cách khác, mỗi trạng thái có các máy trạng thái thực thi đồng thời bên trong nó. Mỗi máy trạng thái có trạng thái ban đầu và trạng thái cuối cùng của riêng nó. Nếu một trạng thái con đồng thời đạt đến trạng thái cuối cùng của nó trước trạng thái khác, thì điều khiển sẽ đợi ở trạng thái cuối cùng của nó. Khi tất cả các máy trạng thái lồng nhau đạt đến trạng thái cuối cùng của chúng, các trạng thái con tham gia trở lại một luồng duy nhất.
Hình dưới đây mô tả khái niệm về trạng thái con đồng thời.
Mô hình hóa chức năng cung cấp viễn cảnh quy trình của mô hình phân tích hướng đối tượng và tổng quan về những gì hệ thống phải làm. Nó xác định chức năng của các quy trình nội bộ trong hệ thống với sự hỗ trợ của Sơ đồ luồng dữ liệu (DFDs). Nó mô tả sự dẫn xuất chức năng của các giá trị dữ liệu mà không chỉ ra cách chúng được lấy ra khi chúng được tính toán hoặc tại sao chúng cần được tính toán.
Sơ đồ luồng dữ liệu
Mô hình hóa chức năng được biểu diễn thông qua một hệ thống phân cấp các DFD. DFD là một biểu diễn đồ họa của một hệ thống cho thấy các đầu vào của hệ thống, quá trình xử lý các đầu vào, đầu ra của hệ thống cũng như các kho lưu trữ dữ liệu nội bộ. DFDs minh họa một loạt các phép biến đổi hoặc tính toán được thực hiện trên các đối tượng hoặc hệ thống, và các điều khiển bên ngoài và các đối tượng ảnh hưởng đến phép biến đổi.
Rumbaugh và cộng sự. đã định nghĩa DFD là, “Sơ đồ luồng dữ liệu là một biểu đồ thể hiện luồng giá trị dữ liệu từ các nguồn của chúng trong các đối tượng thông qua các quá trình biến đổi chúng tới đích trên các đối tượng khác.”
Bốn phần chính của DFD là:
- Processes,
- Luồng dữ liệu,
- Diễn viên và
- Kho dữ liệu.
Các phần khác của DFD là -
- Ràng buộc và
- Kiểm soát lưu lượng.
Các tính năng của DFD
Quy trình
Quy trình là các hoạt động tính toán biến đổi các giá trị dữ liệu. Toàn bộ hệ thống có thể được hình dung như một quy trình cấp cao. Một quá trình có thể được chia thành nhiều thành phần nhỏ hơn. Quy trình cấp thấp nhất có thể là một chức năng đơn giản.
Representation in DFD - Một tiến trình được biểu diễn dưới dạng hình elip với tên được viết bên trong nó và chứa một số giá trị dữ liệu đầu vào và đầu ra cố định.
Example - Hình sau cho thấy một tiến trình Compute_HCF_LCM chấp nhận hai số nguyên làm đầu vào và đầu ra của chúng là HCF (hệ số chung cao nhất) và LCM (bội số chung nhỏ nhất).
Luồng dữ liệu
Luồng dữ liệu thể hiện luồng dữ liệu giữa hai tiến trình. Nó có thể là giữa một tác nhân và một quy trình, hoặc giữa một kho dữ liệu và một quy trình. Luồng dữ liệu biểu thị giá trị của một mục dữ liệu tại một số thời điểm tính toán. Giá trị này không bị thay đổi bởi luồng dữ liệu.
Representation in DFD - Luồng dữ liệu được biểu diễn bằng một cung có hướng hoặc một mũi tên, được gắn nhãn với tên của mục dữ liệu mà nó mang theo.
Trong hình trên, Integer_a và Integer_b đại diện cho các luồng dữ liệu đầu vào cho quá trình, trong khi LCM và HCF là các luồng dữ liệu đầu ra.
Luồng dữ liệu có thể được phân nhánh trong các trường hợp sau:
Giá trị đầu ra được gửi đến một số nơi như thể hiện trong hình sau. Ở đây, các mũi tên đầu ra không được gắn nhãn vì chúng biểu thị cùng một giá trị.
Luồng dữ liệu chứa một giá trị tổng hợp và mỗi thành phần được gửi đến những nơi khác nhau như thể hiện trong hình sau. Ở đây, mỗi thành phần được phân nhánh được gắn nhãn.
Diễn viên
Các tác nhân là các đối tượng hoạt động tương tác với hệ thống bằng cách sản xuất dữ liệu và nhập chúng vào hệ thống, hoặc sử dụng dữ liệu do hệ thống tạo ra. Nói cách khác, các tác nhân đóng vai trò là nguồn và nơi chứa dữ liệu.
Representation in DFD- Một tác nhân được biểu diễn bằng một hình chữ nhật. Các diễn viên được kết nối với các đầu vào và đầu ra và nằm trên ranh giới của DFD.
Example - Hình dưới đây cho thấy các tác nhân, cụ thể là Khách hàng và Sales_Clerk trong hệ thống bán hàng tại quầy.
Kho dữ liệu
Kho dữ liệu là các đối tượng thụ động hoạt động như một kho lưu trữ dữ liệu. Không giống như các diễn viên, họ không thể thực hiện bất kỳ thao tác nào. Chúng được sử dụng để lưu trữ dữ liệu và lấy dữ liệu đã lưu trữ. Chúng thể hiện cấu trúc dữ liệu, tệp đĩa hoặc bảng trong cơ sở dữ liệu.
Representation in DFD- Một kho dữ liệu được biểu diễn bằng hai đường thẳng song song chứa tên của kho dữ liệu. Mỗi kho dữ liệu được kết nối với ít nhất một quy trình. Mũi tên đầu vào chứa thông tin để sửa đổi nội dung của kho dữ liệu, trong khi mũi tên đầu ra chứa thông tin được truy xuất từ kho dữ liệu. Khi một phần thông tin được truy xuất, mũi tên đầu ra được gắn nhãn. Mũi tên không có nhãn biểu thị việc truy xuất dữ liệu đầy đủ. Mũi tên hai chiều ngụ ý cả truy xuất và cập nhật.
Example- Hình dưới đây cho thấy một kho dữ liệu, Sales_Record, lưu trữ các chi tiết của tất cả các lần bán hàng. Đầu vào cho kho dữ liệu bao gồm các chi tiết về doanh số bán hàng như mặt hàng, số tiền thanh toán, ngày tháng, v.v. Để tìm doanh số bán hàng trung bình, quy trình truy xuất hồ sơ bán hàng và tính giá trị trung bình.
Ràng buộc
Ràng buộc quy định các điều kiện hoặc hạn chế cần được thỏa mãn theo thời gian. Chúng cho phép thêm các quy tắc mới hoặc sửa đổi các quy tắc hiện có. Các ràng buộc có thể xuất hiện trong cả ba mô hình phân tích hướng đối tượng.
Trong Mô hình đối tượng, các ràng buộc xác định mối quan hệ giữa các đối tượng. Chúng cũng có thể xác định mối quan hệ giữa các giá trị khác nhau mà một đối tượng có thể nhận vào những thời điểm khác nhau.
Trong Mô hình động, các ràng buộc xác định mối quan hệ giữa các trạng thái và sự kiện của các đối tượng khác nhau.
Trong Mô hình hóa chức năng, các ràng buộc xác định các hạn chế đối với các phép biến đổi và tính toán.
Representation - Một ràng buộc được hiển thị dưới dạng một chuỗi trong dấu ngoặc nhọn.
Example- Hình dưới đây cho thấy một phần của DFD để tính toán mức lương của nhân viên của một công ty đã quyết định ưu đãi cho tất cả nhân viên của bộ phận kinh doanh và tăng lương cho tất cả nhân viên của bộ phận nhân sự. Có thể thấy rằng ràng buộc {Dept: Sales} gây ra động cơ chỉ được tính nếu bộ phận là doanh số và ràng buộc {Dept: HR} khiến gia tăng chỉ được tính nếu bộ phận là HR.
Kiểm soát luồng
Một quá trình có thể được liên kết với một giá trị Boolean nhất định và chỉ được đánh giá nếu giá trị là true, mặc dù nó không phải là đầu vào trực tiếp cho quá trình. Các giá trị Boolean này được gọi là các luồng điều khiển.
Representation in DFD - Các luồng điều khiển được biểu diễn bằng một đường cung chấm từ quá trình tạo ra giá trị Boolean đến quá trình do chúng điều khiển.
Example- Hình dưới đây biểu diễn một DFD cho phép chia số học. Số chia được kiểm tra khác 0. Nếu nó không phải là 0, dòng điều khiển OK có giá trị Đúng và sau đó quá trình Chia sẽ tính Thương số và Phần dư.
Phát triển mô hình DFD của một hệ thống
Để phát triển mô hình DFD của một hệ thống, một hệ thống phân cấp các DFD được xây dựng. DFD cấp cao nhất bao gồm một quá trình duy nhất và các tác nhân tương tác với nó.
Ở mỗi cấp độ thấp hơn kế tiếp, các chi tiết khác dần dần được đưa vào. Một quá trình được phân tách thành các quá trình con, các luồng dữ liệu giữa các quá trình con được xác định, các luồng điều khiển được xác định và các kho lưu trữ dữ liệu được xác định. Trong khi phân rã một quy trình, luồng dữ liệu vào hoặc ra khỏi quy trình phải khớp với luồng dữ liệu ở cấp độ tiếp theo của DFD.
Example- Chúng ta hãy xem xét một hệ thống phần mềm, Phần mềm bán buôn, tự động hóa các giao dịch của một cửa hàng bán buôn. Cửa hàng bán hàng loạt và có lượng khách hàng bao gồm các thương gia và chủ cửa hàng bán lẻ. Mỗi khách hàng được yêu cầu đăng ký với thông tin chi tiết của mình và được cấp một mã khách hàng duy nhất, C_Code. Sau khi bán hàng xong, shop đăng ký thông tin chi tiết và gửi hàng đi công văn. Mỗi năm, cửa hàng phân phối quà Giáng sinh cho khách hàng của mình, bao gồm một đồng bạc hoặc một đồng vàng tùy thuộc vào tổng doanh số bán hàng và quyết định của chủ sở hữu.
Mô hình chức năng cho Phần mềm Bán buôn được đưa ra dưới đây. Hình dưới đây cho thấy DFD cấp cao nhất. Nó cho thấy phần mềm như một quy trình duy nhất và các tác nhân tương tác với nó.
Các tác nhân trong hệ thống là -
- Customers
- Salesperson
- Proprietor
Trong DFD cấp độ tiếp theo, như thể hiện trong hình sau, các quá trình chính của hệ thống được xác định, các kho dữ liệu được xác định và sự tương tác của các quá trình với các tác nhân và các kho dữ liệu được thiết lập.
Trong hệ thống, ba quá trình có thể được xác định, đó là -
- Đăng ký khách hàng
- Xử lý bán hàng
- Quà tặng chắc chắn
Các kho dữ liệu sẽ được yêu cầu là -
- Chi tiết khách hàng
- Chi tiết bán hàng
- Chi tiết quà tặng
Hình dưới đây cho thấy các chi tiết của quy trình Đăng ký Khách hàng. Có ba quy trình trong đó, Xác minh Chi tiết, Tạo C_Code và Cập nhật Chi tiết Khách hàng. Khi các chi tiết của khách hàng được nhập, chúng sẽ được xác minh. Nếu dữ liệu chính xác, C_Code sẽ được tạo và cập nhật dữ liệu Chi tiết khách hàng.
Hình sau cho thấy sự mở rộng của quy trình Quà tặng chắc chắn. Nó có hai quy trình trong đó, Tìm tổng doanh số và Quyết định loại đồng xu quà tặng. Quy trình Tìm Tổng doanh số tính toán tổng doanh số hàng năm tương ứng với từng khách hàng và ghi lại dữ liệu. Lấy hồ sơ này và quyết định của chủ sở hữu làm đầu vào, tiền quà tặng được phân bổ thông qua quy trình Quyết định loại tiền quà tặng.
Ưu điểm và nhược điểm của DFD
Ưu điểm | Nhược điểm |
---|---|
DFD mô tả ranh giới của một hệ thống và do đó rất hữu ích trong việc mô tả mối quan hệ giữa các đối tượng bên ngoài và các quá trình bên trong hệ thống. | DFD mất nhiều thời gian để tạo, điều này có thể không khả thi cho các mục đích thực tế. |
Chúng giúp người dùng có kiến thức về hệ thống. | DFDs không cung cấp bất kỳ thông tin nào về hành vi phụ thuộc thời gian, tức là, chúng không chỉ định khi nào các phép biến đổi được thực hiện. |
Biểu diễn đồ họa đóng vai trò như một bản thiết kế để các lập trình viên phát triển một hệ thống. | Họ không làm sáng tỏ tần suất tính toán hoặc lý do tính toán. |
DFD cung cấp thông tin chi tiết về các quy trình hệ thống. | Việc chuẩn bị các DFD là một quá trình phức tạp cần có chuyên môn đáng kể. Ngoài ra, người không rành về kỹ thuật cũng khó hiểu. |
Chúng được sử dụng như một phần của tài liệu hệ thống. | Phương pháp chuẩn bị là chủ quan và để lại nhiều phạm vi là không chính xác. |
Mối quan hệ giữa các mô hình đối tượng, động và chức năng
Mô hình Đối tượng, Mô hình Động và Mô hình Chức năng bổ sung cho nhau để có một Phân tích Hướng Đối tượng hoàn chỉnh.
Mô hình hóa đối tượng phát triển cấu trúc tĩnh của hệ thống phần mềm về các đối tượng. Vì vậy, nó cho thấy "những người làm" của một hệ thống.
Mô hình hóa động phát triển hành vi theo thời gian của các đối tượng để phản ứng với các sự kiện bên ngoài. Nó hiển thị trình tự của các hoạt động được thực hiện trên các đối tượng.
Mô hình chức năng cung cấp một cái nhìn tổng quan về những gì hệ thống phải làm.
Mô hình chức năng và mô hình đối tượng
Bốn phần chính của Mô hình chức năng về mô hình đối tượng là:
Process - Các tiến trình bao hàm các phương pháp của các đối tượng cần được thực hiện.
Actors - Các diễn viên là các đối tượng trong mô hình đối tượng.
Data Stores - Đây là các đối tượng trong mô hình đối tượng hoặc thuộc tính của các đối tượng.
Data Flows- Các luồng dữ liệu đến hoặc đi từ các tác nhân đại diện cho các hoạt động trên hoặc bởi các đối tượng. Luồng dữ liệu đến hoặc từ kho dữ liệu đại diện cho các truy vấn hoặc cập nhật.
Mô hình chức năng và mô hình động
Mô hình động cho biết khi nào các hoạt động được thực hiện, trong khi mô hình chức năng cho biết chúng được thực hiện như thế nào và đối số nào là cần thiết. Vì các tác nhân là các đối tượng hoạt động, nên mô hình động phải chỉ định khi nào nó hoạt động. Các kho dữ liệu là các đối tượng thụ động và chúng chỉ phản hồi các cập nhật và truy vấn; do đó mô hình động không cần xác định khi nào chúng hoạt động.
Mô hình đối tượng và mô hình động
Mô hình động cho thấy trạng thái của các đối tượng và các hoạt động được thực hiện trên các lần xuất hiện của các sự kiện và các thay đổi tiếp theo của các trạng thái. Trạng thái của đối tượng là kết quả của những thay đổi được hiển thị trong mô hình đối tượng.
Ngôn ngữ mô hình hóa hợp nhất (UML) là một ngôn ngữ đồ họa cho OOAD cung cấp một cách chuẩn để viết bản thiết kế hệ thống phần mềm. Nó giúp hình dung, chỉ rõ, xây dựng và lập tài liệu về các tạo tác của hệ thống hướng đối tượng. Nó được sử dụng để mô tả các cấu trúc và các mối quan hệ trong một hệ thống phức tạp.
Lịch sử tóm tắt
Nó được phát triển vào năm 1990 như là sự kết hợp của một số kỹ thuật, nổi bật là kỹ thuật OOAD của Grady Booch, OMT (Kỹ thuật mô hình hóa đối tượng) của James Rumbaugh và OOSE (Kỹ thuật phần mềm hướng đối tượng) của Ivar Jacobson. UML đã cố gắng chuẩn hóa các mô hình ngữ nghĩa, ký hiệu cú pháp và sơ đồ của OOAD.
Hệ thống và Mô hình trong UML
System- Một tập hợp các yếu tố được tổ chức để đạt được các mục tiêu nhất định tạo thành một hệ thống. Các hệ thống thường được chia thành các hệ thống con và được mô tả bởi một tập hợp các mô hình.
Model - Mô hình là sự trừu tượng hóa đơn giản, đầy đủ và nhất quán của một hệ thống, được tạo ra để hiểu rõ hơn về hệ thống.
View - Hình chiếu là hình chiếu mô hình của hệ thống từ một góc nhìn cụ thể.
Mô hình khái niệm của UML
Mô hình khái niệm của UML bao gồm ba yếu tố chính:
- Các khối xây dựng cơ bản
- Rules
- Cơ chế chung
Khối xây dựng cơ bản
Ba khối xây dựng của UML là:
- Things
- Relationships
- Diagrams
Nhiều thứ
Có bốn loại thứ trong UML, đó là -
Structural Things- Đây là các danh từ của các mô hình UML đại diện cho các phần tử tĩnh có thể là vật lý hoặc khái niệm. Những thứ cấu trúc là lớp, giao diện, cộng tác, ca sử dụng, lớp hoạt động, các thành phần và các nút.
Behavioral Things- Đây là những động từ của các mô hình UML đại diện cho hành vi động theo thời gian và không gian. Hai loại hành vi là tương tác và máy trạng thái.
Grouping Things- Chúng bao gồm các phần tổ chức của các mô hình UML. Chỉ có một loại phân nhóm, tức là gói.
Annotational Things - Đây là những giải thích trong các mô hình UML đại diện cho các chú thích được áp dụng để mô tả các phần tử.
Các mối quan hệ
Các mối quan hệ là sự kết nối giữa mọi thứ. Bốn loại mối quan hệ có thể được biểu diễn trong UML là:
Dependency- Đây là mối quan hệ ngữ nghĩa giữa hai sự vật, sao cho sự thay đổi ở một thứ mang đến sự thay đổi ở thứ kia. Cái trước là cái độc lập, còn cái sau là cái phụ thuộc.
Association - Đây là quan hệ cấu trúc thể hiện một nhóm liên kết có cấu trúc chung và hành vi chung.
Generalization - Điều này thể hiện mối quan hệ tổng quát hóa / đặc biệt hóa trong đó các lớp con kế thừa cấu trúc và hành vi từ các siêu lớp.
Realization - Đây là mối quan hệ ngữ nghĩa giữa hai hoặc nhiều bộ phân loại sao cho một bộ phân loại đặt ra một hợp đồng mà các bộ phân loại khác đảm bảo tuân theo.
Sơ đồ
Sơ đồ là một biểu diễn đồ họa của một hệ thống. Nó bao gồm một nhóm các phần tử thường ở dạng đồ thị. UML bao gồm tất cả chín sơ đồ, cụ thể là -
- Sơ đồ lớp
- Sơ đồ đối tượng
- Sử dụng sơ đồ trường hợp
- Sơ đồ trình tự
- Sơ đồ cộng tác
- Sơ đồ biểu đồ trạng thái
- Sơ đồ hoạt động
- Sơ đồ thành phần
- Sơ đồ triển khai
Quy tắc
UML có một số quy tắc để các mô hình tự nhất quán về mặt ngữ nghĩa và liên quan đến các mô hình khác trong hệ thống một cách hài hòa. UML có các quy tắc ngữ nghĩa cho những điều sau:
- Names
- Scope
- Visibility
- Integrity
- Execution
Cơ chế chung
UML có bốn cơ chế chung:
- Specifications
- Adornments
- Bộ phận chung
- Cơ chế mở rộng
Thông số kỹ thuật
Trong UML, đằng sau mỗi ký hiệu đồ họa, có một câu lệnh dạng văn bản biểu thị cú pháp và ngữ nghĩa. Đây là các thông số kỹ thuật. Các thông số kỹ thuật cung cấp một bảng nối đa nghĩa ngữ nghĩa chứa tất cả các phần của hệ thống và mối quan hệ giữa các đường dẫn khác nhau.
Trang sức
Mỗi phần tử trong UML có một ký hiệu đồ họa duy nhất. Bên cạnh đó, có các ký hiệu để đại diện cho các khía cạnh quan trọng của một phần tử như tên, phạm vi, khả năng hiển thị, v.v.
Bộ phận chung
Hệ thống hướng đối tượng có thể được chia theo nhiều cách. Hai cách chia phổ biến là -
Division of classes and objects- Một lớp là một phần trừu tượng của một nhóm các đối tượng giống nhau. Một đối tượng là một thể hiện cụ thể tồn tại thực tế trong hệ thống.
Division of Interface and Implementation- Một giao diện xác định các quy tắc cho tương tác. Thực hiện là việc thực hiện cụ thể các quy tắc được xác định trong giao diện.
Cơ chế mở rộng
UML là một ngôn ngữ kết thúc mở. Có thể mở rộng các khả năng của UML một cách có kiểm soát để phù hợp với các yêu cầu của hệ thống. Các cơ chế mở rộng là -
Stereotypes - Nó mở rộng vốn từ vựng của UML, qua đó các khối xây dựng mới có thể được tạo ra từ các khối hiện có.
Tagged Values - Nó mở rộng các thuộc tính của khối xây dựng UML.
Constraints - Nó mở rộng ngữ nghĩa của các khối xây dựng UML.
UML xác định các ký hiệu cụ thể cho từng khối xây dựng.
Lớp học
Một lớp được biểu diễn bằng một hình chữ nhật có ba phần -
- phần trên cùng chứa tên của lớp
- phần giữa chứa các thuộc tính lớp
- phần dưới cùng đại diện cho các hoạt động của lớp
Khả năng hiển thị của các thuộc tính và hoạt động có thể được biểu diễn theo những cách sau:
Public- Một thành viên công khai có thể nhìn thấy từ bất kỳ đâu trong hệ thống. Trong sơ đồ lớp, nó có tiền tố là ký hiệu '+'.
Private- Một thành viên riêng tư chỉ được hiển thị từ trong lớp. Nó không thể được truy cập từ bên ngoài lớp. Thành viên riêng có tiền tố là ký hiệu '-'.
Protected- Một thành viên được bảo vệ có thể nhìn thấy từ bên trong lớp và từ các lớp con được kế thừa từ lớp này, nhưng không hiển thị từ bên ngoài. Nó có tiền tố là ký hiệu '#'.
Một lớp trừu tượng có tên lớp được viết nghiêng.
Example- Chúng ta hãy xem xét lớp Circle đã giới thiệu trước đó. Các thuộc tính của Circle là x-coord, y-coord và radius. Các phép toán là findArea (), findCircumference () và scale (). Giả sử rằng x-coord và y-coord là thành viên dữ liệu riêng tư, radius là thành viên dữ liệu được bảo vệ và các hàm thành viên là công khai. Hình sau cho ta biểu diễn dạng sơ đồ của lớp.
Vật
Một đối tượng được biểu diễn dưới dạng hình chữ nhật có hai phần -
Phần trên cùng chứa tên của đối tượng với tên của lớp hoặc gói mà nó là một thể hiện. Tên có các dạng sau:
object-name - tên lớp
object-name - class-name :: package-name
class-name - trong trường hợp đối tượng ẩn danh
Phần dưới cùng đại diện cho các giá trị của các thuộc tính. Nó có dạng thuộc tính-tên = giá trị.
Đôi khi các đối tượng được biểu diễn bằng hình chữ nhật tròn.
Example- Ta xét một đối tượng của lớp Circle có tên là c1. Ta giả sử rằng tâm của c1 là (2, 3) và bán kính của c1 là 5. Hình sau đây mô tả vật thể.
Thành phần
Thành phần là một phần vật lý và có thể thay thế của hệ thống tuân theo và cung cấp việc thực hiện một tập hợp các giao diện. Nó đại diện cho việc đóng gói vật lý của các phần tử như các lớp và giao diện.
Notation - Trong các biểu đồ UML, một thành phần được biểu diễn bằng một hình chữ nhật với các tab như trong hình bên dưới.
Giao diện
Giao diện là một tập hợp các phương thức của một lớp hoặc thành phần. Nó chỉ định tập hợp các dịch vụ có thể được cung cấp bởi lớp hoặc thành phần.
Notation- Nói chung, một giao diện được vẽ dưới dạng một vòng tròn cùng với tên của nó. Một giao diện hầu như luôn luôn được gắn với lớp hoặc thành phần nhận ra nó. Hình dưới đây cung cấp ký hiệu của một giao diện.
Gói
Gói là một nhóm các phần tử có tổ chức. Một gói có thể chứa những thứ có cấu trúc như lớp, thành phần và các gói khác trong đó.
Notation- Về mặt đồ họa, một gói được biểu diễn bằng một thư mục theo thẻ. Một gói thường được vẽ chỉ với tên của nó. Tuy nhiên nó có thể có thêm chi tiết về nội dung của gói. Xem các số liệu sau đây.
Mối quan hệ
Các ký hiệu cho các loại mối quan hệ khác nhau như sau:
Thông thường, các yếu tố trong một mối quan hệ đóng những vai trò cụ thể trong mối quan hệ. Tên vai trò biểu thị hành vi của một phần tử tham gia vào một ngữ cảnh nhất định.
Example- Các hình dưới đây cho thấy các ví dụ về mối quan hệ khác nhau giữa các lớp. Hình đầu tiên cho thấy mối liên hệ giữa hai lớp, Phòng ban và Nhân viên, trong đó một phòng ban có thể có một số nhân viên làm việc trong đó. Công nhân là tên vai trò. '1' bên cạnh Bộ phận và '*' bên cạnh Nhân viên mô tả rằng tỷ lệ bản số là một - nhiều. Hình thứ hai mô tả mối quan hệ tổng hợp, một trường Đại học là “tổng thể” của nhiều Khoa.
Sơ đồ cấu trúc UML được phân loại như sau: sơ đồ lớp, sơ đồ đối tượng, sơ đồ thành phần và sơ đồ triển khai.
Sơ đồ lớp
Biểu đồ lớp mô hình chế độ xem tĩnh của hệ thống. Nó bao gồm các lớp, giao diện và sự cộng tác của một hệ thống; và các mối quan hệ giữa chúng.
Sơ đồ lớp của một hệ thống
Chúng ta hãy xem xét một Hệ thống Ngân hàng được đơn giản hóa.
Một ngân hàng có nhiều chi nhánh. Trong mỗi khu vực, một chi nhánh được chỉ định là trụ sở chính của khu vực có nhiệm vụ giám sát các chi nhánh khác trong khu vực đó. Mỗi chi nhánh có thể có nhiều tài khoản và khoản vay. Tài khoản có thể là tài khoản tiết kiệm hoặc tài khoản vãng lai. Khách hàng có thể mở cả tài khoản tiết kiệm và tài khoản vãng lai. Tuy nhiên, một khách hàng không được có nhiều hơn một tài khoản tiết kiệm hoặc tài khoản vãng lai. Một khách hàng cũng có thể mua các khoản vay từ ngân hàng.
Hình sau cho thấy sơ đồ lớp tương ứng.
Các lớp trong hệ thống
Ngân hàng, Chi nhánh, Tài khoản, Tài khoản Tiết kiệm, Tài khoản Hiện tại, Khoản vay và Khách hàng.
Các mối quan hệ
A Bank “has–a” number of Branches - thành phần, một – nhiều
A Branch with role Zonal Head Office supervises other Branches - liên kết một ngôi, một – nhiều
A Branch “has–a” number of accounts - tổng hợp, một – nhiều
Từ Tài khoản lớp, hai lớp đã kế thừa, đó là Tài khoản tiết kiệm và Tài khoản vãng lai.
A Customer can have one Current Account - liên kết, một – một
A Customer can have one Savings Account - liên kết, một – một
A Branch “has–a” number of Loans - tổng hợp, một – nhiều
A Customer can take many loans - liên kết, một – nhiều
Sơ đồ đối tượng
Biểu đồ đối tượng mô hình hóa một nhóm đối tượng và các liên kết của chúng tại một thời điểm. Nó hiển thị các thể hiện của những thứ trong một sơ đồ lớp. Sơ đồ đối tượng là phần tĩnh của sơ đồ tương tác.
Example - Hình dưới đây mô tả sơ đồ đối tượng của một phần sơ đồ lớp của Hệ thống ngân hàng.
Sơ đồ thành phần
Sơ đồ thành phần cho thấy tổ chức và sự phụ thuộc giữa một nhóm các thành phần.
Sơ đồ thành phần bao gồm -
- Components
- Interfaces
- Relationships
- Gói và Hệ thống con (tùy chọn)
Sơ đồ thành phần được sử dụng cho -
xây dựng hệ thống thông qua kỹ thuật chuyển tiếp và đảo ngược.
lập mô hình quản lý cấu hình các tệp mã nguồn trong khi phát triển hệ thống sử dụng ngôn ngữ lập trình hướng đối tượng.
biểu diễn các lược đồ trong cơ sở dữ liệu mô hình hóa.
mô hình hóa các hành vi của hệ thống động.
Example
Hình dưới đây cho thấy một sơ đồ thành phần để mô hình hóa mã nguồn của hệ thống được phát triển bằng C ++. Nó hiển thị bốn tệp mã nguồn, đó là myheader.h, otherheader.h, priority.cpp và other.cpp. Hai phiên bản của myheader.h được hiển thị, theo dõi từ phiên bản gần đây đến tổ tiên của nó. Tệp ưu tiên.cpp có phụ thuộc biên dịch vào other.cpp. Tệp other.cpp có phụ thuộc biên dịch vào otherheader.h.
Sơ đồ triển khai
Một sơ đồ triển khai nhấn mạnh vào cấu hình của các nút xử lý thời gian chạy và các thành phần sống trên chúng. Chúng thường bao gồm các nút và phần phụ thuộc, hoặc các liên kết giữa các nút.
Sơ đồ triển khai được sử dụng để -
thiết bị mô hình trong hệ thống nhúng thường bao gồm tập hợp phần cứng chuyên sâu về phần mềm.
đại diện cho cấu trúc liên kết của hệ thống máy khách / máy chủ.
mô hình hệ thống phân tán hoàn toàn.
Example
Hình dưới đây cho thấy cấu trúc liên kết của một hệ thống máy tính tuân theo kiến trúc máy khách / máy chủ. Hình vẽ minh họa một nút được mô phỏng như một máy chủ bao gồm các bộ xử lý. Hình này chỉ ra rằng bốn hoặc nhiều máy chủ được triển khai tại hệ thống. Được kết nối với máy chủ là các nút máy khách, trong đó mỗi nút đại diện cho một thiết bị đầu cuối như máy trạm, máy tính xách tay, máy quét hoặc máy in. Các nút được biểu diễn bằng các biểu tượng mô tả rõ ràng tương đương trong thế giới thực.
Biểu đồ hành vi UML trực quan hóa, chỉ định, xây dựng và ghi lại các khía cạnh động của hệ thống. Các biểu đồ hành vi được phân loại như sau: biểu đồ ca sử dụng, biểu đồ tương tác, biểu đồ trạng thái và biểu đồ hoạt động.
Mô hình ca sử dụng
Ca sử dụng
Một ca sử dụng mô tả chuỗi hành động mà hệ thống thực hiện để mang lại kết quả có thể nhìn thấy được. Nó cho thấy sự tương tác của những thứ bên ngoài hệ thống với chính hệ thống. Các ca sử dụng có thể được áp dụng cho toàn bộ hệ thống cũng như một phần của hệ thống.
Diễn viên
Một tác nhân đại diện cho các vai trò mà người dùng các ca sử dụng đóng. Tác nhân có thể là một người (ví dụ: sinh viên, khách hàng), một thiết bị (ví dụ: máy trạm), hoặc một hệ thống khác (ví dụ: ngân hàng, tổ chức).
Hình dưới đây cho thấy các ký hiệu của một tác nhân có tên là Sinh viên và một trường hợp sử dụng được gọi là Tạo Báo cáo Hiệu suất.
Sơ đồ ca sử dụng
Biểu đồ ca sử dụng trình bày cái nhìn bên ngoài về cách các phần tử trong hệ thống hoạt động và cách chúng có thể được sử dụng trong ngữ cảnh.
Biểu đồ ca sử dụng bao gồm -
- Trường hợp sử dụng
- Actors
- Các mối quan hệ như phụ thuộc, tổng quát hóa và liên kết
Biểu đồ ca sử dụng được sử dụng -
Để mô hình hóa bối cảnh của hệ thống bằng cách bao bọc tất cả các hoạt động của hệ thống trong một hình chữ nhật và tập trung vào các tác nhân bên ngoài hệ thống bằng cách tương tác với nó.
Mô hình hóa các yêu cầu của một hệ thống theo quan điểm bên ngoài.
Example
Chúng ta hãy xem xét một Hệ thống Nhà giao dịch Tự động. Chúng tôi giả định các tính năng sau của hệ thống:
Nhà giao dịch có giao dịch với hai loại khách hàng là khách hàng cá nhân và khách hàng doanh nghiệp.
Sau khi khách hàng đặt hàng, nó sẽ được xử lý bởi bộ phận bán hàng và khách hàng sẽ được đưa cho hóa đơn.
Hệ thống cho phép người quản lý quản lý tài khoản khách hàng và giải đáp mọi thắc mắc do khách hàng đăng tải.
Sơ đồ tương tác
Biểu đồ tương tác mô tả tương tác của các đối tượng và mối quan hệ của chúng. Chúng cũng bao gồm các thông điệp được chuyển giữa chúng. Có hai loại sơ đồ tương tác -
- Sơ đồ trình tự
- Sơ đồ cộng tác
Sơ đồ tương tác được sử dụng để lập mô hình -
dòng điều khiển theo thứ tự thời gian sử dụng sơ đồ tuần tự.
quy trình kiểm soát của tổ chức sử dụng sơ đồ cộng tác.
Sơ đồ trình tự
Biểu đồ trình tự là biểu đồ tương tác minh họa thứ tự của các thông điệp theo thời gian.
Notations- Các biểu đồ này có dạng biểu đồ hai chiều. Các đối tượng bắt đầu tương tác được đặt trên trục x. Thông điệp mà các đối tượng này gửi và nhận được đặt dọc theo trục y, theo thứ tự thời gian tăng dần từ trên xuống dưới.
Example - Sơ đồ trình tự cho Hệ thống Nhà giao dịch Tự động được thể hiện trong hình sau.
Sơ đồ cộng tác
Sơ đồ cộng tác là sơ đồ tương tác minh họa cấu trúc của các đối tượng gửi và nhận thông điệp.
Notations- Trong các sơ đồ này, các đối tượng tham gia vào tương tác được thể hiện bằng cách sử dụng các đỉnh. Các liên kết kết nối các đối tượng được sử dụng để gửi và nhận tin nhắn. Thông báo được hiển thị dưới dạng một mũi tên có nhãn.
Example - Sơ đồ hợp tác cho Hệ thống Nhà giao dịch Tự động được minh họa trong hình bên dưới.
Sơ đồ Trạng thái – Biểu đồ
Biểu đồ trạng thái - biểu đồ cho thấy một máy trạng thái mô tả luồng điều khiển của một đối tượng từ trạng thái này sang trạng thái khác. Một máy trạng thái mô tả chuỗi các trạng thái mà một đối tượng trải qua do các sự kiện và phản ứng của chúng đối với các sự kiện.
Sơ đồ Trạng thái – Biểu đồ bao gồm -
- Kỳ: Đơn giản hoặc Tổng hợp
- Chuyển đổi giữa các trạng thái
- Các sự kiện gây ra chuyển đổi
- Hành động do các sự kiện
Biểu đồ trạng thái được sử dụng để mô hình hóa các đối tượng có bản chất phản ứng.
Example
Trong Hệ thống Nhà giao dịch Tự động, chúng ta hãy lập mô hình Đơn hàng như một đối tượng và theo dõi trình tự của nó. Hình sau cho thấy biểu đồ trạng thái tương ứng.
Sơ đồ hoạt động
Biểu đồ hoạt động mô tả luồng hoạt động là những hoạt động phi nguyên tử đang diễn ra trong một máy trạng thái. Các hoạt động dẫn đến các hành động là hoạt động nguyên tử.
Sơ đồ hoạt động bao gồm -
- Trạng thái hoạt động và trạng thái hành động
- Transitions
- Objects
Sơ đồ hoạt động được sử dụng để lập mô hình -
- quy trình làm việc khi được các tác nhân xem, tương tác với hệ thống.
- chi tiết các hoạt động hoặc tính toán sử dụng lưu đồ.
Example
Hình dưới đây cho thấy sơ đồ hoạt động của một phần của Hệ thống Nhà giao dịch 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 triển khai, các ràng buộc được xác định và các giao diện được thiết kế, dẫn đến một 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ở ngữ 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 độ 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ẻ ít phức tạp hơn, 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 thay thế hoặc sửa đổi các hệ thống con 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 gắn liền với 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.
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 vật đượ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:
Khởi động hệ thống, tức là quá trình chuyển đổi 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, tức là đóng tất cả các luồng đang chạy, dọn dẹp tài nguyên và các tin nhắn 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, mức 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 các giai đoạn phân tích hướng đối tượng được nhóm 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 phép toán 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 một 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 điều khoản để 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 được cung cấp bởi ứng dụng.
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 ghép nối 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ó nên đượ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 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 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ở). 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 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 việc thiết kế phần mềm đượ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à -
Cô đọng 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ả
Thực hiện một thiết kế hướng đối tượng thường liên quan đến việc sử dụng một ngôn ngữ lập trình hướng đối tượng chuẩn (OOPL) hoặc ánh xạ các thiết kế đối tượng với cơ sở dữ liệu. Trong hầu hết các trường hợp, nó liên quan đến cả hai.
Triển khai bằng ngôn ngữ lập trình
Thông thường, nhiệm vụ chuyển đổi một thiết kế đối tượng thành mã là một quá trình đơn giản. Bất kỳ ngôn ngữ lập trình hướng đối tượng nào như C ++, Java, Smalltalk, C # và Python, đều bao gồm cung cấp để đại diện cho các lớp. Trong chương này, chúng tôi minh họa khái niệm sử dụng C ++.
Hình sau cho thấy biểu diễn của lớp Circle sử dụng C ++.
Hiệp hội thực hiện
Hầu hết các ngôn ngữ lập trình không cung cấp các cấu trúc để triển khai các liên kết trực tiếp. Vì vậy nhiệm vụ triển khai các hiệp hội cần được suy nghĩ đáng kể.
Các liên kết có thể là một chiều hoặc hai chiều. Bên cạnh đó, mỗi liên kết có thể là một - một, một - nhiều, hoặc nhiều - nhiều.
Hiệp hội đơn hướng
Đối với việc triển khai các liên kết đơn hướng, cần cẩn thận để tính đơn hướng được duy trì. Cách triển khai cho các tính đa dạng khác nhau như sau:
Optional Associations- Ở đây, một liên kết có thể tồn tại hoặc không giữa các đối tượng tham gia. Ví dụ, trong sự liên kết giữa Khách hàng và Tài khoản Hiện tại trong hình bên dưới, khách hàng có thể có hoặc không có tài khoản vãng lai.
Để triển khai, một đối tượng của Tài khoản hiện tại được bao gồm dưới dạng một thuộc tính trong Khách hàng có thể là NULL. Thực hiện bằng C ++ -
class Customer {
private:
// attributes
Current_Account c; //an object of Current_Account as attribute
public:
Customer() {
c = NULL;
} // assign c as NULL
Current_Account getCurrAc() {
return c;
}
void setCurrAc( Current_Account myacc) {
c = myacc;
}
void removeAcc() {
c = NULL;
}
};
One–to–one Associations- Ở đây, một thể hiện của một lớp có liên quan đến chính xác một thể hiện của lớp được liên kết. Ví dụ: Bộ phận và Người quản lý có liên kết 1-1 như thể hiện trong hình bên dưới.
Điều này được thực hiện bằng cách bao gồm trong Bộ phận, một đối tượng của Người quản lý không được NULL. Thực hiện bằng C ++ -
class Department {
private:
// attributes
Manager mgr; //an object of Manager as attribute
public:
Department (/*parameters*/, Manager m) { //m is not NULL
// assign parameters to variables
mgr = m;
}
Manager getMgr() {
return mgr;
}
};
One–to–many Associations- Ở đây, một thể hiện của một lớp có liên quan đến nhiều hơn một thể hiện của lớp được liên kết. Ví dụ, hãy xem xét mối quan hệ giữa Nhân viên và Người phụ thuộc trong hình sau.
Điều này được thực hiện bằng cách bao gồm một danh sách Người phụ thuộc trong lớp Nhân viên. Triển khai bằng cách sử dụng vùng chứa danh sách STL của C ++ -
class Employee {
private:
char * deptName;
list <Dependent> dep; //a list of Dependents as attribute
public:
void addDependent ( Dependent d) {
dep.push_back(d);
} // adds an employee to the department
void removeDeoendent( Dependent d) {
int index = find ( d, dep );
// find() function returns the index of d in list dep
dep.erase(index);
}
};
Hiệp hội hai hướng
Để thực hiện liên kết hai chiều, các liên kết theo cả hai hướng cần được duy trì.
Optional or one–to–one Associations - Xem xét mối quan hệ giữa Dự án và Quản lý dự án có sự kết hợp một - một hai hướng như thể hiện trong hình bên dưới.
Thực hiện bằng C ++ -
Class Project {
private:
// attributes
Project_Manager pmgr;
public:
void setManager ( Project_Manager pm);
Project_Manager changeManager();
};
class Project_Manager {
private:
// attributes
Project pj;
public:
void setProject(Project p);
Project removeProject();
};
One–to–many Associations - Xem xét mối quan hệ giữa Bộ phận và Nhân viên có sự liên kết từ một đến nhiều như thể hiện trong hình bên dưới.
Triển khai sử dụng vùng chứa danh sách STL C ++
class Department {
private:
char * deptName;
list <Employee> emp; //a list of Employees as attribute
public:
void addEmployee ( Employee e) {
emp.push_back(e);
} // adds an employee to the department
void removeEmployee( Employee e) {
int index = find ( e, emp );
// find function returns the index of e in list emp
emp.erase(index);
}
};
class Employee {
private:
//attributes
Department d;
public:
void addDept();
void removeDept();
};
Triển khai liên kết dưới dạng lớp học
Nếu một liên kết có một số thuộc tính được liên kết, nó nên được triển khai bằng một lớp riêng biệt. Ví dụ, hãy xem xét mối quan hệ 1-1 giữa Nhân viên và Dự án như thể hiện trong hình bên dưới.
Triển khai WorksOn bằng C ++
class WorksOn {
private:
Employee e;
Project p;
Hours h;
char * date;
public:
// class methods
};
Các ràng buộc thực hiện
Các ràng buộc trong các lớp hạn chế phạm vi và loại giá trị mà các thuộc tính có thể nhận. Để thực hiện các ràng buộc, một giá trị mặc định hợp lệ được gán cho thuộc tính khi một đối tượng được khởi tạo từ lớp. Bất cứ khi nào giá trị được thay đổi trong thời gian chạy, nó sẽ được kiểm tra xem giá trị đó có hợp lệ hay không. Giá trị không hợp lệ có thể được xử lý bằng quy trình xử lý ngoại lệ hoặc các phương pháp khác.
Example
Hãy xem xét một lớp Nhân viên trong đó tuổi là một thuộc tính có thể có các giá trị trong phạm vi từ 18 đến 60. Đoạn mã C ++ sau kết hợp nó:
class Employee {
private: char * name;
int age;
// other attributes
public:
Employee() { // default constructor
strcpy(name, "");
age = 18; // default value
}
class AgeError {}; // Exception class
void changeAge( int a) { // method that changes age
if ( a < 18 || a > 60 ) // check for invalid condition
throw AgeError(); // throw exception
age = a;
}
};
Thực hiện Biểu đồ Tiểu bang
Có hai chiến lược thực hiện thay thế để thực hiện các trạng thái trong sơ đồ biểu đồ trạng thái.
Danh sách trong lớp
Trong cách tiếp cận này, các trạng thái được biểu diễn bằng các giá trị khác nhau của một thành viên dữ liệu (hoặc tập hợp các thành viên dữ liệu). Các giá trị được xác định rõ ràng bởi một kiểu liệt kê trong lớp. Các chuyển đổi được biểu diễn bằng các hàm thành viên thay đổi giá trị của thành viên dữ liệu liên quan.
Sắp xếp các lớp trong một hệ thống phân cấp tổng quát
Theo cách tiếp cận này, các trạng thái được sắp xếp theo hệ thống phân cấp tổng quát hóa theo cách mà chúng có thể được tham chiếu bởi một biến con trỏ chung. Hình dưới đây cho thấy một sự chuyển đổi từ biểu đồ trạng thái sang biểu đồ phân cấp tổng quát.
Ánh xạ đối tượng tới hệ thống cơ sở dữ liệu
Tính bền của đối tượng
Một khía cạnh quan trọng của việc phát triển hệ thống hướng đối tượng là tính bền bỉ của dữ liệu. Thông qua sự bền bỉ, các đối tượng có tuổi thọ dài hơn chương trình đã tạo ra nó. Dữ liệu liên tục được lưu trên phương tiện lưu trữ thứ cấp, từ đó nó có thể được tải lại khi cần thiết.
Tổng quan về RDBMS
Cơ sở dữ liệu là một tập hợp dữ liệu liên quan có thứ tự.
Hệ quản trị cơ sở dữ liệu (DBMS) là một tập hợp phần mềm hỗ trợ các quá trình xác định, tạo, lưu trữ, thao tác, truy xuất, chia sẻ và xóa dữ liệu trong cơ sở dữ liệu.
Trong hệ quản trị cơ sở dữ liệu quan hệ (RDBMS), dữ liệu được lưu trữ dưới dạng quan hệ hoặc bảng, trong đó mỗi cột hoặc trường đại diện cho một thuộc tính và mỗi hàng hoặc bộ đại diện cho một bản ghi của một cá thể.
Mỗi hàng được xác định duy nhất bởi một tập hợp các thuộc tính tối thiểu đã chọn được gọi là primary key.
A foreign key là một thuộc tính là khóa chính của một bảng có liên quan.
Biểu diễn các lớp dưới dạng bảng trong RDBMS
Để ánh xạ một lớp vào một bảng cơ sở dữ liệu, mỗi thuộc tính được biểu diễn dưới dạng một trường trong bảng. Một (các) thuộc tính hiện có được chỉ định làm khóa chính hoặc một trường ID riêng biệt được thêm làm khóa chính. Lớp có thể được phân vùng theo chiều ngang hoặc chiều dọc theo yêu cầu.
Ví dụ, lớp Circle có thể được chuyển đổi thành bảng như trong hình bên dưới.
Schema for Circle Table: CIRCLE(CID, X_COORD, Y_COORD, RADIUS, COLOR)
Creating a Table Circle using SQL command:
CREATE TABLE CIRCLE (
CID VARCHAR2(4) PRIMARY KEY,
X_COORD INTEGER NOT NULL,
Y_COORD INTEGER NOT NULL,
Z_COORD INTEGER NOT NULL,
COLOR
);
Ánh xạ các liên kết đến các bảng cơ sở dữ liệu
Hiệp hội một-một
Để triển khai liên kết 1: 1, khóa chính của bất kỳ bảng nào được gán làm khóa ngoại của bảng khác. Ví dụ: hãy xem xét sự liên kết giữa Bộ phận và Người quản lý -
Các lệnh SQL để tạo bảng
CREATE TABLE DEPARTMENT (
DEPT_ID INTEGER PRIMARY KEY,
DNAME VARCHAR2(30) NOT NULL,
LOCATION VARCHAR2(20),
EMPID INTEGER REFERENCES MANAGER
);
CREATE TABLE MANAGER (
EMPID INTEGER PRIMARY KEY,
ENAME VARCHAR2(50) NOT NULL,
ADDRESS VARCHAR2(70),
);
Một đến nhiều Hiệp hội
Để thực hiện liên kết 1: N, khóa chính của bảng trong 1 phía của liên kết được gán làm khóa ngoại của bảng ở phía N của liên kết. Ví dụ, hãy xem xét mối liên hệ giữa Bộ phận và Nhân viên -
Các lệnh SQL để tạo bảng
CREATE TABLE DEPARTMENT (
DEPT_ID INTEGER PRIMARY KEY,
DNAME VARCHAR2(30) NOT NULL,
LOCATION VARCHAR2(20),
);
CREATE TABLE EMPLOYEE (
EMPID INTEGER PRIMARY KEY,
ENAME VARCHAR2(50) NOT NULL,
ADDRESS VARCHAR2(70),
D_ID INTEGER REFERENCES DEPARTMENT
);
Nhiều-đến-Nhiều Hiệp hội
Để thực hiện các liên kết M: N, một quan hệ mới được tạo ra đại diện cho liên kết. Ví dụ, hãy xem xét mối quan hệ sau đây giữa Nhân viên và Dự án -
Schema for Works_On Table - WORKS_ON (EMPID, PID, HOURS, START_DATE)
SQL command to create Works_On association - TẠO BẢNG WORKS_ON
(
EMPID INTEGER,
PID INTEGER,
HOURS INTEGER,
START_DATE DATE,
PRIMARY KEY (EMPID, PID),
FOREIGN KEY (EMPID) REFERENCES EMPLOYEE,
FOREIGN KEY (PID) REFERENCES PROJECT
);
Ánh xạ Kế thừa cho Bảng
Để ánh xạ kế thừa, khóa chính của (các) bảng cơ sở được chỉ định làm khóa chính cũng như khóa ngoại trong (các) bảng dẫn xuất.
Example
Một khi mã chương trình được viết, nó phải được kiểm tra để phát hiện và sau đó xử lý tất cả các lỗi trong đó. Một số chương trình được sử dụng cho mục đích thử nghiệm.
Một khía cạnh quan trọng khác là tính phù hợp về mục đích của một chương trình nhằm xác định liệu chương trình có phục vụ mục đích mà nó hướng tới hay không. Sự phù hợp xác định chất lượng phần mềm.
Kiểm tra hệ thống hướng đối tượng
Kiểm thử là một hoạt động liên tục trong quá trình phát triển phần mềm. Trong các hệ thống hướng đối tượng, kiểm thử bao gồm ba cấp độ, đó là kiểm thử đơn vị, kiểm thử hệ thống con và kiểm thử hệ thống.
Kiểm tra đơn vị
Trong kiểm tra đơn vị, các lớp riêng lẻ được kiểm tra. Nó được xem liệu các thuộc tính lớp có được triển khai theo thiết kế hay không và liệu các phương thức và giao diện có không bị lỗi hay không. Kiểm thử đơn vị là trách nhiệm của kỹ sư ứng dụng, người triển khai cấu trúc.
Kiểm tra hệ thống con
Điều này liên quan đến việc thử nghiệm một mô-đun cụ thể hoặc một hệ thống con và là trách nhiệm của người dẫn đầu hệ thống con. Nó liên quan đến việc kiểm tra các liên kết bên trong hệ thống con cũng như sự tương tác của hệ thống con với bên ngoài. Kiểm tra hệ thống con có thể được sử dụng như kiểm tra hồi quy cho mỗi phiên bản mới được phát hành của hệ thống con.
Thử nghiệm hệ thống
Kiểm thử hệ thống liên quan đến việc kiểm tra toàn bộ hệ thống và là trách nhiệm của nhóm đảm bảo chất lượng. Nhóm thường sử dụng các bài kiểm tra hệ thống làm bài kiểm tra hồi quy khi lắp ráp các bản phát hành mới.
Kỹ thuật kiểm tra hướng đối tượng
Kiểm tra hộp xám
Các loại trường hợp kiểm thử khác nhau có thể được thiết kế để kiểm thử các chương trình hướng đối tượng được gọi là trường hợp kiểm thử hộp xám. Một số loại kiểm tra hộp xám quan trọng là:
State model based testing - Điều này bao gồm phạm vi bao phủ trạng thái, phạm vi chuyển đổi trạng thái và phạm vi bao phủ đường chuyển đổi trạng thái.
Use case based testing - Mỗi kịch bản trong mỗi ca sử dụng đều được kiểm thử.
Class diagram based testing - Mỗi lớp, lớp dẫn xuất, các liên kết và tập hợp được kiểm tra.
Sequence diagram based testing - Các phương pháp trong thông báo trong biểu đồ trình tự được kiểm tra.
Kỹ thuật kiểm tra hệ thống con
Hai cách tiếp cận chính của kiểm tra hệ thống con là:
Thread based testing - Tất cả các lớp cần thiết để thực hiện một ca sử dụng duy nhất trong hệ thống con đều được tích hợp và thử nghiệm.
Use based testing- Các giao diện và dịch vụ của các mô-đun ở mỗi cấp độ phân cấp được kiểm tra. Kiểm tra bắt đầu từ các lớp riêng lẻ đến các mô-đun nhỏ bao gồm các lớp, dần dần đến các mô-đun lớn hơn, và cuối cùng là tất cả các hệ thống con chính.
Hạng mục Kiểm tra hệ thống
Alpha testing - Điều này được thực hiện bởi nhóm kiểm thử trong tổ chức phát triển phần mềm.
Beta testing - Việc này được thực hiện bởi một số nhóm khách hàng hợp tác được chọn.
Acceptance testing - Việc này được khách hàng tiến hành trước khi nhận hàng.
Đảm bảo chất lượng phần mềm
Chất lượng phần mềm
Schulmeyer và McManus đã định nghĩa chất lượng phần mềm là “sự phù hợp để sử dụng toàn bộ sản phẩm phần mềm”. Một phần mềm chất lượng tốt thực hiện chính xác những gì nó được cho là phải làm và được giải thích về sự thỏa mãn các yêu cầu đặc tả do người dùng đặt ra.
Đảm bảo chất lượng
Đảm bảo chất lượng phần mềm là một phương pháp luận xác định mức độ phù hợp để sử dụng một sản phẩm phần mềm. Các hoạt động được bao gồm để xác định chất lượng phần mềm là:
- Auditing
- Phát triển các tiêu chuẩn và hướng dẫn
- Sản xuất báo cáo
- Xem xét hệ thống chất lượng
Yếu tố chất lượng
Correctness - Tính đúng đắn xác định liệu các yêu cầu phần mềm có được đáp ứng một cách thích hợp hay không.
Usability - Khả năng sử dụng xác định liệu phần mềm có thể được sử dụng bởi các nhóm người dùng khác nhau (người mới bắt đầu, không chuyên về kỹ thuật và chuyên gia) hay không.
Portability - Tính di động xác định liệu phần mềm có thể hoạt động trên các nền tảng khác nhau với các thiết bị phần cứng khác nhau hay không.
Maintainability - Khả năng bảo trì xác định mức độ dễ dàng mà các lỗi có thể được sửa chữa và các mô-đun có thể được cập nhật.
Reusability - Khả năng tái sử dụng xác định liệu các mô-đun và lớp có thể được sử dụng lại để phát triển các sản phẩm phần mềm khác hay không.
Các chỉ số hướng đối tượng
Số liệu có thể được phân loại rộng rãi thành ba loại: số liệu dự án, số liệu sản phẩm và số liệu quy trình.
Chỉ số dự án
Project Metrics cho phép người quản lý dự án phần mềm đánh giá trạng thái và hiệu suất của một dự án đang thực hiện. Các số liệu sau thích hợp cho các dự án phần mềm hướng đối tượng:
- Số lượng kịch bản kịch bản
- Số lớp chính
- Số lớp hỗ trợ
- Số lượng hệ thống con
Chỉ số sản phẩm
Số liệu sản phẩm đo lường các đặc tính của sản phẩm phần mềm đã được phát triển. Các chỉ số sản phẩm phù hợp với hệ thống hướng đối tượng là:
Methods per Class- Nó quyết định độ phức tạp của một lớp. Nếu tất cả các phương thức của một lớp được giả định là phức tạp như nhau, thì một lớp có nhiều phương thức sẽ phức tạp hơn và do đó dễ bị lỗi hơn.
Inheritance Structure- Hệ thống có một số mạng kế thừa nhỏ có cấu trúc tốt hơn hệ thống có một mạng kế thừa lớn. Theo quy tắc ngón tay cái, cây thừa kế không được có nhiều hơn 7 (± 2) số cấp và cây phải cân bằng.
Coupling and Cohesion - Các mô-đun có khớp nối thấp và tính liên kết cao được coi là thiết kế tốt hơn, vì chúng cho phép khả năng tái sử dụng và khả năng bảo trì cao hơn.
Response for a Class - Nó đo lường hiệu quả của các phương thức được gọi bởi các thể hiện của lớp.
Số liệu quy trình
Số liệu quy trình giúp đo lường hiệu suất của một quy trình. Chúng được thu thập trên tất cả các dự án trong thời gian dài. Chúng được sử dụng làm chỉ báo cho các cải tiến quy trình phần mềm dài hạn. Một số chỉ số quy trình là -
- Số lượng KLOC (Kilo dòng mã)
- Hiệu quả loại bỏ khiếm khuyết
- Số lỗi trung bình được phát hiện trong quá trình thử nghiệm
- Số lượng khuyết tật tiềm ẩn trên mỗi KLOC