SlideShare une entreprise Scribd logo
1  sur  134
Architecture In the Small Richard Banks Principal Consultant, Readify Sydney & Virtual ALT.NET Groups http://richardsbraindump.blogspot.com richard.banks@readify.net http://twitter.com/rbanks54
What Does an Architect do?
3 Fundamentals
Communicate the Vision
Explain how to “Get There”™
Lead the Way Technically
and Architecture Itself?
The Design & Structure
Underpins the Vision
Architecture is...
Simple, Right?
NSW Transit T-Card $370million 10 years 0 to show
Westpac Rebuild (1988) $156 million 3 years 0 to show
Not just big projects
Apps that can’t support 10 users
Apps that lose/corrupt data
Apps that are
So where does it go wrong?
Project Failure Reasons Architect Involvement Has Yellow Background
Unrealistic or unarticulated goals
Inaccurate estimates
Badly defined system requirements
Poor reporting of the project's status
Unmanaged risks
Poor communication among customers, developers, and users
Use of immature technology
Inability to handle  the project's complexity and Over Complexificationisationing
Sloppydevelopment practices
Poor project management
Stakeholder politics
Commercial pressures
Another Issue...
Software Is Designed Top Down
Software is Built Bottom Up
[Serializable][AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Class, AllowMultiple = false, Inherited = false)][MulticastAttributeUsage(MulticastTargets.Class, AllowMultiple = false)]publicclassNotifyPropertyChangedAttribute : CompoundAspect{publicintAspectPriority { get; set; }publicoverridevoidProvideAspects(object element, LaosReflectionAspectCollection collection){Typetype = (Type)element;collection.AddAspect(type, newPropertyChangedAspect { AspectPriority = AspectPriority });foreach (PropertyInfopropertyInfointype.GetProperties(BindingFlags.Public | BindingFlags.Instance)   .Where(pi => pi.GetGetMethod() != null && pi.GetSetMethod() != null))   {collection.AddAspect(propertyInfo.GetSetMethod(), newNotifyPropertyChangedAspect(propertyInfo.Name,  propertyInfo.PropertyType, propertyInfo.DeclaringType)              { AspectPriority = AspectPriority } );     }  }}
Design == What Code == How
There’s a Disconnect Here
It’s the Architect’s Problem
Solution:
Design & Architect code at the Lowest Levels to Support High Level design goals
Architecture in the Small
Deals with (at least)  3 Failure Causes
Complexity Technical Risk Sloppy Practices
Where Architects Go Wrong
Stopping Short on Design
Believing Marketecture
Following Guidance without Thinking (P&P)
Inattention To Detail
N.I.H. Syndrome
Not (properly) Explaining Howthings should be done
Not Trying Out What They Expect Others To Do
a.k.a. One-Directional Architecture Only doing Top Down Design
Remember: The only way to “Get There” is via code
ArchitectsMUST write code
If you code it you can explain it
(Dis)Prove the Marketecture
Ensure Guidance Makes Sense
Provide Examples Others Can Follow
Deal With Technical Risk
Find Problems You Overlooked
Example: AOP
Choice of Methods IL Weaving Interceptors Roll your own
Choice of Tools EntLib IoC Container PostSharp ...more
Impact on compile times
Impact on discoverability
Impact on debugging
Impact on runtime performance
Impact on developers
If you’ve never tried it... How will you prove it works? How will you show others?
Another Thing to Consider
Teams mimic their architect
Write Clean, Maintainable Code
Example Time
Worst Method?
CC: 81 LOC: 282 Coupling: 32
Complexity FAIL!
Lesson: Keep Code Simple But don’t be simplistic
Lesson: Small Methods Only 20 Lines or Less
Lesson: Small Classes
Lesson: Loose Coupling
Lesson: Meaningful Names
Lesson: Use Domain Language
Lesson: Single Responsibility
Lesson: Discoverable API
Lesson: Single Level Of Abstraction
Lesson: Avoid the “Duh!” Experience: Captain Obvious comments indicate a poorly architected system
A Note on Unit Testing
Test Code == Production Code
Lesson: Name Tests Well
Lesson: Assert Something!
Lesson: Test Behaviour Not State
Lesson: Test Just One Behaviour
What About the *ilities
Usability: (Subjective)
Maintainability: Destroyed in the small Includes agility, flexibility, testability, etc
Scalability: Hampered by the small
Reliability: Brought down by the small
Extensibility: Stymied by the small
Securability: Foiled via the small
Performance: Stalled by the small
It all comes from what happens in the small
Recap
Architects Are Project Fail Points
Architects Need to Code
Prove The Design
Lead By Example
Follow Sound Practices
Simple but Not Simplistic Code
Communicate via Code (not just Diagrams)
And sweat the details!
Thank You! http://richardsbraindump.blogspot.com http://twitter.com/rbanks54 richard.banks@readify.net

Contenu connexe

Similaire à Architecture In The Small

caring_about_code_quality
caring_about_code_qualitycaring_about_code_quality
caring_about_code_quality
Ketan Patel
 
Oop 2014 sw architekt v3
Oop 2014 sw architekt v3Oop 2014 sw architekt v3
Oop 2014 sw architekt v3
Michael Stal
 
Secrets of going codeless - How to build enterprise apps without coding
Secrets of going codeless - How to build enterprise apps without codingSecrets of going codeless - How to build enterprise apps without coding
Secrets of going codeless - How to build enterprise apps without coding
Newton Day Uploads
 
Software Development in 21st Century
Software Development in 21st CenturySoftware Development in 21st Century
Software Development in 21st Century
Henry Jacob
 
Architecting a Data Platform For Enterprise Use (Strata NY 2018)
Architecting a Data Platform For Enterprise Use (Strata NY 2018)Architecting a Data Platform For Enterprise Use (Strata NY 2018)
Architecting a Data Platform For Enterprise Use (Strata NY 2018)
mark madsen
 

Similaire à Architecture In The Small (20)

Career Development for Architects
Career Development for ArchitectsCareer Development for Architects
Career Development for Architects
 
Caring about Code Quality
Caring about Code QualityCaring about Code Quality
Caring about Code Quality
 
What are Tips for Working with Engineering & Design by Zume PM
What are Tips for Working with Engineering & Design by Zume PMWhat are Tips for Working with Engineering & Design by Zume PM
What are Tips for Working with Engineering & Design by Zume PM
 
IT Portfolio Seminar
IT Portfolio Seminar   IT Portfolio Seminar
IT Portfolio Seminar
 
caring_about_code_quality
caring_about_code_qualitycaring_about_code_quality
caring_about_code_quality
 
Oop 2014 sw architekt v3
Oop 2014 sw architekt v3Oop 2014 sw architekt v3
Oop 2014 sw architekt v3
 
Developing High Performing Architecture Teams
Developing High Performing Architecture Teams Developing High Performing Architecture Teams
Developing High Performing Architecture Teams
 
2011_esc.pdf
2011_esc.pdf2011_esc.pdf
2011_esc.pdf
 
Tears, Tantrums and Triumphs OZIA 2009
Tears, Tantrums and Triumphs  OZIA 2009Tears, Tantrums and Triumphs  OZIA 2009
Tears, Tantrums and Triumphs OZIA 2009
 
Secrets of going codeless - How to build enterprise apps without coding
Secrets of going codeless - How to build enterprise apps without codingSecrets of going codeless - How to build enterprise apps without coding
Secrets of going codeless - How to build enterprise apps without coding
 
Campbell & Readman - TDD It's Not Tester Driven Development - EuroSTAR 2012
Campbell & Readman - TDD It's Not Tester Driven Development - EuroSTAR 2012Campbell & Readman - TDD It's Not Tester Driven Development - EuroSTAR 2012
Campbell & Readman - TDD It's Not Tester Driven Development - EuroSTAR 2012
 
Technical Debt.pptx
Technical Debt.pptxTechnical Debt.pptx
Technical Debt.pptx
 
Estimating IT projects - Guest lecture University of Twente
Estimating IT projects - Guest lecture University of TwenteEstimating IT projects - Guest lecture University of Twente
Estimating IT projects - Guest lecture University of Twente
 
2008 - TechDays PT: Modeling and Composition for Software today and tomorrow
2008 - TechDays PT: Modeling and Composition for Software today and tomorrow2008 - TechDays PT: Modeling and Composition for Software today and tomorrow
2008 - TechDays PT: Modeling and Composition for Software today and tomorrow
 
Empirical evaluation in 2020: how big, how beautiful?
Empirical evaluation in 2020: how big, how beautiful?Empirical evaluation in 2020: how big, how beautiful?
Empirical evaluation in 2020: how big, how beautiful?
 
The art technique of data visualization
The art  technique of data visualizationThe art  technique of data visualization
The art technique of data visualization
 
Software Development in 21st Century
Software Development in 21st CenturySoftware Development in 21st Century
Software Development in 21st Century
 
Architecting a Data Platform For Enterprise Use (Strata NY 2018)
Architecting a Data Platform For Enterprise Use (Strata NY 2018)Architecting a Data Platform For Enterprise Use (Strata NY 2018)
Architecting a Data Platform For Enterprise Use (Strata NY 2018)
 
Why many data science projects fail
Why many data science projects fail Why many data science projects fail
Why many data science projects fail
 
20210907 jim spohrer berkeley ai_do_dont v1
20210907 jim spohrer berkeley ai_do_dont  v120210907 jim spohrer berkeley ai_do_dont  v1
20210907 jim spohrer berkeley ai_do_dont v1
 

Plus de Richard Banks

DDD Sydney 2011 - Getting out of Sync with IIS and Riding a Comet
DDD Sydney 2011 - Getting out of Sync with IIS and Riding a CometDDD Sydney 2011 - Getting out of Sync with IIS and Riding a Comet
DDD Sydney 2011 - Getting out of Sync with IIS and Riding a Comet
Richard Banks
 

Plus de Richard Banks (8)

Improving app performance using .Net Core 3.0
Improving app performance using .Net Core 3.0Improving app performance using .Net Core 3.0
Improving app performance using .Net Core 3.0
 
Reignite your desire to improve (NDC Sydney 2018)
Reignite your desire to improve (NDC Sydney 2018)Reignite your desire to improve (NDC Sydney 2018)
Reignite your desire to improve (NDC Sydney 2018)
 
Flaccid coaching
Flaccid coachingFlaccid coaching
Flaccid coaching
 
Microservices with .Net - NDC Sydney, 2016
Microservices with .Net - NDC Sydney, 2016Microservices with .Net - NDC Sydney, 2016
Microservices with .Net - NDC Sydney, 2016
 
Architecting Microservices in .Net
Architecting Microservices in .NetArchitecting Microservices in .Net
Architecting Microservices in .Net
 
Git TFS
Git TFSGit TFS
Git TFS
 
DDD Sydney 2011 - Getting out of Sync with IIS and Riding a Comet
DDD Sydney 2011 - Getting out of Sync with IIS and Riding a CometDDD Sydney 2011 - Getting out of Sync with IIS and Riding a Comet
DDD Sydney 2011 - Getting out of Sync with IIS and Riding a Comet
 
Agile Development From A Developers Perspective
Agile Development From A Developers PerspectiveAgile Development From A Developers Perspective
Agile Development From A Developers Perspective
 

Dernier

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Dernier (20)

MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 

Architecture In The Small

Notes de l'éditeur

  1. Introduction slide: this slide must be the first slide in every RDN deck. Update the following:Title of TalkPresenter NamePresenter Position