Budując aplikację od podstaw, czy powinienem zacząć od modelu obiektowego (OO), czy modelu relacji z bytem (ER)?
źródło
Budując aplikację od podstaw, czy powinienem zacząć od modelu obiektowego (OO), czy modelu relacji z bytem (ER)?
Możesz spróbować przestrzegać zasady opóźniania decyzji architektonicznych tak długo, jak to możliwe. Uważa się, że w przyszłości dowiesz się więcej na temat swojej problematycznej domeny niż teraz - więc wszelkie podejmowane dziś decyzje są podejrzane.
Inną dobrą zasadą w połączeniu z tym może być próba wypróbowania najbardziej ryzykownych części twoich wymagań - myśl jest taka, że jeśli wykonasz łatwe części, a następnie okaże się, że ryzykowne części skierują cię w innym kierunku, nie masz ponownie wykonać łatwe części. Ryzykowne, co oznacza, że nie masz pewności, jak to zrobić.
Biorąc pod uwagę te dwa elementy i biorąc pod uwagę fakt, że często próbuję podchodzić do rzeczy z perspektywy OO, możesz spróbować zacząć od modelu OO najbardziej ryzykownych części aplikacji i zaimplementować możliwie najmniejszą ilość kodu, który może działać, który spełnia wymagania ryzykowne wymagania. Następnie zacznij rozszerzać swój model OO zgodnie z potrzebami, aby dodać funkcjonalność, której będziesz potrzebować. Przez cały czas możesz całkowicie opóźnić decyzję, czy użyć SQL, NoSQL, płaskich plików, pamięci w chmurze lub cokolwiek ... i może się okazać, że w ogóle nie będziesz chciał mieć relacji (eliminując potrzebę modelu ER).
Model ER określa sposób przechowywania danych aplikacji, a model OO decyduje, w jaki sposób te same dane będą przechowywane w pamięci lub podczas działania aplikacji. Tak więc projektowanie schematu bazy danych (model ER) i projektowanie struktury klasy (model OO) są powiązanymi względami projektowymi i zwykle można o nich myśleć jednocześnie. W rzeczywistości, jeśli używasz narzędzia mapowania obiektowo-relacyjnego (ORM) , Twój model ER i model OO mogą być jednym i tym samym. Innymi słowy, twoje klasy (model OO) mogą być opatrzone adnotacjami w taki sposób, że same określają model ER.
Jednak przed zaprojektowaniem upewnij się, że masz bardzo dobre pojęcie o rzeczywistych wymaganiach oprogramowania, do czego będzie ono używane, w jaki sposób będzie używane i kto będzie z niego korzystać. Wielu programistów zaczyna zastanawiać się nad decyzjami projektowymi, zanim w pełni zrozumie potrzeby, którymi musi zająć się produkt, i skończy się na projekcie, który jest nieodpowiedni do prawdziwego celu aplikacji.