Architecture Design: Module View

The Module View focuses on how functionality is mapped to implementation. This includes how the system uses the underlying software platform (OS). A naive way of creating a module view is to map each component and connector in the component model directly to a module (this may work for small projects).


Central Design Task

The central design tasks in creating the module view are based on the strategies from global analysis, experience with prior products and general software engineering knowledge. These tasks include:

  • Mapping conceptual elements from conceptual model to modules
  • Creating layers and assigning modules to layers
  • Determining the interface of the modules & layers

Modules and subsystems

A module can correspond with a single conceptual element; they can, however, aggregate a number of disparate conceptual components. They should be decomposed to the point when the responsibilities of each module are well understood. Note that supporting modules may be required which have no corresponding mapping in the conceptual view.
Subsystems usually correspond to higher level conceptual components.

Modules can only interact with each other through interfaces.


Layers organise modules into a hierarchy. When a module is assigned to a layer it can use any of the other modules in that layer. When a module usage crosses a layer, however, the interface required and provided by the modules must also be required and provided by the layers.
Layers are used to reduce complexity and provide independence between components.

Global evaluation

This involves deciding which source of information to use at a particular time (ie: conceptual view, strategies, experience & knowledge…). This may involve reviewing the global analysis and conceptual view stages of the design.

Final design task: Interfaces

Finally we describe the interfaces for each module and layer which have been identified. the interfaces required will be specified by the use-dependencies of modules-to-modules and layers-to-layers.

Identifying use dependencies

If a conceptual component provides a service to another component there is a dependency from the user to the provided service.
For each interaction between modules

  • An interface must be defined through which interaction occurs
  • One of the modules will provide it and the other will use it
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License