Established in 2002 at the University of Calgary in Calgary, Alberta, Canada by Prof. Robert J. Walker, the Laboratory for Software Modification Research (LSMR) is an academic research laboratory investigating multiple facets of software change: software reuse, software evolution, software process, and recommendation systems for software engineering.

In LSMR we are interested in the evolutionary nature of software systems: how they are designed, how they are implemented, and how they are changed. This involves two key elements:

  1. The properties of real software systems, and

  2. The constraints of real people.

Research in the lab focuses on helping people make better software, through tool support, improved design and implementation techniques, and better means of planning for the future.

Students are a key product of LSMR: undergraduate, MSc, and PhD students have all successfully completed key projects here over the years. Industrial partnerships have been established to bring our expertise to bear on specific problems that our partners are struggling with. Academic collaborations on new topics or that build on our previous work are most welcome.

What is Software Change?

Software developers often need to make changes to existing software systems—to add new features, to support new environments, and to correct errors. Software change comes in many varieties.

Software evolution refers to the study and management of the changes to software systems over their life cycle, while software maintenance generally describes all changes made to a program after its release. Software reuse involves making use of software artifacts (source code, designs, or knowledge more generally) that have been previously constructed.  This might be done through pre-planned techniques of object-oriented extension, framework instantiation, or API usage; or it might be done through unanticipated means of copy-and-paste or refactor-then-reuse.

Reuse and evolution are closely related: they lie at the ends of a spectrum over the amount that is kept and the amount that is replaced.

The faculty and students at LSMR recognize the importance of software change tasks facing software developers. Software systems are continually increasing in size, scope, and complexity and the tasks needed  to support these changes are still poorly supported.

What is Research?

There are two ways of looking at research: trying to understand something, or trying to solve a problem.  These are not necessarily mutually exclusive approaches, but they do bring different perspectives to bear, and different ways of talking about what we do.

The word "research" generally means something different in industry and in academia.  Industrial research seeks a solution to a specific problem, while academic research usually seeks solutions to a class of problems.  As well, academic research involves finding solutions that no one knows about already.  Again, these two approaches overlap sometimes but not always.