Software licensing architecture