For those interested, I've made available a couple reports from a
class assignment where we analyzed the Django codebase, bug tracker,
and wiki.  The motivation of these reports was to answer questions
related to code size, modularity, complexity, unit test coverage, and
component quality.

Instead of attaching the roughly 3.5MB worth of PDF reports in an
email to the list, I've made the reports available on my website:
http://thegarywilson.com/blog/2012/software-metrics-django-case-study/

For the lazy, here are several points mentioned in the papers:
* Since 2005, slightly more than linear growth of source lines of code
(SLOC) and number of files, with a noticeably faster SLOC growth rate
in the last couple years.
* Project started with 11k SLOC in July 2005 and has grown to over 70k
SLOC in Nov. 2011.
* Almost half of the SLOC within Django reside in the contrib package.
* Growth rate of "complex" files (files with at least one function
with cyclomatic complexity greater than 10) has also been nearly
linear over time, but at a lesser rate than the SLOC growth rate.
* Average complexity of files (weighted by SLOC) peaked in 2008 and
has been in a declining trend since.
* 10 files contained at least one function with cyclomatic complexity
greater than 20.
* Percentage of functions and classes with docstrings peaked in May
2009 near 50% and has been declining since (to near 40% in Nov. 2011).
* Packages with the lowest percentage of classes/functions/methods
with docstrings include: templatetags, http, template, and db.
* 16000 tickets: 63% not categorized.  Of the remaining, categorized
tickets: 59% bug/defect, 17% new feature, 15% enhancement, 8%
cleanup/optimization, 1% task.
* Ticket resolution times: At one month after opening 35% of new
feature tickets are closed compared to 50-80% with other ticket types.
* Average defect repair time (i.e. time to ticket close) is 65 days
(though varies from 127 days for tickets categorized as normal to 31
days for tickets categorized as trivial).  In general, average repair
time has steadily decreased over the life of the project.
* The components with the most defects reported are, in order:
documentation, database layer, contrib.admin, and core, which in total
account for almost 60% of all reported defects.
* If taken in aggregate, defects reported for apps in the contrib
package account for about 25% of all defect reports.
* 13% of all tickets submitted have been marked as duplicates.
* When normalized by size (defects per SLOC), core had the highest
defect density by far, followed by the database, forms, and templates
components.
* The most edited wiki page is the "DevelopersForHire" page.
* The wiki consists of 600 pages with an average of 0.26 attachments,
18.4 revisions, and 32512 characters.
* From 2007 to 2011, code coverage of the unit test suite more than
doubled, from 39% to 90%, with a large increase seen between the 0.96
and 1.0 releases.
* 59.3% of the non-zero-length modules had 95% or greater test suite
line coverage, and 40.3% had 100% coverage.

So, I think these reports show that there are some things Django is
doing well at (e.g. test coverage, avg. defect repair time
improvements, avg. complexity), and that there are some areas that
could be targeted for improvement (e.g. components with high defect
counts and densities, docstrings and source comments).

Thanks,
Gary

-- 
You received this message because you are subscribed to the Google Groups 
"Django developers" group.
To post to this group, send email to django-developers@googlegroups.com.
To unsubscribe from this group, send email to 
django-developers+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-developers?hl=en.

Reply via email to