This text presents software engineering as an evolving discipline, and current practices are explained in the context of their initial goals and historical setting. The software process is one of problem solving, and the solutions must be expressed as formal models. This cohesive work provides a basic grounding in the process of software development and explains how a disciplined application of methods and tools can improve the quality and productivity...