Implement a software PID for the first time in real time software, I can find P what about I and D?
Once you get the basics covered (Jason has covered this pretty well), you will also want to research Integral Windup and filtering of the error signal and its estimated derivative.  The former is very important if your control point changes discontinuously (i.e. you don't have a separate controller 'ramping' the control signal for your PID.)  The latter is important in the presence of real-world sensor noise, in order to avoid instability.  Many sensors can introduce large noise 'spikes' that can greatly perturb a control system without filtering.

Many physical systems also exhibit resonance effects that can lead to run-away oscillations (the Tacoma Narrows Bridge is the classic example of how bad this can get.)  A feedback system can exacerbate these effects, so an important part of 'tuning' your PID is characterizing its stability at the various feedback and control signal frequencies you will encounter.  This is another area where filtering of the feedback signal is helpful; in particular, notch filters at 60Hz are common for systems using AC power in the US.  In practice, the resonances are application-specific, so most controller manufacturers supply a general toolkit of filters that can used and then leave it up to the process engineers to configure them appropriately for their application.

Next steps after you've covered stability:


'Ramping' the control signal by applying constraints on its rate of change.  For motion systems, this typically involves limiting velocity and acceleration.  This makes the job of the PID easier, as the control signal is moving more 'smoothly'.  It also generally results in a smoother output signal for your actuator, which can be important, since most actuators have practical limits on their ability to respond to rapid changes in their control signal.
Adjusting the feedback/control signals outside the PID to get the best response from your particular system.  For instance, there may be known hysteresis effects in the actuator or sensor that you want to correct for.


All that said, there's a reason why most integrators buy off-the-shelf controllers for the devices they're integrating.  Control systems are complicated and there are a lot of proprietary tricks that vendors have developed over the years to get the best performance out of their particular components.  It's still valuable to understand these systems to get the best results from them, but there is more going on here than you may realize.