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)
Copyright and Moral Rights for the articles on this site are retained by the individual authors and/or other copyright owners. For more information on Open Research Online's data policy on reuse of materials please consult the policies page. Abstract. The build architecture of legacy C/C++ software systems, groups program files in directories to represent(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)