I went from being a 3.5 to a 4.0 about 3 years ago. It was a big jump in my game, but here are some of the things that I think helped me the most.
1. Working on consistency - A 4.0 will pick on your weak side all day. You have to be consistent enough on your weaker side to keep the ball in play and construct a point to your advantage. Maybe you don't hit a winner from the backhand, but you're not giving up easy points either. As a one-hander, the slice is still very relevant and handy - just learn to hit it deep with penetration, not floaty so it gets punished.
2. Develop a consistent top-spin/kicker second serve - I've gone from about 2 double faults a game to maybe 1-2 double faults in a set max. It took me a long time to get it right, but developing a good top-spin second serve helps me prevent giving away stupid points. A good top spin second serve lets me hit a decent second serve with confidence and got me out of dinking it in.
3. Work on approaching / putting away mid-court balls - this is where a lot of 3.5's get killed by pushers. They get that mid-court ball and commit an error (over-hit, put it into the net, push it back and get lobbed.) I've worked on angling these balls off, or approaching deep with pace or low-skidding slice and try to knock off the next volley.
4. Don't "just hit" - it's fun to hit, but it's much more effective if you use a drill or hit with a certain purpose. Also, using games like 21 or playing tie breakers can help simulate the pressures of match play.
5. Find a partner who is better than you and hit with often. I was lucky to find a few guys who were a lot better than I was, but willing to hit. I learned by watching and asking questions.
Ludacris: My chick bad! Tell me if you seen her. She always brings the racket like Venus and Serena!