Antimodel

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită pe 29 mai 2022; verificarea necesită 1 editare .

Un anti-pattern este o  abordare comună pentru rezolvarea unei clase de probleme comune care este ineficientă, riscantă sau neproductivă [1] . Spre deosebire de un model de design , luarea în considerare a unui antipattern include atât o soluție incorectă a unei probleme cu semnele și consecințele acesteia, cât și o cale de ieșire din situație [2] .

Termenul provine de la informatică , din cartea Gang of Four „ Design Patterns ”, care a prezentat exemple de bune practici de programare. Autorii au numit aceste bune practici „patterns” iar opusul lor sunt „anti-patterns”. O parte a bunei practici de programare este evitarea antipattern-urilor. Înainte de apariția termenului, toate problemele erau numite capcane ( capcane ) . Astfel, antipatternele sunt cele mai comune capcane, dar nu toate capcanele vor fi antipattern.

Antimodelurile sunt conceptual similare cu tiparele prin faptul că documentează soluții repetitive la probleme comune. Sunt cunoscute ca anti-pattern deoarece folosirea (sau abuzul) lor are consecințe negative [3] .

Istorie

Odată cu dezvoltarea industriei IT, amploarea proiectelor software și costul resurselor pentru acestea au crescut rapid, ceea ce a dat naștere unui număr mare de probleme cu care se confruntau programatorii. Cele mai multe dintre aceste probleme au fost tipice și au apărut în aproape fiecare proiect major. La începutul anilor 90, cataloagele de modele de design , "modele" ( ing.  modele de design ) - modalități elegante și dovedite de a rezolva problemele tipice, au câștigat o popularitate considerabilă. Modelele sunt încă puternice și extrem de populare astăzi, cu toate acestea, mulți dezvoltatori care folosesc modele populare în situații pentru care nu au fost destinate au creat mai multe probleme decât au rezolvat. În plus, inginerii IT, ca și lucrătorii din orice alt domeniu de activitate, pot identifica greșelile tipice făcute din cauza bazei de cunoștințe insuficiente sau a lipsei de experiență, a grabei și a presiunii din cauza termenelor limită ale proiectelor, a constrângerilor financiare și altele.

Pentru prima dată, termenul „anti-pattern” în sensul unei descrieri generalizate a unei soluții tipice nereușite a fost folosit în 1996 de Michael Akroyd la Object World West Conference, dedicată aspectelor programării orientate pe obiecte . [4] În prezentarea sa Anti-Patterns: Preventing Object Misuse, Aykroyd a atras atenția asupra constructelor de programare dăunătoare, dar comune, în special asupra celor care contravin principiilor OOP. În plus, pentru fiecare astfel de design, el a oferit un înlocuitor eficient.

Termenul în sensul de „idee proastă” a apărut înainte de Aykroyd, dar nu a fost publicat și nu a fost deosebit de popular. Și totuși nu merită să-i atribui autoritatea unei singure persoane. Potrivit lui William Brown, autorul cărții Antipatterns: Refactoring Applications, Architectures, and Projects, un antipattern este o etapă în evoluția conceptului de model de design, o extensie a modelului lor.

Clasificare

William Brown distinge anti-modele din trei puncte de vedere: dezvoltator , arhitect și manager :

Neil și Laplante dau un al patrulea tip [5] [6] :

În plus, au fost descrise anti-modele pentru tehnologiile informaționale individuale, cum ar fi [6] :

Antipatterns de dezvoltare

Probleme tehnice și soluții cu care se confruntă programatorii [6] :

Anti-modele în programarea orientată pe obiecte

Antipatterns la scrierea codului

Anti-tipare metodologice

Anti-modele de management al configurației

Diverse

Anti-modele arhitecturale

Probleme tipice asociate cu structura sistemului [6] :

Anti-modele organizaționale

Probleme cu care se confruntă managerii (sau grupurile de manageri) [6] :

Neil și LaPlante oferă următoarele antimodeluri [5] :

Antipatterns de mediu

Probleme cauzate de structura dominantă a organizației și modelul social, care sunt rezultatul politicii publice în organizație [15] [6] [5] [16] :

Vezi și

Note

  1. Budgen, D. Software design. - Addison-Wesley, 2003. - ISBN 0-201-72219-4 .
  2. Brown, 1998 , capitolul 2.
  3. Smith CU, 2000 .
  4. http://c2.com/cgi/wiki?AntiPattern . Cunningham & Cunningham Inc. . Consultat la 15 februarie 2006. Arhivat din original pe 3 aprilie 2005.
  5. 1 2 3 Neill, Laplante, 2005 .
  6. 1 2 3 4 5 6 Settas, 2011 .
  7. Miroslav Kis. Antimodele de securitate a informațiilor în ingineria cerințelor software. În Proceedings of the 9th Conference on Pattern Language of Programs (Plop), 2002.
  8. John Long. Antimodele de reutilizare software. În ACM SIGSOFT Software Engineering Notes, volumul 26, pagina 4, iulie 2001.
  9. Paula Kotze, Karen Renaud și Judy van Biljona. Nu faceți asta - capcane în utilizarea anti-modelelor în predarea principiilor interacțiunii om-calculator. Computers and Education, 50(3):979-1008, aprilie 2008
  10. J. Krai și M. Zemlicka. Cele mai importante antimodeluri orientate spre servicii. În lucrările Conferinței Internaționale privind Progresele Ingineriei Software (ICSEA), 2007.
  11. P. A. Laplante, R. R. Hoffman și G. Klein. Antipatterns în crearea sistemelor inteligente. IEEE Intelligent Systems, 22:91-95, 2007.
  12. ↑ 1 2 Rajiv Ramnath, Cheyney Loffing. Începeți programarea iOS pentru manechini . — John Wiley & Sons, 2014-04-14. - S. 105. - 470 p. — ISBN 9781118799277 . Arhivat pe 23 iulie 2016 la Wayback Machine
  13. ↑ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 William J. Brown. AntiPatterns: software de refactorizare, arhitecturi și proiecte în criză . — Wiley, 03-04-1998. — 156 p. — ISBN 0-471-19713-0. Arhivat pe 22 decembrie 2015 la Wayback Machine
  14. Gary McLean Hall. Cod adaptiv prin C#: codare agilă cu modele de design și principii SOLIDE. - Microsoft Press, 2014. - S. 267-268. — ISBN 978-0735683204 .
  15. Original: forțe socio-politice
  16. Phillip Laplante The Burning Bag of Dung—and Other Environmental Antipatterns Arhivat 19 septembrie 2015 la Wayback Machine ACM Queue 30 noiembrie 2004 Volumul 2, numărul 7

Literatură

Link -uri