real life - if u watch on tv, a grad assistant / dobo / sometimes even a manager stands at the scorer's table during stoppage of play, and writes on a whiteboard the players coming into the game. They then match up (or give the board to a coach who does it) their own guys, just before play starts. They show the board to the players as they leave the huddle, or late in the huddle.
My son does this for his college these days, so I get to hear the logic behind the matchups, who guards who, how it gets screwed up, how it works, etc, somewhat interesting, not all that scientific, head coach at his school does not want to get involved with that at all, if he does get involved, it is not a good time for anyone on the bench within range of him.
Overall, the problem with HD vs real life, is real life, PG's usually plays offensive PG near 100%, and centers normally play offensive C near all the time, defensively, things can move around, and do move around all over the place, literally, my son's defensive stopper may guard 4 or 5 different guys in a game, even if they are playing an all horizon league pg ... this occurs for numerous reasons .... the only thing I could say I would do if I programmed this game, is eliminate the notion of DT, and add a notion of priority, which would allow the most attention to be given to player A, the least to player Z, I can picture how to program this in a HD context, would allow for more strategy, and would be realistic .... game planning would really matter then!