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