Khi xây dựng một ứng dụng từ đầu, tôi nên bắt đầu với mô hình hướng đối tượng (OO) hay mô hình mối quan hệ thực thể (ER)?
Khi xây dựng một ứng dụng từ đầu, tôi nên bắt đầu với mô hình hướng đối tượng (OO) hay mô hình mối quan hệ thực thể (ER)?
Câu trả lời:
Bạn có thể muốn cố gắng tuân thủ nguyên tắc trì hoãn các quyết định kiến trúc càng lâu càng tốt. Ý nghĩ là, bạn sẽ biết nhiều hơn trong tương lai về miền vấn đề của bạn hơn là bạn làm ngay bây giờ - vì vậy, bất kỳ quyết định nào bạn đưa ra hôm nay đều bị nghi ngờ.
Một nguyên tắc tốt khác để kết hợp điều này có thể là cố gắng thử các phần rủi ro nhất trong các yêu cầu của bạn trước tiên - ý nghĩ là nếu bạn thực hiện các phần dễ dàng, sau đó thấy rằng các phần rủi ro sẽ chuyển bạn sang một hướng khác, bạn không có để làm lại các phần dễ dàng. Rủi ro ở đây có nghĩa là những điều bạn không chắc chắn về cách bạn nên làm chúng.
Với hai điều này và được cho là tôi thường cố gắng tiếp cận mọi thứ từ góc độ OO, trước tiên bạn có thể thử bắt đầu với mô hình OO của các phần rủi ro nhất trong ứng dụng của bạn và triển khai số lượng mã ít nhất có thể hoạt động thỏa mãn yêu cầu rủi ro. Sau đó, bắt đầu mở rộng mô hình OO của bạn khi cần để thêm chức năng bạn sẽ cần. Trong mọi lúc, bạn hoàn toàn có thể trì hoãn quyết định của mình về việc có nên sử dụng SQL hoặc NoQuery hay tệp phẳng hoặc lưu trữ đám mây hay bất cứ điều gì ... và cuối cùng bạn có thể thấy bạn không muốn quan hệ gì cả (không cần mô hình ER).
Mô hình ER chỉ ra cách duy trì dữ liệu của ứng dụng và mô hình OO quyết định cách thức dữ liệu đó sẽ được lưu trữ trong bộ nhớ hoặc trong khi ứng dụng đang chạy. Vì vậy, thiết kế lược đồ cơ sở dữ liệu (mô hình ER) và thiết kế cấu trúc lớp (mô hình OO) là những cân nhắc thiết kế liên quan và thường có thể được nghĩ đến đồng thời. Trong thực tế, nếu bạn đang sử dụng công cụ ánh xạ quan hệ đối tượng (ORM) , mô hình ER và mô hình OO của bạn có thể là một và giống nhau. Nói cách khác, các lớp của bạn (mô hình OO) có thể được chú thích theo cách mà chính chúng, chỉ định mô hình ER.
Tuy nhiên, trước khi thiết kế, hãy chắc chắn rằng bạn có một ý tưởng rất tốt về các yêu cầu thực tế của phần mềm, nó sẽ được sử dụng cho mục đích gì, nó sẽ được sử dụng như thế nào và ai sẽ sử dụng nó. Nhiều nhà phát triển bắt đầu suy nghĩ về các quyết định thiết kế trước khi họ hiểu đầy đủ các nhu cầu cần giải quyết của sản phẩm và kết thúc với một thiết kế không phù hợp với mục đích thực sự của ứng dụng.