marți, 22 aprilie 2008

Universal Database Access Library

UDAL = Universal Database Access Library
Acesta este numele unei idei personale, poate deja implementata de multa vreme de cineva (de care sincer eu nu stiu), dar care cred ca imbina destul de multe tehnici de gandire, proiectare si dezvoltare.

Gandire : MDA = Model Driven Architecture


De ce MDA ?

Este unul dintre cele mai avansate tehnologii de software design (initiat si conceput de OMG = Object Management Group - http://www.omg.org).
Conceptia unui sistem MDA are la baza un model independent de platforma de dezvoltare (denumit PIM = platform independent model), modele specifice platformelor (PSM = platform specific model) si interfete care sa ghideze dezvoltarea modelului de baza pentru diverse platforme.

Spun ca aplicatia mea (UDAL), care se gaseste in momentul de fata in stadiul de librarie .NET (C#), a plecat de la ideea realizarii unui model de baza unic pentru accessul la bazele de date care sa ascunda implementarile specifice diverselor sisteme de baze de date si care sa nu dea batai de cap programatorului in ceea ce priveste sintaxele SQL-uri specifice RDBMS-urilor. Nu neg fatpul ca, legat de aceasta aplicatie, este si ideea de a dezvolta un pseudo SQL (denumit USQL - unique structure query language), complet open, care sa permita fiecaruia dezvoltarea propriului USQL.

O sa spuneti : bine, cu PIM-ul ne-am cam lamurit, dar care sunt PSMs-urile ...
In ideea mea, PSMs-urile sunt modelele specifice fiecarui sistem RDBMS (Oracle, MySql, Ms Access, Sql Server , etc...). Sa spunem ca timpul investit in PIM se va vedea in oarecare masura in PSM-uri si in interfetele specifice platformelor, dar si mai mult la utilizarea acestora in aplicatiile efective. Cum spune un bun prieten pe blogul sau (Andy Neagu) : ROI-ul va fi unul semnificativ.

Proiectare : Pattern Design


Proiectarea UML a PIM-ului nu are nici o treaba cu limbajul de programare si pentru partea de proiectare tebuie sa ai in "RAM-ul propriu" si ceva de Pattern Design, de gandire abstracta.

In cadrul PIM-ului nu am folosit ca si pattern design singletonul, considerand-ul mai mult un pattern de utilizat in aplicatiile finale. Am utilizat insa - factory, builder, abstract (din zona creational), composite, adapter (din zona strutural) si interpreter (din zona behavioral) in ceea ce priveste PIM-ul si multa gandire abstracta, PIM-ul stabil fiind implementat cam in proportide 85% la nivel de concept abstract.

Dezvoltare : la alegere


Eu am ales pentru dezvoltarea PIM-ului, a PSM-urilor si a unei aplicatii de test C#-ul. Dupa umila mea parere, este interesant ce au reusit cei de la Microsoft sa realizeze, dar totusi anumite limitari in dezvoltare (mai ales in inherity) pot fi destul de deranjante, mai ales pentru cine are ceva experienta pe C++.

Voi incerca in viitorul apropiat sa pun la punct documentatia , cel putin a PIM-ului, si sa o public pe acest blog.

Iata o schema redusa a PIM-ului (detaliata din dorinta de a fi cat mai bine inteles).


Toate cele bune si sa auzim "numai de la foarte bine in sus".