Soft computing is playing an increasing role in the study of complex systems in science and engineering. There is a large spectrum of successful applications of soft computing in very different applications domains such as aerospace, communication, consumer appliances, electric power systems, process engineering, transportation, and manufacturing automation and robotics. It has taken a while to bring the early ideas of soft computing to an area and a discipline that seems to be more than appropriate for that. Here it is! This book studies SOFT computing in SOFTware engineering environment. The book is HARD in terms of its results. It covers a range of core topics from software engineering that are soft from its very nature: selection of components, software design, software reuse, software cost estimation and software processes. Soft computing differs from conventional (hard) computing in its ability to be tolerant of imprecision, uncertainty, partial truth, and approximation. The guiding principle of soft computing is: Exploit the tolerance for imprecision, uncertainty, partial truth, and approximation to achieve tractability, robustness and low solution cost. The role model for soft computing is the human mind. This seems to be a natural fit with software engineering, a human-based development activity based on sound engineering principles. A recent survey by researchers reveals that "Software Engineering research tends to be quite self-contained, not relying on other disciplines for its thinking".