Software Architecture Fundamentals Part-1 Architecture soft skill

Preview:

Citation preview

Software Architecture Fundamentals Part-1

Architecture soft skillBy Freddy Munandar

26 Nov 2016

2

About MeI'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

3

Agenda•Architecture aspects•Technical knowledge•Diagram as communication tools

4

5

Technical Knowledge

Stuff you knowStuff you have to maintain

Stuff you knowYou don’t know

Stuff you don’t knowYou don’t know

Technicaldepth Technical

breadth

Focus here

6

Technical Knowledge (continue)

Multiplatform knowledgeJust 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

7

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

8

9

10

11

12

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

13

14

15

16

Imagine if we can zoom in and zoom out our code from low-level to high-level overview.

It would be nice, right?

17

Diagram as a communication tool and navigation

IntroduceC4 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.

19

System context diagramLevel 1

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 diagramLevel 2A 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

21

Component diagram(s)Level 3

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.

22

Class diagram(s)Level 4This is optional, but draw one or more UML class diagrams if you want to illustrate specific component implementation details.

23

C4 Model Demohttps://structurizr.com/public/21#Context

24

Robert C. Martin

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

_technology_radar.html• https://www.structurizr.com/• https://8thlight.com/blog/uncle-bob/2011/09/30/Screaming-

Architecture.html