A root cause is a source of a defect such that if it is removed, the defect is subsequently decreased or removed. By analyzing the root causes of defects of our software projects, we will be able to determine the weaknesses of our software development teams. We could thus decide on how much effort to be invested on specific actions to improve the weaknesses of the teams. In this paper, we first described how defects were objectively collected during project development. Second, the root causes were defined and categorized into six groups. Then we focused on analyzing defects to find out their root causes. Based on statistical results, the weaknesses of the project teams were determined. The results showed that the disturbing defects in our projects were mainly injected in the design phase, especially in the detail design phase. Moreover, we should invest considerable effort on enhancing our detail design skills, such as designing components, algorithms and interfaces, and so on. Some ...