crossminer / scava

https://eclipse.org/scava/
Eclipse Public License 2.0
18 stars 13 forks source link

explain what means COCOMO (and fix description/doc) #421

Open mhow2 opened 4 years ago

mhow2 commented 4 years ago

@tdegueul , could you provide something that would help to understand this factoid ? image

I can't find anything in the documentation

tdegueul commented 4 years ago

COCOMO is a software cost estimation model (cf. COCOMO). We implemented a simplified version of COCOMO that computes the estimated person-year it took to develop the analyzed project. We use the following formula, where ai = 3.0 and bi = 1.12; that is, we evaluate all projects as semi-detached projects):

There was a bug in the current implementation of COCOMO that produced non-sensical results (as in your screenshot). I fixed it in 92d1e97b14a9cc69e7abb1664ae2a681becc01be.

creat89 commented 4 years ago

Hello @tdegueul,

I was checking your commit 92d1e97b14a9cc69e7abb1664ae2a681becc01be by curiosity, and I found funny the fact that the description of the factoid is COCOMO is crazy along with the comment this method will be removed in a later version. Well, I'm afraid to tell you that that method hasn't been removed, in fact it is used in the platform. Here is the proof :P

image

mhow2 commented 4 years ago

Thanks for the explanation @tdegueul . As stated by @creat89 that would be useful to update the description and possibly the metric documentation.

MarcioMateus commented 4 years ago

@tdegueul , thank you very much for this improvement! Now it makes a lot more sense.

However, since most of our libraries are quiet small, the majority of them are evaluated with 0 years. By looking into the code, it seems that both the kloc and years variables are defined as int and storing the results of integer divisions. I think it would make sense to have decimal values like 0.8 or 4.2 person-years, so they should be of float type.

Maybe we can also express the result in "person-months" instead of only "person-years".

What do you (all) think?