Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.
Modern Legacy
Systems
Robert Annett - 2055
Thursday, 7 March 13
InfoQ.com: News & Community Site
• 750,000 unique visitors/month
• Published in 4 languages (English, Chinese, Japanese an...
Presented at QCon London
www.qconlondon.com
Purpose of QCon
- to empower software development by facilitating the spread o...
What is legacy?
Old, unstable, unsupported,
Non-maintained, supplanted,
monolithic, complex,
obsolete, bad?
It’s not well
...
Bjarne Stroustrup
What is legacy?
"Legacy code" often differs
from its suggested
alternative by actually
working and scali...
Business Process Lifecycle
Software Development
Requirements
Design
Im
plem
entTest
Deploy
Maintenance
Use
Support
Maintai...
Business Process Lifecycle
Software
Develop-
mentPrevious Process
Manual
Spreadsheets
Office Tools
Legacy
Maintenance
Use
...
Is this legacy?
...no it’s a museum piece
©Dave Ross
Thursday, 7 March 13
some realmodern legacy systems
Java 1.2 running under Solaris 8 on an Ultra Sparc III
server using Oracle 8i, or...
C# 1.0...
Scenario
You work for a furniture company
You get a promotion!
You are now responsible for the warehouse
inventory system
...
What are the
common
issues?
Thursday, 7 March 13
Manifesto for Agile Software Development, 2001
Working software
over
comprehensive
documentation
No Documentation
username...
Deliberate/Agile Architecture
Organic Growth
No Overarching Design
©Google
Thursday, 7 March 13
Lost Knowledge
© Hans Hillewaert
Thursday, 7 March 13
Hidden Knowledge
©Wilder Kaiser
Application Voodoo!
Thursday, 7 March 13
Unused Functionality
©Ellin Beltz
Thursday, 7 March 13
Fragility
Real or
imagined?
Thursday, 7 March 13
Coupling
tight
loose
Cohesion!
Thursday, 7 March 13
Zombie Technologies
Unsupported or...
dead and buried
Major changes in APIs
or just changes in style and fashion
Thursday,...
Sean Robinson, License Dashboard quoted in Computing
Licensing
If a company has SQLServer on
VMware, licensed on a per cor...
Data Protection Act and Information Commissioner
Regulation
Personal data processed for
any purpose or purposes shall
not ...
Politics
Who owns the project?
Who uses the project?
Who pays for the project?
Who gets fired if it fails?
Whose job is at...
It’s not all bad!
A legacy system is a successful system
You can have a large impact
You have real users you can talk to
Y...
what are my
strategies?
Thursday, 7 March 13
Ignore it?
Thursday, 7 March 13
Investigation?
Thursday, 7 March 13
Maintenance
Sweat those
assets!
Thursday, 7 March 13
Upgrade
Don’t upgrade andabandon.
Thursday, 7 March 13
Migrate
The business has
NFRs as well!
Thursday, 7 March 13
Incremental Improvement
Functional additions
Probably combined with upgrading
...or “just stick it in”...
Bewaretechnical ...
Replacement/Implementation
Completely re-write the system
Introduce a new architecture and
technology
You still need to ma...
you can mix-and-match
the strategies!
Don’t just
default to re-
write
Thursday, 7 March 13
executing your
Strategy
Thursday, 7 March 13
locate the
stakeholders
Thursday, 7 March 13
Your system
Users generating data
Database Administrators
Users generating reports
Operations/Support Staff
Compliance and...
draw a diagram of the
system
Thursday, 7 March 13
leanpub.com
Published
incrementally
Variable pricing
Buy now and
get free updates
Thursday, 7 March 13
1. Context 2. Containers 3. Components
Thinking inside the box
... and, optionally,
4. Classes
C4Context
Containers
Compon...
Context
• What exists in the system?
• Who is using it? (users, actors, roles, personas, etc)
• How does it fit into the e...
a quick example
Thursday, 7 March 13
Warehouse Staff
Context:
What
do we have?
Who
is using it?
Warehouse
Management
Product
Catalogue
Warehouse
Manager
Forkli...
What
containers
is the system
made up of?
How do they
communicate?
Application
Server
(java-weblogic)
Database
(Oracle 8i)...
deeper analysis
Thursday, 7 March 13
Component Diagrams
Class Diagrams (possibly)
DB Schemas
Configuration
Stored data sizings
Network settings and traffic
The...
beware the
Dark Side
of the source
Thursday, 7 March 13
we now know what
we’ve got
let’s safely make some
changes
Thursday, 7 March 13
virtualisation
is your friend
Thursday, 7 March 13
Re-create your PRODUCTION system as a
test system.
Run tests and metrics for the copy
Make sure you can swap in and out th...
Create some systems tests
Make them realistic uses of the system.
Report runs you can compare
Consider ‘test’ data in the ...
at last we can
modify
the system!
Thursday, 7 March 13
Worth doing even if replacing
Data Cleanse
Data Archive
Remove unused components
Shift resources
Tune applications/DBs
Cod...
Third party products are ALWAYS harder to
upgrade/migrate than the sales pitch says.
Functional and non-functional behavio...
Formatting
Create a new baseline
Refactor as you go
Break dependencies... and...
Legacy Code Modification
BUY THIS BOOK
Th...
“
Strategic rewrites take
longer to implement
than planned. Be
prepared to maintain
the legacy for a while.
Thursday, 7 Ma...
how to leave a
good
legacy
Thursday, 7 March 13
Basic access information
Build and deploy instructions
Code AND config
Asset Register
BCP/Failover/Backup Plans
ARCHITECTU...
System
Integration
Functional
Non-functional
UAT
Accessibility...
Automate and leave documentation
Tests
There’s more to
t...
High level design
Architecture doesn’t necessitate a
200 page document
System Design
Thursday, 7 March 13
best practice
and
right tool for the job
but...
Thursday, 7 March 13
Technology
Consistency
and Scope
Thursday, 7 March 13
Careful of new
technologies
It’s about trade
offs...
Thursday, 7 March 13
Thanks
and leave a good legacy!
robert.annett@codingthearchitecture.com
@robert_annett on Twitter
Thursday, 7 March 13
robert.annett@codingthearchitecture.com
@robert_annetton Twitter
Writing
Software development plus
training and consulting...
Watch the video with slide synchronization on
InfoQ.com!
http://www.infoq.com/presentations/net-java-
legacy-techniques
Prochain SlideShare
Chargement dans…5
×

Modern Legacy Systems

1 533 vues

Publié le

Video and slides synchronized, mp3 and slide download available at URL http://bit.ly/1b2DRcI.

Robert Annett explores some of the issues of upgrading, maintaining or replacing legacy Java and .NET applications that haven't been touched in a decade, providing advice on solving common problems. Filmed at qconlondon.com.

Robert Annett has been a developer since 1995 and worked in industries from energy management to investment banking. Much of this work has involved upgrading and migrating legacy systems with the occasional green-field project (with integration to legacy systems, of course). He has worked in the IT industry long enough to realize that ALL successful systems become legacy eventually. @robert_annett

Publié dans : Technologie
  • The #1 Woodworking Resource With Over 16,000 Plans, Download 50 FREE Plans...  http://tinyurl.com/y3hc8gpw
       Répondre 
    Voulez-vous vraiment ?  Oui  Non
    Votre message apparaîtra ici

Modern Legacy Systems

  1. 1. Modern Legacy Systems Robert Annett - 2055 Thursday, 7 March 13
  2. 2. InfoQ.com: News & Community Site • 750,000 unique visitors/month • Published in 4 languages (English, Chinese, Japanese and Brazilian Portuguese) • Post content from our QCon conferences • News 15-20 / week • Articles 3-4 / week • Presentations (videos) 12-15 / week • Interviews 2-3 / week • Books 1 / month Watch the video with slide synchronization on InfoQ.com! http://www.infoq.com/presentations /net-java-legacy-techniques
  3. 3. Presented at QCon London www.qconlondon.com Purpose of QCon - to empower software development by facilitating the spread of knowledge and innovation Strategy - practitioner-driven conference designed for YOU: influencers of change and innovation in your teams - speakers and topics driving the evolution and innovation - connecting and catalyzing the influencers and innovators Highlights - attended by more than 12,000 delegates since 2007 - held in 9 cities worldwide
  4. 4. What is legacy? Old, unstable, unsupported, Non-maintained, supplanted, monolithic, complex, obsolete, bad? It’s not well defined Often used as an insult Thursday, 7 March 13
  5. 5. Bjarne Stroustrup What is legacy? "Legacy code" often differs from its suggested alternative by actually working and scaling. Thursday, 7 March 13
  6. 6. Business Process Lifecycle Software Development Requirements Design Im plem entTest Deploy Maintenance Use Support Maintain LEGACY End-Of-Life Previous Process Manual Spreadsheets Office Tools Legacy Thursday, 7 March 13
  7. 7. Business Process Lifecycle Software Develop- mentPrevious Process Manual Spreadsheets Office Tools Legacy Maintenance Use Support Maintain LEGACY End-Of-Life Time0 20 Thursday, 7 March 13
  8. 8. Is this legacy? ...no it’s a museum piece ©Dave Ross Thursday, 7 March 13
  9. 9. some realmodern legacy systems Java 1.2 running under Solaris 8 on an Ultra Sparc III server using Oracle 8i, or... C# 1.0, Windows server 2000 using SQL Server 2000 Objective C on NeXT server? J++/J#? VB6? FoxPro? Brokat? A combination of manual operations and 'office' tools Thursday, 7 March 13
  10. 10. Scenario You work for a furniture company You get a promotion! You are now responsible for the warehouse inventory system No one has touch it for.... a while. It was written in 2003 It’s a 3-tier architecture... etc etc... It basically works although everyone moans about it. What do you do? Is this the kind of system you’ve seen? Thursday, 7 March 13
  11. 11. What are the common issues? Thursday, 7 March 13
  12. 12. Manifesto for Agile Software Development, 2001 Working software over comprehensive documentation No Documentation usernames/passwords Last release branch? Network information User lists communications protocols location of static datalicenses! Thursday, 7 March 13
  13. 13. Deliberate/Agile Architecture Organic Growth No Overarching Design ©Google Thursday, 7 March 13
  14. 14. Lost Knowledge © Hans Hillewaert Thursday, 7 March 13
  15. 15. Hidden Knowledge ©Wilder Kaiser Application Voodoo! Thursday, 7 March 13
  16. 16. Unused Functionality ©Ellin Beltz Thursday, 7 March 13
  17. 17. Fragility Real or imagined? Thursday, 7 March 13
  18. 18. Coupling tight loose Cohesion! Thursday, 7 March 13
  19. 19. Zombie Technologies Unsupported or... dead and buried Major changes in APIs or just changes in style and fashion Thursday, 7 March 13
  20. 20. Sean Robinson, License Dashboard quoted in Computing Licensing If a company has SQLServer on VMware, licensed on a per core basis that can be dynamically scheduled across hosts - all machines need licenses. Thursday, 7 March 13
  21. 21. Data Protection Act and Information Commissioner Regulation Personal data processed for any purpose or purposes shall not be kept for longer than is necessary for that purpose or those purposes. Thursday, 7 March 13
  22. 22. Politics Who owns the project? Who uses the project? Who pays for the project? Who gets fired if it fails? Whose job is at risk... if successful? No-one likes changes Except developers! Thursday, 7 March 13
  23. 23. It’s not all bad! A legacy system is a successful system You can have a large impact You have real users you can talk to You can learn a lot about the business It’s important but not trendy so you’ll probably get paid well... The bar may be low! Thursday, 7 March 13
  24. 24. what are my strategies? Thursday, 7 March 13
  25. 25. Ignore it? Thursday, 7 March 13
  26. 26. Investigation? Thursday, 7 March 13
  27. 27. Maintenance Sweat those assets! Thursday, 7 March 13
  28. 28. Upgrade Don’t upgrade andabandon. Thursday, 7 March 13
  29. 29. Migrate The business has NFRs as well! Thursday, 7 March 13
  30. 30. Incremental Improvement Functional additions Probably combined with upgrading ...or “just stick it in”... Bewaretechnical debt Thursday, 7 March 13
  31. 31. Replacement/Implementation Completely re-write the system Introduce a new architecture and technology You still need to maintain your legacy system while doing a re-write! Your users AND operations staff will require a lot of retraining Is it better or just cooler? Thursday, 7 March 13
  32. 32. you can mix-and-match the strategies! Don’t just default to re- write Thursday, 7 March 13
  33. 33. executing your Strategy Thursday, 7 March 13
  34. 34. locate the stakeholders Thursday, 7 March 13
  35. 35. Your system Users generating data Database Administrators Users generating reports Operations/Support Staff Compliance and AuditOther systemsThe budget holders Users consuming data These are REAL users Thursday, 7 March 13
  36. 36. draw a diagram of the system Thursday, 7 March 13
  37. 37. leanpub.com Published incrementally Variable pricing Buy now and get free updates Thursday, 7 March 13
  38. 38. 1. Context 2. Containers 3. Components Thinking inside the box ... and, optionally, 4. Classes C4Context Containers Components Classes This only covers the static structure (runtime, infrastructure, deployment, etc are also important) Thursday, 7 March 13
  39. 39. Context • What exists in the system? • Who is using it? (users, actors, roles, personas, etc) • How does it fit into the existing IT environment? Containers • What are the high-level technology decisions? • How do containers communicate with one another? • As a developer, where do I need to write code? Components • What components/services is the system made up of? • Is it clear how the system works at a high-level? • Do all components have a home (a container)? Thursday, 7 March 13
  40. 40. a quick example Thursday, 7 March 13
  41. 41. Warehouse Staff Context: What do we have? Who is using it? Warehouse Management Product Catalogue Warehouse Manager Forklift driver Delivery Installation Manufacturer DesignerSales Sales Orderbook Thursday, 7 March 13
  42. 42. What containers is the system made up of? How do they communicate? Application Server (java-weblogic) Database (Oracle 8i) Client (java swing) Manufacturer Sales Orderbook (EXCEL/VB Sheet) Product Catalogue (Access 2007) ODBC port 1521 csv export JDBC port 1521 RMI port 1521 daily email What questions does this raise? Thursday, 7 March 13
  43. 43. deeper analysis Thursday, 7 March 13
  44. 44. Component Diagrams Class Diagrams (possibly) DB Schemas Configuration Stored data sizings Network settings and traffic The source code Deeper Analysis (suggestions) Beware that what is running may differ from your source control... Thursday, 7 March 13
  45. 45. beware the Dark Side of the source Thursday, 7 March 13
  46. 46. we now know what we’ve got let’s safely make some changes Thursday, 7 March 13
  47. 47. virtualisation is your friend Thursday, 7 March 13
  48. 48. Re-create your PRODUCTION system as a test system. Run tests and metrics for the copy Make sure you can swap in and out the virtualised containers at a high level Try to build and redeploy the components within containers. Preparation Be confident you can deploy and rollback. Thursday, 7 March 13
  49. 49. Create some systems tests Make them realistic uses of the system. Report runs you can compare Consider ‘test’ data in the real system... Build, Virtualise and Deploy Production Preparation It’s paranoid but we can now deploy without fear Thursday, 7 March 13
  50. 50. at last we can modify the system! Thursday, 7 March 13
  51. 51. Worth doing even if replacing Data Cleanse Data Archive Remove unused components Shift resources Tune applications/DBs Code changes if required Stabilisation A stable system proves your competence! Thursday, 7 March 13
  52. 52. Third party products are ALWAYS harder to upgrade/migrate than the sales pitch says. Functional and non-functional behaviour WILL change. Upgrading/Migration Third Party Be prepared to rollback if and when necessary. This should be methodical after all the preparation Thursday, 7 March 13
  53. 53. Formatting Create a new baseline Refactor as you go Break dependencies... and... Legacy Code Modification BUY THIS BOOK Thursday, 7 March 13
  54. 54. “ Strategic rewrites take longer to implement than planned. Be prepared to maintain the legacy for a while. Thursday, 7 March 13
  55. 55. how to leave a good legacy Thursday, 7 March 13
  56. 56. Basic access information Build and deploy instructions Code AND config Asset Register BCP/Failover/Backup Plans ARCHITECTURE DIAGRAM Documentation is not evil! Thursday, 7 March 13
  57. 57. System Integration Functional Non-functional UAT Accessibility... Automate and leave documentation Tests There’s more to testing than XUnit Thursday, 7 March 13
  58. 58. High level design Architecture doesn’t necessitate a 200 page document System Design Thursday, 7 March 13
  59. 59. best practice and right tool for the job but... Thursday, 7 March 13
  60. 60. Technology Consistency and Scope Thursday, 7 March 13
  61. 61. Careful of new technologies It’s about trade offs... Thursday, 7 March 13
  62. 62. Thanks and leave a good legacy! robert.annett@codingthearchitecture.com @robert_annett on Twitter Thursday, 7 March 13
  63. 63. robert.annett@codingthearchitecture.com @robert_annetton Twitter Writing Software development plus training and consulting simon.brown@codingthearchitecture.com @simonbrown on Twitter Thursday, 7 March 13
  64. 64. Watch the video with slide synchronization on InfoQ.com! http://www.infoq.com/presentations/net-java- legacy-techniques

×