How it would be possible to approximately estimate time of re-implementing the same application in Rails while already having one implemented in ASP.NET MVC (reason - is another topic, please let's not touch it here).
I am looking for some kind of metrics mapping or something that could possibly provide a rough estimation of time required.
Some details about the current ASP.NET MVC2 (.NET 4) project:
Project Metrics
- Maintainability Index - 85.4 (out of 100)
- Test coverage ~ 80%
- Depth of Inheritance - 1.9
- Class Coupling - 5.5
- Lines of Code - 17859 (9804 excluding tests)
Aprox. number of
- views ~ 200
- custom JavaScripts files ~ 20
- cstom CSS files ~ 20
3rd parties
- Payment processing
- Gespatial (in MSSQL 2008)
- Google Maps Geocoding
- ABRXMLSearch (Australian ABN Lookup service)
- AWS S3
Deployments
- staging
- production
- demo
What I would like to see is approximate number of man-hours required to implement the same system, by the same developers (gurus in .NET, but junior-middle level in Rails).
This project was implemented approximately within 2450 man-hrs.
UPDATE (more about 开发者_如何学运维project): Cannot tell a lot about it (you know, all those NDAs), so I'll have to generalise. It is a B2B app that allows to interact between 2 parties (provider - consumer like system). Consumer can 'share' the stuff provider gives to him with other consumers (but the should not know about that). There are number of "legal" processes that need to be followed. There are number of many-to-many allocations with embedded search and different rules related to them when consumer is searching. Sorry for such a "general" explanation, but that's only how far I can go.
What would be a possible formula to estimate this number for a Rail project.
UPDATE: According to comments, other non-formal ways will be better than a mathematical estimation based on a formula (so removing the formula from question).
How would it be possible to make an estimation about re-implementing the project in Rails?
Thanks.
I would strongly advise against trying to calculate an estimate with a formula like the one that you are providing or any other formula for that matter!
Rather than plain guessing (and make it look like "accurate math") my recommendation would be to pick one small module and rewrite it in Ruby and see how the team does. Use past-performance (history) as you guidance rather than hope and hearsay.
Given that the system was written by "gurus in .NET, but junior-middle level in Rails" I could almost guarantee that it will take you longer (perhaps much longer) to rewrite it in Ruby.
I would change this:
k - correlation between development speed in .NET and Rails (~ 0.5)
To ~ this:
k - correlation between development speed in .NET and Rails (~ 1.5)
Not because Asp.Net > Rails, but because team is not familiar with it. Seems more realistic to me.
I'm in kind a similar position as a developer - feeling quite comfortable on asp.net mvc and learning simultaneously rails. No way I could work faster on RoR at the moment...
Just my 2 cents...
Reading code is harder than writing code. I suspect it will take longer than you think, and probably longer than the original implementation.
The correlation of development between Ruby and .NET (.5) is interesting. Where did this come from? I presume you're pretty familiar with Ruby given you think its twice as fast to develop in as .NET, and you've only put 80 hours down for learning Ruby.
I don't have a formula for this, because any formula you use will be inaccurate and a best guess.
I would rather estimate the project the same way you estimate normal projects. Rather than trying to compare the original development time to come up with an answer, actually estimate how long it will take to implement the project in Ruby (forgetting that you've already done it).
Check out this article for more in-depth discussion about why re-writing from the ground up, even in the same language, is almost always a bad idea:
http://www.joelonsoftware.com/articles/fog0000000069.html
精彩评论