Active complexity management is an unavoidable process element in many projects nowadays because the complexity of our technical environment has continuously increased over time, with a dramatic rise within the last two decades. We are building ever more complex systems which poses high demands on the skills of system designers, project managers, and developers.
What is system complexity? One definition is considering
- The number of objects
- The number of object types or classes
- The number of associations between objects
The more objects, the more object types, and the more the objects are relating to each other the higher is the systems complexity. How can we reduce and manage complexity? Here are some old fashioned recipes.
This is probably the oldest and most effective approach to manage large systems and keep complexity low. You create layers, and each object of a layer is related to between 3 and 12 objects on the layer below and exactly one object on the layer above. With seven layers you can already handle systems with 200.000 objects, and no object is connected to more than 13 other objects.
This method is similar to hierarchy, but less strict and less potent. It says that objects on one layer can only relate to objects in the layer above and below. There must not be any relation bridging one or more layers.
Clustering means organizing objects that are heavily interconnected in groups or clusters, providing strong cohesion. Coupling between clusters must be loose, with only a few associations between them.
In many cases you are interested just in some parts of a system and not all of it. Creating views that filter out all parts you like to disregard helps you to obtain less complex presentations of the system.
Complexity Management in Allegra
The Allegra task management permits you to organize all managed items, projects, and workspaces hierarchically which is a great help towards complexity management. You can nest items and workspaces to arbitrary depth. For example, a project could be composed of three sub-projects for software, hardware, and mechanical development. The software sub-project could be further split up into sub-sub-projects for the firmware, application logic, and diagnostic support development.
Allegra permits to cluster project or workspace configurations into workspace types. This permits to keep configurations centralized and significantly reduces the amount of configuration work.
Allegra permits you to create views based on filters. Such filters can be saved and can have parameters that are queried during runtime. Filters can even be associated with presentation types, like an agile board or a Gantt diagram.
All this is a tremendous help when you have to manage large, complex systems and projects.