Home » Analiză şi proiectare, Featured

Clasificarea şabloanelor de proiectare

20 May 2009 No Comment

Ce 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.

GoF patterns

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.

Leave your response!

Add your comment below, or trackback from your own site. You can also subscribe to these comments via RSS.

Be nice. Keep it clean. Stay on topic. No spam.

You can use these tags:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">

This is a Gravatar-enabled weblog. To get your own globally-recognized-avatar, please register at Gravatar.