I. Introduction
With the ever increasing size and complexity of software systems, software projects are required to be well-managed in order to achieve better quality and productivity so that they can stay competitive in the market. Furthermore, as the trends of technology change quickly and user demands for products are diversified, many organizations collaborate with distributed teams, utilize commercial off-the-shelf products (COTS), and even adopt open source software so as to develop and deploy quality products in time. As a result, large software systems that consist of a great number of components are typically developed, tested, and maintained by many people encompassing several organizations and sometimes located in geographically distributed places.