La domanda è troppo generica: sono molteplici le conoscenze necessarie, e qualsiasi risposta in questa sede non può senz'altro fornire un'indicazione sufficiente e l'esperienza che serve per sviluppare un software di questa tipologia.