SlideShare a Scribd company logo
1 of 48
Download to read offline
Engineering
Dependable
Software
Systems

!

Michele Lanza

REVEAL @ Faculty of Informatics

University of Lugano, Switzerland
Engineering
Software
Systems

!

Michele Lanza

REVEAL @ Faculty of Informatics

University of Lugano, Switzerland
!

Software Engineering
is dead
Engineering
Software
Systems

!

Michele Lanza

REVEAL @ Faculty of Informatics

University of Lugano, Switzerland
Evolving
Software
Systems

!

Michele Lanza

REVEAL @ Faculty of Informatics

University of Lugano, Switzerland
A Holistic Approach to
Evolving
Software
Systems

!

Michele Lanza

REVEAL @ Faculty of Informatics

University of Lugano, Switzerland
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.
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?
What will be the scale of systems
10-15 years from now?
public class HelloWorld {
!

public static void main(String[] args) {
System.out.println("Hello, World");
}
}

What's in a line?
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
What will systems

look like in the future?
How will they be

constructed and evolved?
How should they be

constructed and evolved?
Prehistory

History
Prehistory

History
Prehistory

History
Prehistory

History
VCS

CVS/SVN

MSR

seventies

nineties

2004
Mining
Software
Repositories
edit

run

compile
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
!
!

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;
!

!

!

!

!

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
(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
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
!

Integrated Development Environments + Recommender Systems
!
!
!
!
!
!
!
!
!
!
!

Intelligent Development Environments
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.
A Holistic Approach to
Evolving
Software
Systems

!

Michele Lanza

REVEAL @ Faculty of Informatics

University of Lugano, Switzerland

More Related Content

Viewers also liked

Icsm2010 kamei
Icsm2010 kameiIcsm2010 kamei
Icsm2010 kamei
SAIL_QU
 
A Study of the Quality-Impacting Practices of Modern Code Review at Sony Mobile
A Study of the Quality-Impacting Practices of Modern Code Review at Sony MobileA Study of the Quality-Impacting Practices of Modern Code Review at Sony Mobile
A Study of the Quality-Impacting Practices of Modern Code Review at Sony Mobile
SAIL_QU
 
Revisiting the Applicability of the Pareto Principle to Core Development Team...
Revisiting the Applicability of the Pareto Principle to Core Development Team...Revisiting the Applicability of the Pareto Principle to Core Development Team...
Revisiting the Applicability of the Pareto Principle to Core Development Team...
SAIL_QU
 
Icse2011 build maintenance
Icse2011 build maintenanceIcse2011 build maintenance
Icse2011 build maintenance
SAIL_QU
 
An Empirical Study of Goto in C Code from GitHub Repositories
An Empirical Study of Goto in C Code from GitHub RepositoriesAn Empirical Study of Goto in C Code from GitHub Repositories
An Empirical Study of Goto in C Code from GitHub Repositories
SAIL_QU
 
Smalltalk In a Nutshell
Smalltalk In a NutshellSmalltalk In a Nutshell
Smalltalk In a Nutshell
Michele Lanza
 

Viewers also liked (20)

Icsm2010 kamei
Icsm2010 kameiIcsm2010 kamei
Icsm2010 kamei
 
A Study of the Quality-Impacting Practices of Modern Code Review at Sony Mobile
A Study of the Quality-Impacting Practices of Modern Code Review at Sony MobileA Study of the Quality-Impacting Practices of Modern Code Review at Sony Mobile
A Study of the Quality-Impacting Practices of Modern Code Review at Sony Mobile
 
The impact of supercomputers on MSR
The impact of supercomputers on MSRThe impact of supercomputers on MSR
The impact of supercomputers on MSR
 
Defect Prediction: Accomplishments and Future Challenges
Defect Prediction: Accomplishments and Future ChallengesDefect Prediction: Accomplishments and Future Challenges
Defect Prediction: Accomplishments and Future Challenges
 
Revisiting the Applicability of the Pareto Principle to Core Development Team...
Revisiting the Applicability of the Pareto Principle to Core Development Team...Revisiting the Applicability of the Pareto Principle to Core Development Team...
Revisiting the Applicability of the Pareto Principle to Core Development Team...
 
Modern Code Reviews in Open Source Projects: Which Problems Do They Fix?
Modern Code Reviews in Open Source Projects: Which Problems Do They Fix?Modern Code Reviews in Open Source Projects: Which Problems Do They Fix?
Modern Code Reviews in Open Source Projects: Which Problems Do They Fix?
 
Linking E-Mails and Source Code Artifacts
Linking E-Mails and Source Code ArtifactsLinking E-Mails and Source Code Artifacts
Linking E-Mails and Source Code Artifacts
 
RTFM (Read The Factual Mails) --Augmenting Program Comprehension with REmail
RTFM (Read The Factual Mails) --Augmenting Program Comprehension with REmailRTFM (Read The Factual Mails) --Augmenting Program Comprehension with REmail
RTFM (Read The Factual Mails) --Augmenting Program Comprehension with REmail
 
Supporting Developers’ Coordination in The IDE #cscw2015
Supporting Developers’ Coordination in The IDE #cscw2015Supporting Developers’ Coordination in The IDE #cscw2015
Supporting Developers’ Coordination in The IDE #cscw2015
 
Icse2011 build maintenance
Icse2011 build maintenanceIcse2011 build maintenance
Icse2011 build maintenance
 
An Automated Approach for Recommending When to Stop Performance Tests
An Automated Approach for Recommending When to Stop Performance TestsAn Automated Approach for Recommending When to Stop Performance Tests
An Automated Approach for Recommending When to Stop Performance Tests
 
EvoSpaces - Multi-dimensional Navigation Spaces for Software Evolution
EvoSpaces - Multi-dimensional Navigation Spaces for Software EvolutionEvoSpaces - Multi-dimensional Navigation Spaces for Software Evolution
EvoSpaces - Multi-dimensional Navigation Spaces for Software Evolution
 
Visualizing Gnome with the Small Project Observatory
Visualizing Gnome with the Small Project ObservatoryVisualizing Gnome with the Small Project Observatory
Visualizing Gnome with the Small Project Observatory
 
An Empirical Study of Goto in C Code from GitHub Repositories
An Empirical Study of Goto in C Code from GitHub RepositoriesAn Empirical Study of Goto in C Code from GitHub Repositories
An Empirical Study of Goto in C Code from GitHub Repositories
 
Software Visualization 101+
Software Visualization 101+Software Visualization 101+
Software Visualization 101+
 
Smalltalk In a Nutshell
Smalltalk In a NutshellSmalltalk In a Nutshell
Smalltalk In a Nutshell
 
ICPE2015
ICPE2015ICPE2015
ICPE2015
 
MSR 2009
MSR 2009MSR 2009
MSR 2009
 
WCRE2011
WCRE2011WCRE2011
WCRE2011
 
Msr2016 tarek
Msr2016 tarek Msr2016 tarek
Msr2016 tarek
 

Similar to A Holistic Approach to Evolving Software Systems

Next.ml Boston: Data Science Dev Ops
Next.ml Boston: Data Science Dev OpsNext.ml Boston: Data Science Dev Ops
Next.ml Boston: Data Science Dev Ops
Eric Chiang
 

Similar to A Holistic Approach to Evolving Software Systems (20)

Fun with Functional Programming in Clojure - John Stevenson - Codemotion Amst...
Fun with Functional Programming in Clojure - John Stevenson - Codemotion Amst...Fun with Functional Programming in Clojure - John Stevenson - Codemotion Amst...
Fun with Functional Programming in Clojure - John Stevenson - Codemotion Amst...
 
Fun with Functional Programming in Clojure
Fun with Functional Programming in ClojureFun with Functional Programming in Clojure
Fun with Functional Programming in Clojure
 
[CCC-28c3] Post Memory Corruption Memory Analysis
[CCC-28c3] Post Memory Corruption Memory Analysis[CCC-28c3] Post Memory Corruption Memory Analysis
[CCC-28c3] Post Memory Corruption Memory Analysis
 
What can be done with Java, but should better be done with Erlang (@pavlobaron)
What can be done with Java, but should better be done with Erlang (@pavlobaron)What can be done with Java, but should better be done with Erlang (@pavlobaron)
What can be done with Java, but should better be done with Erlang (@pavlobaron)
 
Get into Functional Programming with Clojure
Get into Functional Programming with ClojureGet into Functional Programming with Clojure
Get into Functional Programming with Clojure
 
Scala lens: An introduction
Scala lens: An introductionScala lens: An introduction
Scala lens: An introduction
 
The things we don't see – stories of Software, Scala and Akka
The things we don't see – stories of Software, Scala and AkkaThe things we don't see – stories of Software, Scala and Akka
The things we don't see – stories of Software, Scala and Akka
 
How to make a large C++-code base manageable
How to make a large C++-code base manageableHow to make a large C++-code base manageable
How to make a large C++-code base manageable
 
[Ruxcon 2011] Post Memory Corruption Memory Analysis
[Ruxcon 2011] Post Memory Corruption Memory Analysis[Ruxcon 2011] Post Memory Corruption Memory Analysis
[Ruxcon 2011] Post Memory Corruption Memory Analysis
 
Conf orm - explain
Conf orm - explainConf orm - explain
Conf orm - explain
 
Spock Framework - Slidecast
Spock Framework - SlidecastSpock Framework - Slidecast
Spock Framework - Slidecast
 
Spock Framework
Spock FrameworkSpock Framework
Spock Framework
 
Parallel Computing with R
Parallel Computing with RParallel Computing with R
Parallel Computing with R
 
Next.ml Boston: Data Science Dev Ops
Next.ml Boston: Data Science Dev OpsNext.ml Boston: Data Science Dev Ops
Next.ml Boston: Data Science Dev Ops
 
Tokyo APAC Groundbreakers tour - The Complete Java Developer
Tokyo APAC Groundbreakers tour - The Complete Java DeveloperTokyo APAC Groundbreakers tour - The Complete Java Developer
Tokyo APAC Groundbreakers tour - The Complete Java Developer
 
Regex Considered Harmful: Use Rosie Pattern Language Instead
Regex Considered Harmful: Use Rosie Pattern Language InsteadRegex Considered Harmful: Use Rosie Pattern Language Instead
Regex Considered Harmful: Use Rosie Pattern Language Instead
 
Getting started with Clojure
Getting started with ClojureGetting started with Clojure
Getting started with Clojure
 
[Wroclaw #7] Why So Serial?
[Wroclaw #7] Why So Serial?[Wroclaw #7] Why So Serial?
[Wroclaw #7] Why So Serial?
 
Java
JavaJava
Java
 
Avout
AvoutAvout
Avout
 

Recently uploaded

Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 

Recently uploaded (20)

ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
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
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source Milvus
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 

A Holistic Approach to Evolving Software Systems

  • 1. Engineering Dependable Software Systems ! Michele Lanza REVEAL @ Faculty of Informatics University of Lugano, Switzerland
  • 2. Engineering Software Systems ! Michele Lanza REVEAL @ Faculty of Informatics University of Lugano, Switzerland
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13. Engineering Software Systems ! Michele Lanza REVEAL @ Faculty of Informatics University of Lugano, Switzerland
  • 14. Evolving Software Systems ! Michele Lanza REVEAL @ Faculty of Informatics University of Lugano, Switzerland
  • 15. A Holistic Approach to Evolving Software Systems ! Michele Lanza REVEAL @ Faculty of Informatics University of Lugano, Switzerland
  • 16. 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.
  • 17. 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?
  • 18. What will be the scale of systems 10-15 years from now?
  • 19. public class HelloWorld { ! public static void main(String[] args) { System.out.println("Hello, World"); } } What's in a line?
  • 20.
  • 21. 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
  • 22. What will systems look like in the future?
  • 23.
  • 24.
  • 25. How will they be constructed and evolved?
  • 26. How should they be constructed and evolved?
  • 30.
  • 31.
  • 36.
  • 37.
  • 38. ! ! 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;
  • 39.
  • 40.
  • 41.
  • 42. ! ! ! ! ! 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
  • 43. (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
  • 44. 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
  • 45.
  • 46. ! Integrated Development Environments + Recommender Systems ! ! ! ! ! ! ! ! ! ! ! Intelligent Development Environments
  • 47. 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.
  • 48. A Holistic Approach to Evolving Software Systems ! Michele Lanza REVEAL @ Faculty of Informatics University of Lugano, Switzerland