Engineering Bookshelf

Software Design Books
Book Cover: Patterns of Enterprise Application ArchitecturePatterns of Enterprise Application Architecture
by Martin Fowler

Publisher: Addison-Wesley Professional
ISBN: 0321127420


The practice of enterprise application development has benefited from the emergence of many new enabling technologies. Multi-tiered object-oriented platforms, such as Java and .NET, have become commonplace. These new tools and technologies are capable of building powerful applications, but they are not easily implemented. Common failures in enterprise applications often occur because their developers do not understand the architectural lessons that experienced object developers have learned.



Book Cover: Design Patterns: Elements of Reusable Object-Oriented SoftwareDesign Patterns: Elements of Reusable Object-Oriented Software
by Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides

Publisher: Addison-Wesley Professional
ISBN: 0201633612


Capturing a wealth of experience about the design of object-oriented software, four top-notch designers present a catalog of simple and succinct solutions to commonly occurring design problems. Previously undocumented, these 23 patterns allow designers to create more flexible, elegant, and ultimately reusable designs without having to rediscover the design solutions themselves.

The authors begin by describing what patterns are and how they can help you design object-oriented software. They then go on to systematically name, explain, evaluate, and catalog recurring designs in object-oriented systems. With Design Patterns as your guide, you will learn how these important patterns fit into the software development process, and how you can leverage them to solve your own design problems most efficiently.



Book Cover: Software Design: From Programming to ArchitectureSoftware Design: From Programming to Architecture
by Eric J. Braude

Publisher: Wiley
ISBN: 0471204595


Not any more! Starting where programming and data structure courses end, this indispensable book is a comprehensive guide to the theory and actual practice of software design.

The book begins at the code level with programming issues such as robustness and flexibility in implementation. As it progresses, it increases in abstraction and scope. After covering these basic issues the book analyzes mid-level design issues, emphasizing a thorough understanding of standard design patterns. This is followed by a thorough discussion of components. Finally, it ends with a high-level issues: architectures, frameworks, and object-oriented analysis and design.



Book Cover: Large-Scale C++ Software DesignLarge-Scale C++ Software Design
by John Lakos

Publisher: Addison-Wesley Professional
ISBN: 0201633620


Developing a large-scale software system in C++ requires more than just a sound understanding of the logical design issues covered in most books on C++ programming. To be successful, you will also need a grasp of physical design concepts that, while closely tied to the technical aspects of development, include a dimension with which even expert software developers may have little or no experience.

This is the definitive book for all C++ software professionals involved in large development efforts such as databases, operating systems, compilers, and frameworks. It is the first C++ book that actually demonstrates how to design large systems, and one of the few books on object-oriented design specifically geared to practical aspects of the C++ programming language.



Book Cover: Software Modeling and Design: UML, Use Cases, Patterns, and Software ArchitecturesSoftware Modeling and Design: UML, Use Cases, Patterns, and Software Architectures
by Hassan Gomaa

Publisher: Cambridge University Press
ISBN: 0521764149


This book covers all you need to know to model and design software applications from use cases to software architectures in UML and shows how to apply the COMET UML-based modeling and design method to real-world problems. The author describes architectural patterns for various architectures, such as broker, discovery, and transaction patterns for service-oriented architectures, and addresses software quality attributes including maintainability, modifiability, testability, traceability, scalability, reusability, performance, availability, and security.

Complete case studies illustrate design issues for different software architectures: a banking system for client/server architecture, an online shopping system for service-oriented architecture, an emergency monitoring system for component-based software architecture, and an automated guided vehicle for real-time software architecture.



Book Cover: Introduction to Software Engineering Design: Processes, Principles and Patterns with UML2Introduction to Software Engineering Design: Processes, Principles and Patterns with UML2
by Christopher Fox

Publisher: Addison-Wesley
ISBN: 0321410130


Introduction to Software Engineering Design emphasizes design practice at an introductory level using object-oriented analysis and design techniques and UML 2.0.

Readers will learn to use best practices in software design and development. Pedagogical features include learning objectives and orientation diagrams, summaries of key concepts, end-of-section quizzes, a large running case study, team projects, over 400 end-of-chapter exercises, and a glossary of key terms.



Book Cover: The Art of R Programming: A Tour of Statistical Software DesignThe Art of R Programming: A Tour of Statistical Software Design
by Norman Matloff

Publisher: No Starch Press
ISBN: 1593273843


R is the world's most popular language for developing statistical software: Archaeologists use it to track the spread of ancient civilizations, drug companies use it to discover which medications are safe and effective, and actuaries use it to assess financial risks and keep economies running smoothly.

The Art of R Programming takes you on a guided tour of software development with R, from basic types and data structures to advanced topics like closures, recursion, and anonymous functions. No statistical knowledge is required, and your programming skills can range from hobbyist to pro.



Book Cover: Beautiful Architecture: Leading Thinkers Reveal the Hidden Beauty in Software DesignBeautiful Architecture: Leading Thinkers Reveal the Hidden Beauty in Software Design
by Diomidis Spinellis, Georgios Gousios

Publisher: O'Reilly Media
ISBN: 059651798X


What are the ingredients of robust, elegant, flexible, and maintainable software architecture? Beautiful Architecture answers this question through a collection of intriguing essays from more than a dozen of today's leading software designers and architects. In each essay, contributors present a notable software architecture, and analyze what makes it innovative and ideal for its purpose.

Some of the engineers in this book reveal how they developed a specific project, including decisions they faced and tradeoffs they made. Others take a step back to investigate how certain architectural aspects have influenced computing as a whole.