David Lamb's Research

My current researh falls into the general area of software architecture and software design methodologies, focusing primarily on representations of design information, and aspects of architecture suitable for undergraduate education. I use the following definitions in my work:
A system
is a collection of parts, with relationships among the parts, that interacts with an environment across an interface.
A software system architecture
is a description of a system, at a suitable level of abstraction, using kinds of part and relationship defined by a particular view, along with a rationale for design choices made in developing the architecture.
A software development methodology
is an interrelated collection of methods for carrying out the various activities in software development. It may mandate some collection of views to document during design.
Many of the UML diagramming methods (such as class/association, deployment, activity, and interaction diagrams) define views for a variety of object-oriented development methodologies.

During 2021-22 I am working a few topics that may be suitable for CISC 499 or M.Sc. project students.

I am willing to discuss other related possibilities with prospective students.

Research History

This section summarizes my work from roughly 1971 to 1998. From 1999 to to 2014 I was on disability leave, and returned to work slowly from 2014 to 2018; I have been full-time since then. Thus the cited work is quite old.

My main research goal over my career has been to understand and improve software development processes, primarily at the level of modules, subsystems, and their interrelationships. The two main thrusts of this work were developing flexible means of representing and reasoning about designs, and designing tools for managing complex software construction processes.

Design Formalization

In studying designs, I generally used the Theory-Model Paradigm to formalize design rules for a variety of software design methods. This approach defines mathematical abstractions of design artifacts, their properties, and relationships; designs an information model for the design database; and encodes design rules in a machine-processable form. We have studied Jackson System Design, Buhr's Architectural Design, and modular imperative languages.

Ph.D. student Xiaobing Zhang[2] investigated several variations of object-oriented analysis and design, including Shlaer-Mellor, and Rumbaugh's OMT (a precuror to UML); she developed a formal comparison between the two, based on homomorphisms between designs done according to each method.. She developed a common basic theory, then defined additional axioms and properties for each method, thus giving a precise characterization of their similarities and differences.

A former M.Sc. student, Xiaobao Yu,[3] investigated incorporating design metrics into the Theory-Model framework; Joseph Abounader extended this work to object-oriented design metrics.

Other Formal Methods Work

I have previously done work on trace specifications. Ph.D. student Ayaz Isazadeh[1] developed ViewCharts, a variant of Statecharts for formal description of behavioural views.

Software Manufacture

In the software construction area, I studyied how to control the "software manufacture" process of generating software products from independently-developed subsystems. Many tools contain particular combinations of special-case techniques, which we aim to generalize and separate. Thus for example tools like make manage a single "depends" relation; a more flexible approach is their own relationships among software components Other issues for study are managing caches of generated objects; abstractions for composite manufacture steps; and tool descriptions. For the Software Carpentry contest in early 2000, I submitted a sketchy entry based on these ideas.

Some of the complexities of software manufacture arise from managing program component generators (PCGs): tools that generate portions of the system from specialized languages. I worked on a variety of PCGs in the past, and might return to this work in the future in the context of tools related to software architecture.


  1. Isazadeh, Ayaz. Behavioral Views for Software Requirements Engineering Ph.D. dissertation, Queen's University Department of Computing and Information Science, September 1996.
  2. Zhang, Xiaobing. A Rigorous Approach to the Comparison of Representational Aspects of Object-Oriented Analysis and Design Methods, Ph.D. dissertation, Queen's University Department of Computing and Information Science, August 1997.
  3. Yu, Xiaobao. Incorporating Metrics into Software Design M.Sc. dissertation, Queen's University Department of Computing and Information Science, August 1994.