Architectural design of a distributed application with autonomic quality requirements