The paper presents the currently used techniques for the development of the automation control systems. It begins with the introduction of the concepts used in software engineering: software crisis, software disaster, and software life cycle. The subsequent chapters extend the latter by including the most popular software development models. Then, based on the V model, the role of verification and validation in the software and controller life cycle is presented, and the test techniques used in the controller validation are given. These test types include: software in the loop, processor in the loop, and controller in the loop. The last chapter describes the technique of designing automation systems based on the advanced mathematical models Model-Based Design.