Timothy Lethbridge

Timothy Lethbridge
University of Ottawa · School of Electrical Engineering and Computer Science

Ph.D. Computer Science, P.Eng.

About

208
Publications
83,270
Reads
How we measure 'reads'
A 'read' is counted each time someone views a publication summary (such as the title, abstract, and list of authors), clicks on a figure, or views or downloads the full-text. Learn more
5,611
Citations
Introduction
I have researched software engineering and knowledge engineering tools since 1989, most notably with the Umple technology, plus tools for searching and browsing information spaces. I have contributed to software engineering education and professionalism through my textbook, my work on IEEE/ACM SE2004, being chair of the Computer Science Accreditation Council, and leading development of the Core Body of Knowledge (CBOK) for CIPS. I teach software usability and introductory software engineering.
Additional affiliations
September 2007 - present
University of Ottawa
Position
  • Development of the Umple Model-Oriented Programming Technology
Description
  • Umple allows modelling in Java, PHP and other source code. Umple is open source and has code generation for class diagrams and state machines. It has been supported by IBM, and through related research projects.
September 1996 - May 2002
University of Ottawa
Position
  • Knowledge Based Reverse Engineering - CSER Project
Description
  • Developed TkSEE tool for exploring software. Conducted numerous empirical studies. Developed new clustering techniques.
Education
May 1989 - July 1994
University of Ottawa
Field of study
  • Computer Science (Knowledge Management)
September 1985 - April 1987
University of New Brunswick
Field of study
  • Computer Science

Publications

Publications (208)
Preprint
Full-text available
Architectural reconstruction is a reverse engineering activity aiming at recovering the missing decisions on a system. It can help identify the components, within a legacy software application, according to the application's architectural pattern. It is useful to identify architectural technical debt. We are interested in identifying layers within...
Article
Full-text available
Umple is an open-source software modeling tool and compiler. It incorporates textual language constructs for UML modeling, including associations and state machines. It includes traits, aspects, and mixins for separation of concerns. It supports embedding methods written in many object-oriented languages, enabling it to generate complete multilingu...
Chapter
Umple is a technology designed to provide the benefits of model-driven engineering in a usable way. It is a textual modeling language, allowing agile developers to quickly incorporate state machines, associations, and many other modeling features into their codebase, with comprehensive code generation for multiple target languages. This significant...
Chapter
We describe the text-emission templating capabilities of Umple (Umple-TL) and compare this Umple feature to other technologies for text generation. Umple, which is written in itself, combines modeling synergistically with programming in languages like Java and C++. Umple-TL further builds on these synergies. With the use of Umple-TL, we eliminated...
Article
Umple is an open-source programming technology developed almost entirely by students, the majority of whom were working on it as their capstone project through a program called UCOSP. We describe our development process for Umple that has provided a rich educational experience for the students, while at the same time continually improving Umple’s q...
Article
Full-text available
Modeling is a key concept in software engineering education, since students need to learn it in order to be able to produce large-scale and reliable software. Quality tools are needed to support modeling in education, but existing tools vary considerably both in their features and in their strengths and weaknesses. The objective of the research pre...
Conference Paper
Assurance cases are a well-established structured technique used to document a reasoned, auditable argument supporting that a system meets desirable properties (e.g., safety or security). Assurance cases are increasingly becoming popular, and are being used to make safety and cyber-security arguments about medical, automotive and aviation systems....
Chapter
Models of the composite structure of a software system describe its components, how they are connected or contain each other, and how they communicate using ports and connectors. Although composite structure is one of the UML diagram types, it tends to be complex to use, or requires particular library support, or suffers from weak code generation,...
Chapter
We describe the synergies gained by enabling variants for product lines, or features, to be modeled in the same master syntax as design models (class diagrams, state diagrams, composite structure) and traditional source code. Our approach, using a construct we call mixsets, facilitates better analysis, documentation generation, diagram generation,...
Conference Paper
Full-text available
We present the results of a survey of 228 software practitioners conducted on two phases ten years apart. The goal of the study is to uncover trends in the practice of software design and the adoption patterns of modeling languages such as UML. The first phase was conducted in April-December 2007 and included 113 responses. The second phase was con...
Conference Paper
Engagement has been shown to contribute to students' success. We used an NSSE-like survey and interviews to examine engagement of students registered in software engineering and information system engineering at Ben Gurion University of the Negev (BGU). The survey showed BGU students had generally lower engagement in comparison to US students excep...
Article
In this paper, we present an approach to formally encode state machines expressed in Umple for symbolic verification. We illustrate this with a real-world modeling example that encodes and analyzes and-cross transitions. This paper discusses a formal description of our approach to represent state machine systems under analysis (SSUAs); a systematic...
Conference Paper
Full-text available
UML standards lack systematic solutions that can handle concurrency and time constructs in a single unified notation. In this paper, we integrate concurrency as a part of Umple, a combined modelling and programming language. Our extensions can help ease component-based development of real-time, distributed, and embedded applications. The work, whic...
Conference Paper
Full-text available
Modelling tools provide weak or no support for the rich semantics of composite structure, such as enforcing connection constraints and maintaining referential integrity. Tools that generate code from composite structure typically depend on excessive and complex internal class representations such as Actor or BasePort. In this paper, we present easy...
Article
Full-text available
Traits, as sets of behaviors, can provide a good mechanism for reusability. However, they are limited in important ways and are not present in widely used programming and modeling languages and hence are not readily available for use by mainstream developers. In this paper, we add UML associations and other modeling concepts to traits and apply the...
Article
Full-text available
Management, measurement, and visualization of graduate attributes in a program can be complex and challenging. At the University of Ottawa, we have developed a Graduate Attribute Information Analysis system (GAIA) to support performance management of graduate attributes. It simplifies data collection and improves visualization of results with histo...
Conference Paper
We discuss how Umple merges modeling and programming by adding modeling constructs to programming languages and vice-versa. Umple has what we call model-code duality; we show how it fulfills key attributes of being both a programming language and a modeling technology. Umple also has what we call text-diagram duality in that the model or code can b...
Conference Paper
Full-text available
We propose an approach to encode state diagrams with and-cross transitions. The notion of and-cross transitions is being rejected by researchers and practitioners in model-driven engineering community for reasons that include limited use-in-practice, unmanageable underlying complexity, and availability of alternative modeling solutions. In this pap...
Conference Paper
We present a fully automated technique to detect nondeterminism in state diagrams. Although nondeterminism is a tool often adopted by requirement engineers for specification of a system under development (SUD), it is normally undesirable in actual implementation. Discovering nondeterminism manually is infeasible for industrial-sized systems. Soluti...
Conference Paper
Management, measurement, and visualization of graduate attributes in a program can be complex and challenging. At the University of Ottawa, we have developed a Graduate Attribute Information Analysis system (GAIA) to support performance management of graduate attributes. It simplifies data collection and improves visualization of results with histo...
Conference Paper
Full-text available
Semiotic engineering is based upon the semiotic theory of Human-Computer Interaction (HCI), which focuses on communication between designers and users. Semiotic engineering tries to improve users’ interpretation through meta-communication and emphasizes that designers should play the role of legitimate interlocutors in interactive systems. On the o...
Conference Paper
Studies related to the analysis of psychophysiological responses have become increasingly relevant in HCI. However, the available tools lack systematic and extensive analyses that cover the complexity and asymmetry of psychophysiological sensors, and appropriately synchronize signals with user interactions. In this paper, we present a tool that ena...
Conference Paper
Full-text available
Component-based development enforces separation of concern to improve reusability and maintainability. In this paper, we show how we extended Umple (http://try.umple.org) to support component-based development. The development of components, ports, and connectors is enabled using easy-to-comprehend keywords. Development is supported in both textual...
Conference Paper
Full-text available
In a model-driven development (MDD) environment where most or all of the source code is generated from models, there is a lack of tools for model-level tracing, in which generated execution traces can be linked to model level constructs. This lack of tools might inhibit the use of MDD, since it forces modelers to do dynamic analysis at a lower leve...
Conference Paper
Full-text available
One of the main issues in software maintenance is the time and effort needed to understand software. Software documentation and models are often incomplete, outdated, or non-existent, in part because of the cost and effort involved in creating and continually updating them. In this paper, we describe an innovative technique for automatically extrac...
Conference Paper
Full-text available
Huge benefits are gained when Model Driven Engineering are adopted to develop software systems. However, it remains a challenge for software modelers to embrace the MDE approach. In this paper, we present Umple, a framework for Model Driven Development in Object-Oriented Systems that can be used to generate entire software systems (Model Driven For...
Article
Full-text available
Most goal-oriented modeling languages, including i∗, Tropos, KAOS and the Goal-oriented Requirement Language (GRL), offer a graphical syntax, sometimes accompanied by a textual interchange format (e.g., in XML). Graphical representations of goal models excel at supporting discussions and at visualizing analysis results. However, creating/modifying...
Conference Paper
Full-text available
Requirements tractability remains challenging, particularly in the prevalence of code centric approaches. Similarly, within the emerging model centric paradigm, requirements traceability is addressed only to a limited extent. To facilitate such traceability, we call for representing requirements as first class entities in the emerging paradigm of m...
Conference Paper
Full-text available
In this paper, we propose a solution based upon Umple for data transformation of Financial Informa-tion eXchange protocol (FIXML). The proposed solution includes syntactic and semantic analysis and automatic code generation. We discuss our solution based on development effort, modularity, complexity, accuracy, fault tolerance, and execution time fa...
Conference Paper
Full-text available
Umple is a model-oriented programming technology designed to teach modeling while at the same time being practical for industrial application. In this paper we discuss six principles we followed in order to ensure Umple can be effective as a learning resource: being highly usable, facilitating incremental learning, providing an experience of positi...
Conference Paper
Full-text available
Developers using model driven development (MDD) to develop systems lack the ability to specify traces that operate at the model level. This results in specification of traces at the generated code level. In this paper, we are proposing trace directives that operate at the model level to specify the tracing of UML attributes and state machines. Tr...
Conference Paper
Full-text available
UML modelling tools provide poor support for composite state machine code generation. Generated code is typically complex and large, especially for composite state machines. Existing approaches either do not handle this case at all or handle it by flattening the composite state machine into a simple one with a combinatorial explosion of states, an...
Chapter
Full-text available
Implementing UML attributes directly in an object-oriented language may not appear to be complex, since such languages already support member variables. The distinction arises when considering the differences between modelling a class and implementing it. In addition to representing attributes, member variables can also represent association ends a...
Chapter
Full-text available
UML classes involve three key elements: attributes, associations, and methods. Current object-oriented languages, like Java, do not provide a distinction between attributes and associations. Tools that generate code from associations currently provide little support for the rich semantics available to modellers such as enforcing multiplicity constr...
Article
Full-text available
Model Driven Architecture (MDA) advocates the use of models, rather than code, as the main development artifact. Yet model versioning and merging tools still lag in capabilities, ease of use and adoption relative to source code versioning and merging tools. This forces many teams to avoid model-based collaboration and concurrent model modifications...
Article
Full-text available
We demonstrate the Umple technology, which allows software developers to blend abstract models, including class-, state- and composite structure diagrams textually into their Java, C++ or PhP code. Umple is targeted at developers who prefer textual programming but also want additional abstractions in order to simplify their software and improve its...
Article
Full-text available
We analyze the current direction of UML Action Language development and provide a classification of the proposed action language structure and statements. We also present a functioning implementation of an action language and discuss our platform for experimenting with Action Language based systems. We propose a novel approach that adopts a bottom-...
Article
Full-text available
Test-Driven Development (TDD) is the practice of attempting to use the software you intend to write, before you write it. The premise is straightforward, but the specifics of applying it in different domains can be complex. In this paper, we provide aTDD approach for language development. The essence is to apply TDD at each of four levels of langua...
Conference Paper
Full-text available
It is widely accepted that modeling in software engineering increases productivity and results in better code quality. Yet, modeling adoption remains low. The open source community, in particular, remains almost entirely code centric. In this paper, we explore the reasons behind such limited adoption of modeling practices among open source develope...
Conference Paper
Full-text available
Model Driven Engineering proposes the use of models as the main development artifacts. This methodology involves generating code from models and then perhaps adding some details to the generated code. Frequently, it is required to also reverse-engineer code to generate models. Despite the wide acceptance of modeling benefits, the use of Model Drive...
Article
Full-text available
We discuss key properties that we have focused on when designing the Model-Oriented Programming language Umple and its support tools. Usability is key because we want to enable modellers to work rapidly, make fewer mistakes, and appreciate the benefits of modeling better. Completeness in code generation with respect to UML is important because most...
Article
Full-text available
An important decision that must be taken by anyone designing a course involving (object oriented software) modelling is what tool support, if any, to use. Options include picking an industrial strength modelling tool, using a tool specifically designed for educational use, or eschewing tool use altogether in favour of pencil and paper. The best ans...
Article
Full-text available
1 Many tools and approaches support the use of modeling abstractions in textual form. However, there have been few studies about whether textual models are as comprehensible as graphical models. We present an experiment investigating the understandability of three different notations: Systems modeled in UML, and the same systems in both Java and Um...
Conference Paper
In this research we are exploring how to perform incremental reverse engineering from Java to Umple, a process we call Umplification. Umple is a textual representation that blends modeling in UML with programming language code. It is designed to allow anything from pure textual modeling to almost-pure traditional programming with some modeling conc...
Conference Paper
Full-text available
In this research we are exploring how to inject tracing directives into a UML model rendered as text in an extension to the Umple language we call Model-Oriented Tracing Language (MOTL). We have so far implemented tracing of UML/Umple attributes and state machines and conducted a pilot usability study of the language. In this paper we outline the w...
Conference Paper
Full-text available
Modeling approaches are based on various paradigms, e.g., aspect-oriented, feature-oriented, object-oriented, and logic-based. Modeling approaches may cover requirements models to low-level design models, are developed for various purposes, use various means of composition, and thus are difficult to compare. However, such comparisons are critical t...
Article
Full-text available
The emergence of model-driven software development brings new opportunities and challenges for rapid prototyping. On the one hand, the modeling process is inherently abstract, removing the prototyper from details, and letting him or her focus on exploring design alternatives for various aspects of the system. On the other hand, the most popular mod...
Article
Full-text available
Research prototypes typically lack the level of quality and readiness required for industrial deployment. Hence, conducting realistic experimentation with professional users that reflect real life tasks is challenging. Experimentation with toy examples and tasks suffer from significant threats to external validity. Consequently, results from such e...
Article
Full-text available
Understanding the behavioural aspects of a software system can be made easier if efficient tool support is provided. Lately, there has been an increase in the number of tools for analysing execution traces. These tools, however, have different formats for representing execution traces, which hinders interoperability and limits reuse and sharing of...
Article
Full-text available
This article aims at reengineering of PDF-based complex documents, where specifications of the Object Management Group (OMG) are our initial targets. Our motivation is that such specifications are dense and intricate to use, and tend to have complicated structures. Our objective is therefore to create an approach that allows us to reengineer PDF-ba...
Article
Full-text available
Model-driven development of web applications relies on the definition of the mappings that transform high-level models to models of specific web platforms. Thus, the transformations are often platform-specific and may not be used for more than one platform. The current web, however, is a heterogeneous network of different technologies and it often...
Conference Paper
Full-text available
We show how a technology called Umple can be used to improve teaching UML and modeling. Umple allows UML to be viewed both textually and graphically, with updates to one view reflected in the other. It allows UML concepts to be added to programming languages, plus web-based code generation from UML to those languages. We have used Umple in student...
Conference Paper
In this paper, a model-driven approach for web development is presented. The approach contains two important elements that serve reusability: an abstract model and a set of transformations. Transformations act as the chaining feature of model-driven development (MDD); that is transformations add to the value of models by transforming them to those...
Conference Paper
Full-text available
Umple adds UML abstractions to base programming languages such as Java, PHP and Ruby. The resulting program can be seen as both model and code at the same time. Umplification is the process of converting a base language program to Umple by a series of refactorings. The result is a program semantically equivalent to the original, but which can be re...
Conference Paper
Full-text available
The emergence of model driven methodologies is bringing new challenges for software prototyping. Models tend to focus on the design of the system, and are less concerned with, or less able to, support prototype qualities like reuse, evolution, or weaving together independently designed parts. This paper presents a model-oriented prototyping tool ca...
Article
Full-text available
The analysis of execution traces has been shown to be useful in many software maintenance activities that require a certain understanding of the systems' behaviour. Traces, however, are extremely large, hence are difficult for humans to analyse without effective tools. These tools usually support some sort of trace abstraction techniques that can h...
Article
In this chapter we describe various techniques for studying and representing the work of software engineers1 (SEs) and using the results to develop requirements for software engineering tools.