Domain driven design (DDD): что это, особенности подхода, составляющие