Design by contract via attributes