Homayoun Dayani-Fard

Learn More
Large-scale legacy programs take long time to compile, thereby hampering productivity. This paper presents algorithms that reduce compilation time by analyzing syntactic dependencies in fine-grain program units, and by removing redundancies as well as false dependencies. These algorithms are combined with parallel compilation techniques (compiler farms,(More)
The development of large software systems involves a continual lengthy build process that may include preprocessing, compilation and linking of tens of thousands of source code files. In many cases, much of this build time is wasted because of false dependencies between implementation files and their respective header files. We present a graph algorithm and(More)
The build architecture of legacy C/C++ software systems, groups program files in directories to represent logical components. The interfaces of these components are loosely defined by a set of header files that are typically grouped in one common include directory. As legacy systems evolve, these interfaces decay, which contribute to an increase in the(More)
Software products have become an integral foundation of most businesses today. Most companies rely heavily on their database products, data mining , and other analysis tools to perform their day to day operations. Furthermore, the dynamic nature of businesses creates new requirements in terms of functionality, reliability, and performance (Lehman 1996). The(More)
Commercial software release management is primarily concerned with the timely release of the next version of a product. There are a number of objectives in any new release of software, including: implementation of new features, repair of known defects, and maintenance of the overall quality of the software to facilitate future evolution. Deciding on the(More)
There exists a gap between the design and implementation of hard real-time systems. During the design stage, few assumptions are made about the underlying execution environment; during the implementation stage, intimate knowledge of the underlying execution environment is required. To narrow this gap, we propose a phased approach to the design and(More)