Software Architecture
Fundamentals Part-1
Architecture soft skill
By Freddy Munandar
26 Nov 2016
About Me
I'm an active member of IASA Global - An Association
for All IT Architects and MAPA – Microsoft Association
of Practicing Architects . I'm also Certified Microsoft
MCPD for ASP.NET.
Technology research is my favorite things especially in
Software Development. I love transforming the
research result by creating software that can make job
or activity more faster to finish, more accurate and
more fun.
Ongoing open source project www.aspknife.net
2
Agenda
• Architecture aspects
• Technical knowledge
• Diagram as communication tools
3
4
Technical Knowledge
Stuff you know
Stuff you have to maintain
Stuff you know
You don’t know
Stuff you don’t know
You don’t know
Technical
depth Technical
breadth
Focus here
5
Technical Knowledge (continue)
Multiplatform knowledge
Just Advice, better to have multiple knowledge that’s is not
vendor locking. You can integrate the best part of each.
This is part of technical breadth
The more you know, it could be more effective and efficient
to provide architecture solution
6
Technical Knowledge (continue)
Increase Technical Breadth
• Read Tech web such as https://techcrunch.com/
http://mashable.com/ http://www.zdnet.com/ etc.
• Going to tech meetup, seminar, event, workshop, conferences
• Read magazine such MSDN magazine, Wired magazine, etc.
• Teaching, coaching, mentoring, sharing
• Follows big company such as Microsoft, Google, Facebook, etc.
• Technology Radars
7
8
9
10
11
Technology Radar
• A living document to assess the risks and rewards of existing
and nascent technologies.
• Personal radar, to help guide career decisions
• Enterprise radar, for employer, to help restore sanity to
purchasing decisions and technology direction
12
13
14
15
Imagine if we can zoom in and
zoom out our code from low-
level to high-level overview.
It would be nice, right? 
16
Diagram as a communication tool and
navigation
17
Introduce
C4 Model
The "C4 model" is a simple hierarchical way to think about the
static structures of a software system in terms
of containers, components and classes (or code).
18
A software system is made up of one or more containers,
each of which contains one or more components,
which in turn are implemented by one or more classes.
System context diagram
Level 1
19
The focus should be on people (actors, roles, personas, etc) and
software systems rather than technologies, protocols and other low-
level details.
It's the sort of diagram that you could show to non-technical people.
Container diagram
Level 2
20
A container diagram shows the high-level
shape of the software architecture and how
responsibilities are distributed across it.
It also shows the major technology choices
and how the containers communicate with
one another.
It's a simple, high-level technology
focussed diagram that is useful for
software developers and
support/operations staff alike
Component diagram(s)
Level 3
21
Decompose each container.
The components diagram shows
how a container is divided into
components, what each of those
components are, their
responsibilities and the
technology/implementation
details.
Class diagram(s)
Level 4
This is optional, but draw one
or more UML class diagrams if
you want to illustrate specific
component implementation
details.
22
C4 Model Demo
https://structurizr.com/public/21#Context
23
Robert C. Martin
24
For more information
• The Information Technology Architecture Body of Knowledge
(ITABoK) from IASA - http://iasaglobal.org/itabok/
• O’Reilly Software Architecture -
https://www.oreilly.com/topics/software-architecture
• Simon Brown - http://www.codingthearchitecture.com/
• https://www.thoughtworks.com/radar/faq
• http://nealford.com/memeagora/2013/05/28/build_your_own_techno
logy_radar.html
• https://www.structurizr.com/
• https://8thlight.com/blog/uncle-bob/2011/09/30/Screaming-
Architecture.html
25

Software Architecture Fundamentals Part-1 Architecture soft skill

  • 1.
    Software Architecture Fundamentals Part-1 Architecturesoft skill By Freddy Munandar 26 Nov 2016
  • 2.
    About Me I'm anactive member of IASA Global - An Association for All IT Architects and MAPA – Microsoft Association of Practicing Architects . I'm also Certified Microsoft MCPD for ASP.NET. Technology research is my favorite things especially in Software Development. I love transforming the research result by creating software that can make job or activity more faster to finish, more accurate and more fun. Ongoing open source project www.aspknife.net 2
  • 3.
    Agenda • Architecture aspects •Technical knowledge • Diagram as communication tools 3
  • 4.
  • 5.
    Technical Knowledge Stuff youknow Stuff you have to maintain Stuff you know You don’t know Stuff you don’t know You don’t know Technical depth Technical breadth Focus here 5
  • 6.
    Technical Knowledge (continue) Multiplatformknowledge Just Advice, better to have multiple knowledge that’s is not vendor locking. You can integrate the best part of each. This is part of technical breadth The more you know, it could be more effective and efficient to provide architecture solution 6
  • 7.
    Technical Knowledge (continue) IncreaseTechnical Breadth • Read Tech web such as https://techcrunch.com/ http://mashable.com/ http://www.zdnet.com/ etc. • Going to tech meetup, seminar, event, workshop, conferences • Read magazine such MSDN magazine, Wired magazine, etc. • Teaching, coaching, mentoring, sharing • Follows big company such as Microsoft, Google, Facebook, etc. • Technology Radars 7
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
    Technology Radar • Aliving document to assess the risks and rewards of existing and nascent technologies. • Personal radar, to help guide career decisions • Enterprise radar, for employer, to help restore sanity to purchasing decisions and technology direction 12
  • 13.
  • 14.
  • 15.
  • 16.
    Imagine if wecan zoom in and zoom out our code from low- level to high-level overview. It would be nice, right?  16
  • 17.
    Diagram as acommunication tool and navigation 17 Introduce C4 Model The "C4 model" is a simple hierarchical way to think about the static structures of a software system in terms of containers, components and classes (or code).
  • 18.
    18 A software systemis made up of one or more containers, each of which contains one or more components, which in turn are implemented by one or more classes.
  • 19.
    System context diagram Level1 19 The focus should be on people (actors, roles, personas, etc) and software systems rather than technologies, protocols and other low- level details. It's the sort of diagram that you could show to non-technical people.
  • 20.
    Container diagram Level 2 20 Acontainer diagram shows the high-level shape of the software architecture and how responsibilities are distributed across it. It also shows the major technology choices and how the containers communicate with one another. It's a simple, high-level technology focussed diagram that is useful for software developers and support/operations staff alike
  • 21.
    Component diagram(s) Level 3 21 Decomposeeach container. The components diagram shows how a container is divided into components, what each of those components are, their responsibilities and the technology/implementation details.
  • 22.
    Class diagram(s) Level 4 Thisis optional, but draw one or more UML class diagrams if you want to illustrate specific component implementation details. 22
  • 23.
  • 24.
  • 25.
    For more information •The Information Technology Architecture Body of Knowledge (ITABoK) from IASA - http://iasaglobal.org/itabok/ • O’Reilly Software Architecture - https://www.oreilly.com/topics/software-architecture • Simon Brown - http://www.codingthearchitecture.com/ • https://www.thoughtworks.com/radar/faq • http://nealford.com/memeagora/2013/05/28/build_your_own_techno logy_radar.html • https://www.structurizr.com/ • https://8thlight.com/blog/uncle-bob/2011/09/30/Screaming- Architecture.html 25

Editor's Notes

  • #5 Technical Knowledge first because I want to try bottom top approach From developer to architect. Which is developer may interact with many technology which is technical knowledge area
  • #6 Technical breadth is very important for Software architect Because its will impact with the architecture solution. The more we know, we can do pragmatic approach
  • #13 Sebuah dokumen hidup untuk menilai risiko dan manfaat dari teknologi yang ada dan baru lahir. radar pribadi, untuk membantu memandu keputusan karir Perusahaan radar, majikan, untuk membantu mengembalikan kewarasan keputusan pembelian dan arah teknologi
  • #14 Show Indonesia map
  • #15 Show zoom in map for Jakarta
  • #16 Map zoom in for Blibli office.
  • #18 Showing Map as analogy Diagram to navigate each level into code
  • #25 Uncle Bob references… When someone look at the top level diagram, they can said Oow.. This a church Oow. This ia a trading syste ….