Murat successfully defended this work on July 14, 2006, before his committee:
Dr. Ehat Ercanli-Dr. Can Isik-Dr. Marek Podgorny-Dr. Daniel J. Pease-Dr. James W. Fawcett (Advisor)
Electrical Engineering and Computer Science
Dr. Yildiray Yildirim (Chair) - School of Management
Data Flow During analysis and visualization of software system’s quality
Today, software is found in almost all systems, vehicles,
communication devices, medical equipments, and entertainment, for example. The
size and complexity of these systems has grown continuously over the last forty
years – the time span for modern computing. The latest release of the Windows
operating system, called Vista, is expected to be more than fifty million lines
of code, about 40% bigger than the previous version.
Some of the reasons for this are numerous feature demands and the need to support multiple platforms, and need for compatibility with legacy software and hardware. Each line of code, in these large systems, requires perhaps several technical decisions, often, but not always simple. The sheer volume of this decision making process is daunting. No single human can fully understand a system of high complexity. To help ameliorate this problem, systems are decomposed into subsystems, libraries, modules, and classes. Most of these components have interdependencies, in order to provide services, one to another. However, in systems of great size, the dependencies often become a dense web of relationships. It is exactly this problem on which we focus in this research.
We propose that static dependency structure is an important element to understand the state of large software system. We conduct various analyses using well-known existing open-source, commercial and expert developed projects, including our own projects to evaluate the overall effectiveness of our approaches. We detect structural problems in large software development projects, and present a structure metric to rank software files according to their risk contribution to the software system. Additionally, we present a model that indexes software components according to their potential for reuse. We design and conduct experiment to investigate the impact of change in one file on other files. Furthermore, we provide tools needed to support analysis, project visualization and monitoring. Finally, we investigate corrective procedures and simulate their application, monitoring improvements in observed defects.