This document discusses software evolution analysis and visualization. It begins with definitions of software and key concepts in software evolution. It then discusses mining software repositories to understand who made changes and when. Visualization techniques are presented to help understand the evolutionary process, such as the Evolution Matrix and CodeCity tools. Analyzing bugs as first-class entities over their lifecycle is also discussed. The goal of the analysis is to understand past evolution and help predict future changes.
Process models are not perfect, but provide road map for software engineering work. Software models provide stability, control, and organization to a process that if not managed can easily get out of control
Software process models are adapted to meet the needs of software engineers and managers for a specific project.
Following presentation answers:
- Why do we need evolution?
- What happens if we do not evolve the software?
- What are the types of software evolution?
- What are Lehman's laws
- What are the strategies for evolution?
This is a detail lecture about software re-engineering. To make software more maintainable. This lecture also give detail about software reverse engineering. When to re-engineer and how to re-engineer software.
Process models are not perfect, but provide road map for software engineering work. Software models provide stability, control, and organization to a process that if not managed can easily get out of control
Software process models are adapted to meet the needs of software engineers and managers for a specific project.
Following presentation answers:
- Why do we need evolution?
- What happens if we do not evolve the software?
- What are the types of software evolution?
- What are Lehman's laws
- What are the strategies for evolution?
This is a detail lecture about software re-engineering. To make software more maintainable. This lecture also give detail about software reverse engineering. When to re-engineer and how to re-engineer software.
Requirements analysis, also called requirements engineering, is the process of determining user expectations for a new or modified product. These features, called requirements, must be quantifiable, relevant and detailed. In software engineering, such requirements are often called functional specifications. Requirements analysis is an important aspect of project management.
Requirements analysis, also called requirements engineering, is the process of determining user expectations for a new or modified product. These features, called requirements, must be quantifiable, relevant and detailed. In software engineering, such requirements are often called functional specifications. Requirements analysis is an important aspect of project management.
CISC & RISC Architecture with contents
History Of CISC & RISC
Need Of CISC
CISC
CISC Characteristics
CISC Architecture
The Search for RISC
RISC Characteristics
Bus Architecture
Pipeline Architecture
Compiler Structure
Commercial Application
Reference
Arranging software development around a wide mix of programming languages and technologies offers both challenges and rewards. In this talk Ryan will explore the pros and cons that the 6Wunderkinder team found when working with over 10 different programming languages in a single product.
On codes, machines, and environments: reflections and experiencesVincenzo De Florio
Code explicitly refers to a reference machine and, implicitly, to a set of conditions often called the system model and the fault model.
If one wants to guarantee an agreed-upon quality of service, one needs to either make assumptions about those conditions or adapt to them.
In this lecture I present this problem and a number of solutions, both practical and theoretical, that I have devised in the course of my career.
Although the main accent is on programming languages, here I provide links and references to other approaches that operate at algorithmic- and system-level.
Accelerated .NET Memory Dump Analysis training public slidesDmitry Vostokov
The slides from Software Diagnostics Services .NET memory dump analysis training. The training description: "Covers 22 .NET memory dump analysis patterns plus additional 11 unmanaged patterns. Learn how to analyze CLR 4 .NET application and service crashes and freezes, navigate through memory dump space (managed and unmanaged code) and diagnose corruption, leaks, CPU spikes, blocked threads, deadlocks, wait chains, resource contention, and much more. The training consists of practical step-by-step exercises using Microsoft WinDbg debugger to diagnose patterns in 64-bit and 32-bit process memory dumps. The training uses a unique and innovative pattern-oriented analysis approach to speed up the learning curve. The third edition was fully reworked to use the latest WinDbg version and Windows 10. It also includes 9 optional legacy exercises from the previous editions covering CLR 2 and 4, Windows Vista and Windows 7. Prerequisites: Basic .NET programming and debugging. Audience: Software technical support and escalation engineers, system administrators, DevOps, performance and reliability engineers, software developers and quality assurance engineers."
Presentation on Continuous Deployment with Deployit that Vincent Partington gave at the BCS CMSG conference in London on June the 7th 2011.
http://www.bcs-cmsg.org.uk/conference2011/conference.html
Kernel Recipes 2018 - 10 years of automated evolution in the Linux kernel - J...Anne Nicolas
The Coccinelle C-program matching and transformation tool was first released in 2008 to facilitate specification and automation in the evolution of Linux kernel code. The novel contribution of Coccinelle is to allow software developers to write code manipulation rules in terms of the code structure itself, via a generalization of the patch syntax. Over the years, Coccinelle has been extensively used in Linux kernel development, resulting in over 6000 commits to the Linux kernel, and has found its place as part of the Linux kernel development process. This talk will review the history of Coccinelle and its impact on the Linux kernel. It will also briefly present two newer tools, prequel and spinfer, that have built on the Coccinelle infrastructure.
Fifteen Years of DevOps -- LISA 2012 keynoteGeoff Halprin
There has been a lot of hullabaloo over the past few years around a concept called “DevOps.” The idea is that we need to break down the barriers between development and operations teams, and treat infrastructure as code, in order to move towards better software, more reliable and scalable systems, and continuous deployment.
For some of us who have been around a while, this is just a new label for something we’ve always done.
They say those that don’t learn from history are destined to repeat it. In this talk, we will look back at how the DevOps movement evolved, what it advocates, what it doesn’t address, and what you should take away from the movement that will help you in your professional life. We will also use this opportunity to look back over the past decade or two of system administration, and see how our challenges have changed, and how they have remained the same.
A Holistic Approach to Evolving Software SystemsMichele Lanza
A presentation I gave in Luxemburg in Jan 2014 in the context of the Symposium on "Engineering Complex Software Systems: Challenges, Solutions and Outlook"
GraphRAG is All You need? LLM & Knowledge GraphGuy Korland
Guy Korland, CEO and Co-founder of FalkorDB, will review two articles on the integration of language models with knowledge graphs.
1. Unifying Large Language Models and Knowledge Graphs: A Roadmap.
https://arxiv.org/abs/2306.08302
2. Microsoft Research's GraphRAG paper and a review paper on various uses of knowledge graphs:
https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
State of ICS and IoT Cyber Threat Landscape Report 2024 previewPrayukth K V
The IoT and OT threat landscape report has been prepared by the Threat Research Team at Sectrio using data from Sectrio, cyber threat intelligence farming facilities spread across over 85 cities around the world. In addition, Sectrio also runs AI-based advanced threat and payload engagement facilities that serve as sinks to attract and engage sophisticated threat actors, and newer malware including new variants and latent threats that are at an earlier stage of development.
The latest edition of the OT/ICS and IoT security Threat Landscape Report 2024 also covers:
State of global ICS asset and network exposure
Sectoral targets and attacks as well as the cost of ransom
Global APT activity, AI usage, actor and tactic profiles, and implications
Rise in volumes of AI-powered cyberattacks
Major cyber events in 2024
Malware and malicious payload trends
Cyberattack types and targets
Vulnerability exploit attempts on CVEs
Attacks on counties – USA
Expansion of bot farms – how, where, and why
In-depth analysis of the cyber threat landscape across North America, South America, Europe, APAC, and the Middle East
Why are attacks on smart factories rising?
Cyber risk predictions
Axis of attacks – Europe
Systemic attacks in the Middle East
Download the full report from here:
https://sectrio.com/resources/ot-threat-landscape-reports/sectrio-releases-ot-ics-and-iot-security-threat-landscape-report-2024/
Essentials of Automations: Optimizing FME Workflows with ParametersSafe Software
Are you looking to streamline your workflows and boost your projects’ efficiency? Do you find yourself searching for ways to add flexibility and control over your FME workflows? If so, you’re in the right place.
Join us for an insightful dive into the world of FME parameters, a critical element in optimizing workflow efficiency. This webinar marks the beginning of our three-part “Essentials of Automation” series. This first webinar is designed to equip you with the knowledge and skills to utilize parameters effectively: enhancing the flexibility, maintainability, and user control of your FME projects.
Here’s what you’ll gain:
- Essentials of FME Parameters: Understand the pivotal role of parameters, including Reader/Writer, Transformer, User, and FME Flow categories. Discover how they are the key to unlocking automation and optimization within your workflows.
- Practical Applications in FME Form: Delve into key user parameter types including choice, connections, and file URLs. Allow users to control how a workflow runs, making your workflows more reusable. Learn to import values and deliver the best user experience for your workflows while enhancing accuracy.
- Optimization Strategies in FME Flow: Explore the creation and strategic deployment of parameters in FME Flow, including the use of deployment and geometry parameters, to maximize workflow efficiency.
- Pro Tips for Success: Gain insights on parameterizing connections and leveraging new features like Conditional Visibility for clarity and simplicity.
We’ll wrap up with a glimpse into future webinars, followed by a Q&A session to address your specific questions surrounding this topic.
Don’t miss this opportunity to elevate your FME expertise and drive your projects to new heights of efficiency.
The Art of the Pitch: WordPress Relationships and SalesLaura Byrne
Clients don’t know what they don’t know. What web solutions are right for them? How does WordPress come into the picture? How do you make sure you understand scope and timeline? What do you do if sometime changes?
All these questions and more will be explored as we talk about matching clients’ needs with what your agency offers without pulling teeth or pulling your hair out. Practical tips, and strategies for successful relationship building that leads to closing the deal.
Neuro-symbolic is not enough, we need neuro-*semantic*Frank van Harmelen
Neuro-symbolic (NeSy) AI is on the rise. However, simply machine learning on just any symbolic structure is not sufficient to really harvest the gains of NeSy. These will only be gained when the symbolic structures have an actual semantics. I give an operational definition of semantics as “predictable inference”.
All of this illustrated with link prediction over knowledge graphs, but the argument is general.
PHP Frameworks: I want to break free (IPC Berlin 2024)Ralf Eggert
In this presentation, we examine the challenges and limitations of relying too heavily on PHP frameworks in web development. We discuss the history of PHP and its frameworks to understand how this dependence has evolved. The focus will be on providing concrete tips and strategies to reduce reliance on these frameworks, based on real-world examples and practical considerations. The goal is to equip developers with the skills and knowledge to create more flexible and future-proof web applications. We'll explore the importance of maintaining autonomy in a rapidly changing tech landscape and how to make informed decisions in PHP development.
This talk is aimed at encouraging a more independent approach to using PHP frameworks, moving towards a more flexible and future-proof approach to PHP development.
Accelerate your Kubernetes clusters with Varnish CachingThijs Feryn
A presentation about the usage and availability of Varnish on Kubernetes. This talk explores the capabilities of Varnish caching and shows how to use the Varnish Helm chart to deploy it to Kubernetes.
This presentation was delivered at K8SUG Singapore. See https://feryn.eu/presentations/accelerate-your-kubernetes-clusters-with-varnish-caching-k8sug-singapore-28-2024 for more details.
DevOps and Testing slides at DASA ConnectKari Kakkonen
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
Let's dive deeper into the world of ODC! Ricardo Alves (OutSystems) will join us to tell all about the new Data Fabric. After that, Sezen de Bruijn (OutSystems) will get into the details on how to best design a sturdy architecture within ODC.
7. Acknowledgements
• 4 slides borrowed from Dr. Tudor Gîrba
• 9 slides borrowed from Marco D’Ambros
• 11 slides borrowed from Richard Wettel
• 12 slides borrowed from Romain Robbes
• Thanks to Prof. Zeller for having me here
9. What is Software?
“a program enables a
computer to perform a
specific task”
“A computer program is
a collection of
instructions that
describe a task, or set of
tasks, to be carried out
by a computer”
10. Some Facts About Software
• Society increasingly relies on software
• ...but it is unreliable and of low quality
• Software is regarded like a classical engineering
product
• ...but it is more complex than any other human artifact
• Maintenance is treated as a lowly activity
• ...but 75% - 95% of cost is spent on maintenance
• Software evolves due to business & technology
drivers: systems that do not change are dead
• Software evolution is crucial
11. How Large is Software?
Windows XP: > 45 M
Lines of code (millions)
40 Windows 2000: 40 M
Red Hat 7.1
30 M
30
20
Windows 98: 18 M
Unix V7:
Windows 95: 15 M
10,000 Red Hat 6.2
Solaris 7: 12 M 17 M
10
Windows NT: 4 M
2 Windows 3.1: 3 M
1990 Linux: 10,000 1995 1998 2000
1992
12. How Much Software is There?
• The total volume of software is estimated at
7’000’000’000 function points (FP)
• 1 FP ~ 128 lines of C or 107 lines of COBOL
• This means ca. 1 TLOC (1’000’000’000’000 lines)
• Printed on paper we can wrap the planet 10 times
• In what shape is it?
• On average ca. 5 bugs / FP
• This means ca. 35’000’000’000 bugs (6 per person)
13. How Reliable is Software??
• Empirically
• 1 error / 20 lines
• Saftey-critical Systems
• 1 error / 100 lines
• Wishful Thinking
• 1 error / 1000 lines
• The software that flies
a Jumbo Jet
• 8’000’000 lines: you do
the math...
15. ...and it evolves!
Mozilla:
3 MLOC, more than 1
Milliion changes
performed by hundreds
of developers over more
than 6 years
16. What is Evolution?
“the accumulation of
changes through
succeeding generations
of organisms that results
in the emergence of new
species”
17. Maintenance vs Evolution
Software Evolution
XP sez: a system is
1.0 1.1 1.1a *always* in evolution,
2.0
there is no “for ward t
maintenance engineering” phase only
maintenance steps
activity
“Software Maintenance
Development”
18. Why Analyze Software Evolution?
“Nevertheless, the industrial track record raises the
question, why, despite so many advances, [...]
• satisfactory functionality, performance and quality is
only achieved over a lengthy evolutionary
process
• software maintenance never ceases until a system
is scrapped
• software is still generally regarded as the weakest
link in the development of computer-based
systems”
Lehman et. al, 1997
19. Software Entropy
• Lehman’s “Laws of Software Evolution”
• “Continuing Change”
• “Increasing Entropy/Complexity”
• “Increasing Size”
• Maintenance increases “Software Entropy”
• Erosion of architecture, design, modularization
• Increase if interdependencies between parts (“Coupling”)
• Decrease of separation of concerns (“Cohension”)
21. Software Evolution Analysis
• Goal: Investigate the evolution of a software system
to identify potential shortcomings in its architecture or
logical structure
• Structural shortcomings can the be subjected to
reengineering or restructuring
• Prerequisite: Reverse Engineering
23. Reverse Engineering in Reality
• During WW2 in 1944 3 B-29
Bombers had to land in Russia
• The main US bomber provided the
strategic advantage of reaching
over the Pacific
• Tremendously valuable, unknown
to the Russians, to build from
scratch would have taken 5 years
• Approach: Disassemble, test, run
• One was disassembled, one was
used, one was a training model
24. Software Reverse Engineering
• “The process of analysing a subject system to
• identify the system’s components and their
interrelationships, and
• create representations of the system in another form or
at a higher level of abstraction”
[Chikofsky & Cross, 1990]
• Why? To understand other people’s code
(newcomers in the team, code reviewing, developers
that left, etc.)
• Generating UML diagrams is not reverse
engineering...but it is a valuable support tool
25. Development: Hidden Chaos
fo
rw
ar
d
en
gin
ee
rin
g
{ {
{ { { {
} { {
}
} actual development } }
} { } } }
26. Reengineering: Regaining control
fo
g
rw
rin
ar
ee
d
gin
en
en
gin
e
ee
rs
rin
ve
g
re
{ {
{ { { {
} { {
}
} program transformation } }
} { } } }
27. Creating high level views: reverse engineering
g
rin
ee
gin
en
e
rs
ve
re
{ {
{ {
}
}
}
} { }
28. Coming back to Software Evolution Analysis
• Software systems are not “just there”, they are
evolved over time
• “If you want to know who somebody is, you have to
ask where he comes from”
• Evolution information is the key to a holistic
understanding of software
• The major goals of software evolution analysis are to
• Understand the evolutionary process
• Predict the future evolution
• This is done by mining software repositories
30. Mining Software Repositories?
• Software evolution research relies on software
repositories (think “CVS” or “Subversion”)
• To answer the question “Who did what and when?”
• ...but much more than that:
Code Effort Bugs Tests
...
Changes
e-Mails Navigation
Web Sites Traces Chats People Specs
31. Mining: Tools & Models
• Tools to create Models
• Tools to reason on the created Models
Models
... Effort
Tests People
Documentation
Code Traces
e-Mails
Bugs e-Mails
32. Models & Meta-Models
• A Model is just that: a representation of a system
• A Model always relies on a meta-model
• One challenge: unify and connect meta-models
Package Namespace
packagedIn belongsTo
* *
superclass *
Class Inheritance
subclass *
belongsTo belongsTo Package Namespace
*
History History
*
* invokedBy packagedIn belongsTo
Invocation Method Attribute
* *
* candidate superclass *
accessedIn accesses
Class Inheritance
History subclass *
History
* *
belongsTo belongsTo
Access
* *
* invokedBy
Invocation Method Attribute
History * candidate History History
accessedIn accesses
* *
Access
History
35. Software Visualization
“The use of the crafts of typography, graphic design,
animation, and cinematography with modern
human-computer interaction and computer graphics
technology to facilitate both the human
understanding and effective use of computer
software”
Stasko et.al., 1998
45. The city metaphor
class metric building property
software representation number of methods height
classes buildings number of attributes width
number of attributes length
packages districts
system city
package metric district property
nesting level color saturation
50. What about Software Evolution?
referenceVersion
1 versions *
versionEntity
ModelHistory history EntityVersion MooseModel
referenceVersion
referenceHistory
containingPackageHistory
mooseModel
packageHistories packagedIn
1 *
1 versions *
versionEntity
PackageHistory history EntityVersion FAMIXPackage
extendedInPackages
*
1 1 1
extendedClasses
referenceVersion
definedClasses
classHistories
from here...
referenceHistory
packagedIn
mooseModel
containingPackageHistory
* * * 1
1 versions *
versionEntity
ClassHistory history ClassVersion FAMIXClass
1
1 1 1
methodHistories
referenceVersion
attributeHistories
referenceHistory
methods
attributes
mooseModel
belongsTo
containingClassHistory
*
*
1 versions *
versionEntity
MethodHistory history MethodVersion FAMIXMethod
referenceVersion
referenceHistory
mooseModel
belongsTo
containingClassHistory
*
to here!
*
1 versions *
versionEntity
AttributeHistory history EntityVersion FAMIXAttribute
HISTORY LAYER VERSION LAYER SNAPSHOT LAYER
51. Same problem, more data
System ArgoUML JHotDraw Jmol
Packages 144 72 105
Classes 2’542 998 1’032
Lines of code 137’000 30’000 85’000
Sampling start Oct 2002 Oct 2000 Jan 2000
Sampling end Feb 2007 Apr 2005 Aug 2007
Sampling period variable 1 week 8 weeks
Samples 9 57 50
Revisions 13’535 267 8’065
53. ArgoUML Age map
org.argouml.language.cpp STDCTokenTypes FacadeMDRImpl
NOA 152, NOM 0, AGE 4
Facade NOA 3, NOM 351, AGE 4
org.argouml.language.php NOA 1, NOM 339, AGE 5
org.argouml.language.csharp CPPParser
NOA 85, NOM 204, AGE 4
org.argouml.language.java
org.argouml.model
JavaRecognizer
NOA 24, NOM 91, AGE 9
JavaTokenTypes
NOA 146, NOM 0, AGE 9
org.argouml.uml.reveng.java
JavaTokenTypes
NOA 175, NOM 0, AGE 9
JavaRecognizer
NOA 79, NOM 176, AGE 9
59. An ideal bug’s life cycle
Unconfirmed Verified
New Resolved Closed
Assigned
60. A less ideal bug’s life cycle
Unconfirmed Verified
New Resolved Closed
Assigned Reopened
61. A real bug’s life cycle
Unconfirmed Verified
New Resolved Closed
Assigned Reopened
62. Bug history from activities
Bug Bug
Problem Problem
id description id description
product component product component
Criticality Activity Criticality
severity priority severity priority
Involved people Involved people
steve
assignedTo reporter qa
AssignedTo john
assignedTo reporter qa
State steve john State
Status Resolution Status Resolution
... ...
Bug history
. . . .
64. The System Radiography View
“Where (in the system and in its history) are the
open bugs located?”
Visualization
principle • System decomposition
on the y axis
Component 1
Component 2
Product A
• Product :: Component
Color
y position #bugs
Component
x position
Product B
• (x,y) : (time, component)
•
Time Interval
Color: # open bugs
Time
65. Mozilla example [Sep ‘98 - Apr ‘03]
aggiungere transizione
alla prossima slide,
volendo anche nel filmato
Browser
Mailnews
66. The Bug Watch View
“How are bugs characterized with respect to their history?”
Visualization principle
End: 10/16/2001 Beginning: 10/19/1999 • 3 Layers
Time • Status
Status From To
Assigned 10/19/99 12/21/99
Resolved 12/21/99 1/31/00
Reopened 1/31/00 2/6/00
New 2/6/00 6/5/00
... ... ...
• Activity
• Severity
67. Examples from Mozilla
Browser :: Networking [Nov ‘02- Apr ‘03]
tell more about the
clustering dire che ne abbiamo
trovato anche bugs che
passano da resolved a
new o unconfirmed senza
passare da reopened
• Reopened 4 times
• Activities:
dire cosa e’ la grandezza
• •
Developer in charge to fix it
One statusonly (new)
changed 6 times
but many activities
• Many people added in the
CC
• All addition of CC
• Popular bug
73. Date
Class Change Refactorings
15/08/2006
17h17:29
Added class Foo Number of Entities
Additions (Unique Number)
method
m2
Modifications
Method Change
Removals
Duration
74. There is a shift of focus among classes
ChangePerformerTest, AdditionOperation,
MethodNode,
ScopeNode, TreeNode, ChangePerformer, DeletionOperation,
Method, BlockNode,
Argument, Temporary, AdditionOperation, TreeNode,
ChangePerformer ScopeNode TreeNode
Entity DeletionOperation Removal
Let’s look at S ,
a painting and decoration session
75. Added arguments and temporaries to the parse tree
ScopeNode
TreeNode AddEntityChild:
Argument isArgument
Temporary isTemporary
Entity
76. Added arguments and temporaries to Method.
Changed how to handle the children of a method
addArgument:
Method addTemporary:
ChangePerformer allChildren:
allLocalVariables:
77. Changed how source code is generated
MethodNode printTempsOn:
BlockNode printArgumentsOn:
ScopeNode printSourceCodeOn:
83. Mining Repositories to Control Evolution
• “Reverse Engineering with Logical Coupling”, Marco
D’Ambros, Michele Lanza, In Proceedings of WCRE 2006
(13th Working Conference on Reverse Engineering), pp.
189 - 198, IEEE CS Press, 2006
• “Software Bugs and Evolution: A Visual Approach to
Uncover their Relationship”, Marco D’Ambros, Michele
Lanza, In Proceedings of CSMR 2006 (10th European
Conference on Software Maintenance and
Reengineering), pp. 227 - 236, IEEE CS Press, 2006
• “A Bug’s Life: Visualizing a Bug Database”, Marco
D’Ambros, Michele Lanza, Martin Pinzger, In Proceedings
of VISSOFT 2007 (4th IEEE International Workshop on
Visualizing Software For Understanding and Analysis), pp.
113 - 120, IEEE CS Press, 2007
• “The Evolution Radar: Integrating Fine-grained and
Coarse-grained Logical Coupling Information”, Marco
D’Ambros, Michele Lanza, Mircea Lungu, In Proceedings
of MSR 2006 (3rd International Workshop on Mining
Software Repositories), pp. 26 - 32, 2006
• “Fractal Figures: Visualizing Development Effort for CVS
Entities”, Marco D'Ambros, Michele Lanza, Harald Gall, In
Proceedings of VISSOFT 2005 (3rd IEEE International
Workshop on Visualizing Software For Understanding and
Analysis), pp. 46 - 51, IEEE CS Press, 2005
84. Immersive Software Analysis
• “Program Comprehension through Software Habitability”,
Richard Wettel, Michele Lanza, In Proceedings of ICPC
2007 (15th International Conference on Program
Comprehension), pp. 231 - 240, IEEE CS Press, 2007
• “Visualizing Software Systems as Cities”, Richard Wettel,
Michele Lanza, In Proceedings of VISSOFT 2007 (4th
International Workshop on Visualizing Software for
Understanding and Analysis), pp. 92 - 99, IEEE CS Press,
2007
85. Change-based Software Evolution
• “A Change-based Approach to Software Evolution”,
Romain Robbes, Michele Lanza, In ENTCS, vol. 166, pp
93 - 109, Jan 2007, Elsevier Science Direct
• “Characterizing and Understanding Development
Sessions”, Romain Robbes, Michele Lanza, In
Proceedings of ICPC 2007 (15th International Conference
on Program Comprehension), pp. 155 - 164, IEEE CS
Press, 2007
• “An Approach to Software Evolution Based on Semantic
Change”, Romain Robbes, Michele Lanza, Mircea Lungu,
In Proceedings of FASE 2007 (10th ETAPS Conference on
Fundamental Approaches to Software Engineering), pp.
27 - 411, Springer LNCS, 2007
• “Mining a Change-based Repository”, Romain Robbes, In
Proceedings of MSR 2007 (4th International Workshop on
Mining Software Repositories), IEEE CS Press, 2007
• “Change-based Software Evolution”, Romain Robbes,
Michele Lanza, In Proceedings of EVOL 2006 (1st
International Workshop on Software Evolution), pp. 159 -
164, 2006
• “Versioning Systems for Evolution Research”, Romain
Robbes, Michele Lanza, In Proceedings of IWPSE 2005
(8th International Workshop on Principles of Software
Evolution), pp. 155 - 164, IEEE CS Press, 2005
86. Visual Architecture Reconstruction
• “Reverse Engineering Super-Repositories”, Mircea Lungu,
Michele Lanza, Tudor Gîrba, Reinout Heeck, In Proceedings
of WCRE 2007 (14th Working Conference on Reverse
Engineering), to be published, IEEE CS Press, 2007
• “Exploring Inter-Module Relationships in Evolving Software
Systems”, Mircea Lungu, Michele Lanza, In Proceedings of
CSMR 2007 (11th European Conference on Software
Maintenance and Reengineering), pp. 91 - 100, IEEE CS
Press, 2007
• “Package Patterns for Visual Architecture Recovery”, Mircea
Lungu, Michele Lanza, Tudor Gîrba, In Proceedings of CSMR
2006 (10th European Conference on Software Maintenance
and Reengineering), pp. 227 - 236, IEEE CS Press, 2006
• “Interactive Exploration of Semantic Clusters”, Mircea Lungu,
Adrian Kuhn, Tudor Gîrba, Michele Lanza, In Proceedings of
VISSOFT 2005 (3rd International Workshop on Visualizing
Software for Understanding and Analysis), pp. 95 - 100, IEEE
CS Press, 2005
• “A Small Observatory for Super-Repositories”, Mircea Lungu,
Tudor Gîrba, In Proceedings of IWPSE 2007 (10th
International Workshop on Principles of Software Evolution),
pp. 106 - 109, IEEE CS Press, 2007
• “Softwarenaut: Cutting the Edge in Software Visualization”,
Mircea Lungu, Michele Lanza, In Proceedings of Softvis 2006
(3rd International Symposium on Software Visualization), pp.
179 - 180, ACM Press, 2006
87. Take-away
• Software is not written, it’s being evolved (by people)
• Fully understanding software is only possible if one
takes into account evolutionary information
• Evolution analysis = mining software repositories
• Mining software repositories = tools & models
• A myriad of approaches exist
• Long-term goal: holistic understanding of software
• And: assisting the developer
• Last but not least: an exciting, still under-researched,
field of software engineering