Reutilizarea codului

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

În informatică, termenul reutilizare a codului înseamnă practica, extrem de obișnuită în programare , de a reaminti sau invoca părți de cod scrise anterior ori de câte ori este necesar, fără a fi nevoie să le rescrie din nou.

Descriere

Aceasta ia în esență forma unor funcții de scriere care pot fi reamintite sau invocate în cadrul aceluiași program sau grupate în biblioteci care pot fi la rândul lor „legate” la nevoie în cadrul diferitelor programe sau în API . În practica programării orientate pe obiecte , să fie cumva „reamintit”, „importat” sau „ moștenit ” sunt clasele , din nou pe necesitate, și eventual „extinse” cu funcții sau metode noi în cadrul programului însuși.

Reutilizarea codului permite, prin urmare, o economie considerabilă în timpul scrierii unui program de către programator , facilitând munca de programare și îmbunătățind lizibilitatea codului care a devenit mai scurtă și mai concisă, și din acest motiv este prezentă în aproape toate programările limbaje. , din care reprezintă o evoluție deja în primele tehnici de programare, chiar dacă obligă cumva programatorul să cunoască diferitele biblioteci și funcții disponibile sau API-ul.

Tipuri de refolosire

Reutilizarea poate fi [1] :

  • Oportunist: Pe măsură ce echipa se pregătește să înceapă un proiect, își dă seama că există componente existente care pot fi refolosite.
  • Planificat: o echipă proiectează strategic componente astfel încât să fie reutilizabile în proiecte viitoare.

Reutilizarea poate fi clasificată în continuare [1] :

  • Intern: o echipă își reutilizează proprii membri. Aceasta poate fi o decizie de afaceri, deoarece echipa ar putea dori să controleze o componentă critică pentru proiect.
  • Extern: o echipă poate alege să licențieze o componentă terță parte. Licențierea unei componente terță parte costă de obicei echipa cu 1 până la 20 la sută din cât ar costa dezvoltarea internă. Echipa trebuie să ia în considerare și timpul necesar pentru a găsi, învăța și integra componenta.

În ceea ce privește forma sau structura refolosirii, codul poate fi:

  • Referință: codul clientului conține o referință la codul reutilizat, deci au cicluri de viață distincte și pot avea versiuni distincte.
  • Furcat: codul clientului conține o copie locală sau privată a codului reutilizat și, prin urmare, partajează un singur ciclu de viață și o versiune.

Reutilizarea sistematică

Reutilizarea sistematică a software-ului este o strategie pentru creșterea productivității și îmbunătățirea calității industriei software. Deși simplă ca concept, implementarea cu succes a reutilizării software-ului este dificilă în practică. Un motiv dat pentru aceasta este dependența reutilizării software-ului de contextul în care este implementat. Unele probleme problematice care trebuie abordate în legătură cu reutilizarea sistematică a software-ului sunt [2] [1] :

  • o viziune clară și bine definită a produsului este o bază esențială pentru o linie de produse software (SPL).
  • o strategie de implementare evolutivă ar fi o strategie mai pragmatică pentru companie.
  • este necesar un management continuu și sprijin pentru conducere pentru a asigura succesul.
  • Este necesară o structură organizațională adecvată pentru a sprijini ingineria SPL.
  • schimbarea mentalității de la o companie axată pe proiect la o companie orientată spre produs este esențială.
  • Conducere managerială pe termen lung
  • Organizare sistematică și incrementală și schimbarea procesului
  • Proiectare pentru reutilizare arhitecturată și specifică domeniului
  • Separare: creați / susțineți / utilizați
  • Înțelegând că obiectele singure nu sunt suficiente
  • Începeți mici încercări și apoi extindeți-le
  • Abordarea culturii, experienței și stabilității organizației
  • Investiți în infrastructură, asistență și instruire
  • Găsiți probe dedicate refolosirii

Domenii de utilizare

Biblioteci software

Un exemplu foarte comun de reutilizare a codului este tehnica utilizării unei biblioteci software. Iată un exemplu de cod reutilizabil din biblioteca JQuery :

 $ ( „a” ). css ( { color : 'red' , width : '150px' } )
      . spectacol ( „1000” )
      . faceți clic pe ( funcție () {
      	alert ( 'a făcut clic!' );
      } );

Șabloane de proiectare

Un „model de proiectare” sau „model de proiectare” este o soluție generală la o problemă recurentă. Șabloanele de proiectare sunt mai conceptuale decât tangibile și pot fi modificate pentru a satisface nevoia exactă. Cu toate acestea, clasele și interfețele abstracte pot fi reutilizate pentru a implementa anumite modele. Iată un exemplu de model de proiectare reutilizabil:

 public class EagerSingleton {
	// creați o instanță a clasei.
	private static EagerSingleton instance = new EagerSingleton ();

	// constructor privat, deci nu poate fi instanțiat în afara acestei clase.
	private EagerSingleton () { }

	// obțineți singura instanță a obiectului creat.
	public static EagerSingleton getInstance () {
		instanță de returnare ;
	}
}

Funcție de comandă superioară

În programarea funcțională, funcțiile de ordin superior pot fi utilizate în multe cazuri în care au fost utilizate anterior modele de proiectare sau cadre. Iată un exemplu cu Julia :

 julia > funcționează de două ori ( f )
           rezultatul funcției ( a )
               returnează f ( f ( a ))
               Sfârșit
           rezultatul returului
       Sfârșit
de două ori ( funcție generică cu 1 metodă )

julia > plusthree ( x ) = x + 3
plusthree ( funcție generică cu 1 metodă )

julia > g = de două ori ( trei )
(:: var "# result # 3" { typeof ( plusthree )}) ( funcție generică cu 1 metodă )

julia > g ( 7 )
13

Retrocomputarea

Un computer Apple retro
Un computer Apple retro

Retrocomputarea implică reutilizarea codului, pur și simplu pentru că programele retro rulează pe computere mai vechi sau emulatoare pentru acestea.

Securitate IT

În securitatea cibernetică, reutilizarea codului este utilizată ca metodă de exploatare a software-ului [3] . Atunci când un atacator nu este în măsură să injecteze direct codul pentru a schimba fluxul de control al unui program, cum ar fi în prezența sistemelor de apărare cu injecție de cod, cum ar fi W ^ X, pot redirecționa fluxul de control către secvențele de cod existente în memorie.

Componente

O componentă, într-o măsură orientată obiect, reprezintă un set de clase colaborative (sau doar o clasă) și interfețele sale [4] . Interfețele sunt responsabile pentru înlocuirea componentelor. Componentele refolosibile pot fi, de asemenea, izolate și sincronizate în depozite SCM utilizând tehnologiile de gestionare a codului sursă de componente (CSCM) [5] . Mai jos este un exemplu de componentă reutilizabilă:

 import React din „React”; 
importați {Logo, ProfileImage, BurgerMenu, HeaderWrapper} din „componentă”; 

antet const = () => ( 
  <HeaderWrapper> 
    <Logo> </Logo> 
    <ProfileImage> </ProfileImage> 
    <BurgerMenu> </BurgerMenu> 
  </HeaderWrapper> 
)

Calculatoare externe

Întregul concept de „reutilizare a codului” poate include și aplicații de inginerie în afara software-ului. De exemplu, modelarea parametrică în proiectarea asistată de computer vă permite să creați modele reutilizabile.

Exemple de refolosire a codului

Majoritatea codurilor HTML, CSS și (dacă există) JS de pe această pagină pot fi refolosite pentru a crea mai multe site-uri web cu conținut diferit, dar având același aspect sau un aspect foarte similar.
Rezultat

Majoritatea codurilor HTML, CSS și (dacă există) JS ale unei pagini web pot fi reutilizate pentru a crea mai multe pagini web cu conținut diferit, dar având același aspect sau un aspect foarte similar.

Mai jos este o porțiune din codul reutilizabil HTML 5 al paginii afișate în imagine.

CSS extern poate fi apelat dintr-un număr infinit de pagini HTML. Același cod dintr-un singur fișier CSS este apoi reutilizat.
CSS extern poate fi apelat dintr-un număr infinit de pagini HTML. Același cod dintr-un singur fișier CSS este apoi reutilizat.
 <! DOCTYPE HTML>
< html >
< cap >
< meta http-equiv = "Content-Type" content = "text / html; charset = UTF-8" />
	< title > Site-ul meu </ title >
</ head >
< corp >
	< antet >
		< nav >
			< ul >
		        < li > Meniu </ li >
			</ ul >
		</ nav >
	</ header >
	< secțiune >	
	
		< articol >
			< antet >
				< h2 > Titlul articolului </ h2 >
				<P> Postat la <time datetime = "2020-09-04T16: 31: 24 + 02: 00"> 4 septembrie 2020 </ time> de <a href = "#"> Writer </ a> - <a href = "#comments" > 6 comentarii </ a > </ p >
			</ header >
			< p > Pellentesque habitant morbi tristique senectus. </ p >
		</ articol >
	</ section >
	< deoparte >
		< h2 > Despre secțiunea </ h2 >
		< p > Donec eu free sit amet quam egestas sempre. </ p >
	</ aparte >
	< subsol >
		< p > Copyright 2020 Kate Ross </ p >
	</ subsol >
</ body >
</ html >
Pentru a crea compoziția de mai jos, codul cercului superior a fost reutilizat (atât în ​​cazul SVG, cât și în pânză)
Pentru a crea compoziția de mai jos, codul cercului superior a fost reutilizat (atât în ​​cazul SVG, cât și în pânză)

Chiar și în cazul SVG și WebGL / Canvas, o parte din același cod poate fi reutilizată pentru a crea proiecte diferite:

Codul SVG reutilizat pentru a crea cercul a doua oară

< g
     inkscape: label = "Layer 1"
     inkscape: groupmode = "layer"
     id = "layer1" >
    < cerc
       id = "cale3699"
       cx = "97.517845"
       cy = "131.44643"
       r = "34.773811"
       style = "stroke-width: 0.26458332" />
  </ g >

Codul pânzei reutilizat pentru a crea cercul a doua oară

 var SVGIcons = {
"" : {
 draw : function ( ctx ) {
ctx . save ();
ctx . strokeStyle = "rgba (0,0,0,0)" ;
ctx . mitreLimit = 4 ;
ctx . font = "15px / 21.4286px ''" ;
ctx . font = "15px" ;
ctx . font = "15px" ;
ctx . beginPath ();
ctx . arc ( 97.517845 , 131.44643 , 34.773811 , 0 , 6.283185307179586 , fals );
ctx . closePath ();
}
}}

Notă

  1. ^ a b c Reutilizarea sistematică a software-ului: arhitectura, procesul și organizarea sunt cruciale , la martin.griss.com . Adus la 16 februarie 2021.
  2. ^ Mark Chapman și Alta van der Merwe, Contemplarea reutilizării sistematice a software-ului într-o companie centrată pe proiecte , în lucrările conferinței anuale de cercetare din 2008 a Institutului sud-african de informaticieni și tehnologi ai informației privind cercetarea IT în țările în curs de dezvoltare: tehnologie , Association for Computing Machinery, 6 octombrie 2008, pp. 16–26, DOI : 10.1145 / 1456659.1456662 . Adus la 16 februarie 2021.
  3. ^ Tyler Bletsch, Code-reuse attack : new frontiers and defenses , North Carolina State University, 2011. Accesat la 16 februarie 2021 .
  4. ^ (EN) Indrek Lasn, Ce este programarea orientată pe componente (COP)? , pe mediu , 16 septembrie 2019. Adus 16 februarie 2021 .
  5. ^ (RO) Care este componenta? - Definiție din WhatIs.com , pe WhatIs.com . Adus la 16 februarie 2021.

Bibliografie

  • ML Griss, Reutilizarea sistematică a software-ului - Obiectele și cadrele nu sunt suficiente, Object Magazine, februarie 1995.
  • Ivar Jacobson, Martin Griss și Patrik Jonsson, Software Reuse: Architecture, Process, and Organization for Business Success, Addison-Wesley 1997.
  • ML Griss și K Wentzel, Kituri specifice domeniului hibrid, Jurnal de sisteme și software, decembrie 1995.
  • ML Griss și RR Kessler, Kituri de instrumente orientate pe obiecte de construcție, revista Object, mai 1996.
  • R Malan și T Dicolen, Managementul riscurilor într-un proiect de reutilizare HP, Fusion Newsletter, aprilie 1996
  • W. Frakes și S. Isoda, Reutilizarea sistematică, Software IEEE ediție specială, mai 1994.
  • J Hooper & R Chester, Linii directoare și metode pentru reutilizarea software-ului, Plenum, 1991.
  • EA Karlson, Reutilizarea software-ului: o abordare holistică, Wiley 1995.
  • W Schäfer, R Prieto-díaz și M. Matsumoto, Reutilizarea software-ului, Ellis Horwood, 1994.

Elemente conexe

Informatică Portal IT : accesați intrările Wikipedia care se ocupă cu IT