Sıfırdan bir uygulama oluştururken, nesne yönelimli (OO) model veya varlık-ilişki (ER) modeliyle başlamalıyım?
Sıfırdan bir uygulama oluştururken, nesne yönelimli (OO) model veya varlık-ilişki (ER) modeliyle başlamalıyım?
Yanıtlar:
Mimari kararları olabildiğince geciktirme ilkesine uymaya çalışabilirsiniz. Gelecekte sorun alanınız hakkında şu anda olduğundan daha fazla bilgi sahibi olacağınız düşüncesi devam ediyor - bu nedenle bugün verdiğiniz kararlar şüphelidir.
Bunu eşleştirmek için bir başka iyi ilke, önce gereksinimlerinizin en riskli kısımlarını denemeye çalışmak olabilir - düşünce, kolay parçaları yaparsanız, riskli parçaların sizi farklı bir yöne hareket ettirdiğini bulmaktır. kolay parçaları yeniden yapmak. Burada riskli, onları nasıl yapmanız gerektiğinden emin olmadığınız şeyler anlamına gelir.
Bu ikisi göz önüne alındığında ve çoğu zaman bir OO perspektifinden yaklaşmaya çalıştığım göz önüne alındığında, önce uygulamanızın en riskli kısımlarının bir OO modeliyle başlamayı deneyebilir ve en iyi şekilde çalışabilecek en az miktarda kodu uygulayabilirsiniz. riskli gereksinimler. Ardından, ihtiyacınız olacak işlevselliği eklemek için OO modelinizi gerektiği gibi genişletmeye başlayın. Tüm bu süre boyunca, SQL veya NoSQL veya flatfiles veya bulut depolama veya herhangi bir şey kullanma konusundaki kararınızı tamamen geciktirebilirsiniz ... ve sonunda ilişkisel olmak istemediğinizi (ER modeline olan ihtiyacı ortadan kaldırarak) bulabilirsiniz.
ER modeli, uygulama verilerinin nasıl kalıcı olacağını belirler ve OO modeli, aynı verilerin bellekte veya uygulama çalışırken nasıl saklanacağına karar verir. Bu nedenle, Veritabanı şeması tasarımı (ER modeli) ve sınıf yapısı tasarımı (OO modeli) ilgili tasarım konularıdır ve genellikle aynı anda düşünülebilir. Aslında, bir Nesne ilişkisel eşleme (ORM) aracı kullanıyorsanız, ER modeliniz ve OO modeliniz bir ve aynı olabilir. Başka bir deyişle, sınıflarınız (OO modeli) kendileri ER modelini belirleyecek şekilde açıklanabilir.
Yine de tasarlamadan önce, yazılımın gerçek gereksinimleri, ne için kullanılacağı, nasıl kullanılacağı ve kimlerin kullanılacağı hakkında çok iyi bir fikriniz olduğundan emin olun. Birçok geliştirici, ürün tarafından ele alınması gereken ihtiyaçları tam olarak anlamadan önce tasarım kararlarını düşünmeye başlar ve uygulamanın gerçek amacına uygun olmayan bir tasarımla sonuçlanır.