on 23 July, 2019 by Ekaterina Novoseltseva
As you may already know, Apiumhub team is software architecture-oriented and reads books for software architects on a weekly basis. This year Apiumhub organizes Global Software Architecture Summit 10th of october, which will take place in Barcelona. Leading software architects from all around the world will come to discuss work habits, best practices and definition of software architecture to get aligned and share “good” and “proven” practices that are essential in software architecture. Also, it will be a perfect time to list down the most painful issues that are encountered related to bad decisions in Software Architecture as well as possible solutions. The idea is to come up with common rules and guidelines, looking at the overall picture of the covered topics. But before attending this powerful event, we highly recommend you to read these fascinating books for software architects, written by the GSAS speakers. We believe it will help you to prepare for the discussions and get to know the speakers better.
1. “Essential Software Architecture” by Ian Gorton
The first one on our list of books for software architects is “Essential Software Architecture” by Ian Gorton. Job titles like “Technical Architect” and “Chief Architect” nowadays abound in the software industry, yet many people suspect that “architecture” is one of the most overused and least understood terms in professional software development. Ian Gorton tries to resolve this dilemma. He concisely describes the essential elements of knowledge and key skills required to be a software architect.
The explanations encompass the essentials of architecture thinking, practices, and supporting technologies. They range from a general understanding of the structure and quality attributes through technical issues like middleware components and service-oriented architectures to recent technologies like model-driven architecture, software product lines, aspect-oriented design, and the Semantic Web, which will presumably influence future software systems. All approaches are illustrated by an ongoing real-world example.
2. “Just Enough Software Architecture: A Risk-Driven Approach” by George Fairbanks
The second one on our list of books for software architects is “Just Enough Software Architecture: A Risk-Driven Approach” by George Fairbanks. This is a practical guide for software developers, and different than other software architecture books. It teaches risk-driven architecting. There is no need for meticulous designs when risks are small, nor any excuse for sloppy designs when risks threaten your success. This book describes a way to do just enough architecture. It avoids the one-size-fits-all process tar pit with advice on how to tune your design effort based on the risks you face. It democratizes architecture.
This book seeks to make architecture relevant to all software developers. Developers need to understand how to use constraints as a guidance that ensure the desired outcomes, and how seemingly small changes can affect a system’s properties. This book shows you how to build models and analyze architectures so that you can make principled design tradeoffs.
It describes the techniques software designers use to reason about medium to large-sized problems and points out where you can learn specialized techniques in more detail. It provides practical advice. The approach in this book embraces drill-down/pop-up behavior by describing models that have various levels of abstraction, from architecture to data structure design.
3. “97 Things Every Software Architect Should Know: Collective Wisdom from the Experts” by Richard Monson-Haefel ( editor ) & Mark Richards ( contributor )
The third on our list of books for software architects is “97 Things Every Software Architect Should Know: Collective Wisdom from the Experts”. It is a truly unique technical book, where today’s leading software architects present valuable principles on key development issues that go way beyond technology. More than four dozen architects, including Neal Ford, Michael Nygard, Mark Richards and others offer advice for communicating with stakeholders, eliminating complexity, empowering developers, and many more practical lessons they’ve learned from years of experience.
4. “Software Architecture in Practice” by Len Bass, Paul Clements, Rick Kazman
The award-winning and highly influential Software Architecture in Practice book has been substantially revised to reflect the latest developments in the field. In a real-world setting, the book introduces the concepts and best practices of software architecture—how a software system is structured and how that system’s elements are meant to interact. Distinct from the details of implementation, algorithm, and data representation, an architecture holds the key to achieving system quality, is a reusable asset that can be applied to subsequent systems, and is crucial to a software organization’s business strategy.
5. “DevOps: A Software Architect’s Perspective” by Len Bass, Ingo Weber, Liming Zhu
DevOps promises to accelerate the release of new software features and improve monitoring of systems in production, but its crucial implications for software architects and architecture are often ignored. In DevOps: A Software Architect’s Perspective, three leading architects address these issues head-on. The authors review decisions software architects must make in order to achieve DevOps’ goals and clarify how other DevOps participants are likely to impact the architect’s work.
They also provide the organizational, technical, and operational context needed to deploy DevOps more efficiently, and review DevOps’ impact on each development phase. The authors address cross-cutting concerns that link multiple functions, offering practical insights into compliance, performance, reliability, repeatability, and security. This guide demonstrates the authors’ ideas in action with three real-world case studies: datacenter replication for business continuity, management of a continuous deployment pipeline, and migration to a microservice architecture.
6. “Deployment and Operations for Software Engineers” by Len Bass and John Klein
Software engineering practices require knowledge of the environment in which an application is to be run. In the modern world, this means knowledge of virtualization, containers, networking, the cloud, and security techniques for the internet. A developer should also know about microservices, configuration management, the deployment pipeline, monitoring and post-production, disaster recovery, and how to develop secure applications. These topics and more are all covered in this book. The book includes exercises and discussion questions to facilitate classroom or group learning.
7. “The Software Craftsman: Professionalism, Pragmatism, Pride (Robert C. Martin Series)” by Sandro Mancuso
Despite advanced tools and methodologies, software projects continue to fail as too many organizations still view software development as just another production line. Too many developers feel that way, too—and they behave accordingly. In The Software Craftsman: Professionalism, Pragmatism, Pride, Sandro Mancuso offers a better and more fulfilling path. He talks about developing software with pride and professionalism; do it with excellence; and build a career with autonomy, mastery, and purpose.
8. “Software Systems Architecture: Working With Stakeholders Using Viewpoints and Perspectives” by Nick Rozanski, Eóin Woods
Software Systems Architecture is a practitioner-oriented guide to designing and implementing effective architectures for information systems. It is both a readily accessible introduction to software architecture and an invaluable handbook of well-established best practices.
With this book you will learn how to design and communicate an architecture that reflects and balances the different needs of its stakeholders, focus on architecturally significant aspects of design, including frequently overlooked areas such as performance, resilience, and location,
and use scenarios and patterns to drive the creation and validation of your architecture, document your architecture as a set of related views.
9. “Working Effectively with Legacy Code” by Michael Feathers
Michael Feathers has written several books for software architects and in this book,“Working Effectively with Legacy Code”, he offers start-to-finish strategies for working more effectively with large, untested legacy code bases. This book draws on material Michael created for his own renowned Object Mentor seminars: techniques Michael has used in mentoring to help hundreds of developers, technical managers, and testers bring their legacy systems under control.
This book also includes a catalogue of twenty-four dependency-breaking techniques that help you work with program elements in isolation and make safer changes.
10. “Brutal Refactoring: More Working Effectively with Legacy Code” by Michael C. Feathers
In Brutal Refactoring, Michael Feathers starts with code bases “as they are,” not as “we pretend them to be” – and shows how to aggressively reshape them to make them maintainable and amenable to further development. Brutal Refactoring takes the next steps beyond all previous refactoring books, including Feathers’ own highly-praised Working Effectively with Legacy Code. Feathers shares new insights reflecting all he’s learned in the eleven years since that book and offers the first detailed practical advice on the unique nuances of system-wide refactoring. Brutal Refactoring demonstrates Feathers’ aggressive refactoring techniques through a series of exceptionally realistic case examples, introducing tactical “recipes” and high-level strategies for overcoming a wide range of legacy code challenges.
11. “Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation (Addison-Wesley Signature Series)” by Jez Humble, David Farley
This groundbreaking new book sets out the principles and technical practices that enable rapid, incremental delivery of high quality, valuable new functionality to users. Through automation of the build, deployment, and testing process, and improved collaboration between developers, testers, and operations, delivery teams can get changes released in a matter of hours- sometimes even minutes-no matter what the size of a project or the complexity of its code base.
The authors present the foundations of a rapid, reliable, low-risk delivery process and introduce the “deployment pipeline,” an automated process for managing all changes, from check-in to release. They also discuss the “ecosystem” needed to support continuous delivery, from infrastructure, data and configuration management to governance. They introduce state-of-the-art techniques, including automated infrastructure management and data migration, and the use of virtualization.
12. “Testing Java Microservices” by Alex Soto Bueno, Jason Porter, Andy Gumbrecht
With traditional software unit tests, there’s never a guarantee that an application will actually function correctly in the production environment. When you add microservices, testing becomes even more tricky. Testing Java Microservices teaches readers how to write tests like unit, component, integration, container, contract, chaos, and more. Along the way, it also covers technologies like the Arquillian ecosystem, Wiremock, Mockito, AssertJ, Pact or Gatling. Finally, the book demonstrates how everything fits together into the Continuous Delivery pipeline.
13. “The DevOps 2.5 Toolkit: Monitoring, Logging, and Auto-Scaling Kubernetes: Making Resilient, Self-Adaptive, And Autonomous Kubernetes Clusters” by Viktor Farcic
The author explores some of the skills and knowledge required for operating Kubernetes clusters. In this book, you will explore monitoring, alerting, logging, auto-scaling, and other subjects aimed at making the cluster resilient, self-sufficient, and self-adaptive.
14. “Java Test-Driven Development” by Viktor Farcic, Alex Garcia
This book is for experienced Java developer who wants to implement more effective methods of programming systems and applications and who wants to explore the most popular TDD tools and frameworks and become more proficient in building applications. By reading this book you will learn how to create applications with better code design, fewer bugs, and higher test coverage, enabling you to get them to market quickly, also you will see how to implement test-driven programming methods into the development workflows.
In this book, you will find tools, frameworks, and the environment you need, and will dive right into hands-on exercises with the goal of mastering one practice, tool, or framework at a time. You’ll learn about the Red-Green-Refactor procedure, how to write unit tests, and how to use them as executable documentation.
With this book, you’ll also discover how to design simple and easily maintainable code, work with mocks, utilise behaviour-driven development, refactor old legacy code, and release a half-finished feature to production with feature toggles. You will finish this book with a deep understanding of the test-driven development methodology and the confidence to apply it to application programming with Java.
15. “DevOps Paradox: The truth about DevOps by the people on the front line (English Edition)” by Viktor Farcic
In DevOps Paradox, top DevOps consultants, industry leaders, and founders reveal their own approaches to all aspects of DevOps implementation and operation. Viktor Farcic draws on experts from across the industry to discuss how to introduce DevOps to chaotic organizations, align incentives between teams, and make use of the latest tools and techniques. With each expert offering their own opinions on what DevOps is and how to make it work.