Login | Register
My pages Projects Community openCollabNet

Project home

2020-04-07: This site is going to be decommissioned and shut down on 2020-07-01. Please copy and archive any data you wish to keep before that date.

If you were registered and logged in, you could join this project.

Summary Software Product Line for ArgoUML
Category design
License Eclipse Public License - v 1.0
Owner(s) linus

Adding GitHub info


ArgoUML-SPL is a project that aims to extract a SPL from the current ArgoUML codebase.

Software product lines (SPL) are basically a software development methodology that advocates that software should be designed and implemented by composing together particular features (or variabilities) with a pre-defined set of core components. The ultimate goal is to promote the generation of systems that meet the requirements of particular users, domains or environments.

Despite several research in this field, we have not many concrete and public examples of systems implemented according to SPL principles. For example, it is common to have systems that use preprocessor directives (e.g. #ifdef and #ifndef) to support low-level variabilities (such as different APIs or application specific configuration options), but not high-level features. On the other hand, there are attempts to implement end-users features using technologies such as AOP. However, such attempts are based on small and fairly simple systems.


Our ultimate goal is to deliver a version of ArgoUML where end-users can remove (or add) features from the system codebase.

At the moment, we have already modularized the following features:

  • Design Critics: "Simple agents that continuously execute in a background thread of control. They analyze the design as the designer is working and suggest possible improvements. These suggestions range from indications of syntax errors, to reminders to return to parts of the design that need finishing, to style guidelines, to the advice of expert designers."
  • State Diagrams: "State diagrams are used to describe the behavior of a system. State diagrams describe all of the possible states of an object as events occur. Each diagram usually represents objects of a single class and track the different states of its objects through the system."
  • Activity Diagrams: "Activity diagrams describe the workflow behavior of a system. Activity diagrams are similar to state diagrams because activities are the state of doing something. The diagrams describe the state of activities by showing the sequence of activities performed."
  • Sequence Diagrams: "Interaction diagrams model the behavior of use cases by describing the way groups of objects interact to complete the task. Sequence Diagram displays the time sequence of the objects participating in the interaction. This consists of the vertical dimension (time) and horizontal dimension (different objects)."
  • Use Case Diagrams: "A use case is a set of scenarios that describing an interaction between a user and a system. A use case diagram displays the relationship among actors and use cases. The two main components of a use case diagram are use cases and actors."
  • Collaboration Diagrams: "Collaboration diagrams are used to show how objects interact to perform the behavior of a particular use case, or a part of a use case. Along with sequence diagrams, collaborations are used by designers to define and clarify the roles of the objects that perform a particular flow of events of a use case. They are the primary source of information used to determining class responsibilities and interfaces."
  • Deployment Diagrams: "A deployment diagram models the run-time architecture of a system. It shows the configuration of the hardware elements (nodes) and shows how software elements and artifacts are mapped onto those nodes."
  • Logging: "The purpose of debug log and trace messages is to provide a mechanism that allows the developer to enable output of minor events focused on a specific problem area and to follow what is going on inside ArgoUML."

Feature Model

ArgoUML-SPL Feature Model

Feature Extraction Mechanism

At the moment, we are using pre-processor directives in order to modularize and delimit our feature's code. Currently, our implementation is based on the javapp pre-processor.

Examples of Products:

Academic paper

How can I collaborate?

Everybody is welcome to help with developing and testing ArgoUML-SPL.

The most up to date code it is now hosted on GitHub

Suggestions can be send through the Developers Mailing List or to Marcus Vinícius de Ávila Couto (ArgoUML-SPL project leader) through the form below.

Email Address:
Suggestions to ArgoUML-SPL: