software piping design