Autonomic management of non-functional concerns in distributed & parallel application programming