Florian Faust

Win, Mac and everything in between

  • Increase font size
  • Default font size
  • Decrease font size
Home Books
Books

This section covers all books I have read so far and I think are worth a recommendation. Almost all of them I would rate 5 of 5 stars.




Testing Object Oriented Systems

Testing Object Oriented Systems by Robert Binder

 

From the jacket text:

"More than ever, mission-critical and business-critical applications depend on object-oriented (OO) software. Testing techniques tailored to the unique challenges of OO technology are necessary to achieve high reliability and quality. Testing Object-Oriented Systems: Model, Patterns, and Tools is an authoritative guide to designing and automating test suites for OO applications.

This comprehensive book explains why testing must be model-based and provides in-depth coverage of techniques to develop testable models form state machines, combinational logic, and the Unified Modeling Language (UML). It introduces the test design pattern and presents 37 patterns that explain how to design responsibility-based test suites, how to tailor integration and regression testing for OO code, how to test reusable components and frameworks, and how to develop highly effective test suites from use cases.

Effective testing must be automated and must leverage object technology. The author describes how to design and code specification-based assertions to offset testability losses due to inheritance and polymorphism. Fifteen micro-patterns present oracle strategies -- paractical solutions for one of the hardest problems in test design. Seventeen design patterns explain how to automate your test suites with a coherent OO test harness framework.

The author provides thorough coverage of testing issues such as:

- The bug hazards of OO programming and differences from testing procedural code

- How to design responsibility-based tests for classes, clusters, and subsystems using class invariants, interface data flow models, hierarchic state machines, class associations, and scenario analysis

- How to support reuse by effective testing of abstract classes, generic classes, components, and frameworks

- How to choose an integration strategy that supports iterative and incremental development

- How to achieve comprehensive system testing with testable use cases

- How to choose a regressions test approach

- How to develop expected test results and evaluate the post-test state of an object

- How to automate testing with assertions, OO test drivers, stubs, and test frameworks

Real-World experience, world-class best practices, and the latest research in object-oriented testing are included."

 

Review

Well, buy it! Read It!

That book changed my view on testing completely. Also it made me aware that most guys if seen so far talking about testing have no clue what they are talking about or lacking to make their point clear. From what I have seen so far I would call it THE BOOK about testing and a must read for everyone involved in testing and an absolute must read for everyone who develops software. The new viewpoints you get from the book will not only improve your testing skills but also your general way of viewing systems. Rated 6 of 5 stars!

 

Last Updated on Sunday, 15 March 2009 14:24
 

Domain-Driven Design

Domain-Driven Design by Eric Evans

 

From the jacket text:

"The software development community widely acknowledges that domain modeling is central to software design. Through domain models, software developers are able to express rich functionaltiy and translate it into a software implementation that truly serves the needs of its users. But despite its obvious importance, there are few practical resources that explain how to incorporate effective domain modeling into the software development process.

Domain-Driven Design fills that need. This is not a book about specific technologies. It offers readers a systematic approach to learn domain-driven design, presenting an extensive set of design best practices, experience-based techniques, and fundamental principles that facilitate the development of software projects facing complex domains. Intertwining design and development practice, thsi book incorporates numerous examples based on actual projects to illustrate the application of domain-driven design to real-world software development.

Readers learn how to use a domain model to make a complex development effort more focused and dynamic. A core of best practices and standard patterns provides a commo language for the development team. A shift in emphasis -- refactoring not just the code but the model underlying the code -- in combinatin with the frequent iterations of Agile development lead to deeper insight into domains and enhanced communication between domain expert and programmer. Domain-Driven Design then builds on this foundation, and addresses modeling and design for complex systems and larger organizations.

Specific topics covered include:

- Getting all team members to speak the same language

- Connecting model and implementation more deeply

- Sharpening key distinctions in a model

- Managing the lifecycle of a domain object

- Writing domain code that is safe to combine in elaborate ways

- Making complex code obvious and predicatble

- Formulating a domain vision statement

- Distilling the core of a complex domain

- Digging out implicit concepts needed in the model

- Applying analysis patterns

- Relating design patterns to the model

- Maintaining model integrity in a large system

- Dealing with coexisting models on the same project

- Organizing systems with large-scale structures

- Recognizing and responding to modeling breakthroughs

With this book in hand, object-oriented developers, system analysts, and designers will have the guidance they need to organize and focus their work, create rich and useful domain models, and leverage those models into quality, long-lasting software implementations."

 

Review

First of all, a MUST READ. Even if you don't want to or can't use DDD on your projects I think it helps a lot to improve your modeling skills. I read the book in 2007 and it was THE book that year.

Evans takes you on a journey from the smallest modeling parts (entities, value objects, ...) to the big ones (Evolving order, Responsibility layer, …) and to use best practices/patterns to distill your core model and gain deeper insights. The chapters start with a mind map about the concepts and their relations, then you will be guided step by step to understand these concepts and how they connect to each other.

 

 

Last Updated on Wednesday, 04 March 2009 19:27
 

Modern C++ Design

Modern C++ Design by Andrei Alexandrescu

 

From the jacket text:

"In Modern C++ Design, Andrei Alexandrescu opens new vistas for C++ programmers. Displaying extraordinary creativity and programming virtuosity, Alexandrescu offers a cutting -edge approach to design that unites design patterns, generic programming, and C++, enabling programmers to achieve expressive, flexible, and highly reusable code.

This book introduces the concept of generic components -- reusable design templates that produce boilerplate code for compiler consumption -- all within C++. Generic components enable an easier and more seamless transition from design to application code, generate code that better expresses the original design intention, and support the reuse of design structures with minimal recoding.

The author describes the specific C++ techniques and features that are used in building generic components and goes on to implement industrial strenght generic components for real-world applications. Recurring issues that C++ developers face in their day-to-day activity are discussed in depth and implemented in a generic way. These include:

- Policy-based design for flexibility

- Partial template specialization

- Typelist-powerful type manipulation structures

- Patterns such as Visitor, Singleton, Command, and Factories

- Multi-method engines

For each generic component, the book presents the fundamental problems and design options, and finally implements a generic solution.

In addition, an accompanying Web site, www.awprofessional.com/titles/0-201-70431-5, makes the code implementations available for the generic components in the book and provides a free, downloadable C++ library, called Loki, created by the author. Loki provides out-of-the-box functionality for virtually any C++ project."

 

Review

Scott Meyers recommended this book at one of his seminars, so I decided to take a closer look. This was the beginning of my journey into detailed development with C++ templates. Even if you are not that familiar with C++ templates the stuff in the book is really understandable.

In the long run it helped me to save some time and code by just having a set of basic design patterns implemented as C++ templates. Highly recommended if you are new to C++ templates, if you have already read one of my other recommended C++ template books you might find the implemented design patterns useful.

 

 

 

C++ Templates

C++ Templates by David Vandervoorde and Nicolai M. Josuttis

 

From the jacket text:

"Templates are among the most powerful features of C++, but they are too often neglected, misunderstood, and misused. C++ Templates: The Complete Guide provides software architects and engineers with a clear understanding of why, when, and how to use templates to build and maintain cleaner, faster, and smarter software more efficiently.

C++ Templates begins with an insightful tutorial on basic concepts and languag features. The remainder of the book serves as a comprehensive reference, focusing first on language details, then on a wide range of coding techniques, and finally on advanced applications for templates. Examples used throughout the book illustrate abstract concepts and demonstrate best practices."

Readers learn:

- The exact behaviors of templates

- How to avoid the pitfalls associated with templates

- Idioms and techniques, from the basic to the previously undocumented

- How to reuse source code without threatening performance or safety

- How to increase the efficiency of C++ programs

- How to produce more flexible and maintainable software

This practical guide shows programmers how to exploit the full power of the template features in C++.

 

Review

If you don't know what C++ Templates are, read this book.

If you know what C++ Templates are, read this book.

Indeed its a complete guide to C++ Templates and should answer any questions.


Oh, and have a compiler open to test the stuff your learning.

 

 

 

C++ Template Metaprogramming

C++ Template Metaprogramming by David Abrahams and Aleksey Gurtovoy

 

From the jacket text:

"C++ Template Metaprogramming shed light on the most powerful idioms of today's C++, at a long last delivering practical metaprogramming tools and techniques into hand of the everyday programmer.

A metaprogram is a program that generates or manipulates program code. Evers since generic programming was introduced to C++, programmers have discovered myriad "template tricks" for manipulating programs as they are compiled, effectively eliminating the barrier between program and metaprogram. While excitement among C++ experts about these capabilities has reached the community at large, their practical application remains out of reach for most programmers. This book explains what metaprogramming is and how it is best used. It provides the foundation you'll need to use the template metaprogramming effectively in your own work.

This book is aimed at any programmer who is comfortable with idioms of the Standart Template Library (STL). C++ power-users will gain a new insight into their existing work and a new fluency in the domain of metaprogramming. Intermediate-level programmers who have learned a few advanced template techniques will see where these tricks fit in the big picture and will gain the conceptual foundation to use them with discipline. Programmers who have caught the scent of metaprogramming, but for whom it is still mysterious, will finally gain a clear understanding of how, when, and why it works. All readers will leave with a new tool of uprecedented power at their disposal--the Boost Metaprogramming Library."

 

Review

So if you think you know C++ Templates, try this book! One of the first C++ books I had to read twice to get a glimpse about the stuff presented in it.

From my experience its crucial to have a compiler at hand to try the stuff for yourself, ad hoc. Else you might get some brain collapse or just don't get it.

 

 

 
  • «
  •  Start 
  •  Prev 
  •  1 
  •  2 
  •  Next 
  •  End 
  • »


Page 1 of 2