How software is created