Hands-On Software Architecture with Java
eBook - ePub

Hands-On Software Architecture with Java

Giuseppe Bonocore

  1. 510 pages
  2. English
  3. ePUB (adapté aux mobiles)
  4. Disponible sur iOS et Android
eBook - ePub

Hands-On Software Architecture with Java

Giuseppe Bonocore

DĂ©tails du livre
Aperçu du livre
Table des matiĂšres
Citations

À propos de ce livre

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.

Foire aux questions

Comment puis-je résilier mon abonnement ?
Il vous suffit de vous rendre dans la section compte dans paramĂštres et de cliquer sur « RĂ©silier l’abonnement ». C’est aussi simple que cela ! Une fois que vous aurez rĂ©siliĂ© votre abonnement, il restera actif pour le reste de la pĂ©riode pour laquelle vous avez payĂ©. DĂ©couvrez-en plus ici.
Puis-je / comment puis-je télécharger des livres ?
Pour le moment, tous nos livres en format ePub adaptĂ©s aux mobiles peuvent ĂȘtre tĂ©lĂ©chargĂ©s via l’application. La plupart de nos PDF sont Ă©galement disponibles en tĂ©lĂ©chargement et les autres seront tĂ©lĂ©chargeables trĂšs prochainement. DĂ©couvrez-en plus ici.
Quelle est la différence entre les formules tarifaires ?
Les deux abonnements vous donnent un accĂšs complet Ă  la bibliothĂšque et Ă  toutes les fonctionnalitĂ©s de Perlego. Les seules diffĂ©rences sont les tarifs ainsi que la pĂ©riode d’abonnement : avec l’abonnement annuel, vous Ă©conomiserez environ 30 % par rapport Ă  12 mois d’abonnement mensuel.
Qu’est-ce que Perlego ?
Nous sommes un service d’abonnement Ă  des ouvrages universitaires en ligne, oĂč vous pouvez accĂ©der Ă  toute une bibliothĂšque pour un prix infĂ©rieur Ă  celui d’un seul livre par mois. Avec plus d’un million de livres sur plus de 1 000 sujets, nous avons ce qu’il vous faut ! DĂ©couvrez-en plus ici.
Prenez-vous en charge la synthÚse vocale ?
Recherchez le symbole Écouter sur votre prochain livre pour voir si vous pouvez l’écouter. L’outil Écouter lit le texte Ă  haute voix pour vous, en surlignant le passage qui est en cours de lecture. Vous pouvez le mettre sur pause, l’accĂ©lĂ©rer ou le ralentir. DĂ©couvrez-en plus ici.
Est-ce que Hands-On Software Architecture with Java est un PDF/ePUB en ligne ?
Oui, vous pouvez accĂ©der Ă  Hands-On Software Architecture with Java par Giuseppe Bonocore en format PDF et/ou ePUB ainsi qu’à d’autres livres populaires dans Computer Science et Programming in Java. Nous disposons de plus d’un million d’ouvrages Ă  dĂ©couvrir dans notre catalogue.

Informations

Année
2022
ISBN
9781800206144
Édition
1

Section 1: Fundamentals of Software Architectures

In this section, you will gain all the foundations needed for defining and understanding complex software architectures.
We will start with what software architecture is, the different kinds of it, and the importance of properly defining it. We will then step into the first phases of a software development project, including requirement collection and architecture design.
The focus will then be on best practices for software design and development. Last but not least, we will have an overview of the most common development models, such as waterfall, Agile, and DevOps.
This section comprises the following chapters:
  • 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

In this chapter, we will focus on some core concepts that we can use as a base to build on in the upcoming chapters. We will explore different ways to represent the software architecture, paying attention to the intended audience and their specific point of view. Additionally, we will elaborate on the importance of a proper architectural design and its role in the software development life cycle. Following this, we will move on to the Java ecosystem, which is the core topic of this book, to discover why it’s a good choice for implementing a complete enterprise application.
In particular, we will cover the following topics:
  • 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
By the end of this chapter, you should have a clear view of why design is a critical part of the software development process and what the main types of architecture schemas are. Additionally, you will become familiar with the role of Java technology in modern application development.
These skills are crucial for implementing functional and elegant software solutions. It will also be a good basis for personal development and career enhancement.

The importance of software architecture

Often, software development is all about cost and time. No one knows exactly why, but the software industry is almost always associated with tight deadlines, insufficient resources, and long hours. Under this kind of pressure, it’s common to question the importance of everything that is not strictly coding. Testing is a common victim of this, along with documentation and, of course, design. But of course, these phases are essential for the success of a project. While we will quickly touch on most of those aspects, architecture design is the core of this book, and I believe that by understanding the practices and goals, the need for it will become clear to everybody.
In this section, we will discover what the fundamental objects of a properly designed architecture are. Highlighting those simple but crucial points is useful in raising awareness about the importance of this phase. If you start advocating those good practices in your team, the quality of your software deliverables will increase.

The objectives of architecture design in the software life cycle

The ultimate goal of this book is not to define the architecture per se; there are plenty of papers and interesting things available on that matter, including the awesome work of Martin Fowler. Nevertheless, there are a couple of considerations that we need to bear in mind.
The architecture should support the crucial decisions within our software project. However, the architecture itself is actually a loose concept, often including different plans (such as physical, logical, network, and more) and points of view (such as users, business logic, machine-to-machine interactions, and more).
Let’s take the most overused metaphor as an example: a software project is like a building. And similarly to a construction project, we require many different points of view, with different levels of detail, ranging from general overviews to detailed calculations and the bills of materials. A general overview is useful to give us an idea of where we are and where we want to go. In addition to this, it is an essential tool for being sure we are on the right path. However, a system overview doesn’t provide enough details for teams such as networking, security, sysops, and, ultimately, the developers that require a more substantiated and quantitative view to drive their day-to-day decisions.
The main goals of designing a proper software architecture include the following:
  • 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.
Indeed, the architecture is an excellent example of planning in advance. However, a proper software architecture should be much more than a technological datasheet.
Architecture, as with buildings, is more about the styles and guidelines to be followed all around the project. The final goal of a piece of software architecture is to find elegant solutions to the problems that will arise during the project plan. Ultimately, it will act as guidance throughout the project’s life cycle.

The software architect – role and skills

As a role, the software architect is often identified as the more senior technical resource in the IT team. In fact, the job role of an architect is almost always seen as a career progression for developers, especially in enterprise environments. While not necessary, being good at coding is crucial for a complete comprehension of the overall functioning of the system.
There are several different other skills that are required to be a successful architect, including creativity, the ability to synthesize, and vision. However, above all, experience is what it takes to become an architect.
This includes firsthand experience on many different projects, solving real-world issues: what a proper software design looks like and how the design has evolved. This skillset is very useful to have in the background of the architect.
Additionally, it’s vital to have a huge library of solutions to choo...

Table des matiĂšres

  1. Hands-On Software Architecture with Java
  2. Contributors
  3. Preface
  4. Section 1: Fundamentals of Software Architectures
  5. Chapter 1: Designing Software Architectures in Java – Methods and Styles
  6. Chapter 2: Software Requirements – Collecting, Documenting, Managing
  7. Chapter 3: Common Architecture Design Techniques
  8. Chapter 4: Best Practices for Design and Development
  9. Chapter 5: Exploring the Most Common Development Models
  10. Section 2: Software Architecture Patterns
  11. Chapter 6: Exploring Essential Java Architectural Patterns
  12. Chapter 7: Exploring Middleware and Frameworks
  13. Chapter 8: Designing Application Integration and Business Automation
  14. Chapter 9: Designing Cloud-Native Architectures
  15. Chapter 10: Implementing User Interaction
  16. Chapter 11: Dealing with Data
  17. Section 3: Architectural Context
  18. Chapter 12: Cross-Cutting Concerns
  19. Chapter 13: Exploring the Software Life Cycle
  20. Chapter 14: Monitoring and Tracing Techniques
  21. Chapter 15: What's New in Java?
  22. Other Books You May Enjoy
Normes de citation pour Hands-On Software Architecture with Java

APA 6 Citation

Bonocore, G. (2022). Hands-On Software Architecture with Java (1st ed.). Packt Publishing. Retrieved from https://www.perlego.com/book/3293679/handson-software-architecture-with-java-pdf (Original work published 2022)

Chicago Citation

Bonocore, Giuseppe. (2022) 2022. Hands-On Software Architecture with Java. 1st ed. Packt Publishing. https://www.perlego.com/book/3293679/handson-software-architecture-with-java-pdf.

Harvard Citation

Bonocore, G. (2022) Hands-On Software Architecture with Java. 1st edn. Packt Publishing. Available at: https://www.perlego.com/book/3293679/handson-software-architecture-with-java-pdf (Accessed: 15 October 2022).

MLA 7 Citation

Bonocore, Giuseppe. Hands-On Software Architecture with Java. 1st ed. Packt Publishing, 2022. Web. 15 Oct. 2022.