The increasing demand for systems which are 'right first time' makes enormous demands on the analytical abilities of system designers. Despite these growing demands, there are relatively few rigorous analytic techniques which help the designer to routinely construct solutions to complex problems. This paper investigates how some of the mathematical techniques developed for computer science applications can be developed to provide assistance in this area.