Software Architecture for Correct Components Assembly