SlideShare a Scribd company logo
Architecture In the SmallRichard BanksPrincipal Consultant, ReadifySydney & Virtual ALT.NET Groupshttp://richardsbraindump.blogspot.comrichard.banks@readify.nethttp://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...
Architecture In The Small
Simple, Right?
NSW Transit T-Card$370million10 years0 to show
Westpac Rebuild (1988)$156 million3 years0 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 ReasonsArchitect 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 complexityand Over Complexificationisationing
Sloppydevelopment practices
Poor project management
Stakeholder politics
Commercial pressures
Another Issue...
Software Is Designed Top Down
Architecture In The Small
Architecture In The Small
Architecture In The Small
Architecture In The Small
Architecture In The Small
Architecture In The Small
Software is Built Bottom Up
Architecture In The Small
Architecture In The Small
[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 == WhatCode == How
There’s a Disconnect Here
It’s the Architect’s Problem
Solution:
Design & Architect codeat the Lowest Levels toSupport High Level design goals
Architecture in the Small
Deals with (at least) 3 Failure Causes
ComplexityTechnical RiskSloppy Practices
Where Architects Go Wrong
Stopping Short on Design
Architecture In The Small
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 ArchitectureOnly 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 MethodsIL WeavingInterceptorsRoll your own
Choice of ToolsEntLibIoC ContainerPostSharp...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
Architecture In The Small
Architecture In The Small
Architecture In The Small
Worst Method?
CC: 81LOC: 282Coupling: 32
Complexity FAIL!
Lesson: Keep Code SimpleBut don’t be simplistic
Lesson: Small Methods Only20 Lines or Less
Lesson: Small Classes
Lesson: Loose Coupling
Architecture In The Small
Architecture In The Small
Lesson: Meaningful Names
Lesson: Use Domain Language
Architecture In The Small
Lesson: Single Responsibility
Lesson: Discoverable API
Architecture In The Small
Architecture In The Small
Lesson: Single Level Of Abstraction
Architecture In The Small
Lesson: Avoid the “Duh!”Experience: Captain Obvious comments indicate a poorly architected system
A Note on Unit Testing
Test Code == Production Code
Architecture In The Small
Architecture In The Small
Lesson: Name Tests Well
Lesson: Assert Something!
Architecture In The Small
Architecture In The Small
Lesson: Test Behaviour Not State
Lesson: Test Just One Behaviour
What About the *ilities
Usability: (Subjective)
Maintainability:Destroyed in the smallIncludes 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.comhttp://twitter.com/rbanks54richard.banks@readify.net

More Related Content

PPT
CETS 2011, Mark Steiner, Top 10 Ways to Make Your eLearning Project Successful
PPT
Product Negatives to Positives
PPTX
Software development methodologies of dumb
PPTX
CQRS and what it means for your architecture
PPTX
CQRS and Event Sourcing, An Alternative Architecture for DDD
PDF
Technical Debt - The number one reason why technical projects get derailed
PPTX
Agilelessons scanagile-final 2013
PPTX
Essential User Experience Skills
CETS 2011, Mark Steiner, Top 10 Ways to Make Your eLearning Project Successful
Product Negatives to Positives
Software development methodologies of dumb
CQRS and what it means for your architecture
CQRS and Event Sourcing, An Alternative Architecture for DDD
Technical Debt - The number one reason why technical projects get derailed
Agilelessons scanagile-final 2013
Essential User Experience Skills

Similar to Architecture In The Small (20)

PPT
Career Development for Architects
PDF
Caring about Code Quality
PPTX
IT Portfolio Seminar
PDF
caring_about_code_quality
PDF
Oop 2014 sw architekt v3
PDF
Developing High Performing Architecture Teams
PDF
2011_esc.pdf
PPS
Tears, Tantrums and Triumphs OZIA 2009
PDF
Secrets of going codeless - How to build enterprise apps without coding
PDF
Campbell & Readman - TDD It's Not Tester Driven Development - EuroSTAR 2012
PPTX
Technical Debt.pptx
PDF
Estimating IT projects - Guest lecture University of Twente
PPTX
2008 - TechDays PT: Modeling and Composition for Software today and tomorrow
PDF
Empirical evaluation in 2020: how big, how beautiful?
PPSX
The art technique of data visualization
PPT
Software Development in 21st Century
PDF
Architecting a Data Platform For Enterprise Use (Strata NY 2018)
PPTX
Why many data science projects fail
PPTX
20210907 jim spohrer berkeley ai_do_dont v1
PDF
IoT Innovation Design Method (Picmet2019 Presentation)
Career Development for Architects
Caring about Code Quality
IT Portfolio Seminar
caring_about_code_quality
Oop 2014 sw architekt v3
Developing High Performing Architecture Teams
2011_esc.pdf
Tears, Tantrums and Triumphs OZIA 2009
Secrets of going codeless - How to build enterprise apps without coding
Campbell & Readman - TDD It's Not Tester Driven Development - EuroSTAR 2012
Technical Debt.pptx
Estimating IT projects - Guest lecture University of Twente
2008 - TechDays PT: Modeling and Composition for Software today and tomorrow
Empirical evaluation in 2020: how big, how beautiful?
The art technique of data visualization
Software Development in 21st Century
Architecting a Data Platform For Enterprise Use (Strata NY 2018)
Why many data science projects fail
20210907 jim spohrer berkeley ai_do_dont v1
IoT Innovation Design Method (Picmet2019 Presentation)
Ad

More from Richard Banks (8)

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

Recently uploaded (20)

PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
Electronic commerce courselecture one. Pdf
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
cuic standard and advanced reporting.pdf
PPTX
Programs and apps: productivity, graphics, security and other tools
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
Assigned Numbers - 2025 - Bluetooth® Document
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PDF
MIND Revenue Release Quarter 2 2025 Press Release
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
A comparative analysis of optical character recognition models for extracting...
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PDF
gpt5_lecture_notes_comprehensive_20250812015547.pdf
PDF
Chapter 3 Spatial Domain Image Processing.pdf
Mobile App Security Testing_ A Comprehensive Guide.pdf
Per capita expenditure prediction using model stacking based on satellite ima...
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Electronic commerce courselecture one. Pdf
20250228 LYD VKU AI Blended-Learning.pptx
cuic standard and advanced reporting.pdf
Programs and apps: productivity, graphics, security and other tools
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Review of recent advances in non-invasive hemoglobin estimation
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Building Integrated photovoltaic BIPV_UPV.pdf
Assigned Numbers - 2025 - Bluetooth® Document
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
MIND Revenue Release Quarter 2 2025 Press Release
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Spectral efficient network and resource selection model in 5G networks
A comparative analysis of optical character recognition models for extracting...
“AI and Expert System Decision Support & Business Intelligence Systems”
gpt5_lecture_notes_comprehensive_20250812015547.pdf
Chapter 3 Spatial Domain Image Processing.pdf

Architecture In The Small

Editor's Notes

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