Slide 1

Slide 1 text

vladikk doit-intl.com Join at slido.com with #testcon2019 TESTING SOFTWARE ARCHITECTURE

Slide 2

Slide 2 text

vladikk doit-intl.com Join at slido.com with #testcon2019 @vladikk vladikk.com DoiT International

Slide 3

Slide 3 text

vladikk doit-intl.com Join at slido.com with #testcon2019

Slide 4

Slide 4 text

vladikk doit-intl.com Join at slido.com with #testcon2019

Slide 5

Slide 5 text

vladikk doit-intl.com Join at slido.com with #testcon2019

Slide 6

Slide 6 text

vladikk doit-intl.com Join at slido.com with #testcon2019

Slide 7

Slide 7 text

vladikk doit-intl.com Join at slido.com with #testcon2019

Slide 8

Slide 8 text

vladikk doit-intl.com Join at slido.com with #testcon2019 Design Patterns Libraries / Frameworks Infrastructural components Programming languages

Slide 9

Slide 9 text

vladikk doit-intl.com Join at slido.com with #testcon2019 Adapting to changes in business Adapting to changes in technology Testing out assumptions Evolutionary architecture

Slide 10

Slide 10 text

vladikk doit-intl.com Join at slido.com with #testcon2019

Slide 11

Slide 11 text

vladikk doit-intl.com Join at slido.com with #testcon2019 So#ware Architecture Tes1ng So#ware Architecture Automa1on Architectural Tests

Slide 12

Slide 12 text

vladikk doit-intl.com Join at slido.com with #testcon2019 SOFTWARE
 ARCHITECTURE

Slide 13

Slide 13 text

vladikk doit-intl.com Join at slido.com with #testcon2019 "Architecture is about the important stuff, whatever that is”
 - Ralph Johnson “Software architecture is those decisions which are
 both important and hard to change” 
 - Martin Fowler

Slide 14

Slide 14 text

vladikk doit-intl.com Join at slido.com with #testcon2019 …but it’s hard!!! SOFTWARE SOLVES PROBLEMS GOOD DESIGN SUPPORTS THE BUSINESS

Slide 15

Slide 15 text

vladikk doit-intl.com Join at slido.com with #testcon2019 Infrastructure Databases Architectural styles Frameworks Languages Methodologies

Slide 16

Slide 16 text

vladikk doit-intl.com Join at slido.com with #testcon2019 THE GOAL OF SOFTWARE ARCHITECTURE IS TO MANAGE COMPLEXITY!

Slide 17

Slide 17 text

vladikk doit-intl.com Join at slido.com with #testcon2019 1. Component level 2. System level 3. Implementation level Complexity Management

Slide 18

Slide 18 text

vladikk doit-intl.com Join at slido.com with #testcon2019 Local Complexity

Slide 19

Slide 19 text

vladikk doit-intl.com Join at slido.com with #testcon2019 Global Complexity

Slide 20

Slide 20 text

vladikk doit-intl.com Join at slido.com with #testcon2019 Global Complexity

Slide 21

Slide 21 text

vladikk doit-intl.com Join at slido.com with #testcon2019 ARCHITECTURE = BOUNDARIES DESIGN

Slide 22

Slide 22 text

vladikk doit-intl.com Join at slido.com with #testcon2019 "System design … is inherently about boundaries - what’s in, what's out, what spans, what moves between, and about tradeoffs. It reshapes what is outside, just as it shapes what is inside.” - Ruth Malan

Slide 23

Slide 23 text

vladikk doit-intl.com Join at slido.com with #testcon2019 Big design upfront No design Architect Evolutionary architecture

Slide 24

Slide 24 text

vladikk doit-intl.com Join at slido.com with #testcon2019 ENTROPY - GRADUAL DECLINE INTO DISORDER

Slide 25

Slide 25 text

vladikk doit-intl.com Join at slido.com with #testcon2019

Slide 26

Slide 26 text

vladikk doit-intl.com Join at slido.com with #testcon2019

Slide 27

Slide 27 text

vladikk doit-intl.com Join at slido.com with #testcon2019

Slide 28

Slide 28 text

vladikk doit-intl.com Join at slido.com with #testcon2019 TESTING SOFTWARE
 ARCHITECTURE

Slide 29

Slide 29 text

vladikk doit-intl.com Join at slido.com with #testcon2019 FUNCTIONAL TESTING: UNIT, INTEGRATION, END-TO-END NON-FUNCTIONAL TESTING: PERFORMANCE, STRESS, SECURITY, USABILITY, ETC DESIGN TESTING: LOCAL AND GLOBAL COMPLEXITIES OF THE DESIGN

Slide 30

Slide 30 text

vladikk doit-intl.com Join at slido.com with #testcon2019 Good Architecture Easy to navigate Easy to contribute Easy to change Delivers business goals

Slide 31

Slide 31 text

vladikk doit-intl.com Join at slido.com with #testcon2019 Bad Architecture Hard to navigate Hard to contribute Hard to change Under/over engineered Big ball of mud

Slide 32

Slide 32 text

vladikk doit-intl.com Join at slido.com with #testcon2019 "A Big Ball of Mud is a haphazardly structured, sprawling, sloppy, duct-tape-and-baling-wire, spaghetti-code jungle. These systems show unmistakable signs of unregulated growth, and repeated, expedient repair. Information is shared promiscuously among distant elements of the system, often to the point where nearly all the important information becomes global or duplicated.” - Joseph Yoder

Slide 33

Slide 33 text

vladikk doit-intl.com Join at slido.com with #testcon2019 ARCHITECTURE = BOUNDARIES DESIGN GOOD ARCHITECTURE: GOOD BOUNDARIES BAD ARCHITECTURE: BAD BOUNDARIES

Slide 34

Slide 34 text

vladikk doit-intl.com Join at slido.com with #testcon2019 BAD BOUNDARIES = EVERYBODY SUFFERS

Slide 35

Slide 35 text

vladikk doit-intl.com Join at slido.com with #testcon2019 So9ware Engineers Hard to add new functionality Hard to change existing functionality Impossible to unit test

Slide 36

Slide 36 text

vladikk doit-intl.com Join at slido.com with #testcon2019 Global Complexity

Slide 37

Slide 37 text

vladikk doit-intl.com Join at slido.com with #testcon2019

Slide 38

Slide 38 text

vladikk doit-intl.com Join at slido.com with #testcon2019 QA Engineers Defects caused by logic duplication Regression testing in-proportionally long

Slide 39

Slide 39 text

vladikk doit-intl.com Join at slido.com with #testcon2019 Database Administrators Multiple sources of truth Inconsistent data that has to be fixed manually Lack of transactions due to design constraints

Slide 40

Slide 40 text

vladikk doit-intl.com Join at slido.com with #testcon2019 OperaAons No DevOps culture Big releases Rare deployments Complex configurations for components

Slide 41

Slide 41 text

vladikk doit-intl.com Join at slido.com with #testcon2019 OperaAons No DevOps culture Big releases Rare deployments Complex configurations for components So9ware Engineers Hard to add new functionality Hard to change existing functionality Impossible to unit test QA Engineers Defects caused by logic duplication Regression testing in-proportionally long Database Administrators Multiple sources of truth Inconsistent data that has to be fixed manually Lack of transactions due to design constraints BAD BOUNDARIES = EVERYBODY SUFFERS

Slide 42

Slide 42 text

vladikk doit-intl.com Join at slido.com with #testcon2019 GOOD ARCHITECTURE REQUIRES SHARED OWNERSHIP

Slide 43

Slide 43 text

vladikk doit-intl.com Join at slido.com with #testcon2019 AUTOMATING ARCHITECTURAL TESTS

Slide 44

Slide 44 text

vladikk doit-intl.com Join at slido.com with #testcon2019 StaAc Code Analysis Analyze the codebase Query the code’s health Flexible health rules definitions Build pipeline integrations

Slide 45

Slide 45 text

vladikk doit-intl.com Join at slido.com with #testcon2019

Slide 46

Slide 46 text

vladikk doit-intl.com Join at slido.com with #testcon2019

Slide 47

Slide 47 text

vladikk doit-intl.com Join at slido.com with #testcon2019

Slide 48

Slide 48 text

vladikk doit-intl.com Join at slido.com with #testcon2019

Slide 49

Slide 49 text

vladikk doit-intl.com Join at slido.com with #testcon2019

Slide 50

Slide 50 text

vladikk doit-intl.com Join at slido.com with #testcon2019

Slide 51

Slide 51 text

vladikk doit-intl.com Join at slido.com with #testcon2019

Slide 52

Slide 52 text

vladikk doit-intl.com Join at slido.com with #testcon2019

Slide 53

Slide 53 text

vladikk doit-intl.com Join at slido.com with #testcon2019 EVOLUTION DRIVERS

Slide 54

Slide 54 text

vladikk doit-intl.com Join at slido.com with #testcon2019 ORGANIZATIONAL CHANGE DRIVERS SMALL: AD-HOC INTEGRATION LARGE: FORMAL INTEGRATION

Slide 55

Slide 55 text

vladikk doit-intl.com Join at slido.com with #testcon2019 BUSINESS STRATEGY CHANGE DRIVERS SUPPORTING CORE BUSINESS

Slide 56

Slide 56 text

vladikk doit-intl.com Join at slido.com with #testcon2019 WRAP UP

Slide 57

Slide 57 text

vladikk doit-intl.com Join at slido.com with #testcon2019 Software architecture manages complexity Local and global complexities Everyone suffers if module boundaries are ineffective Look for symptoms of bad boundaries. And react! Use static code analysis tools to control codebase evolution Look for chages in the organization structure and business strategies that affect software design

Slide 58

Slide 58 text

vladikk doit-intl.com Join at slido.com with #testcon2019

Slide 59

Slide 59 text

https://bit.ly/2ptJ5fS THANK
 YOU! @vladikk vladikk.com https://bit.ly/31nSD9c http://careers.doit-intl.com