UML Profile and Feature Model:
Modeling Non-Functional Aspects in Service Oriented Architecture

University of Massachusetts, Boston
Department of Computer Science
Distributed Software Systems Group

Led by Hiroshi Wada and Jun Suzuki.


News:

Jul., 2007: Ark.feature 1.0.0 released
Jul., 2007: A research paper is accepted at SCC 2007
Mar 01, 2007: Site Updated (Feature Modeling arrives!)
Jan 01, 2007: Ark 1.0.0 released


Executive Summary:

This project investigates and empirically evaluates two modeling techniques: Unified Modeling Language (UML) profile and feature modeling. The proposed UML profile is used to explicitly and graphically model and maintain non-functiona aspects (e.g., security and fault tolerance) of applications in Service Oriented Architecture (SOA), and allows developers to define the non-functional aspects without depending on any particular implementation technologies. The proposed feature model is used to model the constraints between non-functional aspects in SOA, and allows developers to enforce the constraints in their applications in an automatic and consistent manner. A supporting tool, called Ark, which generates application code (program code and deployment descriptors) according to a configuration (or instance) of the proposed feature model and a UML model defined with the proposed UML profile.

Project Details:

Objective:

One of the current key issues in large-scale distributed systems is to reuse (or repurpose) and integrate existing systems to build new applications in a cost effective manner. Service Oriented Architecture (SOA) addresses this issue by improving the reusability and maintainability of distributed systems. It is an architectural style to design applications in an implementation independent manner using two major abstract concepts: network services and connections between network services. Each service encapsulates the functions of a subsystem in an existing system and hides the subsystem's implementation details (e.g., programming languages and remoting middleware) from developers. Each connection defines how services are connected with each other and how messages are exchanged through the connection, and hides implementation details of the message exchanges (e.g., messaging protocols and message routing) from developers. Developers can reuse and combine services to build their applications without knowing the implementation details of services and connections.

In SOA, the non-functional aspects of services and connections (e.g. security and fault tolerance) should be defined separately from their functional aspects (i.e., business logic) because different applications use services and connections in different non-functional contexts. For example, an application may unicast messages to a service, and another may manycast messages to multiple replicas of the service to improve fault tolerance. Also, an application may use a service via reliable connection that guarantees message delivery when the service is hosted on an unreliable network (e.g., the Internet), and another application may use the service via connection that does not guarantee message delivery when the service is hosted on a reliable network (e.g., intranet). The separation between functional and non-functional aspects improves the reusability of services and connections. It also enables the two different aspects to evolve independently, and improves the ease of understanding application architectures. This contributes to higher maintainability of applications.

In order to maximize the reusability of services, a set of constraints (e.g., dependency and mutual exclusion constraints) between non-functional aspects tend to be complicated and hard to maintain because their granularity becomes fine and their number grows. Currently, those constraints are informally specified in natural languages, and developers need to ensure that their applications satisfy the constraints in manual and ad-hoc manners. It is not trivial to consistently validate and enforce non-functional constraints in large-scale applications because a large number of non-functional aspects and their combinations exist.

This project proposes a model-driven development (MDD) framework for non-functional aspects in SOA, through the notion of UML profile and feature modeling. The framework consists of (1) a feature model that defines the the non-functional constraints in SOA, (2) a Unified Modeling Language (UML) profile to visualize non-functional aspects, and (3) an MDD tool, called Ark, which generates application code (program code and deployment descriptors) according to a configuration (or instance) of the proposed feature model and a UML model defined with the proposed UML profile. The proposed UML profile allows application developers to graphically describe and maintain the non-functional aspects in SOA as UML diagrams (composite structure diagrams and class diagrams). Using the proposed UML profile, non-functional aspects can be modeled without depending on any particular implementation technologies. By modeling a non-functional aspect as a feature, the proposed framework allows developers to consistently validate non-functional constraints in service-oriented applications. The proposed MDD tool, called Ark, transforms implementation independent UML models into implementation specific application code using certain implementation technologies such as Enterprise Service Buses (ESBs), secure file transfer protocols and grid computing platforms.

Novelty:

Publications:


Distributed Software Systems Group
Department of Computer Science
University of Massachusetts, Boston