Skip to content


  • Open Access

A contract-based approach to describe and deploy non-functional adaptations in software architectures

  • Orlando Loques1,
  • Alexandre Sztajnberg2,
  • Romulo Curty1 and
  • Sidney Ansaloni1
Journal of the Brazilian Computer Society10:BF03192350


This paper presents a comprehensive approach to describe, deploy and adapt component-based applications having dynamic non-functional requirements. The approach is centered on high-level contracts associated to architectural descriptions, which allow the non-functional requirements to be handled separately during the system, design process. This helps to achieve separation of concerns facilitating the reuse of modules that implement the application in other systems. Besides specifying non-functional requirements, contracts are used at runtime to guide configuration adaptations required to enforce these requirements. The infrastructure required to manage the contracts follows an architectural pattern, which can be directly mapped to specific components included in a supporting reflective middleware. This allows designers to write a contract and to follow standard recipes to insert the extra code required to its enforcement in the supporting middleware.


contractsnon-functional requirementssoftware architecturesdynamic configuration adaptationseparation of concernsmiddleware