Clasificarea şabloanelor de proiectare
May 15th, 2013 | By Dumitru | Category: Proiectare și programareCe face ca şabloanele să fie atât de diferite? Care este relaţia dintre ele? Ce factori caracterizează fiecare şablon? Căutarea răspunsurilor ne va duce într-un mod sau altul la necesitatea clasificării şabloanelor.
În primul rînd, clasificarea ne va oferi o înţelegere mai bună a entităţilor analizate. În cel de-al doilea rînd ne va permite o organizare mai bună, care implicit facilitează înţelegera lor. Savantul rus Voevodin V. V. în cartea sa Параллельные вычисления (Calcul paralel: BHV-Peterburg, 2004) menţiona importanţa clasificării invocând o analogie cu legea periodicităţii apărută în 1869, care a permis ordonarea elementelor chimice şi a indicat spre existenţa unor „pete albe”.
Astfel, poate mai mult intuitiv, dar putem susţine că o „clasificare” reuşită ne va oferi o caracterizare suficientă a unui şablon, doar după apartenenţa la o grupă sau alta, mai mult decât atât, ne poate indica (prin „petele albe”) spre anumite şabloane ce pot fi obţinute nu numai experimental, ci şi teoretic. Aparent este ceva utopic, dar legea periodicităţii în 1869 părea la fel.

Sursa: Design Patterns, http://www.vincehuston.org/dp
Nu-mi propun o analiză exhaustivă a clasificărilor existente, dar voi menţiona pe cele care mi-au atras atenţia prin simplitatea şi originalitatea lor în cadrul cercetării de doctorat. Trebuie să menţionez că unele clasificări nu sunt explicit prezentate de autori, dar odată fiind reformulate cred că merită să fie incluse în lista clasificărilor ce vor fi prezentate rînd pe rînd pe acest site.
Desigur criteriile de clasificare diferă de la caz la caz, şi totuşi subiectivismul primează, deoarece domeniul şabloanelor de proiectare este încă unul puţin formalizat. Diversele interpretări ale cercetătorilor şi modul de aplicare deseori ale aceluiaşi criteriu şi determină apariţia multor clasificări. Multitudinea celor din urmă nicidecum nu complică analiza şabloanelor, ba dimpotrivă, ele ne permit să analizăm şabloanele din diverse perspective:
Clasificări bazate pe scop/intenţie
- Clasificarea GoF de Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides (Design Patterns: Elements of Reusable Object-Oriented Software, 1995)
- Concretizarea clasificării GoF de Alan Shalloway şi James R. Trott (Design Patterns Explained, 2000)
- Clasificarea şabloanelor GoF de Steven Metsker (Design patterns. Java WorkBook, 2002)
- Clasificarea şabloanelor GoF de Nija Shi şi Ronald A. Olsson (Reverse Engineering of Design Patterns from Java Source Code, Proceedings of the 21st IEEE/ACM International Conference on Automated Software Engineering, 2006)
Clasificări bazate pe analiza structurii claselor
- Clasificarea şabloanelor GoF de Wolfgang Pree utilizind meta-şabloanele (Meta Patterns – A Means for Capturing the Essentials of Reusable Object-Oriented Design, 1994), aplicarea meta-şabloanelor pe şabloane GoF în The UML Profile for Framework Architectures (Marcus Fontoura, Wolfgang Pree, Bernhard Rumpe – 2001)
- Clasificarea şabloanelor GoF după similitudini structurale de Vince Huston (Design patterns, http://www.vincehuston.org/dp, 2006)
Clasificări bazate pe relaţii între şabloane
- Clasificarea şabloanelor GoF de Walter Zimmer bazată de relaţii primare între şabloane (Relationships Between Design Patterns, Pattern Languages of Program Design, 1995)
Astăzi există şi încercări multiple, mai mult sau mai puţin reuşite, de formalizare a şabloanelor de proiectare, care ne permit descrirea exactă şi “matematică” a şablonului. Astfel încurînd ne putem aştepta la apariţia unor instrumente automatizate de design şi refactoring a sistemelor obiect-orientate, care vor cere implicarea minimă a proiectanţilor.