SlideShare a Scribd company logo
© 2013 Spring, by Pivotal
TAMING
COUPLING & COHESIVE BEASTS
WITH
MODULARITY PATTERNS
AND SPRING
Param Rengaiah, Experience Architect
@its_param
22
Creating enterprise software system is incredibly
HARD.
33
Keeping it useful and relevant
is even more
HARDER!
http://www.flickr.com/photos/teddyllovet/9421262432/
44
70%
That’s the percentage cost spent on maintaining large enterprise
applications.
55
CHANGE
is not only essential but desirable
66
SPRING
FRAMEWORK
LOC on March 2004 – 14 K LOC on August 2013 – 1.3 M
77
WHY?
is it difficult to modify and enhance an application?
88
BACKSTORY
My personal journey and why I am passionate about this subject.
99
Possible Reasons
 Development spends too much time in understanding existing
implementation
 Class names are too generic and hence the responsibility of a class
gets wide and complex
 Business rules are spread across multiple architectural layers
 Too many if / else and switch / cases in classes
 Direct usage of implementation classes in parent modules
1010
TECHNICAL DEBT
Section 5.2 on [5], [6] and [7]
1111
“Technical Debt is a wonderful metaphor developed
by Ward Cunningham… In this metaphor, doing
things the quick and dirty way sets us up with a
technical debt, which is similar to a financial debt.
Like a financial debt, the technical debt incurs
interest payments, which come in the form of the
extra effort that we have to do in future
development because of the quick and dirty
design choice.
- Martin Fowler
1212
DESIGN ROT
Section 5.3 on [5]
1313
“There are four primary symptoms that tell us that
our designs are rotting. They are not orthogonal,
but are related to each other in ways that will
become obvious. they are: rigidity, fragility,
immobility, and viscosity.
- Uncle Bob
1414
BIG BALL OF MUD
Visit the links [2], [3] and [4]
1515
QUESTION TIME
Open your most recent project and search for classes with *util*, *helper*
and *manager*
1616
SUFFERING
Essentially leads to
1717
SUCH AS
 Forcing your team to continuously work long hours.
 Burning out your best team members.
 High churn rate of resources.
 Create psychological divide between development, testing and
operations team.
 Setting up your team member to just play safe.
 Basically, unpleased work environment.
At the worst - completely scrapping the project.
1818
BEAST !!!
Congratulations!!! You have unleashed the
1919
TAME THE BEAST?
So, how do we
2020
DREAM
Lets
2121
CONFIDENCE
While embracing change
2222
PIVOT
The design with least amount of cascading disruption.
2323
UNDERSTAND
The business and the business constrains through
CODE
2424
LEHMAN’S LAW
Introducing
2525
Second Law.
As a system evolves, its complexity
increases unless work is done to maintain
or reduce it.
Specifically,
“
2626
REFACTORING
THE DESIGN
So the magic ingredient is …
2727
PHYSICAL &
STRUCTURAL
DESIGN
Specifically,
2828
DESIGN
Modularity Patterns
SOLID Design
Principle
GoF Design
Patterns
2929
3030
3131
3232
TOOLS
Spring Tool Suite
App Server
Hibernate, Spring,
Spring Boots, Groovy
3333
COHESIVE
MODULES
Module behavior should serve a singular purpose
3434
3535
3636
3737
3838
3939
ABSTRACT
MODULES
Depend upon the abstract elements of a module.
4040
SEPARATE
ABSTRACTIONS
Place abstractions and the classes that implement them in separate
modules.
4141
4242
SPEC AND IMPL
MODULES
Also fulfills SRP and DIP in SOLID Principles
Leads us to create
4343
IMPLEMENTATION
FACTORY
Use factories to create a module’s implementation classes.
4444
SPRING AND
EXTENSION
Injecting extensions in a non-intrusive way.
4545
4646
MANAGE
RELATIONSHIPS
Design module relationships.
4747
ACYCLIC
RELATIONSHIPS
Module relationships must be acyclic.
4848
DDD – BOUNDED
CONTEXT
Anti-Corruption Layer
4949
ADAPTER Modules
And corresponding SPEC and IMPL modules
5050
5151
DEMO TIME
5252
SEAMS OF THE
SYSTEM
Expose
5353
ALL THE WAY DOWN
Architect
5454
MODULAR
Design?
Why not start with a
5555
RECORD
Design debts, hacks and quick wins
5656
REVIEW
The Inventory every six month
5757
PLAN
A separate release for paying the principle
5858
BUY-IN
From stakeholders
Get the
5959
REFACTOR
To Modularity
6060
THANK YOU !!!
Connect me on twitter at @its_param
Email me at param.rengaiah@aspiresys.com
6161
Please come.
SPRING
CONFERENCE
6262
http://panelpicker.sxsw.com/vot
e/22263
Please share and vote!
UX DESIGN
6363
https://medium.com/@its_param
Please visit.
MY BLOG
6464
References
1. http://www.jsjf.demon.co.uk/thesis/Thesis.html
2. http://www.laputan.org/mud/
3. http://www.codinghorror.com/blog/2007/11/the-big-ball-of-mud-
and-other-architectural-disasters.html
4. http://stackoverflow.com/questions/1030388/how-to-overcome-the-
anti-pattern-big-ball-of-mud
5. http://www.kirkk.com/modularity/2009/12/chapter-5-taming-the-
beast/
6. http://en.wikipedia.org/wiki/Technical_debt
7. http://martinfowler.com/bliki/TechnicalDebt.html
8. http://interactiveasp.net/blogs/softwarepsychology/archive/2009/12
/23/the-blame-game.aspx
6565
References
9. http://en.wikipedia.org/wiki/Lehman's_laws_of_software_evolution
10. http://www.kirkk.com/modularity/pattern-catalog/
11. http://www.ohloh.net/p/spring/analyses/latest/languages_summary

More Related Content

Similar to Taming coupling and cohesive beasts

Intervista Institute - Executive Education Planner 2013
Intervista Institute - Executive Education Planner 2013Intervista Institute - Executive Education Planner 2013
Intervista Institute - Executive Education Planner 2013
Jim Robins
 
ODCA DevOps: Magnifying Business Value
ODCA DevOps: Magnifying Business ValueODCA DevOps: Magnifying Business Value
ODCA DevOps: Magnifying Business Value
Open Data Center Alliance
 
DevEx Essentials
DevEx EssentialsDevEx Essentials
DevEx Essentials
Nicole Forsgren
 
Dev ops webinar 5 aug 15
Dev ops webinar 5 aug 15Dev ops webinar 5 aug 15
Dev ops webinar 5 aug 15
Edureka!
 
Docker's value for Development Teams in a DevOps Process
Docker's value for Development Teams in a DevOps ProcessDocker's value for Development Teams in a DevOps Process
Docker's value for Development Teams in a DevOps Process
Laurent Goujon
 
Cutting Edge on Development Methodologies in IT
Cutting Edge on Development Methodologies in ITCutting Edge on Development Methodologies in IT
Cutting Edge on Development Methodologies in IT
Andrea Tino
 
Holistic approach to cloud adoption
Holistic approach to cloud adoptionHolistic approach to cloud adoption
Holistic approach to cloud adoption
Thoughtworks
 
DevOps is Going to Replace SDLC! Learn Why?
DevOps is Going to Replace SDLC! Learn Why?DevOps is Going to Replace SDLC! Learn Why?
DevOps is Going to Replace SDLC! Learn Why?
Edureka!
 
ANIn Coimbatore March 2023 |How Did Feedback Loops Help To Build Better Produ...
ANIn Coimbatore March 2023 |How Did Feedback Loops Help To Build Better Produ...ANIn Coimbatore March 2023 |How Did Feedback Loops Help To Build Better Produ...
ANIn Coimbatore March 2023 |How Did Feedback Loops Help To Build Better Produ...
AgileNetwork
 
DevSecOps in the Cloud from the Lens of a Well-Architected Framework.pptx
DevSecOps in the Cloud from the Lens of a  Well-Architected Framework.pptxDevSecOps in the Cloud from the Lens of a  Well-Architected Framework.pptx
DevSecOps in the Cloud from the Lens of a Well-Architected Framework.pptx
Turja Narayan Chaudhuri
 
Webinar: DevOps - Redefining your IT Strategy
Webinar: DevOps - Redefining your IT StrategyWebinar: DevOps - Redefining your IT Strategy
Webinar: DevOps - Redefining your IT Strategy
Edureka!
 
SUSECON Digital 22 Scale your CICD setup for Cloud Native microservices via I...
SUSECON Digital 22 Scale your CICD setup for Cloud Native microservices via I...SUSECON Digital 22 Scale your CICD setup for Cloud Native microservices via I...
SUSECON Digital 22 Scale your CICD setup for Cloud Native microservices via I...
Turja Narayan Chaudhuri
 
Trend Micro Star Trek 2020 - Accelerating DevOps transformation through gamif...
Trend Micro Star Trek 2020 - Accelerating DevOps transformation through gamif...Trend Micro Star Trek 2020 - Accelerating DevOps transformation through gamif...
Trend Micro Star Trek 2020 - Accelerating DevOps transformation through gamif...
Der-Jeng Lin
 
Navigating Pains When Moving Your Training Solution to the Public Cloud
Navigating Pains When Moving Your Training Solution to the Public CloudNavigating Pains When Moving Your Training Solution to the Public Cloud
Navigating Pains When Moving Your Training Solution to the Public Cloud
CloudShare
 
Summary of Accelerate - 2019 State of Devops report by Google Cloud's DORA
Summary of Accelerate - 2019 State of Devops report by Google Cloud's DORASummary of Accelerate - 2019 State of Devops report by Google Cloud's DORA
Summary of Accelerate - 2019 State of Devops report by Google Cloud's DORA
Ragavendra Prasath
 
From Divided to United - Aligning Technical and Business Teams
From Divided to United - Aligning Technical and Business TeamsFrom Divided to United - Aligning Technical and Business Teams
From Divided to United - Aligning Technical and Business Teams
Dominica DeGrandis
 
From Divided to United - Aligning Technical & Business Teams
From Divided to United - Aligning Technical & Business Teams From Divided to United - Aligning Technical & Business Teams
From Divided to United - Aligning Technical & Business Teams
AgileDenver
 
The story behind Tauron's award winning intranet
The story behind Tauron's award winning intranetThe story behind Tauron's award winning intranet
The story behind Tauron's award winning intranet
Intranätverk
 

Similar to Taming coupling and cohesive beasts (20)

Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 
Intervista Institute - Executive Education Planner 2013
Intervista Institute - Executive Education Planner 2013Intervista Institute - Executive Education Planner 2013
Intervista Institute - Executive Education Planner 2013
 
ODCA DevOps: Magnifying Business Value
ODCA DevOps: Magnifying Business ValueODCA DevOps: Magnifying Business Value
ODCA DevOps: Magnifying Business Value
 
DevEx Essentials
DevEx EssentialsDevEx Essentials
DevEx Essentials
 
Dev ops webinar 5 aug 15
Dev ops webinar 5 aug 15Dev ops webinar 5 aug 15
Dev ops webinar 5 aug 15
 
Docker's value for Development Teams in a DevOps Process
Docker's value for Development Teams in a DevOps ProcessDocker's value for Development Teams in a DevOps Process
Docker's value for Development Teams in a DevOps Process
 
Cutting Edge on Development Methodologies in IT
Cutting Edge on Development Methodologies in ITCutting Edge on Development Methodologies in IT
Cutting Edge on Development Methodologies in IT
 
Holistic approach to cloud adoption
Holistic approach to cloud adoptionHolistic approach to cloud adoption
Holistic approach to cloud adoption
 
DevOps is Going to Replace SDLC! Learn Why?
DevOps is Going to Replace SDLC! Learn Why?DevOps is Going to Replace SDLC! Learn Why?
DevOps is Going to Replace SDLC! Learn Why?
 
ANIn Coimbatore March 2023 |How Did Feedback Loops Help To Build Better Produ...
ANIn Coimbatore March 2023 |How Did Feedback Loops Help To Build Better Produ...ANIn Coimbatore March 2023 |How Did Feedback Loops Help To Build Better Produ...
ANIn Coimbatore March 2023 |How Did Feedback Loops Help To Build Better Produ...
 
DevSecOps in the Cloud from the Lens of a Well-Architected Framework.pptx
DevSecOps in the Cloud from the Lens of a  Well-Architected Framework.pptxDevSecOps in the Cloud from the Lens of a  Well-Architected Framework.pptx
DevSecOps in the Cloud from the Lens of a Well-Architected Framework.pptx
 
Webinar: DevOps - Redefining your IT Strategy
Webinar: DevOps - Redefining your IT StrategyWebinar: DevOps - Redefining your IT Strategy
Webinar: DevOps - Redefining your IT Strategy
 
SUSECON Digital 22 Scale your CICD setup for Cloud Native microservices via I...
SUSECON Digital 22 Scale your CICD setup for Cloud Native microservices via I...SUSECON Digital 22 Scale your CICD setup for Cloud Native microservices via I...
SUSECON Digital 22 Scale your CICD setup for Cloud Native microservices via I...
 
Trend Micro Star Trek 2020 - Accelerating DevOps transformation through gamif...
Trend Micro Star Trek 2020 - Accelerating DevOps transformation through gamif...Trend Micro Star Trek 2020 - Accelerating DevOps transformation through gamif...
Trend Micro Star Trek 2020 - Accelerating DevOps transformation through gamif...
 
Navigating Pains When Moving Your Training Solution to the Public Cloud
Navigating Pains When Moving Your Training Solution to the Public CloudNavigating Pains When Moving Your Training Solution to the Public Cloud
Navigating Pains When Moving Your Training Solution to the Public Cloud
 
Summary of Accelerate - 2019 State of Devops report by Google Cloud's DORA
Summary of Accelerate - 2019 State of Devops report by Google Cloud's DORASummary of Accelerate - 2019 State of Devops report by Google Cloud's DORA
Summary of Accelerate - 2019 State of Devops report by Google Cloud's DORA
 
Pt report(body)
Pt report(body)Pt report(body)
Pt report(body)
 
From Divided to United - Aligning Technical and Business Teams
From Divided to United - Aligning Technical and Business TeamsFrom Divided to United - Aligning Technical and Business Teams
From Divided to United - Aligning Technical and Business Teams
 
From Divided to United - Aligning Technical & Business Teams
From Divided to United - Aligning Technical & Business Teams From Divided to United - Aligning Technical & Business Teams
From Divided to United - Aligning Technical & Business Teams
 
The story behind Tauron's award winning intranet
The story behind Tauron's award winning intranetThe story behind Tauron's award winning intranet
The story behind Tauron's award winning intranet
 

Recently uploaded

UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
DianaGray10
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
Laura Byrne
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
Product School
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
ControlCase
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Ramesh Iyer
 
Generating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using SmithyGenerating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using Smithy
g2nightmarescribd
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
KatiaHIMEUR1
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
91mobiles
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
Cheryl Hung
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
RTTS
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Product School
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
DianaGray10
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
Paul Groth
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
Elena Simperl
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
Prayukth K V
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
DianaGray10
 

Recently uploaded (20)

UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
 
Generating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using SmithyGenerating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using Smithy
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
 

Taming coupling and cohesive beasts

Editor's Notes

  1. http://blogs.msdn.com/b/karchworld_identity/archive/2011/04/01/lehman-s-laws-of-software-evolution-and-the-staged-model.aspxAccording to several sources, and perhaps counter to intuition, the maintenance of software comprises from 50% to 90% of the overall lifecycle costs (Pigoski, 1997; Lientz & Swanson, 1980)
  2. http://www.ohloh.net/p/spring/analyses/latest/languages_summary
  3. One large WAR module
  4. Like a financial debt, the technical debt incurs interest payments, which come in the form of the extra effort that we have to do in future development because of the quick and dirty design choice. We can choose to continue paying the interest, or we can pay down the principal by refactoring the quick and dirty design into the better design. Although it costs to pay down the principal, we gain by reduced interest payments in the future.
  5. 5.3.1 – Hinder Maintenance5.3.2 – Prevent Extensibility5.3.3 – Inhibit Reusability5.3.4 – Restrict Testability5.3.5 – Hamper Integration5.3.6 – Limit UnderstandingThere are four primary symptoms that tell us that our designs are rotting. They are not orthogonal, but are related to each other in ways that will become obvious. they are: rigidity, fragility, immobility, and viscosity.
  6. Big Ball of Mud
(a.k.a. Shantytown, Spaghetti Code)Throwaway Code
(a.k.a. Quick Hack, Kleenex Code, Disposable Code, Scripting, Killer Demo, Permanent Prototype, Boomtown)Piecemeal Growth
(a.k.a. Urban Sprawl, Iterative-Incremental Development)Keep It Working
(a.k.a. Vitality, Baby Steps, Daily Build, First Do No Harm)Shearing LayersSweeping It Under The Rug
(a.k.a. Potemkin Village, Housecleaning, Pretty Face, Quarantine, Hiding it Under the Bed, Rehabilitation)Reconstruction
(a.k.a. Total Rewrite, Demolition, Plan to Throw One Away, Start Over)
  7. Like a financial debt, the technical debt incurs interest payments, which come in the form of the extra effort that we have to do in future development because of the quick and dirty design choice. We can choose to continue paying the interest, or we can pay down the principal by refactoring the quick and dirty design into the better design. Although it costs to pay down the principal, we gain by reduced interest payments in the future.
  8. All told eight laws were formulated:(1974) Continuing Change — E-type systems must be continually adapted or they become progressively less satisfactory.[3](1974) Increasing Complexity — As an E-type system evolves its complexity increases unless work is done to maintain or reduce it.[3](1974) Self Regulation — E-type system evolution process is self-regulating with distribution of product and process measures close to normal.[3](1978) Conservation of Organisational Stability (invariant work rate) - The average effective global activity rate in an evolving E-type system is invariant over product lifetime.[3](1978) Conservation of Familiarity — As an E-type system evolves all associated with it, developers, sales personnel, users, for example, must maintain mastery of its content and behaviour to achieve satisfactory evolution. Excessive growth diminishes that mastery. Hence the average incremental growth remains invariant as the system evolves.[3](1991) Continuing Growth — The functional content of E-type systems must be continually increased to maintain user satisfaction over their lifetime.(1996) Declining Quality — The quality of E-type systems will appear to be declining unless they are rigorously maintained and adapted to operational environment changes.(1996) Feedback System (first stated 1974, formalised as law 1996) — E-type evolution processes constitute multi-level, multi-loop, multi-agent feedback systems and must be treated as such to achieve significant improvement over any reasonable base.
  9. Modularity Patterns – Manages Structural ModularityGoF Patterns – Manages Logical ModularitySOLID helps us define the boundary for classes and packages
  10. Second System Syndrome
  11. Second System Syndrome
  12. Second System Syndrome
  13. Second System Syndrome
  14. Second System Syndrome
  15. Second System Syndrome
  16. Second System Syndrome
  17. Second System Syndrome
  18. Second System Syndrome
  19. Second System Syndrome