If you look at typical developer productivity, something like 5,000-10,000 lines of debugged tested system level code per developer man-year is about right. I know there are periods when my productivity is way higher than that, but I have informally kept track of how many lines of code I and the teams I’m on produced per year and have come to the conclusion those numbers are realistic. Even though a developer may crank our 1000 lines of new code one day, he may also then spend the next 3 days testing it, and a day in meetings, and a few days reading newsgroup messages. Don’t forget there are the bugs you spend 2 weeks on, and don’t find a fix for, so you get zero lines of code done for that 2 weeks. The average vs short burst productivity is often vastly different.
There are a number of papers on the Internet that look at developer productivity. I remember one analysis about a Cisco switch OS, and an analysis about Linux kernel development seems like good comparable projects for driver development.
I see the paper at http://www.sjm06.com/SJM%20ISSN1452-4864/7_1_2012_May_1_170/7_1_65-75.pdf has a bunch of references to development productivity.
Estimating 5-10 man-years for a production quality complex kernel driver that’s 50K lines of code is not unrealistic. If you translate this to dollars, one rule of thumb is $250K per developer man-year (salary/overhead/equipment/office space), so that could be a $2+ million project.
It’s possible in the OPs case, management had not planned on driver development costing $2 million (5 developers for 2 years), yet that’s what it may take to be competitive.
The interesting things about code development productivity is it tends to stay the same number of lines of code across different languages, which is why you get more functionally in a certain time in say C# than C. There are metrics about how “dense” different languages are, like C++ I believe is around twice the functional density as C.
For a while I’ve made rough estimates on project size by estimating how many lines of code I thought it would be, and then assuming 7K-10K lines per developer man-year (use an environment adjustment factor). The tricky part is finding some valid comparable project to estimate the lines of code, although you can often find things like open source or other sample projects that you decide are “similar” complexity, and you can easily measure their lines of code. Estimating also gets a lot harder when you have some existing code. I know of one project where it was like a man-year just to get the existing header files to compile. I sometimes make an estimate of new code plus modifying existing code, applying some adjustment factor (like 0.5) to the existing code. You can work with the existing code for a while and measure your progress to tune the adjustment factor. Adjustment factors can also be > 1.0, when it takes longer to modify existing code than it would take to write it from scratch. If you have to make existing code work on a new platform, without breaking it on another platform, adjustment factors > 1.0 happen.
Jan
-----Original Message-----
From: xxxxx@lists.osr.com [mailto:xxxxx@lists.osr.com] On Behalf Of xxxxx@gmail.com
Sent: Wednesday, June 4, 2014 7:56 AM
To: Windows System Software Devs Interest List
Subject: RE:[ntdev] Modify KMDOD sample for USB display
Marcel Ruedinger wrote:
- WDDM Hook driver as described above.
- WDDM virtual graphics adapter driver. Same
effort: ~10 man years.
You said your driver was 50,000 lines of code. Why would that take ten man years to develop?