Drama celor care lucrează în informatică este realizarea specificațiilor. De ce sunt specificațiile de programare marea sperietoare nu am înțeles și nu voi înțelege niciodată. Specificații face gospodina în fiecare zi înainte de a organiza cele trei mese pentru familie. Ea nu merge la piață ca musca fără cap, ci are specificațiile făcute bine chiar. Să mă explic: dospodina dezvoltă totul din aproape în aproape.
La primul nivel de detaliere, pentru masa de dimineața, gospodina își imaginează o cafea, niște mezeluri, brânzeturi, ouă, pâine, unt și dulceață și miere. Pentru prânz ea vede o ciorbă, o friptură, o salatăși o prăjitură. Pentru seara vrea ceva ușor, adică o salată, un grătar și niște fructe. Toate acestea, în linii mari.
La al doilea nivel, va trece la detaliere spunând ce mezeluri și ce brânzeturi pune pe masă, de ce legume are nevoie pentru ciorbă și pentru garnitura felului principal, ce legume pune în salată. Ea precizează care sunt ingredientele pentru prăjitură și ce fruncte cumpără. Sunt mai în detaliu.
La al treilea nivel, gospodina face lista și regupează ceea ce are de cumpărat pe raioane pentru a nu alerga aiurea în supermarket. Ea trece și cantitățile în mod acoperitor. Dacă unele dintre componente le are în cămară nu le mai cumpără, dar verifică dacă într-adevăr sunt în cămară. Toate sunt mai în detaliu decât la nivelul precedent și mai mult, sunt și regrupate pe raioanele supermarketului.
La nivelul al patrulea merge să cumpere, ceea ce înseamnă că lucrurile devin mai concrete. Verifică totul din punct de vedere cantitativ și calitativ. Caută să se încadreze în buget.
La nivelul al cincilea deja prepară felurile de mâncare pas cu pas și în unele cazuri vede ce are de făcut în paralel ca să se încadreze în timp. Ea are proceduri, are succesiuni logice de operații. Face tot timpul aprecieri cantitative și verifică stadiile. Caută să se încadreze în timpul disponibil.
Vedem că pentru primele trei niveluri gospodina nu face nimic altceva decât specificații. Nimeni nu are cum să înceapă ceva fără a ști ce face. Gospodina este un exemplu de cum se fac specificațiile pentru a avea succes cu preparatele ei. Cine nu face specificații va proceda exact ca gospodina care nu lucrează după specificații și anume:
- se găsește la servirea mesei că-i lipsește un preparat de care a uitat;
- când merge la piață precis uită ceva și-și trimite soțul după acel produs;
- nu lucrează nimic la simultan și nu termină în timp util;
- va munci după principiul leneșul mai mult aleargă;
- precis că la masă se simte că nu au existat specificații.
Cele patru niveluri nu sunt altceva decât o dezvoltare TOP-DOWN așa cum stă bine oricărei gospodine care se respectă, adică dezvoltare din aproape în apropape și pentru fiecare nivel crește gradul de detaliere.
Și în programare tot așa trebuie lucrat. Vor exista mai multe niveluri, dar trebuie să se ajungă în final ca specificațiile să lămurească absolut toate aspectele, să se răspundă la toate întrebările. Specigicațiile trebuie să fie:
- complete;
- clare;
- consistente;
- graduale;
- logice;
- simple;
- structurate;
- unitare;
- formalizate;
- concise.
Dacă o sută de programatori citesc aceleași specificații ei vor scrie 100 de programe care:
- folosesc același limbaj de programare;
- utilizează aceleași structuri de date;
- au asociate arborescențe care nu diferă semnificativ;
- sunt de lungimi care nu diferă radical;
- lucrează cu aceleași tipuri de fișiere;
- au aceleași tipologii de validări de date;
- aparțin acelorași generații de software.
Dacă nu este așa, cu siguranță că specificațiile de programare sunt afectate de carențe importante care dau niște grade de libertate nepermis de mari programatorilor. Când am scris programele mele niciodată nu m-am așezat în fața foilor de programare sau a compterului sau al PC-ului sau a laptopului ca un pianist gata să facă improvizații. Al luat foi de hârtie, mi-am notat tot felul de întrebări, am avut discuții cu specialiști, mi-am construit niște matrice citind notițele și am mai discutat cu specialiștii dacă ceva nu se lega. După ce totul îmi era clar, am scris un text pe care l-am verificat cu specialiști dar și cu colegi și numai dacă se dovedea că totul este așa cum trebuie am trecut la scrierea programului. Citind acel text am avut întodeauna că programul se scrie singur. Nu s-a întâmplat decât o singură dată în viața mea ca totul să meargă șnur. Dar în celelalte cazuri nu s-au produs prea multe reveniri și mai ales nu am avut erori datorate elaborării outputurile din primele etape ale ciclului de realizare. Tot ce am avut erori au dost de corectat fără a mai merge la beneficiar să fac corecții care au un caracter dramatic și care lungesc timpul de realizare a programului.
Experiența mea arată că dacă am avut specificații am muncit cu mult mai eficient decât dacă nu le-aș fi avut, lucru de care mă mândresc și am explicat și doctoranzilor de ce e bine să aibă arborescență la teza de doctorat organizată pe patru niveluri, unde la ultimul nivel să pună 5 propoziții scurte foc.
Realizarea specificațiilor este piatra unghiulară a oricărei dezvoltări de software. Numai având specificații bune se va realiza un program bun. Altfel totul este o nebuloasă și produsul finit va părea că este făcut din cârpeli.
Realizarea specificațiilor este piatra unghiulară a oricărei dezvoltări de software. Numai având specificații bune se va realiza un program bun. Altfel totul este o nebuloasă și produsul finit va părea că este făcut din cârpeli.
(29 noiembrie 2017)
No comments:
Post a Comment