Piggy-back Function and independent Module?

Hi there!
As you know, Piggy-back Funciton and independent Module are 2 ways for build function in Asterisk.
Any one knows exactly:
What situation we should build an independent module?
what situation we should build a piggy-back function?
Thx alot