Software construction process