Jim,
I use National Instruments LabVIEW for my software. It allows a non programmer like me to actually write complex code. lol
I use a DIO board to switch the relays on a couple of CIO-ERB48 (48 - 2 amp relay) boards.
I have several (currently 10) ancient (in computer age terms) Hewlett Packard hx-4700 wireless PDAs that I use for HA control and can control each zone from near the zone. This is especially useful when I want to check out the watering capability of each individual zone. (We use micro watering heads which don't always keep the same flow rate.)
Most irrigation systems are the "water the grass" type. To me, this is not the challenge I want to solve. My wife loves flowers so any one particular area may have three or four different zones. For example, it may have one zone for watering hanging plants (may need to water these a couple of times a day), a second zone could be ferns and hostas (which are shady plants and require MUCH less water - maybe two or three times a week), and a third zone could be perennials which may need water every other day. So, even though all these plants reside in close proximity, they each have different watering requirements. And since we water through the micro head technique, the water is only applied to the base of each plant.
Another thing that I wrote was a "Water Multiple Zones with One Button" idea. In my main program, I can select any or all zones from a list of the 96 zones. In the event the weather is extraordinarily hot and/or dry (like we've had this summer) I can choose a button on the PDA called "Force All Zones On" and it will sequentially step through the selected zones and irrigates based on the main program preset time interval for that zone.