2. before we talk about these roles, let’s ask a question:
2
What is the main purpose of architecture?
My answer:
To deal with complexity of information
systems
3. it is becoming really complex…
3
Past: MS-DOS v.1 (1981) total size was 8KB
Present: Modern OS - Gigabytes
Past: We used to code small monolithic programs
Present: Today there are distributed environments of heterogeneous software
Cost of software bugs, glitches, and security failures worldwide was more (and probably,
much more) than $1.1Trillion in 2016. Tricentis
Complexity is not just the structure of
code, but it is also related to IT and
business processes. The chart shows that
the number of maintenance programmers
is almost two times bigger now than the
number of development programmers.
Software becomes more difficult to
maintain as a direct result of increased
complexity
4. architecture: addressing complexity to achieve better quality
4
Architectural methods to address complexity:
- Componentization
- Interface definition
- Using patterns and best practices
- Modeling
- Creating a vision of the target and performing POCs to prove the vision
- Context analysis
- Deciding “buy vs. build”
- … and many more
Some benefits:
- minimizing risks and costs
- better business-IT alignment, drives consensus
- improving quality of the software
6. only three architecture roles are well defined in IT (IMHO)
ARCHITECTURE CONTEXT
Software Architecture Software product development
Solution Architecture Project delivery
Enterprise Architecture Strategic planning
6
Some organizations and associations providing structure in architecture
domain and defining terminology (by no means a complete list):
- Iasa – An Association of All IT Architects
- WICSA – Working IEEE/IFIP Conference on Software Architecture
- SEI – Software Engineering Institute
- The Open Group
- Zachman International
- Business Architecture Guild
7. software architecture
7
- The concept and even the
term ‘software
architecture’ was first used
in late 1960s.
- It became prevalent in early
1990s; many significant
concepts emerged
(patterns and best
practices, complexity
analysis).
The architecture of a software system is a metaphor,
analogous to the architecture of a building
8. software architecture
8
There is a number of opinions on what software architecture is and
there is a number of definitions.
However, most agree that:
Software architecture:
- High level structure of a software system
- Discipline of creating such a high level structure
- Documentation of this structure
9. development vs. design vs. architecture
In the early days of software
development all developers
were both designers and
architects
9
10. development vs. design vs. architecture
- Structured programming – late 1960s
- Modular programming – 1972
- Object-oriented programming – 1970s
- Object-oriented design – 1980s
- Unified Modeling Language (UML) – 1990s
- Design patterns – 1990s
- Domain Specific Languages (DSL)
- Data modeling
- SOLID principles in OOD
- …
Constant increase in complexity of software required more attention to software design
10
11. code: design:
- code structure – class diagrams
- select algorithms
- select data structures
- use design principles (e.g., OOD)
- select design patterns
- component diagrams
- senior developers performing very complex
design are often called software architects
- the boundary between them is very blurry
- they may develop algorithms and design patterns
11
development vs. design
12. Payment
Gateway
BILLING SYSTEM
Industry
Messaging
Standards
PCI
Compliance
Data Security
IT
Department –
Operational
Reqs
Legal
Constraints
Resource
ConstraintsOrganization
Roadmap
NFRs
…...
Architecture
design vs. architecture
“All architecture is design, but not all design is architecture” – Grady Booch, 2006
- Design deals with internal dependencies of the software system itself;
- Architecture mostly deals with external dependencies.
Design
- Design decisions are mostly technical in nature;
- Architectural decisions have both technical and business reasons.
12
13. product development and project delivery require different architects
13
Architects
product development - software architects
project delivery - solution architects
14. solution architecture
software-intensive systemssoftware systems
- A project is a temporary endeavor designed to produce a unique product, service or
result with a defined beginning and end.
- Solution architecture establishes a path between the current state and the future
state of the system.
- Solution architecture establishes a bridge between business and technology.
solution architect competencies
Solution architects deal with:
- Standards
- Frameworks
- Non-functional requirements
- Roadmaps
- Uncertainties
- Proof-of-concept
- Business constraints
- Technology constraints
- Buy vs. build
0
2
4
6
8
10
Leadership
Communication
Strategy
Organizational
Dynamics
Tactic/Process
Technology
Breadth
Technology Depth
Solution Architect
14
15. solution architecture vs. business analysis
15
Both Business Analysts and Solution Architects deal with current state
and future state:
◦ Business Analysts focus on “what?” - requirements
◦ Solution Architects focus on “how?” - transition/solution
Solution Architects provide guidance to Business Analysts in entire
requirement gathering process, particularly with
◦ NFR (non-functional requirements)
◦ Integration with other systems
16. solution architecture vs. project management
16
Both Project Managers and Solution Architects provide a bridge between
business and technology groups.
Both Project Managers and Solution Architects are (should be?) involved
from the very beginning (PO, pre-sales) to the very end (deployment and
stabilization) of the project.
◦ Solution Architects provide overall project governance from requirement gathering to
release into production
◦ Solution Architects develop solution architecture and oversee its implementation
Both are responsible for quality.
However, not only Project Managers and Solution Architects perform
different tasks and are responsible for different deliverables, they also own
different risks:
◦ Project Managers – scope, budget, time
◦ Solution Architects – solution (business as well as technical aspects)
17. solution architecture and enterprise architecture
17
Solution architecture is guided and governed by enterprise architecture.
18. enterprise architecture
Enterprise architecture is NOT software architecture for enterprises
Enterprise architecture is NOT software architecture with enterprise quality
Enterprise architecture is NOT software architecture …
Gartner Group: “Enterprise architecture (EA) is the process of translating business vision
and strategy into effective enterprise change by creating, communicating, and improving
the key principles and models that describe the enterprise’s future state and enable its
evolution.”
Enterprise Architecture deals with:
- Business and IT alignment
- Strategic IT planning
- Governance of the organization architecture process
- Guidance to solution architectures
- Examples: building reference architectures, providing roadmaps
- Examples: recommending industry and organization standards
- Examples: describing patterns and best practices
Some EA frameworks and methods (there are many more):
- Zachman, DoDAF, frameworks developed by governments or large corporations
- In North America, TOGAF (or TOGAF-based frameworks) is probably the most popular
18
23. other architectures and architects
- Well defined terms – enterprise architecture, solution architecture,
software architecture.
- Well defined terms within standards – e.g. TOGAF: application architecture,
information architecture, technology architecture, business architecture.
- Industry-recognized proprietary frameworks (large organizations)– e.g. Microsoft:
solution architect, infrastructure architect; Fujitsu Macroscope: system architect.
- Roles and titles in various organizations:
- SharePoint architect
- SAP architect
- integration architect
- security architect
- Web architect
- database architects
- technical architect
- abused terms: software architect, enterprise architect
23
24. agile architecture – is it an oxymoron?
24
Philippe Kruchten does not think so:
http://philippe.kruchten.com/2013/12/11/agile-architecture/
“The concept [of Agile Architecture] is not new: evolvability, software evolution,
re-engineering of existing systems have been studied and understood for a long time.”
“There is a naïve thinking that just by being agile, an architecture will gradually emerge, out
of bi-weekly refactorings.”
“The most common thinking nowadays is that architectural design and the gradual building
of the system (i.e., its user visible functionality) must go hand-in-hand, in subsequent iterations,
and the delicate issue is actually: how do we pace ourselves, how we address architectural
issues, and make decisions over time in a way that will lead to a flexible architecture, and enable
developers to proceed. In which order do we pick the quality attribute aspects and address
them.”