SlideShare uma empresa Scribd logo
1 de 65
© 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

Mais conteúdo relacionado

Semelhante a 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 2013Jim Robins
 
Dev ops webinar 5 aug 15
Dev ops webinar 5 aug 15Dev ops webinar 5 aug 15
Dev ops webinar 5 aug 15Edureka!
 
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 ProcessLaurent 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 ITAndrea Tino
 
Holistic approach to cloud adoption
Holistic approach to cloud adoptionHolistic approach to cloud adoption
Holistic approach to cloud adoptionThoughtworks
 
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.pptxTurja Narayan Chaudhuri
 
Webinar: DevOps - Redefining your IT Strategy
Webinar: DevOps - Redefining your IT StrategyWebinar: DevOps - Redefining your IT Strategy
Webinar: DevOps - Redefining your IT StrategyEdureka!
 
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 CloudCloudShare
 
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 DORARagavendra 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 TeamsDominica 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 intranetIntranätverk
 

Semelhante a 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
 

Último

SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?XfilesPro
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 

Último (20)

SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 

Taming coupling and cohesive beasts

Notas do Editor

  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