Official GitHub Page:


NAM4J is a Java Middleware supporting the development of Networked Autonomic Machines.

The NAM framework allows the characterization of networks whose nodes are provided with pluggable functional modules and services. With respect to other modeling tools, NAM allows to specify the migration of functional modules and services among nodes. The NAM formalism can be used to semantically characterize and compare the elements of a self-*, highly dynamic distributed system.

The following figure illustrates the internal structure of a NAM. Funcitonal modules use resources and provide atomic services, that can be aggregated in order to provide composite services.

 Next figure illustrates a functional module that interact with its environment, that may include local modules and remote NAMs, but also anything outside than the NAM network (e.g. operators, end users, the weather, etc.). Interaction with the environment is based on two pillars: perception, that means context-awareness, and decision, which is the (policybased) ability to infer new context events, service calls, or output (to some users, or to a service request).

Based on these concepts, we are developing a formal method and a middleware (i.e., NAM4J).