testing open programs cost customer good requirements domain user source important business code developers computer needed tests employees customers data instance management number education work development person process applications type support systems solution project specific create operating programmers practices java needs time design projects programming program developer option company application content name product language