Book description
A comprehensive guide to exploring software architecture concepts and implementing best practices
Key Features
- Enhance your skills to grow your career as a software architect
- Design efficient software architectures using patterns and best practices
- Learn how software architecture relates to an organization as well as software development methodology
Book Description
The Software Architect's Handbook is a comprehensive guide to help developers, architects, and senior programmers advance their career in the software architecture domain. This book takes you through all the important concepts, right from design principles to different considerations at various stages of your career in software architecture.
The book begins by covering the fundamentals, benefits, and purpose of software architecture. You will discover how software architecture relates to an organization, followed by identifying its significant quality attributes. Once you have covered the basics, you will explore design patterns, best practices, and paradigms for efficient software development.
The book discusses which factors you need to consider for performance and security enhancements. You will learn to write documentation for your architectures and make appropriate decisions when considering DevOps. In addition to this, you will explore how to design legacy applications before understanding how to create software architectures that evolve as the market, business requirements, frameworks, tools, and best practices change over time.
By the end of this book, you will not only have studied software architecture concepts but also built the soft skills necessary to grow in this field.
What you will learn
- Design software architectures using patterns and best practices
- Explore the different considerations for designing software architecture
- Discover what it takes to continuously improve as a software architect
- Create loosely coupled systems that can support change
- Understand DevOps and how it affects software architecture
- Integrate, refactor, and re-architect legacy applications
Who this book is for
The Software Architect's Handbook is for you if you are a software architect, chief technical officer (CTO), or senior developer looking to gain a firm grasp of software architecture.
Publisher resources
Table of contents
- Title Page
- Copyright and Credits
- Dedication
- Packt Upsell
- Contributors
- Preface
-
The Meaning of Software Architecture
- What is software architecture?
-
Why is software architecture important?
- Defining a solution to meet requirements
- Enabling and inhibiting quality attributes
- Giving you the ability to predict software system qualities
- Easing communication among stakeholders
- Managing change
- Providing a reusable model
- Imposing implementation constraints
- Improving cost and effort estimates
- Serves as training for team members
- Software architecture is not a silver bullet
- Who are the consumers of software architectures?
- What is the software architect role?
- Summary
-
Software Architecture in an Organization
- Types of software architects
- Software development methodologies
- Project management
- Office politics
- Software risk management
- Configuration management
- Software product lines
- Summary
- Understanding the Domain
-
Software Quality Attributes
- Quality attributes
- Maintainability
- Usability
- Availability
- Portability
- Interoperability
- Testability
- Summary
-
Designing Software Architectures
- Software architecture design
- The importance of software architecture design
- Top-down versus bottom-up design approaches
- Greenfield versus brownfield software systems
- Architectural drivers
- Leveraging design principles and existing solutions
- Documenting the software architecture design
- Using a systematic approach to software architecture design
-
Attribute-driven design (ADD)
- Step 1 – Reviewing inputs
- Step 2 – Establishing the iteration goal and selecting inputs to be considered in the iteration
- Step 3 – Choosing one or more elements of the system to refine
- Step 4 – Choosing one or more design concepts that satisfy the inputs considered in the iteration
- Step 5 – Instantiating architectural elements, allocating responsibilities, and defining interfaces
- Step 6 – Sketching views and recording design decisions
- Step 7 – Performing analysis of current design and reviewing the iteration goal and design objectives
- Step 8 – Iterating if necessary
- Microsoft's technique for architecture and design
- Architecture-centric design method (ACDM)
- Architecture development method (ADM)
- Tracking the progress of the software architecture's design
- Summary
-
Software Development Principles and Practices
- Designing orthogonal software systems
- Minimizing complexity
- Following SOLID design principles
- Helping your team succeed
- Summary
-
Software Architecture Patterns
- Software architecture patterns
- Layered architecture
- Event-driven architecture
- The Model-View-Controller pattern
- The Model-View-Presenter pattern
- The Model-View-ViewModel pattern
- The Command Query Responsibility Segregation pattern
-
Service-oriented architecture
- What makes SOA different from other distributed solutions?
- Benefits of using a SOA
- Cost-benefit analysis of SOA
- Challenges with SOA
- Key principles for service orientation
- SOA delivery strategies
- Service-oriented analysis
- Service-oriented design
- Service registries
- Service descriptions
- Structuring namespaces
- Orchestration and choreography
- Summary
-
Architecting Modern Applications
- Monolithic architecture
- Microservice architecture
- Serverless architecture
- Cloud-native applications
- Summary
- Cross-Cutting Concerns
-
Performance Considerations
- The importance of performance
- Defining performance terminology
- Taking a systematic approach to performance improvement
- Server-side caching
- Improving web application performance
- Database performance
- Summary
-
Security Considerations
- Securing software systems
- Threat modeling
- Secure by design
- Cryptography
- Identity and access management (IAM)
-
Most common web application security risks
- Injection
- Broken authentication
- Sensitive data exposure
- XML external entity (XXE) attack
- Broken access control
- Security misconfiguration
- Cross-site scripting (XSS)
- Insecure deserialization
- Using components with known vulnerable components
- Insufficient logging and monitoring
- Unvalidated redirects and forwards
- Summary
-
Documenting and Reviewing Software Architectures
- Uses of software architecture documentation
- Creating architecture descriptions (ADs)
- Reviewing software architectures
- Summary
- DevOps and Software Architecture
- Architecting Legacy Applications
- The Soft Skills of Software Architects
-
Evolutionary Architecture
- Change is inevitable
- Lehman's laws of software evolution
- Designing evolutionary architectures
- Summary
- Becoming a Better Software Architect
- Other Books You May Enjoy
Product information
- Title: Software Architect's Handbook
- Author(s):
- Release date: August 2018
- Publisher(s): Packt Publishing
- ISBN: 9781788624060
You might also like
book
The Software Architect Elevator
As the digital economy changes the rules of the game for enterprises, the role of software …
book
Solutions Architect's Handbook - Second Edition
Third edition out now with coverage on Generative AI, clean architecture, edge computing, and more Key …
book
Solutions Architect's Handbook
From fundamentals and design patterns to the different strategies for creating secure and reliable architectures in …
book
Software Architecture in Practice, 4th Edition
The Definitive, Practical, Proven Guide to Architecting Modern Software--Fully Updated with New Content on Mobility, the …