traditional software applications