Kodi Komplet

Steven McConnell

   Kodi Komplet – pikat kryesore
4
 
Hyrje
 
“Code Complete”
1
 është libri me praktikat më të mira të programimit nga bota akademike
dhe industriale e softuerit. Siç thotë edhe vetë autori, “shumë teknika të fuqishme të
programimit fshehen në revista dhe punime shkencore akademike vite me radhë para se të
shpërndahen te publiku i programimit”.
Këtu janë vetëm pikat kryesore të kapitujve të edicionit të dytë të librit. Libri i ka mbi 900
faqe. Këtë përmbledhje mund ta përdorni për t’u informuar se çka përmban libri dhe ta
vlerësoni se a ju nevojitet juve dhe/ose ekipit të zhvilluesve në kompaninë tuaj. 
“Nëse shkruani softuer në çfarëdo forme, ju nevojitet ky libër. … Nëse e menaxhoni një ekip
të softuerit, blejeni për të gjithë nga një kopje. Është kaq i rëndësishëm.” (Practical PC
Online)
“Më 1998, McConnel është cilësuar si njëri nga tre njerëzit më me ndikim në industrinë e
softuerit nga Software Development Magazine, bashkë me Bill Gates dhe Linus Torvalds.”
(Wikipedia - Steve McConnell).
Gjatë leximit të këtij libri gjeta praktika të mira të programimit të cilat nuk i kisha përdorë
më herët. Gjatë diskutimit të tyre me autorin, e njoftova për idenë time të përkthimit të
pikave kryesore në gjuhën shqipe, me të cilën ai u pajtua plotësisht:
 
 
 

                                                        
1
   Një lëshim quhet Kodi Komplet (Code Complete) atëherë kur ekipi i zhvillimit pajtohet se asnjë kod
plotësisht i ri burimor nuk do t'i shtohet këtij lëshimi. Mund të ketë ndërrime të kodit burimor për t'i rregulluar
defektet. Ende mund të ketë ndryshime në dokumentacion dhe fajlla të shënimeve, dhe në kodin për rastet e
testimit apo veglat ndihmëse. Kodi i ri mund të shtohet në një lëshim të ardhshëm. (Wikipedia)
RE: Thank you
Thursday, February 19, 2009 9:35 PM
From:   "Steve McConnell" <Steve.McConnell@construx.com>
To:   "Ridvan Bunjaku" <rbunjaku@yahoo.com>
 
Ridvan,
 
Your summarizing the key points from my books in Albanian is fine with me. I'm very flattered that
you like my writing enough to do that! 
 
 Keep up the good work!
Cheers,
Steve
 Kodi Komplet – pikat kryesore
5
 
Tufa e librit (cluster) shqip
 
 Kodi Komplet – pikat kryesore
6
 
Tufa e librit (cluster) anglisht
 
 Kodi Komplet – pikat kryesore
7
 
I. SHTRUARJA E THEMELIT
 
1. Mirë se vini në konstruksionin e softuerit
 
•  Konstruksioni i softuerit është aktiviteti qendror në zhvillimin e softuerit; 
konstruksioni është aktiviteti i vetëm që garantohet se do të ndodhë në secilin
projekt.
•  Aktivitetet kryesore në konstruksion janë dizajni i detalizuar, kodimi, debagimi (heqja
e gabimeve), dhe testimi nga zhvilluesi.
•  Termat tjera më të shpeshta për konstruksion janë "kodim dhe debagim" dhe
"programim."
•  Cilësia e konstruksionit ndikon në mënyrë substanciale në cilësinë e softuerit.
•  Në analizën finale, kuptimi yt se si të bëhet konstruksioni e përcakton se sa je i mirë
si programer, dhe kjo është tema e pjesës tjetër të librit.
 
 
2. Metaforat për një kuptim më të mirë të zhvillimit të softuerit
 
•  Metaforat janë diçka orientuese (heuristics), e jo algoritme. Si të tilla, ato kanë prirje
të jenë pak si të turbullta.
•  Metaforat të ndihmojnë ta kuptosh procesin e zhvillimit të softuerit duke e lidhur atë
me aktivitete tjera të cilat tashmë i di.
•  Disa metafora janë më të mira se tjerat.
•  Trajtimi i konstruksionit të softuerit si të ngjashëm me konstruksionin e ndërtesës
sugjeron që nevojitet përgatitje e kujdeshme dhe e sqaron dallimin ndërmjet
projekteve të mëdha dhe të vogla.
•  Të menduarit për praktikat e zhvillimit të softuerit si vegla në një çantë intelektuale
të veglave sugjeron që secili programer ka shumë vegla dhe se asnjë vegël e vetme
nuk është e mirë për secilën punë. Zgjedhja e veglës së duhur për secilin problem
është çelës për me qenë programer efektiv.
 
 
   Kodi Komplet – pikat kryesore
8
 
3. Mat dy herë, prej një herë: parakushtet 
 
•  Qëllimi dominues i përgatitjes për konstruksion është zvogëlimi i rrezikut. Sigurohuni
që aktivitetet tuaja të përgatitjes po i zvogëlojnë rreziqet, e jo me i rritë ato.
•  Nëse doni të zhvilloni softuer të cilësisë së lartë, vëmendja në cilësi duhet të jetë
pjesë e procesit të zhvillimit të softuerit prej fillimit deri në fund. Vëmendja në cilësi
në fillim ka ndikim më të madh në cilësinë e produktit se sa vëmendja në fund.
•  Pjesë e punës së programerit është me i eduku shefat dhe bashkëpunëtorët për
procesin e zhvillimit të softuerit, duke e përfshirë rëndësinë e përgatitjes adekuate
para se të fillojë programimi.
•  Lloji i projektit në të cilin punoni ndikon dukshëm në parakushtet e konstruktimit -
shumë projekte duhet të jenë iterative në shkallë të lartë, dhe disa duhet të jenë më
sekuenciale.
•  Nëse nuk është specifikuar një definicion i mirë i problemit, mund të jeni duke e
zgjidhur problemin e gabuar gjatë konstruktimit.
•  Nëse nuk është bërë punë e mirë gjatë kërkesave, mund të keni humbur detale të
rëndësishme të problemit. Ndërrimet e kërkesave kushtojnë 20 deri në 100 herë më
shumë në fazat pas konstruksionit se sa që kushtojnë më herët, prandaj sigurohuni
që kërkesat janë ato të duhurat para se të filloni të programoni.
•  Nëse nuk është bërë një dizajn i mirë arkitektural, mund të jeni duke e zgjidhur
problemin e duhur në mënyrën e gabuar gjatë konstruksionit. Kostoja e ndërrimeve
arkitekturale rritet sa më shumë kod që shkruhet për arkitekturën e gabuar, prandaj
sigurohuni që edhe arkitektura është ajo e duhura.
•  Kuptojeni se çfarë qasje është ndërmarrë ndaj parakushteve të konstruksionit në
projektin tuaj dhe në përputhje me këtë zgjedheni qasjen tuaj të konstruksionit.
 
   Kodi Komplet – pikat kryesore
9
 
4. Vendimet kryesore të konstruksionit
 
•  Çdo gjuhë programuese ka përparësi dhe dobësi. Jini të vetëdijshëm për përparësitë
dhe dobësitë specifike të gjuhës që e përdorni.
•  Caktoni konventa të programimit para se të filloni të programoni. Është pothuajse e
pamundur të ndërrohet kodi për t'iu përshtatur atyre më vonë.
•  Ekzistojnë më shumë praktika të konstruksionit se që mund t'i përdorni në cilindo
projekt individual. Zgjedhni me vetëdije praktikat që përshtaten më së miri me
projektin tuaj.
•  Pozita juaj në valën e teknologjisë (technology wave) e përcakton se cilat qasje do të
jenë efektive - apo të mundura. Identifikojeni se ku jeni në valën e teknologjisë, dhe
rregulloni planet dhe pritjet tuaja në përputhje me këtë.
 
II. KRIJIMI I KODIT TË CILËSISË SË LARTË
 
5. Dizajni në konstruksion
 
•  Imperativi Kryesor Teknik i Softuerit është menaxhimi i kompleksitetit. Kjo arrihet në
radhë të parë përmes një fokusi të dizajnit në thjeshtësi.
•  Thjeshtësia arrihet në dy mënyra të përgjithshme: minimizimi i sasisë së
kompleksitetit me të cilën duhet të mirret në cilëndo kohë truri i kujtdoqoftë, dhe
ndalja e përhapjes së panevojshme të kompleksitetit aksidental.
•  Dizajni është eksperimental, provues (heuristic). Insistimi dogmatik për cilëndo
metodologji individuale e lëndon kreativitetin dhe i lëndon programet tuaja.
•  Dizajni i mirë është iterativ (përsëritës); sa më shumë mundësi të dizajnit që provoni,
aq më i mirë do të jetë dizajni juaj përfundimtar.
•  Fshehja e informatave është koncept veçanërisht i vlefshëm. Të pyeturit "Çka duhet
të fshehi?" i zgjidh shumë çështje të vështira të dizajnit.
•  Shumë informata të dobishme, interesante për dizajnin janë në dispozicion jashtë
këtij libri. Perspektivat e paraqitura këtu janë vetëm maja e ajsbergut (iceberg).
 
 Kodi Komplet – pikat kryesore
10
 
6. Klasat punëtore
 
•  Interfejsat e klasave duhet të ofrojnë abstraksion konsistent. Shumë probleme dalin
nga thyerja vetëm e këtij principi.
•  Interfejsi i klasës duhet të fshehë diçka - një interfejs të sistemit, një vendim të
dizajnit, apo një detal të implementimit.
•  Përmbajtja apo përkatësia (containment) është zakonisht më e preferueshme se sa
trashëgimia (inheritance) pos nëse jeni duke modeluar relacion "është" ("is a").
•  Trashëgimia (inheritance) është vegël e dobishme, por e rrit kompleksitetin, gjë që
është në kundërshtim me Imperativin Kryesor Teknik të minimizimit të
kompleksitetit.
•  Klasat janë veglat tuaja kryesore për menaxhimin e kompleksitetit. Kushtojini dizajnit
të tyre aq vëmendje sa nevojitet për ta arritur atë qëllim.
 
7. Rutinat (metodat, funksionet) e cilësisë së lartë
 
•  Arsyeja më e rëndësishme për ta krijuar një rutinë është të përmirësohet
menaxhueshmëria intelektuale e një programi, dhe mund ta krijoni një rutinë për
shumë arsye tjera të mira. Ruajtja e hapësirës është arsye e vogël; lexueshmëria,
besueshmëria, dhe ndryshueshmëria e përmirësuar janë arsye më të mira.
•  Nganjëherë operacioni (veprimi) që përfiton më së shumti nga vendosja e tij në një
rutinë të posaçme është një operacion i thjeshtë.
•  Emri i një rutine është tregues i cilësisë së tij. Nëse emri është i keq dhe është i saktë,
rutina mund të jetë dizajnuar dobët. Nëse emri është i keq dhe është i pasaktë, ai
nuk të tregon se çka bën programi. Në cilëndo mënyrë, emri i keq domethënë se
programi duhet të ndryshohet.
•  Funksionet duhet të përdoren vetëm kur qëllimi kryesor i funksionit është ta kthejë
vlerën specifike të përshkruar nga emri i funksionit.
•  Programerët e kujdesshëm i përdorin rutinat makro dhe rutinat inline (drejtpërdrejt)
me kujdes, dhe vetëm si resurs të fundit.
 
 
   Kodi Komplet – pikat kryesore
11
 
8. Programimi mbrojtës
 
•  Kodi në produksion duhet t'i trajtojë gabimet në mënyrë më të sofistikuar se sa
mënyra "bërllog brenda, bërllog jashtë" ("garbage in, garbage out").
•  Teknikat e programimit mbrojtës i bëjnë gabimet të gjenden më lehtë, të rregullohen
më lehtë, dhe më pak të dëmshme për kodin në produksion.
•  Mbrojtjet (assertions) mund të ndihmojnë të detektohen gabimet herët, sidomos në
sisteme të mëdha, në sisteme me besueshmëri të lartë, dhe në baza të kodit që
ndryshojnë shpejt.
•  Vendimi se si të trajtohen hyrjet e këqija (bad inputs) është vendim kryesor i trajtimit
të gabimeve, dhe vendim kryesor i dizajnit të nivelit të lartë.
•  Përjashtimet (exceptions) e ofrojnë një mjet të trajtimit të gabimeve që operon në
dimension ndryshe nga rrjedha normale e kodit. Ato janë shtesë e vlefshme për
çantën e veglave të programerit kur përdoren me kujdes, dhe duhet të krahasohen
me teknikat tjera të përpunimit të gabimeve.
•  Kufizimet (constraints) që aplikohen në sistemin e produksionit nuk aplikohen
domosdo në versionin e zhvillimit. Mund ta përdorni këtë si përparësi tuajën, duke
shtuar kod në versionin e zhvillimit që ndihmon të spastrohen gabimet shpejt.
 
9. Procesi i programimit pseudokod
 
•  Konstruktimi i klasave dhe konstruktimi i rutinave ka prirje të jetë proces iterativ. Të
kuptuarit e thellë që fitohet gjatë konstruktimit të rutinave specifike ka prirje që të
depërtojë prapa në dizajnin e klasës.
•  Shkruarja e pseudokodit të mirë nënkupton përdorim të gjuhës së kuptueshme
shqipe (apo, gjuhës që e flet ekipi gjatë komunikimit, vër. R.B.), duke iu shmangur
veçorive specifike për një gjuhë individuale të programimit, dhe nënkupton shkruarje
në nivel të qëllimit, synimit - duke e përshkruar se çka bën dizajni e jo se si do ta bëjë
atë.
•  Procesi i Programimit Pseudokod është vegël e dobishme për dizajnin e detalizuar
dhe e lehtëson kodimin. Pseudokodi përkthehet direkt në komente, duke siguruar që
komentet janë të sakta dhe të dobishme.
•  Mos vendosni për dizajnin e parë që ju bie në mend. Iteroni nëpër shumë qasje në
pseudokod dhe zgjedheni qasjen më të mirë para se të filloni ta shkruani kodin.
•  Kontrollojeni punën tuaj në secilin hap dhe inkurajoni edhe të tjerët ta kontrollojnë.
Në atë mënyrë, do t'i gjeni gabimet në nivelin që kushton më së paku, kur e keni
investuar sasinë më të vogël të përpjekjes. Kodi Komplet – pikat kryesore
12
 
III. NDRYSHORET
 
10. Çështjet e përgjithshme në përdorimin e ndryshoreve
 
•  Inicializimi i shënimeve është i prirur për gabime, prandaj përdorni teknikat e
inicializimit të përshkruara në këtë kapitull për t'iu shmangur problemeve të
shkaktuara nga vlerat e papritura iniciale (fillestare).
•  Minimizojeni shtrirjen (scope) e secilës ndryshore. Mbani referencat e saj afër dhe
bashkë. Le të jetë lokale për një rutinë apo klasë. Shmangiuni shënimeve globale.
•  Mbani urdhërat që punojnë me ndryshoren e njëjtë afër njëri-tjetrit sa më shumë që
është e mundur.
•  Lidhja e hershme (early binding) ka tendencë ta kufizojë fleksibilitetin, por ta
minimizojë kompleksitetin. Lidhja e vonshme (late binding) ka tendencë ta rrisë
fleksibilitetin, por me çmimin e kompleksitetit të rritur.
•  Përdore secilën ndryshore për një dhe vetëm një qëllim.
 
11. Fuqia e emrave të ndryshoreve
 
•  Emrat e mirë të ndryshoreve janë element kryesor i lexueshmërisë së programit.
Llojet e ndryshme të ndryshoreve si indeksat e cikleve dhe ndryshoret e statusit
kërkojnë konsiderata specifike.
•  Emrat duhet të jenë sa më specifik që është e mundur. Emrat që janë mjaft të
pasaktë apo mjaft të përgjithshëm për t'u përdorur për më shumë se një qëllim janë
zakonisht emra të këqinj.
•  Konventat e emërimit dallojnë ndërmjet shënimeve lokale, të klasës, dhe atyre
globale. Ato dallojnë ndërmjet emrave të tipeve, konstantave të emëruara, tipeve të
numëruara (enumerated), dhe ndryshoreve.
•  Pavarësisht nga lloji i projektit në të cilin punoni, duhet ta adoptoni një konventë të
emërimit të ndryshoreve. Lloji i konventës që e adoptoni varet nga madhësia e
programit tuaj dhe numrit të njerëzve që punojnë në të.
•  Shkurtesat nevojiten rrallë në gjuhët moderne të programimit. Nëse i përdorni
shkurtesat, mbani shkurtesat në një fjalor të projektit apo përdoreni qasjen e
Parashtesave Standarde.
 
   Kodi Komplet – pikat kryesore
13
 
12. Tipet fundamentale të shënimeve
 
•  Të punuarit me tipe specifike të shënimeve domethënë të mbash mend shumë
rregulla individuale për secilin tip. Përdore listën e kontrollit (checklist, në fund të
kapitullit) për t'u siguruar që i ke konsideruar problemet më të shpeshta.
•  Krijimi i tipeve tuaja i bën programet tuaja më të lehta për t'i ndryshuar dhe më vetë-
dokumentuese, nëse gjuha juaj programuese e përkrah atë mundësi.
•  Kur e krijoni një tip të thjeshtë duke e përdorë typedef apo ekuivalentin e tij,
konsiderojeni se a duhet ta krijoni një klasë të re në vend të kësaj.
 
 
13. Tipet e pazakonshme të shënimeve
 
•  Strukturat mund të ndihmojnë që programet të bëhen më pak të komplikuara, të
kuptohen më lehtë, dhe të mirëmbahen më lehtë.
•  Sa herë që e konsideroni ta përdorni një strukturë, konsiderojeni se a do të punonte
një klasë më mirë.
•  Pointerët (treguesit) janë të prirur për gabime. Mbrojeni veten duke përdorë rutina
të qasjes (access routines) apo klasë dhe praktikat e programimit mbrojtës.
•  Shmangiuni ndryshoreve globale, jo veç pse janë të rrezikshme, por sepse mund t'i
zëvendësoni me diçka më të mirë.
•  Nëse s'mund t'iu shmangeni ndryshoreve globale, punoni me to përmes rutinave të
qasjes (access routines). Rutinat e qasjes ju japin çdo gjë që ju jep ndryshorja globale,
dhe më shumë.
 
   Kodi Komplet – pikat kryesore
14
 
IV. URDHËRAT
 
14. Organizimi i kodit drejtvizor
 
•  Principi më i fuqishëm për organizimin e kodit drejtvizor (kodi që ka vetëm urdhëra
një pas një, pa if’a etj. Vër. R.B.) është "varësitë nga radhitja".
•  Varësitë duhet të bëhen të dallueshme përmes përdorimit të emrave të mirë të
rutinave, listave të parametrave, komenteve, dhe - nëse kodi është mjaft kritik -
ndryshoreve të mirëmbajtjes së shtëpisë (housekeeping variables).
•  Nëse kodi nuk ka varësi nga radhitja, mbajini urdhërat e lidhur mes veti sa më afër
dhe bashkë që është e mundur.
 
15. Përdorimi i kushtëzuesve
 
•  Për if-else të thjeshtë, kushtoni kujdes radhitjes së grupeve të urdhërave në if dhe
else, sidomos nëse ata përpunojnë shumë gabime. Sigurohuni që rasti nominal
(kryesor, më i shpeshtë, normal) është i qartë.
•  Për zingjirët if-then-else dhe urdhërat case, zgjedhe një radhitje që e maksimizon
lexueshmërinë.
•  Përdore grupin e urdhërave te default në një urdhër case, ose else'in e fundit në një
zingjir të if-then-else'ave - për t'i kapur gabimet.
•  Të gjitha konstruktet e kontrollit nuk janë të krijuara të barabarta. Zgjedhe
konstruktin e kontrollit që është më i përshtatshmi për secilën pjesë të kodit.
 
16. Kontrollimi i cikleve
 
•  Ciklet janë të komplikuara. Thjeshtimi i tyre iu ndihmon lexuesve të kodit tënd.
•  Teknikat për thjeshtimin e cikleve i përfshijnë shmangien e llojeve ekzotike të
cikleve, minimizimin e ndërfutjes (nesting), qartësimin e hyrjeve dhe daljeve, dhe
mbajtjen e kodit të mirëmbajtjes së shtëpisë në një vend.
•  Indeksat e cikleve janë subjekt i abuzimit të gjerë. Emërojini qartas dhe përdorini
vetëm për një qëllim.
•  Kaloni me mendime nëpër cikël me kujdes për ta verifikuar se ai operon normalisht
në secilin rast dhe përfundon në të gjitha kushtet e mundshme.
 Kodi Komplet – pikat kryesore
15
 
17. Strukturat e pazakonshme të kontrollit
 
•  Futja e shumë return'ave mund ta rrisë lexueshmërinë dhe mirëmbajtshmërinë e një
rutine, dhe ndihmojnë të parandalohet logjika e ndërfutur thellë (deeply nested
logic). Mirëpo, ata duhet të përdoren me kujdes.
•  Rekursioni ofron zgjidhje elegante për një grup të vogël të problemeve. Edhe atë
përdore me kujdes.
•  Në disa raste, goto't janë mënyra më e mirë për ta shkruar kodin që është i
lexueshëm dhe i mirëmbajtshëm. Rastet e tilla janë të rralla. Përdori goto't vetëm si
resurs të fundit.
 
 
18. Metodat që punojnë me tabela (table-driven)
 
•  Tabelat (ndonjëherë quhen tabela përkthyese, vër. R.B.) ofrojnë alternativë ndaj
logjikës së komplikuar dhe strukturave të trashëgimisë. Nëse e kupton se je i hutuar
nga logjika e një programi apo e një druri të trashëgimisë, pyete veten se a mund ta
thjeshtosh atë duke e përdorë një tabelë përkthyese (lookup table).
•  Një konsideratë kryesore në përdorimin e një tabele është me vendosë se si me iu
qasë tabelës. Tabelës mundesh me iu qasë duke përdorë qasje direkte, qasje të
indeksuar, apo qasje shkallë-hap (stair-step).
•  Një tjetër konsideratë kryesore në përdorimin e një tabele është me vendosë se çka
me futë saktësisht në tabelë.
 
19. Çështjet e përgjithshme të kontrollit
 
•  Të bërit e shprehjeve buleane të thjeshta dhe të lexueshme kontribuon në mënyrë
substanciale në cilësinë e kodit tuaj.
•  Ndërfutja e thellë (deep nesting) e bën një rutinë të vështirë për me e kuptu.
Fatmirësisht, asaj mund t'i shmangeni relativisht lehtë.
•  Programimi i strukturuar është ide e thjeshtë që është ende relevante: cilindo
program mund ta ndërtoni nga kombinimi i sekuencave (vargjeve të urdhërave),
seleksioneve (zgjedhjeve të urdhërave), dhe iterimeve (përsëritjeve).
•  Minimizimi i kompleksitetit është çelës për shkruarjen e kodit të cilësisë së lartë. Kodi Komplet – pikat kryesore
16
 
V. PËRMIRËSIMET E KODIT
 
20. Peisazhi i cilësisë së softuerit
 
•  Cilësia është falas, në fund, por ajo kërkon rishpërndarje të resurseve ashtu që
defektet të parandalohen me çmim të lirë në vend se të rregullohen me çmim të
shtrenjtë.
•  Jo të gjitha qëllimet e sigurimit të cilësisë janë të arritshme njëkohësisht. Vendosni
në mënyrë eksplicite se cilat qëllime doni t'i arrini, dhe tregojani qëllimet njerëzve
tjerë në ekipin tuaj.
•  Asnjë teknikë individuale e gjetjes së defekteve nuk është efektive vetëm. Vetëm
testimi nuk është efektiv në heqjen e gabimeve. Programet e suksesshme të
sigurimit të cilësisë përdorin disa teknika të ndryshme për t'i detektuar llojet e
ndryshme të gabimeve.
•  Mund të zbatoni teknika efektive gjatë konstruksionit dhe shumë teknika po aq të
fuqishme para konstruksionit. Sa më herët që e gjeni defektin, aq më pak dëme do të
shkaktojë.
•  Sigurimi i cilësisë në arenën e softuerit është proces (process-oriented). Zhvilimi i
softuerit nuk ka fazë përsëritëse që ndikon në produktin final ashtu siç e ka prodhimi
i mallrave, prandaj cilësia e rezultatit kontrollohet nga procesi që përdoret për ta
zhvilluar softuerin.
 
   Kodi Komplet – pikat kryesore
17
 
21. Konstruksioni bashkëpunues
 
•  Praktikat e zhvillimit bashkëpunues kanë prirje të gjejnë përqindje më të lartë të
defekteve se sa testimi dhe t'i gjejnë ato në mënyrë më efikase.
•  Praktikat e zhvillimit bashkëpunues kanë prirje të gjejnë lloje tjera të gabimeve nga
ato që i gjen testimi, duke sjellë si rrjedhim se duhet t'i përdorni edhe rishikimet
edhe testimin për ta siguruar cilësinë e softuerit tuaj.
•  Inspektimet formale përdorin lista të kontrollit (checklists), parapërgatitje, role të
definuara mirë, dhe përmirësim të vazhdueshëm të procesit për ta maksimizuar
efikasitetin e detektimit të gabimeve. Ato kanë prirje të gjejnë më shumë defekte se
sa ecjet nëpër kod (walkthroughs).
•  Programimi në çift zakonisht kushton njëjtë sa inpektimet dhe prodhon kod të
ngjashëm cilësor. Programimi në çift është sidomos i vlefshëm kur kërkohet
zvogëlimi i afatit. Disa zhvillues më shumë preferojnë të punojnë në çifte se sa të
punojnë vetëm.
•  Inspektimet formale mund të përdoren në produktet e punës siç janë kërkesat,
dizajnet, dhe rastet e testimit si edhe në kod.
•  Ecjet nëpër kod dhe leximi i kodit janë alternativa të inspeksioneve. Leximi i kodit
ofron më shumë fleksibilitet në përdorimin e kohës së secilit person në mënyrë
efikase.
 
 
   Kodi Komplet – pikat kryesore
18
 
22. Testimi nga zhvilluesi
 
•  Testimi nga zhvilluesi është pjesë kryesore e strategjisë së plotë të testimit. Edhe
testimi i pavarur është i rëndësishëm por është jashtë shtrirjes së këtij libri.
•  Shkruarja e rasteve të testimit para kodit e merr sasinë e njëjtë të kohës dhe të
përpjekjeve sikurse edhe shkruarja e rasteve të testimit pas kodit, por i shkurton
ciklet “detektimi i defektit-rregullimi-korrektimi”.
•  Edhe duke i pasë në konsiderim llojet e shumta të testimit që janë në dispozicion,
testimi është vetëm një pjesë e programit të mirë cilësor softuerik. Metodat e
cilësisë së lartë të zhvillimit, duke i përfshirë minimizimin e defekteve në kërkesa dhe
në dizajn, janë të paktën po aq të rëndësishme. Praktikat e zhvillimit bashkëpunues
janë po ashtu të paktën po aq efektive në detektimin e gabimeve sa edhe testimi dhe
detektojnë lloje tjera të gabimeve.
•  Mund të gjeneroni shumë raste të testimit në mënyrë deterministike (të përcaktuar)
duke e përdorë testimin bazë, analizat e rrjedhës së shënimeve, analizat kufitare,
klasat e shënimeve të këqija, dhe klasat e shënimeve të mira. Mund të gjeneroni
raste tjera të testimit me hamendje të gabimeve (me të qëlluar).
•  Gabimet kanë prirje të grumbullohen në pak klasa dhe rutina të prirura për gabime.
Gjeje atë kod të prirur për gabime, ridizajnoje, dhe rishkruaje.
•  Shënimet e testimit kanë prirje të kenë dendësi më të lartë të gabimit se sa kodi që
testohet. Meqë kërkimi i gabimeve të tilla e harxhon kohën pa e përmirësuar kodin,
gabimet e shënimeve të testimit janë më të këqija se sa gabimet e programimit.
Shmangiuni atyre duke i zhvilluar testet tuaja në mënyrë po aq të kujdesshme sa
edhe kodin tuaj.
•  Testimi i automatizuar është i dobishëm në përgjithësi dhe esencial për testimin
prapavajtës (regression testing).
•  Në shteg të gjatë, mënyra më e mirë për ta përmirësuar procesin tuaj të testimit
është ta bëni të rregullt, ta matni, dhe ta përdorni atë që e mësoni për ta
përmirësuar atë.
 
 
   Kodi Komplet – pikat kryesore
19
 
23. Rregullimi i gabimeve (debugging)
 
•  Rregullimi i gabimeve është aspekt krejt-ose-asgjë i zhvillimit të softuerit. Qasja më e
mirë është të përdoren teknikat tjera të përshkruara në këtë libër për t'iu shmangur
defekteve në radhë të parë. Mirëpo, prapë ia vlen ta kaloni kohën në përmirësimin e
shkathtësive tuaja të rregullimit të gabimeve (insekteve), meqë dallimi ndërmjet
performansës së rregullimit të mirë të insekteve dhe atij të dobët është të paktën 10
me 1.
•  Një qasje sistematike në gjetjen dhe rregullimin e gabimeve është kritike për sukses.
Përqendrojeni rregullimin tuaj ashtu që secili test ju lëviz një hap përpara. Përdoreni
Metodën Shkencore të Rregullimit të Gabimeve.
•  Kuptojeni problemin rrënjësor para se ta rregulloni programin. Hamendjet e
rastësishme për burimet e gabimeve dhe ndreqjet e rastësishme do ta lënë
programin në gjendje më të keqe se sa kur keni filluar.
•  Caktoje alarmimin e kompajlerit tënd në nivelin më të përpiktë të mundshëm, dhe
rregulloji gabimet që i raporton ai. Është vështirë të rregullohen gabimet që nuk
vërehen lehtë nëse i injoroni gabimet e dukshme.
•  Veglat e rregullimit të gabimeve janë ndihma të fuqishme në zhvillimin e softuerit.
Gjeni ato dhe përdorni. Mbajeni në mend ta përdorni trurin tuaj në të njëjtën kohë.

Make a Free Website with Yola.