Software Engineering for Embedded Systems: Methods, Practical Techniques, and Applications