Angrenaj (programare)

Engagement [1] , coupling , connectivity , conjugation [2] ( English  coupling ) - metoda și gradul de interdependență dintre modulele software [3] ; puterea interconexiunilor dintre module [4] ; o măsură a cât de interdependente sunt diferitele rutine sau module [3] .

Cuplarea puternică este considerată un dezavantaj serios, deoarece face dificilă înțelegerea logicii modulelor, modificarea acestora, testarea lor independentă și, de asemenea, reutilizarea separată. Coeziunea slabă, pe de altă parte, este un semn al unui sistem bine structurat și bine proiectat și, atunci când este combinată cu o coeziune puternică , corespunde indicatorilor generali de lizibilitate și mentenabilitate bune.

Metricurile de conexiune și conectivitate au fost inventate de Larry Constantine , dezvoltatorul original al designului structural [5] , care a fost, de asemenea, un susținător timpuriu al unor astfel de concepte (vezi și SSADM ).

Legătura slabă este unul dintre modelele GRASP ale lui Craig Larman [6] .

Tipuri de angrenaje

Tipurile de implicare, conform ISO/IEC/IEEE 24765, includ: [3]

Metode de reducere a angrenajului

Există diferite metode de decuplare .  De obicei, acestea sunt descrise sub formă de modele de design . O tehnică cheie este inversarea controlului și, în special, injectarea dependenței .

Utilizarea unei arhitecturi de aplicații stratificate, cum ar fi Model-View-Controller , Model-View-Presenter , Model-View-ViewModel etc., ajută, de asemenea, la reducerea aglomerației .

Vezi și

Note

  1. Kravchenko A. K., Afanasyeva I. V. Influența schimbărilor în angrenaj și conectivitate asupra complexității codului și a vitezei sale în dezvoltarea de software // Radioelectronics and Informatics, 2016, nr. 3, p. 9-12.
  2. McConnell, 2010 .
  3. 1 2 3 ISO/IEC/IEEE 24765-2017 Ingineria sistemelor și software - Vocabular . Preluat la 1 noiembrie 2021. Arhivat din original la 31 martie 2022.
  4. ISO/IEC TR 19759:2005, Inginerie software - Ghid pentru corpul de cunoștințe de inginerie software (SWEBOK)
  5. W. Stevens, G. Myers, L. Constantine, „Structured Design”, IBM Systems Journal, 13(2), 115-139, 1974.
  6. Philip A. Laplante, Philip A. Laplante. Ce ar trebui să știe fiecare inginer despre ingineria software. - CRC Press, 2007. - P. 105-106. - ISBN 978-1-4200-0674-2 .

Literatură