300 likes | 492 Views
Kokybės užtikrinimo priemonės. Darius Kučinskas. Kodo kokybės užtikrinimo priemonės. Programinės įrangos kokybė Statinė analizė ir kodo metrikos Išeities kodo peržiūros (ang. code reviews) Apkrovos testavimas (ang. performance testing). PĮ kokybė ?. PĮ kokybė ?.
E N D
Kokybės užtikrinimo priemonės • Darius Kučinskas
Kodo kokybės užtikrinimo priemonės • Programinės įrangos kokybė • Statinė analizė ir kodo metrikos • Išeities kodo peržiūros (ang. code reviews) • Apkrovos testavimas (ang. performance testing)
PĮ kokybė? • Tai ką jūs pirmiausiai bandote sukurti kurdami programinę įrangą yra vertė (PĮ vartotojui) • Kokybė yra vienas iš vertės aspektų, taip pat kaip ir kaina, bei kiti faktoriai
Statinė analizė • PĮ kokybės užtikrinimo priemonė • Atliekama neįvykdant pačios programos • Vykdoma automatinių įrankių • Objektas programos išeities arba objektinis kodas • Sudėtingumas svyruoja nuo individualių sakinių nagrinėjimo iki viso kodo analizės
Statinė analizė • Rezultate gali nurodyti programavimo klaidas arba formaliais metodais matematiškai įrodyti tam tikras programos savybes (pvz., jos atitikimą specifikacijai) • PĮ metrikų rinkimas taip pat laikomas viena iš statinės analizės formų
Statinė analizė įrankiai • C# kompiliatorius (C#) • StyleCop (C#) • ReSharper (C#, JavaScript, HTML, CSS) • NCover • JSHint (JavaScript) • VisualStudio
C# kompiliatorius • Įjungti aukščiausią įspėjimų lygį (ang. warning level) • Įspėjimą traktuoti kaip klaidą (angl. treat warnings as errors) • Esant nors vienam įspėjimui, projektas turi nesikompiliuoti
StyleCop • Atviro kodo statinės analizės įrankis • Pagamintas Microsoft'o kompanijos • Galima parsisiųsti iš http://stylecop.codeplex.com svetainės • Analizuoja programos išeities kodą • Tikrina ar kodas atitinka rekomenduojamą programavimo stilių bei Microsoft NET Framework dizaino gaires
StyleCop • Taisyklės skirstomos į šias kategorijas: • Dokumentacija • Išdėstymas • Priežiūra (ang. Maintainability) • Pavadinimai (ang. Naming) • Skaitomumas (angl. Readability) • Savos sukurtos taisyklės
StyleCop • Taisyklės pritaikytos būtent mūsų organizacijai, gali skirtis projekto lygmenyje • Taisyklės saugomos centralizuotai, prieinamos kiekvienam programuotojui • Pažeidus taisyklę projektas nesikompiliuoja
ReSharper • Komercinis įrankis skirtas kodo pertvarkymui • Pagamintas JetBrains kompanijos • Integruotas į VisualStudio kaip išplėtimas • Palaiko C#, VB, JavaScript, CSS, HTML • Kodo taisyklių tikrinimas, rezultatai pateikiami klaidų, įspėjimų, pasiūlymų ir patarimų pavidalu • Automatizuotas klaidų taisymas ir kodo optimizavimas • Palaiko kodo pertvarkymą (angl. code refactoring)
ReSharper • Taisyklės pritaikytos būtent mūsų organizacijai, gali skirtis projekto lygmenyje • Taisyklės saugomos centralizuotai, prieinamos kiekvienam programuotojui • Pažeidus taisyklę projektas nesikompiliuoja
JSHint • Įrankis, skirtas aptikti klaidas ir galimas problemas JavaScript kode • Gali būti naudojamas siekiant užtikrinti programavimo konvencijų laikymosi • Taisyklės nustatomos vieno failo lygyje
NCover • Kodo padengimo įrankis skirtas .NET • Kodo padengimas yra priemonė, naudojama programinės įrangos testavime, nusakanti iki kokio laipsnio programos kodas yra ištestuotas
VisualStudio • Visi aukščiau paminėti įrankiai integruoti į programuotojo darbo aplinką (šiuo atveju į VisualStudio) • Integruotas kodo metrikų apskaičiavimo įrankis
Kodo metrikos - eilučių skaičius • Kodo eilučių skaičius - nurodo apytikslį kodo eilučių skaičių • Labai didelis eilučių skaičius galimai rodo, kad tipas ar metodas bando daryti per daug • Jis turėtų būti suskaidytas • Kitaip jį bus sunku palaikyti ir plėsti
Kodo metrikos – klasių susiejimas • Ang. Class Coupling • Apibrėžia klasių tarpusavio susiejimo lygį • Gero dizaino požymis yra mažas klasių susiejimo lygis • Didelis susiejimas reiškia, kad tokį kodą bus sunku palaikyti ir plėtoti
Kodo metrikos – paveldėjimo gylis • Rodo klasių apibrėžimų skaičių iki klasių hierarchijos šaknų • Kuo gilesnė hierarchija, tuo sunkiau gali būti suprasti, kur yra apibrėžti konkretūs metodai ir laukai • Didelis susiejimas reiškia, kad tokį kodą bus sunku palaikyti ir plėtoti
Kodo metrikos – ciklomatinis sudėtingumas • Ang. Cyclomatic Complexity • Priemonė apibrėžianti programos valdymo srauto struktūrinį sudėtingumą • Didelė reikšmė reiškia, kad bus sunku palaikyti ir plėtoti
Kodo metrikos – priežiūros indeksas • Ang. Maintainability Index • Programos palaikymo sudėtingumo indeksas
Programinės įrangos išeities kodo kokybės rodikliai stipriai koreliuoja su kodu dydžio (bent jau taip pat stipriai kaip ir su klaidų lygiu) • Iš kodo dydžio galima prognozuoti jo kokybę
Išeities kodo peržiūros • Ang. Code review • Kiekvienas baigtas projektas patenka į peržiūrą • Ar laikomasi organizacijos nustatytų programavimo konvencijų • Ar teisinga projekto struktūra • Ar teisingai parinkti sluoksniai • Ar naudojami teisingi dizaino šablonai (ang. design patterns)
Išeities kodo peržiūros • Ar yra unit testai • Ar yra duomenų bazės sukūrimo / atnaujinimo skriptai • Ar projaktas įtrauktas į nuolatinės integracijos aplinką • Programos kodas turi turėti atskiras šakas vįstymui / testavimui • Turi būti paruoštas bent minimalus aprašas
Apkrovos testavimas • Projektas neatiduodamas klientui neatlikus apkrovos testavimo
Apkrovos testavimas - įrankiai • Apache - Jmeter • Redgate - Performance Profiler • Chrome - Developer Tools • Firefox - Firebug
Apkrovos testavimas - Performance Profiler • Redgate - Performance Profiler