This book provides engineers and programmers with an introduction to the role of design in Software Engineering. The book evaluates popular design methods and compares their strengths and limitations in different applications. Emphasizing the role of design, the book provides an ideal tutorial for software engineers and programmers.