Software Engineering for Automotive Systems : Principles and Applications