Abstract
Abstract 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.
Highlights
This paper presents a comprehensive approach to describe, deploy and adapt component-based applications having dynamic non-functional requirements
CR-RIO supporting middleware follows an architectural pattern composed by a set of components, namely: one Global Contract Manager (GCM), and Local Contract Managers (LCMs), Contractors and quality of service (QoS) Agents
According to the values to be monitored, which were registered by a Contractor, a QoS Agent can issue an out-of-spec notification, which includes relevant resource-related information, allowing the respective Contractor to verify if a resource is no more available or if it does not meet the specification defined in the profile
Summary
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. The specification, setup and adaptation concerns associated to non-functional requirements are generally embedded in the application programming modules in an ad-hoc manner, mixed with the application’s specific code This lack of modularity hinders software evolution and code reuse, making difficult its verification and debugging. Non-functional requirements can be handled by reusable services provided by middleware infrastructures or native systems support This makes it feasible to design a software system based on its architectural description, which includes the functional components, the interactions among those components, and requirements regarding the behavior of system resources. Concluding the article, we comment on some related proposals and provide some conclusions
Talk to us
Join us for a 30 min session where you can share your feedback and ask us any queries you have
Disclaimer: All third-party content on this website/platform is and will remain the property of their respective owners and is provided on "as is" basis without any warranties, express or implied. Use of third-party content does not indicate any affiliation, sponsorship with or endorsement by them. Any references to third-party content is to identify the corresponding services and shall be considered fair use under The CopyrightLaw.