There are several books available either in the market or in the Web addressing the fundamentals of object-oriented design using UML. More or less, almost all of them provide to the reader important concepts and principles on software design, a basic notation for learning the most used part of UML, some examples, and perhaps some complete case study. But finding a book on advanced topics concerning object-oriented design with UML is totally a different story. Obviously, what is the meaning of “advanced” depends by the context. In my experience, one of such advanced topics is the technique of Design for Testability (or DFT). This technique is very common in the integrated circuit industry and is aimed at adding certain testability features to a microelectronic hardware product design. The premise of the added features is that they make it easier to develop tests for the designed hardware. Nowadays, DFT is a standard in the microelectronic industry. By comparison, the complexity of modern large software systems can be orders of magnitude higher than that found in hardware systems. Nonetheless, surprisingly there are often no testability plans in software projects. Admitedly, DFT is not without any costs. Moreover, it addresses issues that are very relevant especially for complex, critical, and very large software systems. And, of course, it is not necessarily a “simple” technique to learn and to apply effectively. These are probably the reasons why there are few articles or books on the subject, especially in the context of model-driven development. I believe that this is both an “advanced” and an interesting software engineering topic to cover in this blog, so stay tuned.