The book considers system design in the entirety of all its interrelated factors. The focus is on conceptual, methodological and technological aspects. However, many other related issues are considered too, such as organization and structure of the development process, creation of development team and organization of its work. Each of these issues is covered in detail. The author presents an unbiased analysis of pros and cons of different approaches to system design, as well as his own conceptual vision of the discipline, a result of many years of software project development in high-tech and financial industries. The material is enhanced by examples, figures, diagrams and code excerpts. The content is accessible to a very wide audience. Even the unprepared reader can find a large part of the material useful and interesting, especially the conceptual content that can be easily transferred "across the border" to other disciplines. Specialists working in the software industry as well as those who teach or study related subjects in an academic environment will find this book highly informative and thought provoking. It is especially recommended for system designers, advanced level programmers, engineers, project leaders and managers.