introduction to software architecture
DESCRIPTION
TRANSCRIPT
![Page 1: Introduction to Software Architecture](https://reader033.vdocuments.mx/reader033/viewer/2022050904/5479f3edb4af9f86618b4586/html5/thumbnails/1.jpg)
© Yuriy Guts, 2013
Software Architecture
Introduction to
![Page 2: Introduction to Software Architecture](https://reader033.vdocuments.mx/reader033/viewer/2022050904/5479f3edb4af9f86618b4586/html5/thumbnails/2.jpg)
What is
Software
Architecture?
![Page 3: Introduction to Software Architecture](https://reader033.vdocuments.mx/reader033/viewer/2022050904/5479f3edb4af9f86618b4586/html5/thumbnails/3.jpg)
Modules, connections, dependencies and interfaces?
![Page 4: Introduction to Software Architecture](https://reader033.vdocuments.mx/reader033/viewer/2022050904/5479f3edb4af9f86618b4586/html5/thumbnails/4.jpg)
Modules, connections, dependencies and interfaces?
The relationship between the elements that make up the product?
![Page 5: Introduction to Software Architecture](https://reader033.vdocuments.mx/reader033/viewer/2022050904/5479f3edb4af9f86618b4586/html5/thumbnails/5.jpg)
Modules, connections, dependencies and interfaces?
The relationship between the elements that make up the product?
The decomposition of the problem into smaller implementable elements?
![Page 6: Introduction to Software Architecture](https://reader033.vdocuments.mx/reader033/viewer/2022050904/5479f3edb4af9f86618b4586/html5/thumbnails/6.jpg)
Modules, connections, dependencies and interfaces?
The relationship between the elements that make up the product?
The decomposition of the problem into smaller implementable elements?
The skeleton/backbone of the product?
An abstract view?
An approach to achieve a goal?
A blueprint?
The big picture?
![Page 7: Introduction to Software Architecture](https://reader033.vdocuments.mx/reader033/viewer/2022050904/5479f3edb4af9f86618b4586/html5/thumbnails/7.jpg)
Modules, connections, dependencies and interfaces?
The relationship between the elements that make up the product?
The decomposition of the problem into smaller implementable elements?
The skeleton/backbone of the product?
An abstract view?
An approach to achieve a goal?
A blueprint?
The big picture?
![Page 8: Introduction to Software Architecture](https://reader033.vdocuments.mx/reader033/viewer/2022050904/5479f3edb4af9f86618b4586/html5/thumbnails/8.jpg)
There are literally hundreds of
definitions of Software Architecture
http://tinyurl.com/sei-definitions
![Page 9: Introduction to Software Architecture](https://reader033.vdocuments.mx/reader033/viewer/2022050904/5479f3edb4af9f86618b4586/html5/thumbnails/9.jpg)
Is there anything in common?
![Page 10: Introduction to Software Architecture](https://reader033.vdocuments.mx/reader033/viewer/2022050904/5479f3edb4af9f86618b4586/html5/thumbnails/10.jpg)
“
”
The structure or structures of the system,
which comprise software elements, the
externally visible properties of those
elements, and the relationships among them.
“Software Architecture in Practice” book
Software Engineering Institute
![Page 11: Introduction to Software Architecture](https://reader033.vdocuments.mx/reader033/viewer/2022050904/5479f3edb4af9f86618b4586/html5/thumbnails/11.jpg)
“
”
The structure or structures of the system,
which comprise software elements, the
externally visible properties of those
elements, and the relationships among them.
“Software Architecture in Practice” book
Software Engineering Institute
”“ Those aspects that are the hardest to change.
Chris Verhoef; Martin Fowler
![Page 12: Introduction to Software Architecture](https://reader033.vdocuments.mx/reader033/viewer/2022050904/5479f3edb4af9f86618b4586/html5/thumbnails/12.jpg)
“
”
The structure or structures of the system,
which comprise software elements, the
externally visible properties of those
elements, and the relationships among them.
“Software Architecture in Practice” book
Software Engineering Institute
”“ Those aspects that are the hardest to change.
Chris Verhoef; Martin Fowler
STRUCTURE
VISION
![Page 13: Introduction to Software Architecture](https://reader033.vdocuments.mx/reader033/viewer/2022050904/5479f3edb4af9f86618b4586/html5/thumbnails/13.jpg)
Structure + Vision
Regardless of the domain,
architectural work is about
![Page 14: Introduction to Software Architecture](https://reader033.vdocuments.mx/reader033/viewer/2022050904/5479f3edb4af9f86618b4586/html5/thumbnails/14.jpg)
Developing
Organization
Stakeholders
Marketing
Stakeholders
Maintenance
StakeholdersCustomer
Stakeholders
End-User
Stakeholders
![Page 15: Introduction to Software Architecture](https://reader033.vdocuments.mx/reader033/viewer/2022050904/5479f3edb4af9f86618b4586/html5/thumbnails/15.jpg)
There are no “good” and “bad” architectures
There are ones that are more suitable
given current constraints,
and the ones that are less suitable.
![Page 16: Introduction to Software Architecture](https://reader033.vdocuments.mx/reader033/viewer/2022050904/5479f3edb4af9f86618b4586/html5/thumbnails/16.jpg)
Levels of Architecture
Component Designer
![Page 17: Introduction to Software Architecture](https://reader033.vdocuments.mx/reader033/viewer/2022050904/5479f3edb4af9f86618b4586/html5/thumbnails/17.jpg)
Levels of Architecture
Component Designer
Application Architect
![Page 18: Introduction to Software Architecture](https://reader033.vdocuments.mx/reader033/viewer/2022050904/5479f3edb4af9f86618b4586/html5/thumbnails/18.jpg)
Levels of Architecture
Component Designer
Application Architect
Solutions Architect
![Page 19: Introduction to Software Architecture](https://reader033.vdocuments.mx/reader033/viewer/2022050904/5479f3edb4af9f86618b4586/html5/thumbnails/19.jpg)
Levels of Architecture
Component Designer
Application Architect
Solutions Architect
Business (Enterprise) Architect
![Page 20: Introduction to Software Architecture](https://reader033.vdocuments.mx/reader033/viewer/2022050904/5479f3edb4af9f86618b4586/html5/thumbnails/20.jpg)
The Software Architect Role
![Page 21: Introduction to Software Architecture](https://reader033.vdocuments.mx/reader033/viewer/2022050904/5479f3edb4af9f86618b4586/html5/thumbnails/21.jpg)
Anti-pattern:
“The Ivory Tower Architect”
Development team
![Page 22: Introduction to Software Architecture](https://reader033.vdocuments.mx/reader033/viewer/2022050904/5479f3edb4af9f86618b4586/html5/thumbnails/22.jpg)
Do Agile teams need architects?
![Page 23: Introduction to Software Architecture](https://reader033.vdocuments.mx/reader033/viewer/2022050904/5479f3edb4af9f86618b4586/html5/thumbnails/23.jpg)
Architectural
Drivers
Understanding requirements
and constraints
Technology
Selection
Choosing and evaluating
technologies
Architecting
Designing software
Architecture
Evaluation
Verifying that the architecture
actually works
Architecture
Evolution
Ownership of the architecture
throughout the delivery
Coaching &
Mentoring
Providing guidance and
assistance to teams
Coding
Involvement in hands-on
software delivery
Quality
Assurance
Introduction and adherence to
standards and principles
Even in the agilest of teams
you need someone
to take care of all this!
Otherwise it would get messy.
![Page 24: Introduction to Software Architecture](https://reader033.vdocuments.mx/reader033/viewer/2022050904/5479f3edb4af9f86618b4586/html5/thumbnails/24.jpg)
“Agile” Architect
It may not be a dedicated person.
Responsibilities can be split among multiple people.
Involvement varies depending on team maturity:
1. Chaos (survival mode): requires direct authoritative leadership.
2. Learning: requires a coaching leadership style.
3. Self-organizing (mature): requires facilitation to keep balance.
![Page 25: Introduction to Software Architecture](https://reader033.vdocuments.mx/reader033/viewer/2022050904/5479f3edb4af9f86618b4586/html5/thumbnails/25.jpg)
Choosing a reference architecture
![Page 26: Introduction to Software Architecture](https://reader033.vdocuments.mx/reader033/viewer/2022050904/5479f3edb4af9f86618b4586/html5/thumbnails/26.jpg)
Architecture Visualization:
The 4+1 Model
![Page 27: Introduction to Software Architecture](https://reader033.vdocuments.mx/reader033/viewer/2022050904/5479f3edb4af9f86618b4586/html5/thumbnails/27.jpg)
SA involvement within the company
• Support for Sales and Marketing
• Bootstrapping new projects
• Technology consulting for existing projects
• Investigating new technologies, developing PoC
• Internal training, competence development
![Page 28: Introduction to Software Architecture](https://reader033.vdocuments.mx/reader033/viewer/2022050904/5479f3edb4af9f86618b4586/html5/thumbnails/28.jpg)
Q & A
Acknowledgements
• Len Bass, Paul Clements, Rick Kazman. Software Architecture in Practice, 2nd edition [2003].
• Paul Clements et al. Documenting Software Architectures: Views and Beyond, 2nd edition [2010].
• Simon Brown. Software Architecture for Developers [2013].