Department of Electrical and Computer Engineering

Tien N. Nguyen, Associate Professor


Home

Research

Teaching

Students

Biography

Research Statements

Software reuse is a common practice for developers during software development to save time and efforts. Software reuse could be in different development activities and at different abstraction levels such as the reuse of implementation code, software libraries, application programming interfaces (APIs), frameworks (e.g. Eclipse, Visual Studio), or more complex: the reuse of algorithms, protocols, or specifications, etc. Such reuse creates the software artifacts that contain similar portions, for example, with similar code (often referred to as code clones), similar algorithms/protocols/specifications, similar API usages (e.g. usage or programming patterns), similar designs (e.g. design patterns), similar concerns (e.g. aspects), or similar requirements. Similar/reused artifacts often require consistent changes because they evolve in a similar manner (e.g. a similar bug fix could be derived for buggy code that similarly misuses the same software library as others, etc). Moreover, similar/reused artifacts require similar treatments, causing the creation or updating of other similar artifacts at different development phases. My research focuses on automated methods to detect such software similarity and leverage such knowledge in providing automatic supports and recommendations for related development tasks. The departure point with existing code clones research is that such software similarity is at higher levels of abstraction.

Software artifacts constantly evolve during the software lifecycle. Software evolution has been creating many challenging issues in software management. The maintenance and evolution of software typically accounts for more than 70% of the total efforts in software development. Especially, one of great challenges is the tasks of managing software changes and maintaining the integrity and consistency among software artifacts produced by developers during various phases of software lifecycle. My research focuses on how to automate those software development tasks to cope with software evolution and to improve developers' productivity and software quality.


Tien N. Nguyen (2005), tien@iastate.edu