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.
Design 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.
Software 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.
Large-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.
Software 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.
Introduction 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.
The 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.
Beautiful 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.