Hands-On Software Architecture with Java
Giuseppe Bonocore
- 510 pages
- English
- ePUB (mobile friendly)
- Available on iOS & Android
Hands-On Software Architecture with Java
Giuseppe Bonocore
About This Book
Build robust and scalable Java applications by learning how to implement every aspect of software architectureKey Features⢠Understand the fundamentals of software architecture and build production-grade applications in Java⢠Make smart architectural decisions with comprehensive coverage of various architectural approaches from SOA to microservices⢠Gain an in-depth understanding of deployment considerations with cloud and CI/CD pipelinesBook DescriptionWell-written software architecture is the core of an efficient and scalable enterprise application. Java, the most widespread technology in current enterprises, provides complete toolkits to support the implementation of a well-designed architecture.This book starts with the fundamentals of architecture and takes you through the basic components of application architecture. You'll cover the different types of software architectural patterns and application integration patterns and learn about their most widespread implementation in Java. You'll then explore cloud-native architectures and best practices for enhancing existing applications to better suit a cloud-enabled world. Later, the book highlights some cross-cutting concerns and the importance of monitoring and tracing for planning the evolution of the software, foreseeing predictable maintenance, and troubleshooting. The book concludes with an analysis of the current status of software architectures in Java programming and offers insights into transforming your architecture to reduce technical debt.By the end of this software architecture book, you'll have acquired some of the most valuable and in-demand software architect skills to progress in your career.What you will learn⢠Understand the importance of requirements engineering, including functional versus non-functional requirements⢠Explore design techniques such as domain-driven design, test-driven development (TDD), and behavior-driven development⢠Discover the mantras of selecting the right architectural patterns for modern applications⢠Explore different integration patterns⢠Enhance existing applications with essential cloud-native patterns and recommended practices⢠Address cross-cutting considerations in enterprise applications regardless of architectural choices and application typeWho this book is forThis book is for Java software engineers who want to become software architects and learn everything a modern software architect needs to know. The book is also for software architects, technical leaders, vice presidents of software engineering, and CTOs looking to extend their knowledge and stay up to date with the latest developments in the field of software architecture.
Frequently asked questions
Information
Section 1: Fundamentals of Software Architectures
- Chapter 1, Designing Software Architectures in Java â Methods and Styles
- Chapter 2, Software Requirements â Collecting, Documenting, Managing
- Chapter 3, Common Architecture Design Techniques
- Chapter 4, Best Practices for Design and Development
- Chapter 5, Exploring the Most Common Development Models
Chapter 1: Designing Software Architectures in Java â Methods and Styles
- The importance of software architecture
- Different types of architecture design â from doodling on paper to more accurate modeling
- Other kinds of architectural diagrams
- The changing role of Java in cloud-native applications
- Case studies and examples
- Software components diagram
The importance of software architecture
The objectives of architecture design in the software life cycle
- Prospecting a birds-eye view to project sponsors and investors. While it is not a good practice to drive a business discussion (for example, an elevator pitch) toward technical elements too soon, a higher level of management, venture capitalists, and the like are becoming increasingly curious about technical details, so a high-level overview of the application components can be crucial for winning this kind of discussion.
- Defining a shared lingo for components of our solution, which is crucial for collaborating across the team.
- Providing guidance for technological choices since putting our design decisions on paper will clarify important traits of our application. Will data be central? Do we need to focus on multiple geographies? Are user interactions the most common use case? Some of those reasonings will change over time. However, correctly designing our application will drive some crucial technology choices, in terms of choosing components and stacks to rely on.
- Splitting roles and responsibilities. While a proper project plan, a statement of work, or a Responsible, Accountable, Consulted, Informed (RACI) (which is a classical way to categorize who does what) table will be used for real project management, writing the software backbone down on paper is our first look at who we have to involve for proper project execution.