'Y'

Arhitectura software, refactoring si ce este de fapt important

In ciclul de viata al oricarui proiect in industria software apare intrebarea legata de refactoring. Uneori pentru ca programatorii implicati in proiect vor ca ceva nou, de actualitate si interesant sa se intample. Sau compania are nevoie de noi functionalitati din ce in ce mai repede si echipa de proiect spune ca este nevoie de refactoring. Suna familiar?

Apr 5, 2018 1066
In ciclul de viata al oricarui proiect in industria software apare intrebarea legata de refactoring. Uneori pentru ca programatorii implicati in proiect vor ca ceva nou, de actualitate si interesant sa se intample. Sau compania are nevoie de noi functionalitati din ce in ce mai repede si echipa de proiect spune ca este nevoie de refactoring. Suna familiar?

Insa inainte de a incepe procesul de refactoring pentru sistemele la care lucrati, ar trebui sa raspundeti la cateva intrebari:

  1. Este cu adevarat necesar?
  2. Ce iti va oferi refactoringul?
  3. Care vor fi consecintele?
  4. Ce ar trebui sa fie facut pentru a nu apela din nou la refactoring pe viitor?
  5. Daca trebuie sa rescrii codul, care va fi planul tau?

Este cu adevarat necesar?

Inainte de a incepe procesul de refactoring, ar trebui sa analizezi cat mai in detaliu design-ul aplicatiei cu ajutorul unui instrument de tipul SonarQube, pentru a evalua codul existent. Fa masuratori cu privire la performanta si strange informatii detaliate legate de punctele unde aceasta ar putea sa fie imbunatatita.

Apoi evalueaza cat timp petrec programatorii oferind support pentru solutia existenta si implementand noi functionalitati. Sistemul existent ar putea sa nu fie potrivit pentru o extensie; date legate de costurile cu forta de munca pot fi scoase din JIRA/Redmine/TeamCity/TFS. Este util sa verifici si modul in care product owner-ul implementeaza schimbari sau daca user stories s-au modificat. In acest caz va trebui sa faceti refactoring pe procesul si procedurile pe care le aveti pentru a aborda Cererile de Schimbare.

Ce iti va oferi refactoringul?

Cand vine vorba de refactoring este necesar sa agreati ce lucruri vor fi facute. Incercati sa lucrati la o lista de “beneficii” concrete care ar trebui obtinute in urma refactoringului. Acestea ar trebui sa fie masurabile, spre exemplu:

  • Timpul de procesare a comenzilor va scadea cu X minute
  • Lansarea unei noi functionalitati va fi redusa cu un factor de 2
  • Refactoring ne va permite sa facem testare A/B, aspect care o sa duca la cresterea vanzarilor
  • Ne va ajuta sa sprijinim mai mult clientii nostri, aspect care va duce la mai multe comenzi

In aceasta etapa, ar trebui sa strarngeti beneficii pe care clientul vostru le poate intelege.

Care vor fi consecintele sau “Nu este vina programatorului”

Cand faceti refactoring, este important sa intelegeti consecintele – nu doar cele pozitive. Va trebui sa folositi regression testing? Sau poate localization sau performance tests? Cu alte cuvinte trebuie sa intelegeti ce se v-a strica daca faceti refactoring si ce ar trebui sa verificati.
Pentru a reduce efectele secundare, ar trebui sa cereti programatorilor sa faca unit si automated tests, inclusiv integration testing. Acestea ar putea sa para ca fiind munca in plus dar vor adauga la nivel de control si vor fi utile pentru client.

Pentru a evita prea mult timp petrecut pe hot fix releases, ar fi util sa rulati un ciclu complet de regression testing si sa facilitati o serie de sesiuni de testare exploratorii. Acest lucru o sa va ajute sa cresteti sansele identificarii de defecte.

Cu alte cuvinte trebuie sa intelegeti:

  • Ce poate sa fie afectat de refactoring
  • Cum veti verifica daca sistemul este in regula
  • Ce teste/rezultate vor fi oferite ca dovada a faptului ca totul este in ordine
  • Ce recomandari vor oferi programatorii echipei de QA
  • Cum putem sa verificam ca “vechii utilizatori” nu sunt afectati in mod negativ de noile schimbari

In cea de-a doua parte a articolului ne vom uita la cum putem minimiza folosirea refactoring dupa ce l-am facut initial precum si cum putem sa rescriem codul.

Ivan Alyakskin 
Software Consultant

Daca iti place acest articol, distribuie-l si prietenilor tai!




Mai ai intrebari?
Contacteaza-ne.
Thank you.
Your request has been received.