SlideShare a Scribd company logo
s
                                                                               re f or developer
                                                           Softwar e architectu



What is software   What is therole    of   How do you define         How do you share        How do you  deliver
  architecture?    a software architect?   software architecture?   software architecture?    software architecture?




          Good code isn’t enough
simon.brown@codingthearchitecture.com
    @simonbrown on Twitter
“Software Architecture for Developers”

                          Enterprise Architecture
     Technology and business strategy across organisations and organisational units.




                       {
                                                                System Architecture
                                                            Software and infrastructure architecture
                                                                   for an end-to-end system.



                                                                            Application
  We call this                                                              Architecture
  software
                                                                     Software architecture for an
                                                                      application, sub-system or
                                                                             component.
architecture
and it’s the scope
                                                                 /// <summary>
                                                                 /// Represents the behaviour behind the ...
                                                                 /// </summary>
                                                                 public class SomeWizard : AbstractWizard

  of the training                                                {
                                                                     private DomainObject _object;
                                                                     private WizardPage _page;


      course
                                                                     private WizardController _controller;

                                                                      public SomeWizard()
                                                                      {
                                                                      }

                                                                      ...

                                                                 }
“Enterprise Software Developer”




                  ctical train ing course
 A fo ur-day pra
                 g softwar   e within an
  ab out buildin                  ructured,
          e environm  ent in a st
enterpris                     atic way.
                   and pragm
     lightweight
Does good code          guarantee
  a successful software project?
A successful software project is about much


   more                 than good code
The reputation
of the development
 team is at stake!
It’s important    It’s important
that we know          that the
                   software we
   what                release
we’re releasing
                  “works”
                                   That’s us!
How much up-front
work do you need to do?
                This much?




                                   Iterative &
                                   Incremental
                                   Development


     Serial
  Development




                             This much?
Most projects simply do

what they’ve
always done
                                      a lly a
                                  usu
                           is is          e
                  An d th          f th
                          iat ion o       l! :-
                                                )
                      var          mod
                                        e
                         er  fall”
                   “ Wat
“
   What
are we building?
User stories
                                                 are high-level
                                                 requirements
                                    ant to        statements
                       tome  r, I w
              s a c us                  y bank
( 003)    A                n ma  nage m
                that  I ca
 log in so
               ts o nline.
  ac coun                 (009) Cus
                                      tomers ca
                         statement              n downloa
                                     s for the            d
            : Must                             last three
   Priority              months.

                   Priority: M
                               ust
Software architecture is the



    big         picture
Structure = components/services and their interactions
                 Guidelines = patterns, templates and examples



          Software architecture introduces

                    structure                           and


                    guidelines
        into a software system, leading to

   consistency clarity                          and


Consistency = a standard approach to solving common and recurring problems
Clarity = a thought out design with a clear architectural vision
Systems & Containers
Requirements




                 1-2 days
               for an initial design


                                                                 y
                                                          ativel
                                               coll  abor      te
                                          h is           e para
                                 Do ing t          e’s s
                                              eopl
                                  allows p         o  meet
                                          ide as t
   Components & Estimates
Can you deliver

everything?
Prob ably not!

Refine a nd challenge
                        Prioritise
     the scope
Kanban boards
 are an excellent way to
  visually track progress
Does your architecture

                          work?
                                                                  ng
   Satisfies th
                 e
                           Fou ndations for   Platfo rm for solvi
                   vers                                        blem
arch itectural dri             the code       the business pro
y
                                                    e ss b
                                             l y gu         r
                                    c a n on          ms o
                                You           d iagra
                                        g at
                                 look
                                     in
                                                e code
Will these software systems            s ourc

perform and scale acceptably?
Concrete
                  experiments




Requirements




  A system
                                          /
                                      type
                               p roto
                      wa way        pt o
                                         r
                 thro          once
Foundations    A
                     of  of c      code
                  pro       c tion
                     p rodu
Load testing client
   simulating concurrent                      Website
        user access




Simulate multiple users
                with a
 typical usage profile,
preferably with an environment as near   Other systems, data
       to production as possible            sources, etc
Source code control
     introduces a number of things, including:



          Backed-up
         source code                A log of the
                                                e
                                    changes mad




                         to
A simple w  ay to revert
                       opy
 a previou s working c         Sim plified parall
                                                  el

                                  development
Developers c
             ommit
              ode
                     Source code   Developers u
                                                 pdate
                                                 orking
 (check-in) c                        heir local w

                      repository
                                   t
              ocal                                -out)
 from their l                       copy (check
               y
   working cop




Developers
have a local
            y
working cop
of the code
2. Work on the
                         branch instead of
                             the trunk


                             branch
                                              4. Merge the
1. Create a branch                           branch back to
  from the trunk                             the trunk when
                                                 finished
                     3. Merge from the
                     trunk to keep the
                     branch up to date




                              trunk
How do you know that you’ve not

  broken something?
                                            e you
                                     t s giv
                            te d tes        acto
                                                 r
                   Au toma         t o re
                                          f
                            de nce
                    c  onfi
Low-level tests for
                            classes and
                            components




     Unit            &


 integration                     tests

“Functional” tests
 across container
    boundaries
How much do you test?
        This much?




0%                                     100%
                                                      e
                                                 t th
                                         s , tes
                                all step        code
                             Sm              ”
                                     ortant d goal)
                     This much? “imp      a go
                                               o
                                       is
                                       +
                                  (70%
to do  when
  T hings
              e soft ware
 build ing th
1. Compile  the code
                    to your w eb server
 2. Pub lish files
                   it works
 3. M aybe check
“
It works on
my machine!
       Even
             t h
            shou
                 e sim
                   ld
                       pl
                      be a
                          est
                           ut
                              of build
                              omat
                                   ed
                                       s
Continuous Integration                             Development Server
                                                          Web-tier
       Server



                                                   Development Server
                                                         Middle-tier

                           Automated
                           build script

                                                   Development Server
                                                          Database

      Subversion
  Source code repository


                             The continuous integration server gets the source
                               code from the repository and runs the build

                                    compiling, testing,
                                script;

                                 packaging and installing
                                               the software
Build-Test-Run when
                        we commit code to
                           the repository




     Continuous                    &


      nightly        builds

Continuous build +
   longer running
 integration tests
Automation introduces


 consistency
           and


repeatability          Auto
                             mate
                             ly us
                                   d rel
                                   eful
                                        eas
                                         if
                                             es a
                                             you’
                                                  re
                                                  re
                                                 es
                        real             br anch
                                ing on
                          work
Database connection strings

     Web service URLs

    Server IP addresses
                                            Software
     E-mail addresses                        System
      File locations
                                                                     are
                                                            it ems
                                                    ation                 se
    Service credentials                       igu r             xte rnali
                                       conf           if ic; e         de
                               Many            spec               e co
                                      nmen
                                            t                urc
                                    o                 e so
                              envir      f rom
                                                  th
                                 them
“
Anybody know which

  version
  we’re running?
“It doesn’t look
like version 1.2
           I’ve
            wo
                se en th
                rryin
                     gly
                         is h
                          regu
                              app
                               lar
                                   en o
                                        n a
                                    basis
                                          !
Software architectures don’t live in


     isolation
Current Development Team   Business Sponsors           Future Development Team




                           Your system

 Database Administrators                                Operations/Support Staff


                                                                           e
                                                                    e ctur
                                                             r chit
                                                    w are a           for
                                               Soft     pla  tfor
                                                                   m
                                                                        ocia
                                                                             l!
                                                  is a          .. be s
                                                         t ion .
                                                    ersa
                                               conv
      Other Teams           Security Team                 Compliance and Audit
O peration al View


                         stem
        How  does the sy
                             nd
        support monitoring a
            management?




              ple diagnose
   How do peo
        problems?
Let’s wrap up...
“Enterprise Software Developer”




                  ctical train ing course
 A fo ur-day pra
                 g softwar   e within an
  ab out buildin                  ructured,
          e environm  ent in a st
enterpris                     atic way.
                   and pragm
     lightweight
Source Code
                                                    Release
                                   Control
Enterprise software developer




     Software                   Automated Unit
                                                  Configuration
   Development                  and Integration
                                                  Management
    Processes                       Testing




                                  Automated
   Requirements                                   Load Testing
                                    Builds




    Architecture                  Continuous      Operational
     and Design                   Integration     Hand-over
simon.brown@codingthearchitecture.com
    @simonbrown on Twitter


                                                   !
                                            Th anks




     http://www.codingthearchitecture.com
                                               s
                             re f or developer
         Softwar e architectu

More Related Content

PDF
Model-Driven Software Development
PDF
Universal Understanding Brochure
PDF
CG2010 Introducing MDSD
DOCX
IG4 assignment motion graphics
DOCX
IG4 Assingment Brief
DOCX
Ig4 assignment motion_graphics_i_ved
PDF
Simon brown archsummit2012 the-frustrated-architect
PDF
Model-Driven Software Development
Universal Understanding Brochure
CG2010 Introducing MDSD
IG4 assignment motion graphics
IG4 Assingment Brief
Ig4 assignment motion_graphics_i_ved
Simon brown archsummit2012 the-frustrated-architect

What's hot (20)

PDF
8 - Architetture Software - Architecture centric processes
PDF
Kahuna Corporate Profile
PPTX
Project management
PPTX
Business Patterns for Software Developers
PDF
Introducing MDSD
PDF
How to Design Frameworks
PDF
TaskMan-Middleware 2011 - Advanced implementation
PPTX
SET NSF Final Presentation
PDF
An interactive exploration environment for complex process design
PDF
V Labs Product Presentation
PPT
01 introduction to_module
 
PDF
Build Community Android Distribution and Ensure the Quality
PDF
Impact Analysis - ImpactScale: Quantifying Change Impact to Predict Faults in...
PDF
Half-Push/Half-Polling
PDF
20110507 Implementing Continuous Deployment
PDF
Interactive Machine Learning
PDF
Evolving Threat Landscape
PDF
Design1
8 - Architetture Software - Architecture centric processes
Kahuna Corporate Profile
Project management
Business Patterns for Software Developers
Introducing MDSD
How to Design Frameworks
TaskMan-Middleware 2011 - Advanced implementation
SET NSF Final Presentation
An interactive exploration environment for complex process design
V Labs Product Presentation
01 introduction to_module
 
Build Community Android Distribution and Ensure the Quality
Impact Analysis - ImpactScale: Quantifying Change Impact to Predict Faults in...
Half-Push/Half-Polling
20110507 Implementing Continuous Deployment
Interactive Machine Learning
Evolving Threat Landscape
Design1
Ad

Similar to Good code-isnt-enough (20)

PDF
Architecture: where do you start?
PPT
Software Development Life Cycle
PPTX
Hack and Tell - wtf is the core mobile divide
PPT
Designingapplswithnet
PDF
Extension and Evolution
PPTX
Software Engineering
PPTX
Architecting & Developing On The Cloud Operating System Windows Azure V3
PPTX
Session One Intro
PPTX
PHX Session #5 : Architecture Without Big Design Up Front (Garibay)
PDF
What is Software Architecture?
PDF
Simon Brown: Software Architecture as Code at I T.A.K.E. Unconference 2015
PDF
Framework Engineering_Final
PPTX
Introduction to Software Reverse Engineering
PPTX
BDD presentation
PDF
Organizing Design-Driven Development Using Rational Requirements Composer
PDF
Dicoding Developer Coaching #31: Android | Menerapkan Clean Architecture di A...
PPTX
PDF
ASAS 2014 - Simon Brown
PDF
Drupal 7 ci and testing
PPTX
Reengineering including reverse & forward Engineering
Architecture: where do you start?
Software Development Life Cycle
Hack and Tell - wtf is the core mobile divide
Designingapplswithnet
Extension and Evolution
Software Engineering
Architecting & Developing On The Cloud Operating System Windows Azure V3
Session One Intro
PHX Session #5 : Architecture Without Big Design Up Front (Garibay)
What is Software Architecture?
Simon Brown: Software Architecture as Code at I T.A.K.E. Unconference 2015
Framework Engineering_Final
Introduction to Software Reverse Engineering
BDD presentation
Organizing Design-Driven Development Using Rational Requirements Composer
Dicoding Developer Coaching #31: Android | Menerapkan Clean Architecture di A...
ASAS 2014 - Simon Brown
Drupal 7 ci and testing
Reengineering including reverse & forward Engineering
Ad

More from Skills Matter (20)

PDF
5 things cucumber is bad at by Richard Lawrence
ODP
Patterns for slick database applications
PDF
Scala e xchange 2013 haoyi li on metascala a tiny diy jvm
ODP
Oscar reiken jr on our success at manheim
ODP
Progressive f# tutorials nyc dmitry mozorov & jack pappas on code quotations ...
PDF
Cukeup nyc ian dees on elixir, erlang, and cucumberl
PDF
Cukeup nyc peter bell on getting started with cucumber.js
PDF
Agile testing & bdd e xchange nyc 2013 jeffrey davidson & lav pathak & sam ho...
ODP
Progressive f# tutorials nyc rachel reese & phil trelford on try f# from zero...
ODP
Progressive f# tutorials nyc don syme on keynote f# in the open source world
PDF
Agile testing & bdd e xchange nyc 2013 gojko adzic on bond villain guide to s...
PPTX
Dmitry mozorov on code quotations code as-data for f#
PDF
A poet's guide_to_acceptance_testing
PDF
Russ miles-cloudfoundry-deep-dive
KEY
Serendipity-neo4j
PDF
Simon Peyton Jones: Managing parallelism
PDF
Plug 20110217
PDF
Lug presentation
PPT
I went to_a_communications_workshop_and_they_t
PDF
Plug saiku
5 things cucumber is bad at by Richard Lawrence
Patterns for slick database applications
Scala e xchange 2013 haoyi li on metascala a tiny diy jvm
Oscar reiken jr on our success at manheim
Progressive f# tutorials nyc dmitry mozorov & jack pappas on code quotations ...
Cukeup nyc ian dees on elixir, erlang, and cucumberl
Cukeup nyc peter bell on getting started with cucumber.js
Agile testing & bdd e xchange nyc 2013 jeffrey davidson & lav pathak & sam ho...
Progressive f# tutorials nyc rachel reese & phil trelford on try f# from zero...
Progressive f# tutorials nyc don syme on keynote f# in the open source world
Agile testing & bdd e xchange nyc 2013 gojko adzic on bond villain guide to s...
Dmitry mozorov on code quotations code as-data for f#
A poet's guide_to_acceptance_testing
Russ miles-cloudfoundry-deep-dive
Serendipity-neo4j
Simon Peyton Jones: Managing parallelism
Plug 20110217
Lug presentation
I went to_a_communications_workshop_and_they_t
Plug saiku

Recently uploaded (20)

PDF
cuic standard and advanced reporting.pdf
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PPTX
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PPTX
sap open course for s4hana steps from ECC to s4
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
KodekX | Application Modernization Development
PDF
Spectral efficient network and resource selection model in 5G networks
PPT
Teaching material agriculture food technology
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
MIND Revenue Release Quarter 2 2025 Press Release
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
cuic standard and advanced reporting.pdf
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Mobile App Security Testing_ A Comprehensive Guide.pdf
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
NewMind AI Weekly Chronicles - August'25 Week I
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
sap open course for s4hana steps from ECC to s4
Network Security Unit 5.pdf for BCA BBA.
KodekX | Application Modernization Development
Spectral efficient network and resource selection model in 5G networks
Teaching material agriculture food technology
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
Encapsulation_ Review paper, used for researhc scholars
MIND Revenue Release Quarter 2 2025 Press Release
Diabetes mellitus diagnosis method based random forest with bat algorithm
The Rise and Fall of 3GPP – Time for a Sabbatical?
Per capita expenditure prediction using model stacking based on satellite ima...
Digital-Transformation-Roadmap-for-Companies.pptx

Good code-isnt-enough

  • 1. s re f or developer Softwar e architectu What is software What is therole of How do you define How do you share How do you deliver architecture? a software architect? software architecture? software architecture? software architecture? Good code isn’t enough
  • 2. simon.brown@codingthearchitecture.com @simonbrown on Twitter
  • 3. “Software Architecture for Developers” Enterprise Architecture Technology and business strategy across organisations and organisational units. { System Architecture Software and infrastructure architecture for an end-to-end system. Application We call this Architecture software Software architecture for an application, sub-system or component. architecture and it’s the scope /// <summary> /// Represents the behaviour behind the ... /// </summary> public class SomeWizard : AbstractWizard of the training { private DomainObject _object; private WizardPage _page; course private WizardController _controller; public SomeWizard() { } ... }
  • 4. “Enterprise Software Developer” ctical train ing course A fo ur-day pra g softwar e within an ab out buildin ructured, e environm ent in a st enterpris atic way. and pragm lightweight
  • 5. Does good code guarantee a successful software project?
  • 6. A successful software project is about much more than good code
  • 7. The reputation of the development team is at stake! It’s important It’s important that we know that the software we what release we’re releasing “works” That’s us!
  • 8. How much up-front work do you need to do? This much? Iterative & Incremental Development Serial Development This much?
  • 9. Most projects simply do what they’ve always done a lly a usu is is e An d th f th iat ion o l! :- ) var mod e er fall” “ Wat
  • 10. What are we building?
  • 11. User stories are high-level requirements ant to statements tome r, I w s a c us y bank ( 003) A n ma nage m that I ca log in so ts o nline. ac coun (009) Cus tomers ca statement n downloa s for the d : Must last three Priority months. Priority: M ust
  • 12. Software architecture is the big picture
  • 13. Structure = components/services and their interactions Guidelines = patterns, templates and examples Software architecture introduces structure and guidelines into a software system, leading to consistency clarity and Consistency = a standard approach to solving common and recurring problems Clarity = a thought out design with a clear architectural vision
  • 14. Systems & Containers Requirements 1-2 days for an initial design y ativel coll abor te h is e para Do ing t e’s s eopl allows p o meet ide as t Components & Estimates
  • 15. Can you deliver everything? Prob ably not! Refine a nd challenge Prioritise the scope
  • 16. Kanban boards are an excellent way to visually track progress
  • 17. Does your architecture work? ng Satisfies th e Fou ndations for Platfo rm for solvi vers blem arch itectural dri the code the business pro
  • 18. y e ss b l y gu r c a n on ms o You d iagra g at look in e code Will these software systems s ourc perform and scale acceptably?
  • 19. Concrete experiments Requirements A system / type p roto wa way pt o r thro once Foundations A of of c code pro c tion p rodu
  • 20. Load testing client simulating concurrent Website user access Simulate multiple users with a typical usage profile, preferably with an environment as near Other systems, data to production as possible sources, etc
  • 21. Source code control introduces a number of things, including: Backed-up source code A log of the e changes mad to A simple w ay to revert opy a previou s working c Sim plified parall el development
  • 22. Developers c ommit ode Source code Developers u pdate orking (check-in) c heir local w repository t ocal -out) from their l copy (check y working cop Developers have a local y working cop of the code
  • 23. 2. Work on the branch instead of the trunk branch 4. Merge the 1. Create a branch branch back to from the trunk the trunk when finished 3. Merge from the trunk to keep the branch up to date trunk
  • 24. How do you know that you’ve not broken something? e you t s giv te d tes acto r Au toma t o re f de nce c onfi
  • 25. Low-level tests for classes and components Unit & integration tests “Functional” tests across container boundaries
  • 26. How much do you test? This much? 0% 100% e t th s , tes all step code Sm ” ortant d goal) This much? “imp a go o is + (70%
  • 27. to do when T hings e soft ware build ing th 1. Compile the code to your w eb server 2. Pub lish files it works 3. M aybe check
  • 28. “ It works on my machine! Even t h shou e sim ld pl be a est ut of build omat ed s
  • 29. Continuous Integration Development Server Web-tier Server Development Server Middle-tier Automated build script Development Server Database Subversion Source code repository The continuous integration server gets the source code from the repository and runs the build compiling, testing, script; packaging and installing the software
  • 30. Build-Test-Run when we commit code to the repository Continuous & nightly builds Continuous build + longer running integration tests
  • 31. Automation introduces consistency and repeatability Auto mate ly us d rel eful eas if es a you’ re re es real br anch ing on work
  • 32. Database connection strings Web service URLs Server IP addresses Software E-mail addresses System File locations are it ems ation se Service credentials igu r xte rnali conf if ic; e de Many spec e co nmen t urc o e so envir f rom th them
  • 33. “ Anybody know which version we’re running?
  • 34. “It doesn’t look like version 1.2 I’ve wo se en th rryin gly is h regu app lar en o n a basis !
  • 35. Software architectures don’t live in isolation
  • 36. Current Development Team Business Sponsors Future Development Team Your system Database Administrators Operations/Support Staff e e ctur r chit w are a for Soft pla tfor m ocia l! is a .. be s t ion . ersa conv Other Teams Security Team Compliance and Audit
  • 37. O peration al View stem How does the sy nd support monitoring a management? ple diagnose How do peo problems?
  • 39. “Enterprise Software Developer” ctical train ing course A fo ur-day pra g softwar e within an ab out buildin ructured, e environm ent in a st enterpris atic way. and pragm lightweight
  • 40. Source Code Release Control Enterprise software developer Software Automated Unit Configuration Development and Integration Management Processes Testing Automated Requirements Load Testing Builds Architecture Continuous Operational and Design Integration Hand-over
  • 41. simon.brown@codingthearchitecture.com @simonbrown on Twitter ! Th anks http://www.codingthearchitecture.com s re f or developer Softwar e architectu