[ stuparic @ 20.03.2009. 12:08 ] @
Nisam znao gde da postavim ovu temu, pa sam je ovde bucnuo. Molim moderatore da je premeste ako joj nadju mesto....


Ovako. Interesuje me oblast softverske metrike i njihova primena.

Treba znati da ova oblast je jedna od onih u informatici koja je daleko od standardizovanja, da treba jos mnogo da se uradi u njoj, da nam treba alata... A kao i svakoj nauci tako i informatici treba pouzdan i standardizovan nacin da se izmeri nesto (zamislite kako bi bilo kad bi svako merio po svom nahodjenu napon struje itako ga prosledjivao drugima u nekim sopstvenim jedinicama). Daleko od toga da se nije nigde odmako na ovoj tematici, postoje ranzni nacini da se softver izmeri.

Mozemo meriti softver po:

* broju linija koda(LOC)
* kolicini komentara
* broju praznih linija
* broju operatora i operanada
* broju paketa, klasa i metoda(u OO programiranju),
* Cyclomatic Complexity metrika (metrika koja meri broj razlicitih puteva kroz algoritam)
* Halstead Measure metrika (koja izracunava tezinske faktore na osnovu broja razlicitih i ukupnog broja ponavljanja operatora i operanada) i mnoge druge.

Zajednicko kod svih metrika je da nemozete dobiti punu sliku koriscenjem samo jedne od ovih metrika, tako da je pod obavazno koriscenje bar nekoliko, a povecanjem broja razlicitih metrika u upotrebi sticemo bolji uvid u kompleksnost koda i samim time bolje merimo...

Ja bar nisam uspeo da nadjem alat koji ce meriti na velikom broju jezika veliki broj metrika. A da je otvorenog koda, i da moze dobro posluziti u edukativne svrhe, a ne samo u radu velikih kompanija. Uglavnom su to pluginovi za IDE okruzenje nekog jezika (plugin za Eclipse http://metrics.sourceforge.net) ili autorski programi koji kostaju dosta novca i ograniceni su na C/C++/C# i Javu (http://msquaredtechnologies.com/).

Softverska metrika je samo po sebi Enterprise Oriented i smislena samo na velikim projektima(necemo meriti Cyclomatic Complexity na HelloWorld).



Nadam se da mozemo razmeniti iskustva na ovu temu i mozda se jos neko zainteresuje za ovaj pravac informatike.

Pozdrav...

[ bags @ 20.03.2009. 13:17 ] @
Ne znam u koju te svrhu ova tema zanima, da li poslovno ili za neki rad na faksu?

Sto se tice poslovne primene, puno se manje koristi nego sto se to trubi na faksu. :) Jedno odeljenje kod nas probno korisiti NDepend za C#.
Program meri najveci broj metrika koji sam ja video plus omogucava postavljanje raznich upita preko code query language-a.
Uglavnom njihov kod nije nesto brzi, ali u svakom slucaju puno je citljiviji i laksi za snalazenje nego pre bez NDependa.
Takodje oni sami tvrde da im je kod puno laksi za odrzavanje. Jedini je problem sto retko koja firma daje puno vreemna za refaktoring.

Za druge jezike nisam siguran da postoji ovako kvalitetno resenje. U svakom slucaju NDepend ima trial verziju pa mozes probati.

Edit:

Freeware univerzalni program za code metrics: http://www.campwoodsw.com/sourcemonitor.html .
[ stuparic @ 20.03.2009. 13:32 ] @
@bags
Interesuje me na akademskom nivou, treba da uradim nekakav seminarski za fakultet. takodje sam zainteresovan za ovu tematiku vec neko vreme.

Pogledao sam taj link, probacu kasnije kad budem imao vremena.



Slazem se da ceemo imati citkije progrme, ali ipak ja mislim da metrikom vise dobijas na polju ocene kvaliteta softvera, takodje dobijas i okvirnu vrednost($$$) datog proizvoda.
[ Goran Rakić @ 20.03.2009. 14:14 ] @
Developers are clever this way. Whatever you try to measure, they’ll find a way to maximize, and you’ll never quite get what you want.

http://www.joelonsoftware.com/items/2006/08/09.html
http://www.joelonsoftware.com/items/2006/11/10b.html
[ jablan @ 20.03.2009. 16:12 ] @
Citat:
Goran Rakić: Developers are clever this way. Whatever you try to measure, they’ll find a way to maximize, and you’ll never quite get what you want.

Što je najgore, maksimizacija metrike uvek rezultira gorim kôdom.

Možda zvuči patetično, ali najbolja softverska metrika je zadovoljstvo korisnika.
[ mmix @ 20.03.2009. 17:42 ] @
Citat:
jablan: Možda zvuči patetično, ali najbolja softverska metrika je zadovoljstvo korisnika.


Pa ako kazes ovo drugacije da je najbolja softverska metrika broj placenih racuna za softverske usluge, onda to nije pateticno a svodi se na zadovljstvo korisnika uslugom

[ jablan @ 20.03.2009. 19:23 ] @
Citat:
mmix: Pa ako kazes ovo drugacije da je najbolja softverska metrika broj placenih racuna za softverske usluge, onda to nije pateticno a svodi se na zadovljstvo korisnika uslugom

Bojim se da u zemljama poput Srbije ne postoji preterano velika korelacija između novca plaćenog za softver i zadovoljstva krajnjeg korisnika istim... Zadovoljan je obično onaj ko namešta tender...
[ bags @ 21.03.2009. 18:44 ] @
Naravno da svako preterivanje nije ok, ali neke osnovne stvari ipak se mogu meriti metrikama.

Ja cesto ne zelim da vidim neke druge krajnosti takodje, a nije da ih ne vidjam:
-klase od hiljadu redova
-metode sa 5 + parametra
-klase sa 20 i vise metoda
-metode sa vise od 80 redova
-low cohesion, high copuling :) pa kad treba nesto menjati polomis se sav

Ako su metrike smisljene u 99% podizu kvalitet koda.





[ jablan @ 24.03.2009. 09:36 ] @
Ah sorry, mislio sam da se misli na metriku produktivnosti programera. Ovo za kvalitet koda si potpuno u pravu.
[ stuparic @ 24.03.2009. 09:44 ] @

Slazem se da dobrom metrikom mozemo mnogo podici kvalitet a pre svega razumljivost softvera. Ali isto tako i lose metrike nam mogu dati puno pogresnih tragova... :)
Takodje koriscenje samo jedne metrike nece mnogo pomoci