Modern Industrial Automation Software Design: Principles And Real World Applications