Microsoft Research had an interesting articale on empirical software engineering research. In particular the research of Nachi Nagappan
On the Software Development Process:
What makes a Successful Development Process?
- The Games Outcomes Project
- Cannot be summarized easily, but:
- "Our study found several surprises, including a complete lack of any correlations between factors that one would assume should have a large impact, such as team size, game genre, target platforms, the production methodology the team used, or any additional financial incentives the team was offered beyond individual performance compensation."
- "The actual secret sauce seems to be a culture that continually and deliberately cultivates and enables good teamwork, gives it all the support it needs to flourish, and carefully and diligently diagnoses it and fixes it when it begins to go astray."
- The research of Nachi Nagappan as summarized on Microsoft Research
- "The logical assumption would be that more code coverage results in higher-quality code. But what Nagappan and his colleagues saw was that, contrary to what is taught in academia, higher code coverage was not the best measure of post-release failures in the field."
- My hypothesis: Code coverage satisfies helps verify test coverage specifications are satisfied. EG: "This test will verify feature X" can be validated by verifying changes in test coverage.
- "What the research team found was that the TDD teams produced code that was 60 to 90 percent better in terms of defect density than non-TDD teams. They also discovered that TDD teams took longer to complete their projects—15 to 35 percent longer."
- "Software engineers who were able to make productive use of assertions in their code base tended to be well-trained and experienced"
- "Organizational metrics, which are not related to the code, can predict software failure-proneness with a precision and recall of 85 percent. "