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