-
Notifications
You must be signed in to change notification settings - Fork 9
/
rmod.bib
12396 lines (11608 loc) · 830 KB
/
rmod.bib
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
@inproceedings{Abde07a,
author = {Hani Abdeen and Ilham Alloui and St{\'e}phane Ducasse and Damien Pollet and Mathieu Suen},
title = {Package References Distribution Fingerprint},
booktitle = {FAMOOSr, 1st Workshop on FAMIX and Moose in Reengineering},
year = {2007},
annote = {internationalworkshop},
keywords = {moose StefPub kzVisualization lse-pub}}
@inproceedings{Abde08b,
author = {Hani Abdeen and Ilham Alloui and St{\'e}phane Ducasse and Damien Pollet and Mathieu Suen},
title = {Package Reference Fingerprint: a Rich and Compact Visualization to Understand Package Relationships},
booktitle = {Proceeding of the 12th European Conference on Software Maintenance and Reengineering (CSMR'08)},
pages = {213--222},
publisher = {IEEE Computer Society Press},
year = {2008},
misc = {Acceptance rate: 24/87 = 27\%},
pdf = {http://rmod-files.lille.inria.fr/Team/Texts/Papers/Abde08b-CSMR2008-Fingerprint.pdf},
abstract = {Object-oriented languages such as Java, Smalltalk, and C\+\+ structure their programs using packages, allowing classes to be organized into named abstractions. Maintainers of large applications need to understand how packages are structured and how they relate to each other, but this task is very complex because packages often have multiple clients and different roles (class container, code ownership...). Cohesion and coupling are still among the most used metrics, because they help identify candidate packages for restructuring; however, they do not help maintainers understand the structure and interrelationships between packages. In this paper, we present the package fingerprint, a 2D visualization of the references made to and from a package. The proposed visualization offers a semantically rich, but compact and zoomable visualization centered on packages. We focus on two views (incoming and outgoing references) that help users understand how the package under analysis is used by the system and how it uses the system. We applied these views on three large case studies: JBoss, Azureus, and ArgoUML.},
annote = {internationalconference},
hal-url = {http://hal.inria.fr/inria-00200869},
hal-id = {inria-00200869},
keywords = {moose cook-pub lse-pub StefPub kzVisualization},
location = {Athens, Greece},
rate = {27\%}}
@inproceedings{Abde09b,
author = {Hani Abdeen and St{\'e}phane Ducasse and Houari A. Sahraoui and Ilham Alloui},
title = {Automatic Package Coupling and Cycle Minimization},
booktitle = {Proceedings of the 16th International Working Conference on Reverse Engineering (WCRE'09)},
pages = {103--112},
publisher = {IEEE Computer Society Press},
year = {2009},
misc = {acceptance rate: 20/79 = 25\%},
doi = {10.1109/WCRE.2009.13},
pdf = {http://rmod-files.lille.inria.fr/Team/Texts/Papers/Abde09b-WCRE2009-AutomaticPackageCoupling.pdf},
abstract = {Object-oriented (OO) software is usually organized into subsystems using the concepts of package or module. Such modular structure helps applications to evolve when facing new requirements. However, studies show that as software evolves to meet requirements and environment changes, modularization quality degrades. To help maintainers improve the quality of software modularization we have designed and implemented a heuristic search-based approach for automatically optimizing inter-package connectivity (i.e., dependencies). In this paper, we present our approach and its underlying techniques and algorithm. We show through a case study how it enables maintainers to optimize OO package structure of source code. Our optimization approach is based on Simulated Annealing technique.},
address = {Washington, DC, USA},
annote = {internationalconference},
hal-url = {http://hal.inria.fr/inria-00425417},
hal-id = {inria-00425417},
keywords = {moose remoose2 lse-pub cook StefPub kzRemodularisation},
rate = {25\%}}
@phdthesis{Abde09c,
author = {Hani Abdeen},
title = {Visualizing, Assessing and Re-Modularizing Object-Oriented Architectural Elements},
year = {2009},
school = {Universit\'e de Lille},
pdf = {http://rmod-files.lille.inria.fr/Team/PhDs/PhD-2009-Abdeen.pdf},
abstract = {To cope with the complexity of large object-oriented software systems, developers organize classes into subsystems using the concepts of module or package. Such modular structure helps software systems to evolve when facing new requirements. The organization of classes into packages and/or subsystems represents the software modularization. the software modularization usually follows interrelationships between classes. Ideally, packages should to be loosely coupled and cohesive to a certain extent. However, Studies show that as
software evolves to meet requirements and environment changes, the software modularization gradually drifts
and looses quality. As a consequence, the software modularization must be maintained. It is thus important to
understand, to assess and to optimize the organization of packages and their relationships.
Our claim is that the maintenance of large and complex software modularizations needs approaches that help in:
(1) understanding package shapes and relationships; (2) assessing the quality of a modularization, as well as
the quality of a single package within a given modularization; (3) optimizing the quality of an existing
modularization.
In this thesis, we concentrate on three research fields: software visualizations, metrics and algorithms. At
first, we define two visualizations that help maintainers: (1) to understand packages structure, usage and
relationships; (2) to spot patterns; and (3) to identify misplaced classes and structural anomalies. In
addition to visualizations, we define a suite of metrics that help in assessing the package design quality
(i.e., package cohesion and coupling). We also define metrics that assess the quality of a collection of
inter-dependent packages from different view points, such as the degree of package coupling and cycles.
Finally, we define a search-based algorithm that automatically reduces package coupling and cycles only by
moving classes over existing packages. Our optimization approach takes explicitly into account the original
class organization and package structure. It also allows maintainers to control the optimization process by
specifying: (1) the maximal number of classes that may change their packages; (2) the classes that are
candidate for moving and the classes that should not; (3) the packages that are candidate for restructuring
and the packages that should not; and (4) the maximal number of classes that a given package can entail.
The approaches presented in this thesis have been applied to real large object-oriented software systems. The
results we obtained demonstrate the usefulness of our visualizations and metrics; and the effectiveness of our
optimization algorithm.},
annote = {PhD},
hal-id = {tel-00498389},
institution = {INRIA},
keywords = {moose remoose2 lse-pub cook kzVisualization}}
@article{Abde10a,
author = {Hani Abdeen and St{\'e}phane Ducasse and Damien Pollet and Ilham Alloui},
title = {Package Fingerprint: a visual summary of package interfaces and relationships},
journal = {Information and Software Technology Journal},
volume = {52},
pages = {1312-1330},
year = {2010},
impactfactor = {ISI impact factor (2010) 1.821},
doi = {10.1016/j.infsof.2010.07.005},
pdf = {http://rmod-files.lille.inria.fr/Team/Texts/Papers/Abde10a-IST-Official-packageFingerprints.pdf},
abstract = {Context: Object-oriented languages such as Java, Smalltalk, and C\+\+ structure their programs using packages. Maintainers of large systems need to understand how packages relate to each other, but this task is complex because packages often have multiple clients and play different roles (class container, code ownership. . . ). Several approaches have been proposed, among which the use of cohesion and coupling metrics. Such metrics help identify candidate packages for restructuring; however, they do not help maintainers actually understand the structure and interrelationships between packages.
Objectives: In this paper, we use pre-attentive processing as the basis for package visualization and see to what extent it could be used in package understanding.
Method: We present the package fingerprint, a 2D visualization of the references made to and from a package. The proposed visualization offers a semantically rich, but compact and zoomable views centered on packages. We focus on two views (incoming and outgoing references) that help users understand how the package under analysis is used by the system and how it uses the system.
Results: We applied these views on four large systems: Squeak, JBoss, Azureus, and ArgoUML. We obtained several interesting results, among which, the identification of a set of recurring visual patterns that help maintainers: (a) more easily identify the role of and the way a package is used within the system (e.g., the package under analysis provides a set of layered services), and, (b) detect either problematic situations (e.g., a single package that groups together a large number of basic services) or opportunities for better package restructuring (e.g., removing cyclic dependencies among packages). The visualization generally scaled well and the detection of different patterns was always possible.
Conclusion: The proposed visualizations and patterns proved to be useful in understanding and maintaining the different systems we addressed. To generalize to other contexts and systems, a real user study is required.},
annote = {internationaljournal},
hal-id = {inria-00531496},
hal-url = {http://hal.inria.fr/inria-00531496},
keywords = {moose remoose2 lse-pub StePub cook kzVisualisation}}
@inproceedings{Abde11a,
author = {Hani Abdeen and St{\'e}phane Ducasse and Houari A. Sahraoui},
title = {Modularization Metrics: Assessing Package Organization in Legacy Large Object-Oriented Software},
booktitle = {Proceedings of the 18th IEEE International Working Conference on Reverse Engineering (WCRE'11)},
publisher = {IEEE Computer Society Press},
year = {2011},
misc = {Short paper, acceptance rate: 50/104 = 48\%},
pdf = {http://rmod-files.lille.inria.fr/Team/Texts/Papers/Abde11a-WCRE-ModularizationMetrics-INRIA.pdf},
abstract = {There exist many large object-oriented software systems consisting of several thousands of classes that are organized into several hundreds of packages. In such software systems, classes cannot be considered as units for software modularization. In such context, packages are not simply classes containers, but they also play the role of modules: a package should focus to provide well identified services to the rest of the software system. Therefore, understanding and assessing package organization is primordial for software maintenance tasks. Although there exist a lot of works proposing metrics for the quality of a single class and/or the quality of inter-class relationships, there exist few works dealing with some aspects for the quality of package organization and relationship. We believe that additional investigations are required for assessing package modularity aspects. The goal of this paper is to provide a complementary set of metrics that assess some modularity principles for packages in large legacy object-oriented software: Information-Hiding, Changeability and Reusability principles. Our metrics are defined with respect to object-oriented dependencies that are caused by inheritance and method call. We validate our metrics theoretically through a careful study of the mathematical properties of each metric.},
address = {Washington, DC, USA},
annote = {internationalconference},
hal-url = {http://hal.inria.fr/inria-00614778/},
hal-id = {inria-00614778},
keywords = {moose cutter lse-pub raweb2011 kzMetric StefPub kzRemodularisation},
rate = {acceptance rate (full + short papers): 50/104 = 48\%},
hal-pdf = {http://hal.inria.fr/docs/00/61/45/83/PDF/ModularizationMetrics-INRIA.pdf}}
@inproceedings{Abde11a,
author = {Hani Abdeen and St{\'e}phane Ducasse and Houari A. Sahraoui},
title = {Modularization Metrics: Assessing Package Organization in Legacy Large Object-Oriented Software},
booktitle = {Proceedings of the 18th IEEE International Working Conference on Reverse Engineering (WCRE'11)},
publisher = {IEEE Computer Society Press},
year = {2011},
misc = {Short paper, acceptance rate: 50/104 = 48\%},
pdf = {http://rmod-files.lille.inria.fr/Team/Texts/Papers/Abde11a-WCRE-ModularizationMetrics-INRIA.pdf},
abstract = {There exist many large object-oriented software systems consisting of several thousands of classes that are organized into several hundreds of packages. In such software systems, classes cannot be considered as units for software modularization. In such context, packages are not simply classes containers, but they also play the role of modules: a package should focus to provide well identified services to the rest of the software system. Therefore, understanding and assessing package organization is primordial for software maintenance tasks. Although there exist a lot of works proposing metrics for the quality of a single class and/or the quality of inter-class relationships, there exist few works dealing with some aspects for the quality of package organization and relationship. We believe that additional investigations are required for assessing package modularity aspects. The goal of this paper is to provide a complementary set of metrics that assess some modularity principles for packages in large legacy object-oriented software: Information-Hiding, Changeability and Reusability principles. Our metrics are defined with respect to object-oriented dependencies that are caused by inheritance and method call. We validate our metrics theoretically through a careful study of the mathematical properties of each metric.},
address = {Washington, DC, USA},
annote = {internationalconference},
hal-url = {http://hal.inria.fr/inria-00614778/},
hal-id = {inria-00614778},
keywords = {moose cutter lse-pub raweb2011 kzMetric StefPub kzRemodularisation},
rate = {acceptance rate (full + short papers): 50/104 = 48\%},
hal-pdf = {http://hal.inria.fr/docs/00/61/45/83/PDF/ModularizationMetrics-INRIA.pdf}}
@techreport{Abde11i,
author = {Abdeen, Hani and Ducasse, St{\'e}phane and Sahraoui, Houari A.},
title = {Modularization Metrics: Assessing Package Organization in Legacy Large Object-Oriented Software},
year = {2011},
pdf = {http://rmod-files.lille.inria.fr/Team/Texts/Papers//Abde11a-TechReport-ModularizationMetrics-INRIA.pdf},
abstract = {There exist many large object-oriented software systems consisting of several thousands of classes that are organized into several hundreds of packages. In such software systems, classes cannot be considered as units for software modularization. In such context, packages are not simply classes containers, but they also play the role of modules: a package should focus to provide well identified services to the rest of the software system. Therefore, understanding and assessing package organization is primordial for software maintenance tasks. Although there exist a lot of works proposing metrics for the quality of a single class and/or the quality of inter-class relationships, there exist few works dealing with some aspects for the quality of package organization and relationship. We believe that additional investigations are required for assessing package modularity aspects. The goal of this paper is to provide a complementary set of metrics that assess some modularity principles for packages in large legacy object-oriented software: Information-Hiding, Changeability and Reusability principles. Our metrics are defined with respect to object-oriented inter-package and intra-package dependencies. The dependencies that are caused by different types of inter-class dependencies, such as inheritance and method call. We validate our metrics theoretically through a careful study of the mathematical properties of each metric.},
annote = {techreport},
hal-id = {inria-00614583},
institution = {RMod -- INRIA Lille-Nord Europe},
keywords = {Software Metrics Software Modularization Coupling Cohesion Packages Modularity kzMetric kzRemodularisation},
hal-url = {http://hal.inria.fr/inria-00614583},
hal-pdf = {http://hal.inria.fr/inria-00614583/PDF/ModularizationMetrics-INRIA.pdf}}
@inproceedings{Abde13a,
author = {Hani Abdeen and Houari Sahraoui and Osama Shata and Nicolas Anquetil and St{\'e}phane Ducasse},
title = {Towards Automatically Improving Package Structure While Respecting Original Design Decisions},
booktitle = {International Working Conference on Reverse Engineering (WCRE'13)},
publisher = {IEEE Computer Society Press},
year = {2013},
misc = {Acceptance rate: 38/97 = 39\%},
pdf = {http://rmod-files.lille.inria.fr/Team/Texts/Papers/Abde13a-ImprovingPackageStructure-WCRE13.pdf},
abstract = {Recent studies have largely investigated the detection of class design anomalies. They proposed a large set of metrics that help in detecting those anomalies and in predicting the quality of class design. While those studies and the proposed metrics are valuable, they do not address the particularities of Java interfaces. Interfaces define the contracts that spell out how software modules and logic units interact with each other. This paper proposes a list of design anomalies related to Java interfaces. We identify and describe those anomalies via real examples, taken from well-known Java applications. Then we define three metrics help in automatically estimate the interface design quality, regarding the proposed design anomalies. We evaluate our metrics on three large Java applications. The results show that our metrics are realistic and help in qualifying the interface design, and in identifying candidate refactoringRecently, there has been an important progress in applying search-based optimization techniques to the problem of software re-modularization. Yet, a major part of the existing body of work addresses the problem of modularizing software systems from scratch, regardless of the existing packages structure. This paper presents a novel multi-objective optimization approach for improving existing packages structure. The optimization approach aims at increasing the cohesion and reducing the coupling and cyclic connectivity of packages, by modifying as less as possible the existing packages organization. Moreover, maintainers can specify several constraints to guide the optimization process with regard to extra design factors. To this contribution, we use the Non-Dominated Sorting Genetic Algorithm (NSGA-II). We evaluate the optimization approach through an experiment covering four real-world software systems. The results promise the effectiveness of our optimization approach for improving existing packages structure by doing very small modifications.},
annote = {internationalconference},
hal-id = {hal-00862063},
hal-url = {http://hal.inria.fr/inria-00862063},
keywords = {moose cutter lse-pub kzMetric StefPub kzInterface},
tagnicolasa = {architecture}}
@inproceedings{Abde13a,
author = {Hani Abdeen and Houari Sahraoui and Osama Shata and Nicolas Anquetil and St{\'e}phane Ducasse},
title = {Towards Automatically Improving Package Structure While Respecting Original Design Decisions},
booktitle = {International Working Conference on Reverse Engineering (WCRE'13)},
publisher = {IEEE Computer Society Press},
year = {2013},
misc = {Acceptance rate: 38/97 = 39\%},
pdf = {http://rmod-files.lille.inria.fr/Team/Texts/Papers/Abde13a-ImprovingPackageStructure-WCRE13.pdf},
abstract = {Recent studies have largely investigated the detection of class design anomalies. They proposed a large set of metrics that help in detecting those anomalies and in predicting the quality of class design. While those studies and the proposed metrics are valuable, they do not address the particularities of Java interfaces. Interfaces define the contracts that spell out how software modules and logic units interact with each other. This paper proposes a list of design anomalies related to Java interfaces. We identify and describe those anomalies via real examples, taken from well-known Java applications. Then we define three metrics help in automatically estimate the interface design quality, regarding the proposed design anomalies. We evaluate our metrics on three large Java applications. The results show that our metrics are realistic and help in qualifying the interface design, and in identifying candidate refactoringRecently, there has been an important progress in applying search-based optimization techniques to the problem of software re-modularization. Yet, a major part of the existing body of work addresses the problem of modularizing software systems from scratch, regardless of the existing packages structure. This paper presents a novel multi-objective optimization approach for improving existing packages structure. The optimization approach aims at increasing the cohesion and reducing the coupling and cyclic connectivity of packages, by modifying as less as possible the existing packages organization. Moreover, maintainers can specify several constraints to guide the optimization process with regard to extra design factors. To this contribution, we use the Non-Dominated Sorting Genetic Algorithm (NSGA-II). We evaluate the optimization approach through an experiment covering four real-world software systems. The results promise the effectiveness of our optimization approach for improving existing packages structure by doing very small modifications.},
annote = {internationalconference},
hal-id = {hal-00862063},
hal-url = {http://hal.inria.fr/inria-00862063},
keywords = {moose cutter lse-pub kzMetric StefPub kzInterface},
tagnicolasa = {architecture}}
@article{Abde14a,
author = {Hani Abdeen and St{\'e}phane Ducasse and Damien Pollet and Ilham Alloui and Jean-R\'emy Falleri},
title = {The Package Blueprint: Visually analyzing and quantifying packages dependencies},
journal = {Science of Computer Programming},
volume = {89},
pages = {298--319},
year = {2014},
impactfactor = {5-Year ISI impact factor (2010) 4.865},
doi = {10.1016/j.scico.2014.02.016},
pdf = {http://rmod-files.lille.inria.fr/Team/Texts/Papers/Abde14a-Official-PackageBlueprint-SCP.pdf},
annote = {internationaljournal},
hal-id = {00957695},
hal-url = {http://hal.inria.fr/inria-00957695},
keywords = {lse-pub StefPub kzVisualization},
month = feb}
@article{Agou22a,
author = {Agouf, Nour Jihene and St{\'e}phane Ducasse and Anne Etien and Abdelghani Alidra and Arnaud Thiefaine},
title = {Understanding Class Name Regularity: A Simple Heuristic and Supportive Visualization},
journal = {Journal of Object Technology},
volume = {21},
pages = {1312-1330},
year = {2022},
doi = {10.5381/jot.2022.21.1.a2},
pdf = {http://rmod-files.lille.inria.fr/Team/Texts/Papers/Agouf22a-ClassName-JOT.pdf},
hal-url = {https://hal.inria.fr/hal-03706041v1},
abstract = {Studies have shown that more than 50\% of software maintenance time is spent reading code to understand it. This puts a strong emphasis on the understandability of source code. Class names constitute one of the first pieces of information developers have access to. Proposal: To assist developers in understanding the logic and regularity of class names, we present a new and simple visualization, called ClassName Distribution. It brings together package and inheritance as structural perspectives on class names. ClassName Distribution allows one to spot naming irregularities in large hierarchies scattered over multiple packages. Validation: We show (1) how this visualization helps capture recurrent patterns relative to concept reference in class names and (2) that this visualization supports the evolution of software systems by monitoring and guiding class renamings over multiple versions. To evaluate our approach we did a consequent assessment with real practitioners and open-source software structured in two different setups: in the first one, we asked domain experts to use the visualization: three groups of engineers applied our tool to the the software they develop or maintain. They proposed and performed respectively 91, 68, and 24 class renamings. In the second setup, as authors of the visualization and the tool (visualization experts), we applied our tool to a new UI framework for Pharo. We sent 34 pull requests for renaming classes and 32 were accepted. Finally, we applied our visualizations to 50 Java projects and identified visual patterns in most of them. Consequently, it shows that the proposed visualization is effective for spotting class name inconsistencies, and this by both developers of the system and external persons.},
annote = {internationaljournal},
hal-id = {hal-03706041},
hal-url = {https://hal.inria.fr/hal-03706041v1},
keywords = {StePub kzVisualisation}}
@inproceedings{Agou22b,
author = {Agouf, Nour Jihene and St{\'e}phane Ducasse and Anne Etien and Michele Lanza},
title = {A New Generation of Class Blueprint},
booktitle = {IEEE Working Conference on Software Visualization (VISSOFT)},
year = {2022},
pdf = {http://rmod-files.lille.inria.fr/Team/Texts/Papers/Agouf22b-ClasssbluePrint2-Vissoft.pdf},
hal-url = {http://hal.inria.fr/hal-03752237},
annote = {internationalconference},
note = {(Best paper award)},
keywords = {kzVisualization},
mont = oct,
hal-id = {hal-03752237}}
@inproceedings{Agou23a,
author = {Nour Jihene Agouf and St{\'e}phane Ducasse and Anne Etien and Nicolas Anquetil and Soufyane Labsari},
title = {A Visualization for Client/Server Architecture Viewpoints and Architectural Violations},
booktitle = {IEEE Working Conference on Software Visualization (VISSOFT)},
year = {2023},
annote = {internationalconference},
keywords = {kzVisualization},
mont = oct,
hal-id = {hal-03752237},
tagnicolasa = {tools}}
@inproceedings{Ali17a,
author = {Alidra, Abdelghani and Saker, Moussa and Anquetil, Nicolas and Ducasse, St{\'e}phane},
title = {Identifying class name inconsistency in hierarchy: a first simple heuristic},
booktitle = {International Workshop on Smalltalk Technologies (IWST'17)},
year = {2017},
doi = {10.1145/3139903.3139920},
pdf = {http://rmod-files.lille.inria.fr/Team/Texts/Papers/Alid17a-IdentifyingClassNames-IWST17.pdf},
annote = {internationalworkshop},
hal-url = {https://hal.archives-ouvertes.fr/hal-01663603},
hal-id = {hal-01663603},
keywords = {kzVisualization kzEvolution lse-pub},
tagnicolasa = {quality}}
@article{Alle13a,
author = {Esteban Allende and Oscar Callau and Johan Fabry and Eric Tanter and Marcus Denker},
title = {Gradual Typing for Smalltalk},
journal = {Science of Computer Programming},
year = {2013},
doi = {10.1016/j.scico.2013.06.006},
pdf = {http://rmod-files.lille.inria.fr/Team/Texts/Papers/Alle13aGradualTyping.pdf},
abstract = {Being able to combine static and dynamic typing within the same language has clear benefits in order to support the evolution of prototypes or scripts into mature robust programs. While being an emblematic dynamic object-oriented language, Smalltalk is lagging behind in this regard. We report on the design, implementation and application of Gradualtalk, a gradually-typed Smalltalk meant to enable incremental typing of existing programs. The main design goal of the type system is to support the features of the Smalltalk language, like metaclasses and blocks, live programming, and to accomodate the programming idioms used in practice. We studied a number of existing projects in order to determine the features to include in the type system. As a result, Gradualtalk is a practical approach to gradual types in Smalltalk, with a novel blend of type system features that accomodate most programming idioms.},
annote = {internationaljournal},
hal-id = {hal-00862815},
hal-url = {https://hal.archives-ouvertes.fr/hal-00862815},
keywords = {type systems, gradual typing, smalltalk, lse-pub}}
@inproceedings{Alli12a,
author = {Simon Allier and Nicolas Anquetil and Andre Hora and St{\'e}phane Ducasse},
title = {A Framework to Compare Alert Ranking Algorithms},
booktitle = {International {W}orking {C}onference on {R}everse {E}ngineering ({WCRE}'12)},
year = {2012},
misc = {Acceptance rate: 43/138 = 31\%},
pdf = {http://rmod-files.lille.inria.fr/Team/Texts/Papers/Alli12a-wcre2012-ComparisonOfAlertsRankingAlgorithms.pdf},
annote = {internationalconference},
hal-id = {hal-00747817},
hal-url = {https://hal.archives-ouvertes.fr/hal-00747817},
keywords = {lse-pub StefPub kzChecking},
tagnicolasa = {quality}}
@inproceedings{Anqu00a,
author = {Anquetil, Nicolas},
title = {Concepts + Relations = 'Abstract Constructs'},
booktitle = {WCRE'00: Proceedings of the Seventh Working Conference on Reverse Engineering (WCRE'00)},
publisher = {IEEE Computer Society},
year = {2000},
pdf = {http://rmod-files.lille.inria.fr/Team/Texts/Papers/Anqu00a-WCRE-Concepts+Relations.pdf},
address = {Los Alamitos, CA, USA},
annote = {internationalconference},
note = {Due to an error of the editor, the paper does not appear in the proceedings},
tagnicolasa = {knowledge}}
@inproceedings{Anqu00b,
author = {Anquetil, Nicolas},
title = {A Comparison of Graphs of Concept for Reverse Engineering},
booktitle = {Proceedings of the 8th International Workshop on Program Comprehension},
pages = {231--},
publisher = {IEEE Computer Society},
year = {2000},
pdf = {http://rmod-files.lille.inria.fr/Team/Texts/Papers/Anqu00b-ICSM-GraphsConcepts.pdf},
abstract = {To group related things together (for example to form subsystems); researchers in Reverse Engineering are looking for algorithms that create meaningful groups. One such algorithm, Concept Analysis, received a lot of interest recently. It creates a lattice of concepts, which have some advantages over the more traditional tree of clusters from clustering algorithms.We will argue that the main interest of Concept Analysis lies in the concepts themselves and can be disconnected from the particular structure (the lattice of concepts) in which the concepts are usually arranged. We will compare Concept Analysis to various other algorithms trying to select the most important concepts contained in a set of entities.Our main conclusion is that although it have advantages, the lattice of concepts suffer from a major drawback that other constructs do not have: it returns much more information (concepts) than what it was given in input (a set of entities describing some software system).},
address = {Washington, DC, USA},
annote = {internationalconference},
isbn = {0-7695-0656-9},
keywords = {Reverse Engineering, Concept Analysis, Clustering},
series = {IWPC '00},
tagnicolasa = {architecture}}
@inproceedings{Anqu01a,
author = {Anquetil, Nicolas},
title = {Characterizing the Informal Knowledge Contained in Systems},
booktitle = {WCRE '01: Proceedings of the Eighth Working Conference on Reverse Engineering (WCRE'01)},
pages = {166--175},
publisher = {IEEE Computer Society},
year = {2001},
misc = {acceptance rate: 27/104 = 26\%},
doi = {10.1109/WCRE.2001.957821},
pdf = {http://rmod-files.lille.inria.fr/Team/Texts/Papers/Anqu01a-WCRE-InformalKnowledge.pdf},
abstract = {Program comprehension of legacy systems is a highly knowledge-intensive task. One of the goals of reverse engineering is to propose automated help to relate application domain concepts to all their implementation instances. It is generally accepted that to do so would require analyzing such documentation as identifiers or comments. However, before attempting to perform this difficult analysis, it would be useful to know precisely what information the documentation contains and if it is worth trying. In this paper, we present the results of a study of the knowledge contained in two sources of documentation for the Mosaic system. This knowledge is categorized into various domains, and the relative proportions of these domains are discussed. Among other things, the results highlight the high frequency with which application domain concepts are used, which could provide the means to identify them.},
acceptnum = {27},
accepttotal = {104},
address = {Washington, DC, USA},
annote = {internationalconference},
isbn = {0-7695-1303-4},
tagnicolasa = {knowledge}}
@incollection{Anqu02a,
author = {Lethbridge, Timothy C. and Anquetil, Nicolas},
title = {Approaches to clustering for program comprehension and remodularization},
booktitle = {Advances in software engineering: Comprehension, Evaluation, and Evolution},
pages = {137--157},
publisher = {Springer-Verlag New York, Inc.},
year = {2002},
url = {http://portal.acm.org/citation.cfm?id=505630.505637},
address = {New York, NY, USA},
annote = {articlebook},
editor = {Hakan Erdogmus, Oryal Tanir},
isbn = {0-387-95109-1},
tagnicolasa = {architecture}}
@article{Anqu03a,
author = {Nicolas Anquetil and Timothy Lethbridge},
title = {Comparative study of clustering algorithms and abstract representations for software remodularization},
journal = {IEE Proceedings -- Software},
volume = {150},
pages = {185-201},
year = {2003},
doi = {10.1049/ip-sen:20030581},
pdf = {http://rmod-files.lille.inria.fr/Team/Texts/Papers/Anqu03a-IEESoft-ComparativeStudy.pdf},
abstract = {As valuable software systems become older, reverse engineering becomes increasingly important to companies that have to maintain the code. Clustering is a key activity in reverse engineering that is used to discover improved designs of systems or to extract significant concepts from code. Clustering is an old, highly sophisticated, activity which offers many methods to meet different needs. The various methods have been well documented in the past; however, conclusions from general clustering literature may not apply entirely to the reverse engineering domain. In the paper, the authors study three decisions that need to be made when clustering: the choice of (i) abstract descriptions of the entities to be clustered, (ii) metrics to compute coupling between the entities, and (iii) clustering algorithms. For each decision, our objective is to understand which choices are best when performing software remodularisation. The experiments were conducted on three public domain systems (gcc, Linux and Mosaic) and a real world legacy system (2 million LOC). Among other things, the authors confirm the importance of a proper description scheme for the entities being clustered, list a few effective coupling metrics and characterise the quality of different clustering algorithms. They also propose description schemes not directly based on the source code, and advocate better formal evaluation methods for the clustering results.},
annote = {internationaljournal},
number = {3},
tagnicolasa = {architecture}}
@inproceedings{Anqu03b,
author = {Nicolas Anquetil and K{\'a}thia Mar\c{c}al de Oliveira and M{\'a}rcio Greyck Batista Dias and Marcelo Ramal and Ricardo de Moura Meneses},
title = {Knowledge for Software Maintenance},
booktitle = {Proceedings of the Fifteenth International Conference on Software Engineering \& Knowledge Engineering (SEKE'2003)},
pages = {61--68},
year = {2003},
misc = {acceptance rate: 71/159 = 45\%},
abstract = {Knowledge management is emerging as a promising area to support software engineering activities. The general idea is to use knowledge gained in previous projects to help future ones. We believe this approach is even more relevant when considering software maintenance where maintainers often have to modify a system that they did not develop, that has no documentation, and that nobody knows intimately. Contrasting with this lack of information on the system, maintainers need a lot of knowledge: about the application domain, the organization software maintenance procedures, the system itself, the language used, past development methods, etc. Although one can readily agree with the information needs listed above, there is no clear, exhaustive definition of which knowledge would be useful to perform software maintenance. In this paper we describe our research to identify these needs. This research is part of a long term project that aims at building a knowledge management system for software maintenance.},
acceptnum = {71},
accepttotal = {159},
annote = {internationalconference},
tagnicolasa = {knowledge}}
@incollection{Anqu06a,
author = {Nicolas Anquetil and K\'athia M. de Oliveira and M\'arcio G. B. Dias},
title = {Software Maintenance Ontology},
chapter = {5},
booktitle = {Ontologies for Software Engineering and Software Technology},
pages = {153--173},
publisher = {Springer-Verlag New York, Inc.},
year = {2006},
doi = {10.1007/3-540-34518-3\_5},
annote = {articlebook},
editor = {Coral Calero, Francisco Ruiz, Mario Piattini},
isbn = {978-3-540-34517-6},
tagnicolasa = {knowledge}}
@inproceedings{Anqu06c,
author = {Alexandre H. Torres and Nicolas Anquetil and K\'athia M. de Oliveira},
title = {Pro-active dissemination of knowledge with learning histories},
booktitle = {Proceedings of the Eighth International Workshop on Learning Software Organizations},
pages = {19--27},
year = {2006},
pdf = {http://rmod-files.lille.inria.fr/Team/Texts/Papers/Anqu06c-LSO-ProactiveKnowldge.pdf},
abstract = {Because they routinely work with intangible goods, software organizations need to be aware of the importance of knowledge. Different knowledge management approaches exist in the literature to help them manage this fundamental asset. However, the current approaches suffer from different problems, like dealing only with explicit knowledge (e.g. in the form of best practices), or focusing on "on demand" knowledge access. In this paper we present a richer, pro-active, knowledge management approach suitable for small or medium organizations. We report on an experiment we conducted with our model.},
annote = {internationalworkshop},
tagnicolasa = {knowledge}}
@article{Anqu07a,
author = {Anquetil, Nicolas and de Oliveira, K\'{a}thia M. and de Sousa, Kleiber D. and Batista Dias, M\'{a}rcio G.},
title = {Software maintenance seen as a knowledge management issue},
journal = {Information Software Technology},
volume = {49},
pages = {515--529},
publisher = {Butterworth-Heinemann},
year = {2007},
impactfactor = {Impact Factor (2008) 1.200},
doi = {10.1016/j.infsof.2006.07.007},
pdf = {http://rmod-files.lille.inria.fr/Team/Texts/Papers/Anqu07a-IST-MaintenanceKnowledge.pdf},
abstract = {Creating and maintaining software systems is a knowledge intensive task. One needs to have a good understanding of the application domain, the problem to solve and all its requirements, the software process used, technical details of the programming language(s), the system's architecture and how the different parts fit together, how the system interacts with its environment, etc. All this knowledge is difficult and costly to gather. It is also difficult to store and usually lives only in the mind of the software engineers who worked on a particular project. If this is a problem for development of new software, it is even more for maintenance, when one must rediscover lost information of an abstract nature from legacy source code among a swarm of unrelated details. In this paper, we submit that this lack of knowledge is one of the prominent problems in software maintenance. To try to solve this problem, we adapted a knowledge extraction technique to the knowledge needs specific to software maintenance. We explain how we explicit the knowledge discovered on a legacy software during maintenance so that it may be recorded for future use. Some applications on industry maintenance projects are reported.},
address = {Newton, MA, USA},
annote = {internationaljournal},
issn = {0950-5849},
number = {5},
tagnicolasa = {knowledge}}
@inproceedings{Anqu08a,
author = {N. Anquetil and B. Grammel and I. Galvao Lourenco da Silva and J.A.R. Noppen and S. Shakil Khan and H. Arboleda and A. Rashid and A. Garcia},
title = {Traceability for Model Driven, Software Product Line Engineering},
booktitle = {ECMDA Traceability Workshop Proceedings},
pages = {77--86},
publisher = {SINTEF ICT},
year = {2008},
url = {http://doc.utwente.nl/64994/},
abstract = {Traceability is an important challenge for software organizations. This is true for traditional software development and even more so in new approaches that introduce more variety of artefacts such as Model Driven development or Software Product Lines. In this paper we look at some aspect of the interaction of Traceability, Model Driven development and Software Product Line.},
address = {Norway},
annote = {internationalworkshop},
month = jun,
tagnicolasa = {other traceability}}
@article{Anqu08b,
author = {Anquetil, Nicolas and Noppen, Joost and Galv{\~a}o, Ism{\^e}nia},
title = {La tra{\c{c}}abilit{\'e} dans les lignes de produits logiciels},
journal = {L'Objet},
volume = {14},
pages = {47--57},
publisher = {Lavoisier},
year = {2008},
annote = {nationaljournal},
number = {3},
tagnicolasa = {other traceability}}
@article{Anqu08c,
author = {Anquetil, Nicolas and Arboleda, Hugo and de Alexandria Fernandes, Fabricio and Nunez, Angel and Royer, Jean-Claude},
title = {Lignes de produits logiciels et usines logicielles},
journal = {L'Objet},
volume = {14},
pages = {15--31},
publisher = {Lavoisier},
year = {2008},
annote = {nationaljournal},
number = {3},
tagnicolasa = {other traceability}}
@inproceedings{Anqu09a,
author = {Anquetil, Nicolas and Lethbridge, Timothy C},
title = {Ten years later, experiments with clustering as a software remodularization method},
booktitle = {Reverse Engineering, 2009. WCRE'09. 16th Working Conference on},
pages = {7--7},
year = {2009},
annote = {invited},
organization = {IEEE},
tagnicolasa = {architecture}}
@inproceedings{Anqu09b,
author = {Anquetil, Nicolas and Royer, J-C and Andre, Pascal and Ardourel, Gilles and Hnetynka, Petr and Poch, Tomas and Petrascu, Dragos and Petrascu, Vladiela},
title = {Javacompext: Extracting architectural elements from java source code},
booktitle = {Reverse Engineering, 2009. WCRE'09. 16th Working Conference on},
pages = {317--318},
year = {2009},
annote = {internationalconference},
hal-id = {hal-00457219},
organization = {IEEE},
tagnicolasa = {architecture}}
@article{Anqu10a,
author = {Anquetil, Nicolas and Kulesza, Uir\'{a} and Mitschke, Ralf and Moreira, Ana and Royer, Jean-Claude and Rummler, Andreas and Sousa, Andr\'{e}},
title = {A model-driven traceability framework for software product lines},
journal = {Journal of Software and Systems Modeling (SOSYM)},
volume = {9},
pages = {427--451},
publisher = {Springer-Verlag New York, Inc.},
year = {2010},
impactfactor = {Impact Factor (2011) 1.061},
doi = {10.1007/s10270-009-0120-9},
pdf = {http://rmod-files.lille.inria.fr/Team/Texts/Papers/Anqu10a-SOSYM-TraceabilitySPL.pdf},
abstract = {Software product line (SPL) engineering is a recent approach to software development where a set of software products are derived for a well defined target application domain, from a common set of core assets using analogous means of production (for instance, through Model Driven Engineering). Therefore, such family of products are built from reuse, instead of developed individually from scratch. SPL promise to lower the costs of development, increase the quality of software, give clients more flexibility and reduce time to market. These benefits come with a set of new problems and turn some older problems possibly more complex. One of these problems is traceability management. In the European AMPLE project we are creating a common traceability framework across the various activities of the SPL development. We identified four orthogonal traceability dimensions in SPL development, one of which is an extension of what is often considered as "traceability of variability". This constitutes one of the two contributions of this paper. The second contribution is the specification of a metamodel for a repository of traceability links in the context of SPL and the implementation of a respective traceability framework. This framework enables fundamental traceability management operations, such as trace import and export, modification, query and visualization. The power of our framework is highlighted with an example scenario.},
address = {Secaucus, NJ, USA},
annote = {internationaljournal},
hal-id = {hal-00668175},
hal-url = {https://hal.archives-ouvertes.fr/hal-00668175},
issn = {1619-1366},
number = {4},
tagnicolasa = {other traceability}}
@inproceedings{Anqu11a,
author = {Nicolas Anquetil and Jannik Laval},
title = {Legacy Software Restructuring: Analyzing a Concrete Case},
booktitle = {Proceedings of the 15th European Conference on Software Maintenance and Reengineering (CSMR'11)},
pages = {279--286},
year = {2011},
misc = {acceptance rate: 29/101 = 29\%},
pdf = {http://rmod-files.lille.inria.fr/Team/Texts/Papers/Anqu11a-CSMR2011-Coupling.pdf},
abstract = {Software re-modularization is an old preoccupation of reverse engineering research. The advantages of a well structured or modularized system are well known. Yet after so much time and efforts, the field seems unable to come up with solutions that make a clear difference in practice. Recently, some researchers started to question whether some basic assumptions of the field were not overrated. The main one consists in evaluating the high-cohesion/low-coupling dogma with metrics of unknown relevance. In this paper, we study a real structuring case (on the Eclipse platform) to try to better understand if (some) existing metrics would have helped the software engineers in the task. Results show that the cohesion and coupling metrics used in the experiment did not behave as expected and would probably not have helped the maintainers reach there goal.
We also measured another possible restructuring which is to decrease the number of cyclic dependencies between modules.
Again, the results did not meet expectations.},
acceptnum = {29},
accepttotal = {101},
address = {Oldenburg, Germany},
annote = {internationalconference},
hal-id = {hal-00745773},
hal-url = {https://hal.archives-ouvertes.fr/hal-00745773},
keywords = {moose lse-pub cutter raweb2011 pharo kzRemodularisation kzEvolution},
tagnicolasa = {architecture metric}}
@incollection{Anqu11b,
author = {Nicolas Anquetil and Uir\'a Kulesza and Ricardo Mateus and Ralf Mitschke and Ana Moreira and Jean-Claude Royer and Andreas Rummler},
title = {Managing information flow in the {SPL} development processes},
chapter = {8},
booktitle = {Aspect-Oriented, Model-Driven Software Product Lines -- The AMPLE way},
pages = {222--262},
publisher = {Cambridge University Press},
year = {2011},
doi = {10.1017/CBO9781139003629.008},
annote = {articlebook},
editor = {Awais Rashid and Jean-Claude Royer and Andreas Rummler},
isbn = {978-0-521-76722-4},
keywords = {ample lse-pub raweb2011},
tagnicolasa = {other traceability}}
@incollection{Anqu11c,
author = {Phil Greenwood and Vander Alves and John Hutchinson and Christa Schwanninger and Nicolas Anquetil},
title = {Empirical research in software product line engineering},
chapter = {14},
booktitle = {Aspect-Oriented, Model-Driven Software Product Lines -- The AMPLE way},
pages = {411--443},
publisher = {Cambridge University Press},
year = {2011},
doi = {10.1017/CBO9781139003629.014},
annote = {articlebook},
editor = {Awais Rashid and Jean-Claude Royer and Andreas Rummler},
isbn = {978-0-521-76722-4},
keywords = {ample lse-pub raweb2011},
tagnicolasa = {other}}
@techreport{Anqu12x,
author = {Nicolas Anquetil and Damien Cassou and Marcus Denker and St{\'e}phane Ducasse and Damien Pollet},
title = {Project-Team RMoD (Analyses and Language Constructs for Object-Oriented Application Evolution) 2012 Activity Report},
year = {2012},
pdf = {http://rmod-files.lille.inria.fr/Team/Texts/Papers//Anqu12x-RAWEB-RMOD-2012-TeamActivityReport.pdf},
abstract = {This is the yearly report of the RMOD team (http://rmod.inria.fr/). A good way to understand what we are doing.},
annote = {techreport},
hal-id = {hal-00777904},
hal-url = {https://hal.archives-ouvertes.fr/hal-00777904},
institution = {INRIA},
keywords = {rmod raweb lse-pub kzTeamReport},
tagnicolasa = {ignore}}
@techreport{Anqu13a,
author = {Nicolas Anquetil and Andr\'e Hora},
title = {Assessing the Quality of Architectural Design Quality Metrics},
year = {2013},
url = {https://hal.inria.fr/hal-01664311},
hal-url = {https://hal.inria.fr/hal-01664311},
institution = {Inria Lille Nord Europe},
hal-id = {hal-01664311},
annote = {techreport},
tagnicolasa = {architecture metric}}
@article{Anqu14a,
author = {Nicolas Anquetil and St{\'e}phane Ducasse and Muhammad U. Bhatti},
title = {Dedicated Software Analysis Tools},
journal = {ERCIM News},
volume = {99},
pages = {22--23},
year = {2014},
pdf = {http://rmod-files.lille.inria.fr/Team/Texts/Papers//Anqu14a-Ercim-EN99-web.pdf},
annote = {vulgarisation},
keywords = {moose lse-pub raweb2014 StePub kzIDE kzTools},
month = oct,
tagnicolasa = {tools},
pdf = {http://rmod-files.lille.inria.fr/Team/Texts/Papers//Anqu14a-Ercim-EN99-web.pdf}}
@techreport{Anqu14b,
author = {Nicolas Anquetil},
title = {HDR - Supporting Software Evolution in the Organizations},
year = {2014},
institution = {Universit{\'e} des Sciences et Technologie de Lille - Lille I},
hal-id = {tel-01086785},
tagnicolasa = {other},
month = may,
annote = {habilitation}}
@techreport{Anqu14c,
author = {Nicolas Anquetil and Yuriy Tymchuk and Anne Etien and Gustavo Santos and St{\'e}phane Ducasse},
title = {A Generic Platform for Name Resolution in Source Code Analysis},
year = {2014},
url = {https://hal.inria.fr/hal-01664258},
hal-url = {https://hal.inria.fr/hal-01664258},
institution = {Inria Lille Nord Europe},
hal-id = {hal-01664258},
annote = {techreport},
tagnicolasa = {tools}}
@techreport{Anqu17a,
author = {Nicolas Anquetil and Marcus Denker and St{\'e}phane Ducasse and Anne Etien and Damien Pollet},
title = {Project-Team RMoD (Analyses and Language Constructs for Object-Oriented Application Evolution) 2016 Activity Report},
year = {2017},
pdf = {http://rmod-files.lille.inria.fr/Team/Texts/Papers//Anqu17a-RAWEB-RMOD-2016-TeamActivityReport.pdf},
abstract = {This is the yearly report of the RMOD team (http://rmod.inria.fr/). A good way to understand what we are doing.},
annote = {techreport},
hal-id = {hal-01444225},
hal-url = {https://hal.inria.fr/hal-01444225},
inriareport = {2016},
institution = {INRIA},
keywords = {rmod raweb lse-pub kzTeamReport},
tagnicolasa = {ignore}}
@inproceedings{Anqu17b,
author = {Nicolas Anquetil and Muhammad Bhatti and St{\'e}phane Ducasse and Andr\'e Hora and Jannik Laval},
title = {The Case for Non-Cohesive Packages},
booktitle = {SQAMIA 2017 - 6th workshop on Software Quality Analysis, Monitoring, Improvement, and Applications},
year = {2017},
url = {https://hal.archives-ouvertes.fr/hal-01585703},
pdf = {http://rmod-files.lille.inria.fr/Team/Texts/Papers/Anqu17b-Sqamia-Metrics.pdf},
abstract = {While the lack of cohesiveness of modules in procedural languages is a good way to identify modules with potential quality problems, we doubt that it is an adequate measure for packages in object-oriented systems. Indeed, mapping procedural metrics to object-oriented systems should take into account the building principles of object-oriented programming: inheritance and late binding. Inheritance offers the possibility to create packages by just extending classes with the necessary increment of behavior. Late binding coupled to the " Hollywood Principle " are a key to build frameworks and let the users branch their extensions in the framework. Therefore, a package extending a framework does not have to be cohesive, since it inherits the framework logic, which is encapsulated in framework packages. In such a case, the correct modularization of an extender application may imply low cohesion for some of the packages. In this paper we confirm these conjectures on various real systems (JHotdraw, Eclipse, JEdit, JFace) using or extending OO frameworks. We carry out a dependency analysis of packages to measure their relation with their framework. The results show that framework dependencies form a considerable portion of the overall package dependencies. This means that non-cohesive packages should not be considered systematically as packages of low quality.},
annote = {internationalworkshop},
hal-id = {hal-01585703},
tagnicolasa = {architecture metric},
url-conference = {http://ceur-ws.org/Vol-1938/paper-anq.pdf},
hal-url = {https://hal.inria.fr/hal-01585703},
month = sep,
keywords = {lse-pub kzMetric kzEvolution},
address = {Belgrade, Serbia}}
@inproceedings{Anqu19a,
author = {Nicolas Anquetil and Anne Etien and Gaelle Andreo and St{\'e}phane Ducasse},
title = {Decomposing God Classes at Siemens},
booktitle = {IEEE International Conference on Software Maintenance and Evolution (ICSME'19)},
pages = {169--180},
publisher = {IEEE},
year = {2019},
url = {https://hal.inria.fr/hal-02395836},
doi = {10.1109/ICSME.2019.00027},
pdf = {http://rmod-files.lille.inria.fr/Team/Texts/Papers/Anq19a-ICSME-GodClass.pdf},
abstract = {A group of developers at Siemens Digital Industry Division approached our team to help them restructure a large legacy system. Several problems were identified, including the presence of God classes (big classes with thousands of lines of code and hundred of methods). They had tried different approaches considering the dependencies between the classes, but none were satisfactory. Through interaction during the last three years with a lead software architect of the project, we designed a software visualization tool and an accompanying process that allows her to propose a decomposition of a God Class in a matter of one or two hours even without prior knowledge of the class (although actually implementing the decomposition in the source code could take a week of work). In this paper, we present the process that was formalized to decompose God Classes and the tool that was designed. We give details on the system itself and some of the classes that were decomposed. The presented process and visualisations have been successfully used for the last three years on a real industrial system at Siemens.},
address = {Cleveland, OH, USA},
month = oct,
keywords = {lse-pub ; moose-pub ; pharo-pub ; Industrial case; kzEvolution},
hal-id = {hal-02395836},
tagnicolasa = {architecture visualization tools},
annote = {topconference internationalconference}}
@inproceedings{Anqu20a,
author = {Nicolas Anquetil and Anne Etien and Houekpetodji, Mahugnon Honor\'e and Beno{\^\i}t Verhaeghe and St{\'e}phane Ducasse and Clotilde Toullec and Fatija Djareddir and J\'er\^ome Sudich and Mustapha Derras},
title = {Modular {Moose}: A new generation of software reengineering platform},
booktitle = {International Conference on Software and Systems Reuse (ICSR'20)},
pages = {119--134},
year = {2020},
misc = {acceptance rate: 16/60 = 27\%},
doi = {10.1007/978-3-030-64694-3_8},
pdf = {http://rmod-files.lille.inria.fr/Team/Texts/Papers/Anqu20a-ICSR-Moose.pdf},
series = {LNCS},
number = {12541},
hal-id = {hal-02972159},
hal-url = {https://hal.inria.fr/hal-02972159},
annote = {internationalconference},
tagnicolasa = {tools},
keywords = {kzEvolution},
month = dec}
@article{Anqu22a,
author = {Nicolas Anquetil and Julien Delplanque and St{\'e}phane Ducasse and Oleksandr Zaitsev and Christopher Furhman and Yann-Gael Gu{\'e}h{\'e}neuc},
title = {What do developers consider magic literals? A smalltalk perspective},
journal = {Information and Software Technology},
year = {2022},
doi = {10.1016/j.infosof.2022.106942},
pdf = {http://rmod-files.lille.inria.fr/Team/Texts/Papers/Anqu22a-infsof106942-MagicLiterals-Official.pdf},
hal-id = {hal-03679130},
hal-url = {https://hal.inria.fr/hal-03679130v1/document},
abstract = {Context: Literals are constant values (numbers, strings, etc.) used in the source code. Magic literals are such values used without an explicit explanation of their meaning. Such undocumented values may hinder source- code comprehension, negatively impacting maintenance. Relatively little literature can be found on the subject beyond the usual (and very old) recommendation of avoiding literals and preferring named constants. Yet, magic literals are still routinely found in source code.
Objective: We studied literal values in source code to understand when they should be considered magic or not (i.e., acceptable).
Methods: First, we perform a qualitative study of magic literals, to establish why and under which conditions they are considered harmful. We formalize hypotheses about the reasoning behind how literals are considered magic. Second, we perform a quantitative study on seven real systems ranging from small (a few classes) to large (thousands of classes). We report the literals’ types (number, string, Boolean, ...), their grammatical function (e.g., argument in a call, operand in an expression, value assigned, ), or the purpose of the code in which they appear (test methods, regular code). Third, we report on another study involving 26 programmers who analyzed about 24,000 literals, to understand which ones they consider magic. Finally, we evaluate the hypotheses defining specific conditions under which literals are acceptable.
Results: We show that (1) literals still exist and are relatively frequent (found in close to 50% of the methods considered); (2) they are more frequent in test methods (in 80% of test methods); (3) to a large extent, they were considered acceptable (only 25% considered magic); and (4) the hypotheses concerning acceptable literals are valid to various degrees.
Conclusion: We thus pave the way to future research on magic literals, for example, with tools that could help developers deciding if a literal is acceptable.},
annote = {internationaljournal},
tagnicolasa = {other}}
@inproceedings{Anqu22b,
author = {Anquetil, Nicolas and Campero, Miguel and St{\'e}phane Ducasse and Sandoval, Juan-Pablo and Tesone, Pablo},
title = {Transformation-based Refactorings: a First Analysis},
booktitle = {International Workshop of Smalltalk Technologies, IWST'22},
year = {2022},
pdf = {http://rmod-files.lille.inria.fr/Team/Texts/Papers/Anqu22b-Refactorings-IWST.pdf},
mont = aug,
keyworks = {kzTools},
annote = {internationalworkshop},
hal-url = {http://hal.inria.fr/hal-03752247},
hal-id = {hal-03752247},
tagnicolasa = {tool}}
@inproceedings{Anqu23a,
author = {Geraldine Galindo-Gutierrez and Maximiliano Narea Carvajal and Alison Fernandez Blanco and Nicolas Anquetil and Juan Pablo Sandoval Alcocer},
title = {A manual categorization of new quality issues on automatically-generated tests},
booktitle = {Proceedings of the 39st IEEE International Conference on Software Maintenance and Evolution (ICSME'23)},
year = {2023},
mont = oct,
keyworks = {},
annote = {internationalconference},
hal-url = {http://hal.inria.fr/hal-04344531v1},
hal-id = {hal-04344531v1},
tagnicolasa = {quality}}
@inproceedings{Anqu97a,
author = {Anquetil, Nicolas and Lethbridge, Timothy C.},
title = {File clustering using naming conventions for legacy systems},
booktitle = {Proceedings of the 1997 conference of the Centre for Advanced Studies on Collaborative research},
pages = {184--195},
publisher = {IBM Press},
year = {1997},
url = {http://portal.acm.org/citation.cfm?id=782010.782012},
abstract = {Decomposing complex software systems into conceptually independent subsystems represents a significant software engineering activity that receives considerable research attention. Most of the research in this domain deals with the source code; trying to cluster together files which are conceptually related. In this paper we propose using a more informal source of information: file names. We present an experiment which shows that file naming convention is the best file clustering criteria for the software system we are studying.Based on the experiment results, we also sketch a method to build a conceptual browser on a software system.},
annote = {internationalconference},
keywords = {clustering},
location = {Toronto, Ontario, Canada},
month = nov,
series = {CASCON'97},
tagnicolasa = {architecture}}
@inproceedings{Anqu98a,
author = {Nicolas Anquetil and Timothy C. Lethbridge},
title = {Assessing the relevance of identifier names in a legacy software system},
booktitle = {Proceedings of the 1998 conference of the Centre for Advanced Studies on Collaborative research},
pages = {213--222},
publisher = {IBM Press},
year = {1998},
url = {http://portal.acm.org/citation.cfm?id=783160.783164},
abstract = {Reverse engineering is a difficult task even for humans. When trying to provide tools to assist in this task, one should try to take advantage of all possible sources of information.Informal sources, like naming conventions, are more abstract than the code, thus helping to bridge the gap between code and design. On the other hand, there is no certainty that they actually represent the current state of the system.Some researchers have used these informal sources of information, relying on an assumption that if types (or variables, or functions) have the same name then they represent the same thing.However none of these researchers have actually tried to establish to what extent this assumption is valid. This paper provides a framework to study this issue. We will define what it means to have a "reliable naming convention", how this can be tested and under what conditions. We present examples from the particular legacy software system we are studying as well as from the literature.},
annote = {internationalconference},
location = {Toronto, Ontario, Canada},
series = {CASCON'98},
tagnicolasa = {knowledge}}
@inproceedings{Anqu98b,
author = {Nicolas Anquetil and Timothy C. Lethbridge},
title = {Extracting Concepts from File Names: a New File Clustering Criterion},
booktitle = {Proceedings of the 20th international conference on Software engineering},
pages = {84--93},
publisher = {IEEE Computer Society},
year = {1998},
url = {http://portal.acm.org/citation.cfm?id=302163.302172},
abstract = {Decomposing complex software systems into conceptually independent subsystems is a significant software engineering activity which received considerable research attention. Most of the research in this domain considers the body of the source code; trying to cluster together files which are conceptually related. This paper discusses techniques for extracting concepts (we call them ``abbreviations'') from a more informal source of information: file names. The task is difficult because nothing indicates where to split the file names into substrings. In general, finding abbreviations would require domain knowledge to identify the concepts that are referred to in a name and intuition to recognize such concepts in abbreviated forms. We show by experiment that the techniques we propose allow about 90\% of the abbreviations to be found automatically.},
address = {Washington, DC, USA},
annote = {internationalconference},
isbn = {0-8186-8368-6},
location = {Kyoto, Japan},
series = {ICSE'98},
tagnicolasa = {architecture}}
@article{Anqu98c,
author = {Anquetil, Nicolas and Vaucher, Jean},
title = {Expressing opposition in the object model, first step towards negation},
journal = {SIGPLAN Notices},
volume = {33},
pages = {48--55},
publisher = {ACM},
year = {1998},
doi = {10.1145/609742.609749},
abstract = {Although seemingly simple and intuitive, the object model still contains ambiguous notions. For example, inheritance has been proved to convey two different meanings depending on whether it is behavior or implementation that is inherited. Another conceptually simple notion, multiple inheritance, has not yet been clearly formalized. In this paper, we start by looking at relationships between sibling classes (two immediate subclasses of a common parent). Siblings can be combined through multiple inheritance, or on the contrary, they can be mutually exclusive. We call the relation between incompatible siblings "opposition", and show how it could help in formalizing object models. We then consider widening the explicit use of negation in object models. We argue that negative assertions could be used to validate the creation of new classes to ensure they are compatible with the intended uses of existing classes. Negation leads us to consider the implicit assumption behind object models, we propose to shift from the closed world assumption to the open world assumption.},
address = {New York, NY, USA},
aeres = {ASCL},
annote = {internationaljournal},
issn = {0362-1340},
issue = {1},
keywords = {multiple inheritance, negation, object model, reflection, theoretical foundations},
tagnicolasa = {other},
month = jan}
@inproceedings{Anqu99a,
author = {Nicolas Anquetil and Timothy Lethbridge},
title = {Experiments with {Clustering} as a {Software} {Remodularization} {Method}},
booktitle = {Proceedings of Working Conference on Reverse Engineering (WCRE'99)},
pages = {235--255},
year = {1999},
doi = {10.1109/WCRE.1999.806964},
abstract = {As valuable software systems get old, reverse engineering becomes more and more important to the companies that have to maintain the code. Clustering is a key activity in reverse engineering to discover a better design of the systems or to extract significant concepts from the code. Clustering is an old activity, highly sophisticated, offering many methods to answer different needs. Although these methods have been well documented in the past, these discussions may not apply entirely to the reverse engineering domain. We study some clustering algorithms and other parameters to establish whether and why they could be used for software remodularization. We study three aspects of the clustering activity: abstract descriptions chosen for the entities to cluster; metrics computing coupling between the entities; and clustering algorithms. The experiments were conducted on three public domain systems (gcc, Linux and Mosaic) and a real world legacy system (2 million LOC). Among other things, we confirm the importance of a proper description scheme of the entities being clustered, we list a few good coupling metrics to use and characterize the quality of different clustering algorithms. We also propose novel description schemes not directly based on the source code and we advocate better formal evaluation methods for the clustering results},
annote = {internationalconference},
isbn = {0-7695-0303-9},
keywords = {clustering},
tagnicolasa = {architecture}}
@article{Anqu99b,
author = {Nicolas Anquetil and Timothy C. Lethbridge},
title = {Recovering Software Architecture from the Names of Source Files},
journal = {Journal of Software Maintenance: Research and Practice},
volume = {11},
pages = {201--21},
year = {1999},
misc = {5 Year ISI impact factor (2010) 1.523},
doi = {10.1002/(SICI)1096-908X(199905/06)11:3<201::AID-SMR192>3.0.CO;2-1},
abstract = {We discuss how to extract a useful set of subsystems from a set of existing source-code file names. This problem is challenging because many legacy systems use thousands of files names, including some that are very short and cryptic. At the same time the problem is important because software maintainers often find it difficult to understand such systems. We propose a general algorithm to cluster files based on their names, and a set of alternative methods for implementing the algorithm. One of the key tasks is picking candidate words to try to identify in file names. We do this by (a) iteratively decomposing file names, (b) finding common substrings, and (c) choosing words in routine names, in an English dictionary or in source-code comments. In addition, we investigate generating abbreviations from the candidate words in order to find matches in file names, as well as how to split file names into components given no word markers. To compare and evaluate our five approaches, we present two experiments. The first compares the "concepts" found in each file name by each method with the results of manually decomposing file names. The second experiment compares automatically generated subsystems with subsystem examples proposed by experts. We conclude that two methods are most effective: extracting concepts using common substrings and extracting those concepts that relate to the names of routines in the files.},
annote = {internationaljournal},
tagnicolasa = {architecture}}
@inproceedings{Aran09a,
author = {Aranega, Vincent and Mottu, Jean-Marie and Etien, Anne and Dekeyser, Jean-Luc},
title = {Traceability Mechanism for Error Localization in Model Transformation.},
booktitle = {ICSOFT (1)},
pages = {66--73},
year = {2009}}
@article{Aran14a,
author = {Aranega, Vincent and Mottu, Jean-Marie and Etien, Anne and Degueule, Thomas and Baudry, Benoit and Dekeyser, Jean-Luc},
title = {Towards an automation of the mutation analysis dedicated to model transformation},
journal = {Software Testing, Verification and Reliability},
year = {2014},
url = {http://dx.doi.org/10.1002/stvr.1532},
doi = {10.1002/stvr.1532},
issn = {1099-1689},
hal-id = {hal-00988164},
annote = {internationaljournal},
keywords = {MDE, model transformation, mutation analysis, traceability, mutation operator}}
@article{Aran21a,
author = {Vincent Aranega and Julien Delplanque and Matias Martinez and Andrew Black and St{\'e}phane Ducasse and Christopher Fuhrman and Guillermo Polito and Anne Etien},
title = {Rotten Green Tests in Java, Pharo and Python An Empirical Study},
journal = {Journal of Empirical Software Engineering},
publisher = {Springer-Verlag},
year = {2021},
doi = {10.1007/s10664-021-10016-2},
pdf = {http://rmod-files.lille.inria.fr/Team/Texts/Papers/Aran21a-RottenGreenTest-EmpiricalSoftwareEngineering.pdf},
hal-pdf = {https://hal.inria.fr/hal-03281836/document},
annote = {internationaljournal},
keywords = {stefPub kzChecking},
hal-id = {hal-03281836}}
@techreport{Aran21b,
author = {Aranega, Vincent and Costiou, Steven and Denker, Marcus},
title = {Tool demo: fine-grained run-time reflection in Python with Reflectivipy},
year = {2021},
url = {https://inria.hal.science/hal-03463035},
pdf = {https://inria.hal.science/hal-03463035/file/2021-sle-tool-reflectivipy.pdf},
type = {Research Report},
institution = {Inria},
keywords = {debugging ; code instrumentation ; reflection ; AST transformation ; hot-patching},
hal-id = {hal-03463035}}
@booklet{Ardi95b,
author = {Laurent Arditi and St{\'e}phane Ducasse},
title = {Une premi\`ere approche fonctionnelle et r\'ecursive de la programmation},
year = {1995},
annote = {lectures},
keywords = {stefPub kzTeaching},
note = {support de cours de Deug SM-PE et Mass, 120 pages}}
@book{Ardi96a,
author = {Laurent Arditi and St{\'e}phane Ducasse},
title = {La programmation: une approche fonctionelle et r\'ecursive avec Scheme},
pages = {238},
publisher = {Eyrolles},
year = {1996},
address = {Paris},
annote = {book},
isbn = {2-212-08915-5},
keywords = {stefPub scglib kzBook kzTeaching},
month = apr,
note = {Pr\'eface de G\'erard Huet}}
@inproceedings{Ardi97a,
author = {Laurent Arditi and St{\'e}phane Ducasse},
title = {Scheme: un langage applicatif pour l'enseignement de l'informatique en milieu aride},
booktitle = {Actes des Journ\'ees Fran\c{c}aises des Langages Applicatifs (JFLA '97)},
pages = {209--228},
year = {1997},
pdf = {http://rmod-files.lille.inria.fr/Team/Texts/Papers/Ardi97a-JFLA07-SchemeTeaching.pdf},
abstract = {Dans cet article, nous pr\'esentons une exp\'erience d'enseignement de l'informatique en milieu aride: volume horaire faible, faible coefficient, \'etudiants peu motiv\'es. Dans ce contexte d\'efavorable, nous avons choisi de privil\`egier un concept, la r\'ecursivit\'e dans le cadre de la programmation fonctionnelle, plut\^ot qu'un langage. Ce choix nous a conduit \`a consid\`erer le langage Scheme pour sa simplicit\'e. Nous d\'ecrivons ici notre cours, les probl\`emes que nous avons rencontr\'es et les solutions que nous avons choisies.},
annote = {nationalconference},
hal-id = {inria-00533051},
keywords = {stefPub kzTeaching}}
@inproceedings{Arev03c,
author = {Gabriela Ar{\'e}valo and St{\'e}phane Ducasse and Oscar Nierstrasz},
title = {{X-Ray} Views: Understanding the Internals of Classes},
booktitle = {Proceedings of 18th Conference on Automated Software Engineering (ASE'03)},
pages = {267--270},
publisher = {IEEE Computer Society},
year = {2003},
doi = {10.1109/ASE.2003.1240318},
pdf = {http://rmod-files.lille.inria.fr/Team/Texts/Papers/Arev03c-ASE03-XRayViews.pdf},
abstract = {Understanding the internal workings of classes is a key prerequisite to maintaining an object-oriented software system. Unfortunately, classical editing and browsing tools offer mainly linear and textual views of classes and their implementation. These views fail to expose the semantic relationships between the internal parts of a class. We propose XRay views -- a technique based on Concept Analysis -- which reveal the internal relationships between groups of methods and attributes of a class. XRay views are composed out of elementary collaborations between attributes and methods, and help the engineer to build a mental model of how a class works internally. In this paper we present XRay views, and illustrate the approach by applying it on the Smalltalk class UIBuilder.},
annote = {internationalconference},
hal-id = {inria-00533054},
keywords = {recast03 scg-pub stefPub moose arevalo jb04 kzRemodularisation},
month = oct,
note = {Short paper},
pdf-second = {http://rmod-files.lille.inria.fr/Team/Texts/Papers/Arev03cASE03XRayViews.pdf}}
@inproceedings{Arev03d,
author = {Gabriela Ar{\'e}valo and St{\'e}phane Ducasse and Oscar Nierstrasz},
title = {Understanding Classes using {X-Ray} Views},
booktitle = {Proceedings of 2nd International Workshop on MASPEGHI 2003 (ASE'03)},
pages = {9--18},
publisher = {CRIM --- University of Montreal (Canada)},
year = {2003},
pdf = {http://rmod-files.lille.inria.fr/Team/Texts/Papers/Arev03d-MASPEGHI03-XRayViews.pdf},
abstract = {Understanding the internal workings of classes is a key prerequisite to maintaining an object-oriented software system. Unfortunately, classical editing and browsing tools offer mainly linear and textual views of classes and their implementation. These views fail to expose the semantic relationships between the internal parts of a class. We propose XRay views --a technique based on Concept Analysis-- which reveal the internal relationships between groups of methods and attributes of a class. XRay views are composed out of elementary collaborations between attributes and methods and help the engineer to build a mental model of how a class works internally. In this paper we present XRay views, and illustrate the approach by applying it to three Smalltalk classes: OrderedCollection, Scanner, and UIBuilder.},
annote = {internationalworkshop},
keywords = {snf04 scg-pub skip-doi tefPub arevalo jb04 moose kzRemodularisation},
month = oct,
pdf-second = {http://rmod-files.lille.inria.fr/Team/Texts/Papers/Arev03dMASPEGHI03XRayViews.pdf}}
@inproceedings{Arev05b,
author = {Gabriela Ar{\'e}valo and St{\'e}phane Ducasse and Oscar Nierstrasz},
title = {Discovering Unanticipated Dependency Schemas in Class Hierarchies},
booktitle = {Proceedings of 9th European Conference on Software Maintenance and Reengineering (CSMR'05)},
pages = {62--71},
publisher = {IEEE Computer Society},
year = {2005},
impactfactor = {hors},
misc = {acceptance rate: 33/81 = 41\%},
doi = {10.1109/CSMR.2005.24},
pdf = {http://rmod-files.lille.inria.fr/Team/Texts/Papers/Arev05b-CSMR05-ClassHierarchies.pdf},
abstract = {Object-oriented applications are difficult to extend and maintain, due to the presence of implicit dependencies in the inheritance hierarchy. Although these dependencies often correspond to well-known schemas, such as hook and template methods, new unanticipated dependency schemas occur in practice, and can consequently be hard to recognize and detect. To tackle this problem, we have applied Concept Analysis to automatically detect recurring dependency schemas in class hierarchies used in object-oriented applications. In this paper we describe our mapping of OO dependencies to the formal framework of Concept Analysis, we apply our approach to a non-trivial case study, and we report on the kinds of dependencies that are uncovered with this technique. As a result, we show how the discovered dependency schemas correspond not only to good design practices, but also to "bad smells" in design.},
acceptnum = {33},
accepttotal = {81},
annote = {internationalconference},
hal-id = {inria-00533057},
keywords = {scg-pub arevalo jb05 recast05 StefPub moose kzRemodularisation},
location = {Manchester, United Kingdom},
month = mar,
rate = {41\%},
pdf-second = {http://rmod-files.lille.inria.fr/Team/Texts/Papers/Arev05bCSMR05ClassHierarchies.pdf}}
@inproceedings{Arev05c,
author = {Gabriela Ar{\'e}valo and St{\'e}phane Ducasse and Oscar Nierstrasz},
title = {Lessons Learned in Applying Formal Concept Analysis},
booktitle = {Proceedings of 3rd International Conference on Formal Concept Analysis (ICFCA'05)},
volume = {3403},
pages = {95--112},
publisher = {Springer Verlag},
year = {2005},
impactfactor = {hors},
doi = {10.1007/b105806},
pdf = {http://rmod-files.lille.inria.fr/Team/Texts/Papers/Arev05c-ICFCA05-LessonsLearned.pdf},
abstract = {A key difficulty in the maintenance and evolution of complex software systems is to recognize and understand the implicit dependencies that define contracts that must be respected by changes to the software. Formal Concept Analysis is a well-established technique for identifying groups of elements with common sets of properties. We have successfully applied FCA to complex software systems in order to automatically discover a variety of different kinds of implicit, recurring sets of dependencies amongst design artifacts. In this paper we describe our approach, outline three case studies, and draw various lessons from our experiences. In particular, we discuss how our approach is applied iteratively in order to draw the maximum benefit offered by FCA.},
annote = {internationalconference},
hal-id = {inria-00533445},
hal-url = {http://hal.inria.fr/inria-00533445},
keywords = {scg-pub jb05 recast05 arevalo StefPub kzRemodularisation},
location = {Lens, France},
month = feb,
series = {LNAI (Lecture Notes in Artificial Intelligence)}}
@article{Arev10a,
author = {Gabriela Ar\'evalo and St{\'e}phane Ducasse and Silvia Gordillo and Oscar Nierstrasz},
title = {Generating a catalog of unanticipated schemas in class hierarchies using Formal Concept Analysis},
journal = {Journal of Information and Software Technology},
volume = {52},
pages = {1167-1187},
year = {2010},
impactfactor = {ISI impact factor (2010) 1.821},
doi = {10.1016/j.infsof.2010.05.010},
pdf = {http://rmod-files.lille.inria.fr/Team/Texts/Papers/Arev10a-IST-generatingCatalog.pdf},
annote = {internationaljournal},
hal-id = {inria-00531498},
hal-url = {http://hal.inria.fr/inria-00531498},
inriareport = {2010},
issn = {0950-5849},
keywords = {moose lse-pub cook StefPub treport2010 kzRemodularisation},
month = dec,
pdf-second = {http://rmod-files.lille.inria.fr/Team/Texts/Papers/Arev10a-IST-Official-generatingCatalog.pdf}}
@inproceedings{Arlo16a,
author = {Thibault Arloing and Yann Dubois and Damien Cassou and St{\'e}phane Ducasse},
title = {Pillar: A Versatile and Extensible Lightweight Markup Language},
booktitle = {International Workshop on Smalltalk Technologies {IWST'16}},
year = {2016},
doi = {10.1145/2991041.2991066},
pdf = {http://rmod-files.lille.inria.fr/Team/Texts/Papers/Arlo16a-IWST16-Pillar.pdf},
address = {Prague, Czech Republic},
hal-id = {hal-01353882},
hal-url = {http://hal.inria.fr/hal-01353882},
keywords = {moose lse-pub kzOther},
month = aug,
annote = {internationalworkshop}}
@inproceedings{Arna10a,
author = {Jean-Baptiste Arnaud and Marcus Denker and St{\'e}phane Ducasse and Damien Pollet and Alexandre Bergel and Mathieu Suen},
title = {Read-Only Execution for Dynamic Languages},
booktitle = {Proceedings of the 48th International Conference Objects, Models, Components, Patterns (TOOLS'10)},
year = {2010},
misc = {25\%},
doi = {10.1007/978-3-642-13953-6\_7},
pdf = {http://rmod-files.lille.inria.fr/Team/Texts/Papers/Arna10a-Tools2010-ReadOnlyExecutionForDynamicLanguages.pdf},
abstract = {Supporting read-only and side effect free execution has been the focus of a large body of work in the area of statically typed programming languages. Read-onlyness in dynamically typed languages is difficult to achieve because of the absence of a type checking phase and the support of an open-world assumption in which code can be constantly added and modified. To address this issue, we propose Dynamic Read-Only references (DRO) that provide a view on an object where this object and its object graph are protected from modification. The readonly view dynamically propagates to aggregated objects, without changing the object graph itself; it acts as a read-only view of complex data structures, without making them read-only globally. We implement dynamic read-only references by using smart object proxies that lazily propagate the read-only view, following the object graph and driven by control flow and applied them to realize side-effect free assertions.},
address = {Malaga, Spain},
annote = {internationalconference},
hal-url = {http://hal.archives-ouvertes.fr/inria-00498377/fr/},
hal-id = {inria-00498377},
inriareport = {2010},
keywords = {tools10 lse-pub marcusdenker pharo kzLanguageDesign StefPub},
month = jun,
rate = {25\%}}
@phdthesis{Arna13a,
author = {Jean-Baptiste Arnaud},
title = {Towards First Class References as a Security Infrastructure in Dynamically-Typed Languages},
year = {2013},
school = {Universit\'e de Lille},
pdf = {http://rmod-files.lille.inria.fr/Team/PhDs/PhD-2013-Arnaud.pdf},
abstract = {Dynamically-typed object-oriented programming languages do not provide type information until runtime. Two of their main advantages are that they allow fast prototyping and integrating changes at runtime. The ability of dynamically-typed languages to support program changes at runtime and the lack of type information doom the classic security approaches to failure. Controlling references to single objects and to graphs of objects is essential to build secure systems. Existing approaches are commonly based on static type system and cannot be applied to dynamically-typed languages.This thesis argue that: In the context of dynamically-typed languages, reifying references, controlling behavior, and isolating state via such references, is a practical way to control references. This thesis makes five contributions: - We propose dynamic read-only objects (DRO) as one kind of adaptation of behavioral change at reference-level. - We generalize the DRO model to enable more generic behavioral changes. We extend the Pharo programming environment and language with Handles, that are first-class references with the ability to change the behavior of referenced objects. - We define Metahandle to offer flexibility and adaptability to controlled references. - We propose SHandle, an extension of the Handle model to isolate side effects at the level of references. - And finally, we formalize the Handles and SHandle models to represent and explain their semantics. As validation of our thesis we have implemented three approaches relevant to securing system using our model. In addition, as proof of concept we extended the Pharo virtual machine to support Handles, Metahandles and SHandles.},
hal-id = {tel-00808419},
inriareport = {2013},
institution = {INRIA},
keywords = {security, dynamically-typed languages, reflection, language design, first class reference, object-oriented programming},
type_rapport = {PhD}}