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.
Downloading the example code for this book You can download the example code files for all Packt books you have purchased from your account at http://www.PacktPub.com. If you purchased this book elsewhere, you can visit http://www.PacktPub.com/support and register to have the files e-mailed directly to you.
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
40 Algorithms Every Programmer Should Know
Learn algorithms for solving classic computer science problems with this concise guide covering everything from fundamental …
book
Architectural Patterns
Learn the importance of architectural and design patterns in producing and sustaining next-generation IT and business-critical …
book
Head First Design Patterns, 2nd Edition
You know you don’t want to reinvent the wheel, so you look to design patterns—the lessons …
book
Software Engineering at Google
Today, software engineers need to know not only how to program effectively but also how to …