A Holistic Approach to Evolving Software Systems

1,424 views

Published on

A presentation I gave in Luxemburg in Jan 2014 in the context of the Symposium on "Engineering Complex Software Systems: Challenges, Solutions and Outlook"

Published in: Technology, News & Politics
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,424
On SlideShare
0
From Embeds
0
Number of Embeds
21
Actions
Shares
0
Downloads
7
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

A Holistic Approach to Evolving Software Systems

  1. 1. Engineering Dependable Software Systems ! Michele Lanza REVEAL @ Faculty of Informatics University of Lugano, Switzerland
  2. 2. Engineering Software Systems ! Michele Lanza REVEAL @ Faculty of Informatics University of Lugano, Switzerland
  3. 3. ! Software Engineering is dead
  4. 4. Engineering Software Systems ! Michele Lanza REVEAL @ Faculty of Informatics University of Lugano, Switzerland
  5. 5. Evolving Software Systems ! Michele Lanza REVEAL @ Faculty of Informatics University of Lugano, Switzerland
  6. 6. A Holistic Approach to Evolving Software Systems ! Michele Lanza REVEAL @ Faculty of Informatics University of Lugano, Switzerland
  7. 7. holism |ˈhəәʊlɪz(əә)m, ˈhɒl-| ! The theory that parts of a whole are in intimate interconnection, such that they cannot exist independently of the whole, which is thus regarded as greater than the sum of its parts.
  8. 8. 1 2 3 4 What will be the scale of systems be 10-15 years from now? What will those systems look like? How will they be structured and evolved? How do we ensure their dependability, security, safety, reliability?
  9. 9. What will be the scale of systems 10-15 years from now?
  10. 10. public class HelloWorld { ! public static void main(String[] args) { System.out.println("Hello, World"); } } What's in a line?
  11. 11. Class S0 Lines of Code Example < 1,000 whatever S1 < 10,000 JUnit S2 < 100,000 Mylyn S3 S4 < 1,000,000 ArgoUML Vuze < 10,000,000 Eclipse Windows S5 < 100,000,000 S6 < 1,000,000,000 ! Linux
  12. 12. What will systems look like in the future?
  13. 13. How will they be constructed and evolved?
  14. 14. How should they be constructed and evolved?
  15. 15. Prehistory History
  16. 16. Prehistory History
  17. 17. Prehistory History
  18. 18. Prehistory History VCS CVS/SVN MSR seventies nineties 2004
  19. 19. Mining Software Repositories
  20. 20. edit run compile
  21. 21. review rearchitect version tasks design edit reuse RSS document run IRC Twitter debug Skype diff Facebook recommend refactor navigate visualize blog compile e-mail test reengineer
  22. 22. ! ! for(int j=m; j>i; j--){ uCJM1= dataUC[j-1]; uCJ= dataUC[j]; if(uCJM1.compare(z)> { /* exchange */ tempStr= data[j-1]; /* sort the data */ data[j-1]= data[j]; data[j]= tempStr; } } dataUC[j-1]= uCJ; dataUC[j]= uCJM1;
  23. 23. ! ! ! ! ! Alice wrote: > On Mon 23, Bob wrote: > > Dear list, > > When starting up ArgoUML on my MacOS X system (Java 2) > > it throws a NullPointerException very soon. You'll find the > > trace below. I hope someone knows a solution. Thanks a lot! > > > > > > > > Exception in thread "main" java.lang.NullPointerException at javax.swing.event.SwingSupport.fireChange(SwingChange.java) at javax.swing.AbstractAction.setEnabled(AbstractAction.java) [...] > > at uci.uml.Main.main(Main.java:148) > > > > I'm sorry I can't help you Bob but thanks for sharing the stack... Alice. -"Beware of programmers who carry screwdrivers." --L. Brandwein Alice, I believe the flawed Explorer.java class generates Bob's issue: public void setEnclosingFig(Fig each) { super.setEnclosingFig(each); if (each != null || (each.getOwner() instanceof MPackage)) { m = (MPackage) each.getOwner(); } The problem is in the condition, I attach the diff with this version: --- src/org/argouml/ui/explorer/Explorer.java (revision 14338) +++ src/org/argouml/ui/explorer/Explorer.java (working copy) @@ -147,1 +147,1 @@ [...] super.setEnclosingFig(each); - if (each != null || (each.getOwner() instanceof MPackage)) { + if (each != null && (each.getOwner() instanceof MPackage)) { m = (MPackage) each.getOwner(); } Probably ModelTree is also affected, if so, please change it =) Cheers, Carl. -- I used to have a sig, but it took up much space so I got rid of it! --------------------------------------------------------------------To unsubscribe, e-mail: dev-...@argouml.tigris.org For additional commands, e-mail: dev-...@argouml.tigris.org
  24. 24. (1) (2) (3) (4) (5) (6) ! (7) (8) (9) (10) (11) ! Alice wrote: On Mon 23, Bob wrote: Dear list, When starting up ArgoUML on my MacOS X system (Java 2) it throws a NullPointerException very soon. You'll find the trace below. I hope someone knows a solution. Thanks a lot! Exception in thread "main" java.lang.NullPointerException at javax.swing.event.SwingSupport.fireChange(SwingChange.java) at javax.swing.AbstractAction.setEnabled(AbstractAction.java) [...] at uci.uml.Main.main(Main.java:148) (12) (13) (14) (15) I'm sorry I can't help you Bob but thanks for sharing the stack... Alice. -"Beware of programmers who carry screwdrivers." --L. Brandwein (16) (17) (18) (19) (20) Alice, I believe the flawed Explorer.java class generates Bob's issue: public void setEnclosingFig(Fig each) { super.setEnclosingFig(each); if (each != null || (each.getOwner() instanceof MPackage)) { m = (MPackage) each.getOwner(); } (21) (22) (23) (24) (25) (26) (27) (28) The problem is in the condition, I attach the diff with this version: --- src/org/argouml/ui/explorer/Explorer.java (revision 14338) +++ src/org/argouml/ui/explorer/Explorer.java (working copy) @@ -147,1 +147,1 @@ [...] super.setEnclosingFig(each); - if (each != null || (each.getOwner() instanceof MPackage)) { + if (each != null && (each.getOwner() instanceof MPackage)) { m = (MPackage) each.getOwner(); } (29) (30) (31) (32) (33) (34) Probably ModelTree is also affected, if so, please change it =) Cheers, Carl. -- I used to have a sig, but it took up much space so I got rid of it! --------------------------------------------------------------------To unsubscribe, e-mail: dev-...@argouml.tigris.org For additional commands, e-mail: dev-...@argouml.tigris.org ! ! ! Non-relevant Natural Language Stack trace Source code Patch
  25. 25. The content of unstructured data produced during the evolution of a software system is a valuable information source to support software understanding and evolution and complements data mined from structured sources. ! Alberto Bacchelli ! Mining Unstructured Software Data ! PhD Thesis, University of Lugano, 2013
  26. 26. ! Integrated Development Environments + Recommender Systems ! ! ! ! ! ! ! ! ! ! ! Intelligent Development Environments
  27. 27. The Librarian daemon looks like a pleasant, fiftyish, silver-haired, bearded man with bright blue eyes, wearing a V-neck sweater over a work shirt, with a coarsely woven, tweedy-looking wool tie. The tie is loosened, the sleeves pushed up. ! Even though he's just a piece of software, he has reason to be cheerful; he can move through the nearly infinite stacks of information in the Library with the agility of a spider dancing across a vast web of cross-references. The [..] only thing he can't do is think. ! “Yes, sir," the Librarian says. He is eager without being obnoxiously chipper, he clasps his hands behind his back, rocks forward slightly on the balls of his feet, raises his eyebrows expectantly over his half-glasses.
  28. 28. A Holistic Approach to Evolving Software Systems ! Michele Lanza REVEAL @ Faculty of Informatics University of Lugano, Switzerland

×