Art. 04 – Vol. 22 – Nr. 1 – 2012

PRINCIPII DE DEZVOLTARE A INSTRUMENTELOR DE PROIECTARE A BAZELOR DE DATE

 

Vitalie COTELEA
vitalie.cotelea@gmail.com
Academia de Studii Economice din Moldova, Chişinău

Rezumat: În acest articol se tratează probleme legate de principiile de organizare a produselor program elaborate pentru automatizarea procesului de proiectare a bazelor de date. Sunt expuse tendinţele utilizate azi în dezvoltarea sistemelor informatice cu scopul de a separa componenta logică de cea grafică în crearea interfeţelor. Se caracterizează beneficiile paradigmei funcţionale de programare şi aspectele ce ţin de principiile de elaborare a codurilor-sursă în F#, precum şi se argumentează aplicarea paradigmei logice de programare pentru anumite tipuri de probleme ce apar în procesul proiectării bazelor de date. Se propune o soluţie de elaborare a sistemelor de automatizare a procesului de proiectare a bazelor de date. Soluţia se bazează pe integrarea mai multor paradigme de programare, pe conceptul MVC de dezvoltare a aplicaţiilor şi tehnologia WPF utilizată pentru elaborarea interfeţelor cu un design destul de atractiv.

Cuvinte cheie: proiectare baze de date, paradigme de programare, arhitectura MVC, tehnologia WPF.

Introducere

Instrumentele de proiectare a bazelor de date elaborate până acum s-au concentrat, în principal, asupra normalizării. Lipsesc, în totalitate, sistemele care ar face o analiză a bazelor de date deja proiectate. Acest lucru împiedică dezvoltarea sistemelor informatice existente, şi adaptarea acestora la cerinţele noi ale zilei de azi. În afară de aceasta, instrumentele au o destinaţie mai mult didactică, pentru instruire. Algoritmii utilizaţi în acestea sunt cei clasici (de complexitate înaltă), care sunt aplicabili doar asupra unor exemple de laborator şi nu pot servi pentru proiectarea bazelor de date reale.

Tendinţele, care sunt, la moment, în dezvoltarea sistemelor informatice, demonstrează separarea foarte evidentă a componentei logice şi a componentei grafice, precum şi a componentei de realizare a algoritmilor de componenta logică. Acestea pot fi dezvoltate separat, de echipe separate, în limbaje diferite. Limbajele utilizate, din motive de integrare, erau din aceeaşi paradigmă, de regulă, cea procedurală. Astăzi, când sistemele elaborate sunt complexe şi utilizatorul trebuie să fie îndepărtat de la procese, el trebuie să cunoască doar ce doreşte de la sistem, se schimbă şi principiile de elaborare ale acestora [5]. Acum, de când Microsoft oferă pe platforma .NET un limbaj funcţional, F#, platformă de care sunt legate şi Sistemele de Gestiune a Bazelor de Date SQL Server [2] produse de această companie, integrarea diferitelor paradigme de programare a devenit realizabilă.

Trebuie menţionat că există tendinţa de apelare la diverse limbaje pe o singură platformă şi a altor companii producătoare de SGBD-uri. După cum se ştie, firma Sun Microsystems, care a creat şi susţinea limbajul Java, a fost cumpărată de Oracle în 2009 [3], deci, în acest moment, Oracle este compania care dictează, într-un fel, viitorul limbajului (nu abuziv, deoarece limbajul este specificat prin JSR-uri, de exemplu, pe [11], într-un mod liber şi colaborativ, şi are o licenţă deschisă pentru cei care îl utilizează).

O paradigmă de programare permite specificarea unui model de rezolvare a unei probleme. Un model este o reprezentare simplificată sau o abstractizare a unui sistem.

Uneori, limbajul de programare în care va fi implementată soluţia, oferă aceleaşi construcţii şi mecanisme ca şi paradigma. În acest caz, implementarea, verificarea soluţiei se fac mult mai simplu. Se poate considera atunci că o paradigmă de programare este o clasă de limbaje.

De multe ori, un limbaj de programare poate aparţine mai multor paradigme. Astfel, C++ include caracteristici ale paradigmelor imperativă şi procedurală, ca predecesorul C, dar şi ale celei de orientare pe obiecte.

Paradigma logică [8] oferă posibilitatea scrierii programelor pentru probleme greu formalizabile, ce ţin de apelarea la elemente inteligente de realizare. Paradigma funcţională [4] oferă un limbaj din perspectiva definirii mediului, şi formularea întrebărilor către sistem va genera

Vizualizează articolul complet

răspunsuri în baza definiţiilor, adică sistemul însuşi decide cum să dea răspuns la întrebare. Această paradigmă este adecvată în expunerea părţii logice a sistemului (business logic) care, deseori, are o forma strictă. Paradigma procedurală, care presupune scrierea cum sistemul trebuie să proceseze, se aplică cu succes în stratul de integrare şi prezentare către utilizator, datorită gradului de dezvoltare a instrumentelor cu elemente vizuale (drag and drop), limbaje cu suport extins şi mult mai simple în învăţare.

Concluzii

Cu toate că mai este mult până la automatizarea completă a procesului de proiectare a bazei de date, rezultatele de până acum s-a soldat cu succese în ce priveşte reducerea semnificativă a eforturilor umane în proiectarea unor baze de date viabile şi au punctat calea spre automatizarea ulterioară. Procesul de elaborare a acestui instrument a redus la algoritmi multe din acele activităţi folosite şi considerate „artă a proiectării bazei de date”.

Există mai multe modalităţi în care instrumentele de proiectare ar putea fi dezvoltate în continuare. În primul rând, în special, se cere crearea unor interfeţe bazate pe web, care ar face instrumentele mai uşor utilizabile şi mai larg accesibile. Aceasta ar permite, în plus, îmbunătăţirea semnificativă la capacitatea de asigurare a disponibilităţii de vizualizare a explicaţiilor, care ar putea fi citite în ferestre pop-up şi ar asista proiectantul la toate etapele procesului de proiectare.

În al doilea rând, pentru a facilita interacţiunea cu proiectantul, instrumentele trebuie să ofere interfeţe semantice bogate şi uşor gestionabile. Instrumentul se cere proiectat ca un sistem expert în sensul că ar oferi o bază de cunoştinţe evolutive; ar accepta specificaţii incomplete; ar justifică şi explica rezultatele oferite; ar permite revenirea la orice etapă de proiectare, în scopul de a schimba specificaţiile sau pentru a cere explicaţii.

Desigur, toate aceste obiective sunt departe de a fi de ajuns pentru a pune la punct un sistem automatizat de proiectare. Cu toate acestea, arhitectura propusă permite atingerea acestor scopuri.

Bibliografie

  1. Ambler, S.W.: The Object Primer 3-rd Edition: Agile Modeling Driven Development with UML2. Cambridge University Press, 2004, 545 p.
  2. Cotelea, Vitalie; Cotelea Marian: Microsoft SQL Server 2008: Lucrări practice. Baze de date. Editura ASEM, Chişinău, 2009, 205 p.
  3. Cotelea, Vitalie; Cotelea Marian: Oracle 11g: SQL, PL/SQL. Editura ASEM, Chişinău, 2011, 396 p.
  4. Cotelea, Vitalie, Pripa Stela: F# – limbaj funcţional în .NET. Tutorial, Editura ASEM, Chişinău, 2009, 200 p.
  5. Cotelea, Vitalie; Pripa Stela: Integrarea paradigmelor de programare funcţională şi procedurală în elaborarea unui sistem de analiză şi proiectare a bazelor de date. Lucrările Conf. ştiinţifice internaţionale “Competitivitatea şi inovarea în economia cunoaşterii”, 24-25 sept. 2010, Vol. I, Editura ASEM, Chişinău, 2010, pp. 306-310.
  6. Cotelea, Vitalie: Fragmentarea verticală a bazei de date, utilizând algoritmii genetici. În: Drept, economie şi informatică, Nr.1(11), 2007, Chşinău, pp. 88-90.
  7. Cotelea, Vitalie: Lists manipulation in turbo Prolog. În: Computer Science Journal of Moldova, Chişinău, Vol. 3, Nr. 1, 1995, pp. 10-23.
  8. Cotelea, Vitalie: Programarea în logică. Editura Nestor, Chişinău, 2000, 394 p.
  9. Cotelea, Vitalie: Reţele neuronale artificiale cu arhitectură evolutivă. În: Analele Academiei de Studii Economice din Moldova, Editura A.S.E.M., 2001, Chişinău, pp. 491-497.
  10. Cotelea, Vitalie: Tehnici exhaustive de rezolvare a problemelor de satisfacere a constrângerilor. În: Drept, economie şi informatică, Nr. 4, 2000, Chişinău-Galaţi, pp. 149-164.
  11. Java Community Process. http://www.jcp.org/en/home/index (vizitat 24.09.2011).
  12. Syme, Don; Petricek Tomas; Lomov Dmitry: The F# Asynchronous Programming Model. Proc. 13th int. conf. on Principles and Applications of Declarative Languages, ACM SIGPLAN, Springer-Verlag Berlin, Heidelberg, 2011, pp. 175-189.

Creative Commons License
This work is licensed under a Creative Commons Attribution 4.0 International License.