The IDAR Method of Software Design