-
Notifications
You must be signed in to change notification settings - Fork 1
/
rmod.bib
10394 lines (9770 loc) · 704 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
%% Saved with string encoding mac roman
@inproceedings{Verh19a,
title = {GUI Migration using MDE from GWT to Angular 6: An Industrial Case},
author = {Verhaeghe, Beno{\^\i}t and Etien, Anne and Anquetil, Nicolas and Seriai, Abderrahmane and Deruelle, Laurent and Ducasse, St\'ephane and Derras, Mustapha},
ANNOTE = {internationconference},
HAL-ID = {hal-02019015},
abstract = {During the evolution of an application, it happens that developers must change the programming language. In the context of a collaboration with Berger-Levrault, a major IT company, we are working on the migration of a GWT application to Angular. We focus on the GUI aspect of this migration which, even if both frameworks are web Graphical User Interface (GUI) frameworks, is made difficult because they use different programming languages and different organization schema. Such migration is complicated by the fact that the new application must be able to mimic closely the visual aspect of the old one so that the users of the application are not disrupted. We propose an approach in four steps that uses a meta-model to represent the GUI at a high abstraction level. We evaluated this approach on an application comprising 470 Java (GWT) classes representing 56 pages. We are able to model all the web pages of the application and 93% of the widgets they contain, and we successfully migrated 26 out of 39 pages (66%). We give examples of the migrated pages, both successful and not.},
year = {2019},
ADDRESS = {Hangzhou, China},
url = {https://hal.inria.fr/hal-02019015}
}
@mastersthesis{Zait19a,
author = {Oleksandr Zaitsev},
title = {Aspects of software naturalness through the generation of identifier names},
school = {Ukrainian Catholic University, Faculty of Applied Sciences, Department of Computer Sciences},
year = {2019},
address = {Lviv, Ukraine},
month = jan,
PDF = {http://rmod.inria.fr/archives/masters/Master-2-Zaitsev.pdf},
note = {Under sup. of St\'ephane Ducasse and Alexandre Bergel}
}
@article{Marr18a,
title = {{Out-Of-Place debugging: a debugging architecture to reduce debugging interference}},
author = {Marra, Matteo and Polito, Guillermo and Gonzalez Boix, Elisa},
abstract = {Context Recent studies show that developers spend most of their programming time testing, verifying and debugging software. As applications become more and more complex, developers demand more advanced debugging support to ease the software development process. Inquiry Since the 70's many debugging solutions have been introduced. Amongst them, online debuggers provide good insight on the conditions that led to a bug, allowing inspection and interaction with the variables of the program. However, most of the online debugging solutions introduce debugging interference to the execution of the program, i.e. pauses, latency, and evaluation of code containing side-effects. Approach This paper investigates a novel debugging technique called out-of-place debugging. The goal is to minimize the debugging interference characteristic of online debugging while allowing online remote capabilities. An out-of-place debugger transfers the program execution and application state from the debugged application to the debugger application, each running in a different process. Knowledge On the one hand, out-of-place debugging allows developers to debug applications remotely, overcoming the need of physical access to the machine where the debugged application is running. On the other hand, debugging happens locally on the remote machine avoiding latency. That makes it suitable to be deployed on a distributed system and handle the debugging of several processes running in parallel. Grounding We implemented a concrete out-of-place debugger for the Pharo Smalltalk programming language. We show that our approach is practical by running several benchmarks, comparing our approach with a classic remote online debugger. We show that our prototype debugger outperforms a traditional remote debugger by 1000 times in several scenarios. Moreover, we show that the presence of our debugger does not impact the overall performance of an application. Importance This work combines remote debugging with the debugging experience of a local online debug-ger. Out-of-place debugging is the first online debugging technique that can minimize debugging interference while debugging a remote application. Yet, it still keeps the benefits of online debugging (e.g., step-by-step execution). This makes the technique suitable for modern applications which are increasingly parallel, distributed and reactive to streams of data from various sources like sensors, UI, network, etc.},
url = {https://hal.inria.fr/hal-01952790},
journal = {{The Art, Science, and Engineering of Programming}},
publisher = {{aosa, Inc.}},
volume = {3},
number = {2},
year = {2018},
month = nov,
DOI = {10.22152/programming-journal.org/2019/3/3},
KEYWORDS = {debugging tools ; online debugging ; remote debugging ; distributed systems; lse-pub; pharo},
PDF = {http://rmod.inria.fr/archives/papers/Marr18a-Programming18-OutOfPlaceDebugging.pdf},
HAL-ID = {hal-01952790}
}
@article{Milo18a,
title = {{Mining inline cache data to order inferred types in dynamic languages}},
author = {Milojkovi{\'c}, Nevena and B{\'e}ra, Cl{\'e}ment and Ghafari, Mohammad and Nierstrasz, Oscar},
abstract = {The lack of static type information in dynamically-typed languages often poses obstacles for developers. Type inference algorithms can help, but inferring precise type information requires complex algorithms that are often slow. A simple approach that considers only the locally used interface of variables can identify potential classes for variables, but popular interfaces can generate a large number of false positives. We propose an approach called inline-cache type inference (ICTI) to augment the precision of fast and simple type inference algorithms. ICTI uses type information available in the inline caches during multiple software runs, to provide a ranked list of possible classes that most likely represent a variable's type. We evaluate ICTI through a proof-of-concept that we implement in Pharo Smalltalk. The analysis of the top-n+2 inferred types (where n is the number of recorded run-time types for a variable) for 5486 variables from four different software systems shows that ICTI produces promising results for about 75% of the variables. For more than 90% of variables, the correct run-time type is present among first six inferred types. Our ordering shows a twofold improvement when compared with the unordered basic approach, i.e., for a significant number of variables for which the basic approach offered ambiguous results, ICTI was able to promote the correct type to the top of the list.},
url = {https://hal.inria.fr/hal-01666541},
journal = {{Science of Computer Programming}},
publisher = {{Elsevier}},
volume = {161},
PDF = {http://rmod.inria.fr/archives/papers/Milo18a-SICP-InlineCache.pdf},
pages = {105-121},
year = {2018},
month = sep,
DOI = {10.1016/j.scico.2017.11.003},
keywords = {inline caches ; type inference ; dynamically-typed languages; lse-pub},
pdf = {https://hal.inria.fr/hal-01666541/file/Milo17e.pdf},
HAL-id = {hal-01666541}
}
@inproceedings{Vigg18a,
abstract = {Microservices architectures have become largely popular in the last years. However, we still lack empirical evidence about the use of microservices and the practices followed by practitioners. Thereupon, in this paper, we report the results of a survey with 122 professionals who work with microservices. We report how the industry is using this architectural style and whether the percep- tion of practitioners regarding the advantages and challenges of microservices is according to the literature.},
author = {Viggiato, Markos and Terra, Ricardo and Rocha, Henrique and Valente, Marco T\'ulio. and Figueiredo, Euardo},
title = {Microservices in Practice: A Survey Study},
booktitle = {6th Brazilian Workshop on Software Visualization, Evolution, and Maintenance},
series = {VEM},
pages = {1--8},
URL = {http://rmod.inria.fr/archives/workshops/Vigg18a-VEE-Microservices-in-Practice.pdf},
keywords = {Microservices lse-pub},
HAL-id = {hal-01944464},
year = {2018}
}
@inproceedings{Cout18a,
author = {Couto, Christian Marlon Souza and Rocha, Henrique and Terra, Ricardo},
title = {A Quality-oriented Approach to Recommend Move Method Refactorings},
abstract = {Refactoring is an important activity to improve software internal structure. Even though there are many refactoring approaches, very few consider their impact on the software quality. In this paper, we propose a software refactoring approach based on quality attributes. We rely on the measurements of the Quality Model for Object Oriented Design (QMOOD) to recommend Move Method refactorings that improve software quality. In a nutshell, given a software system S, our approach recommends a sequence of refactorings R1,R2,...,Rn that result in system versions S1, S2,..., Sn, where quality (Si+1) > quality (Si). We empirically calibrated our approach, using four systems, to find the best criteria to measure the quality improvement. We performed three types of evaluation to verify the usefulness of our implemented tool, named QMove. First, we applied our approach on 13 open-source systems achieving an average recall of 84.2%. Second, we compared QMove with two state-of-art refactoring tools (JMove and JDeodorant) on the 13 previously evaluated systems, and QMove showed better recall, precision, and f-score values than the others. Third, we evaluated QMove, JMove, and JDeodorant in a real scenario with two proprietary systems on the eyes of their software architects. As result, the experts positively evaluated a greater number of QMove recommendations.},
booktitle = {17th Brazilian Symposium on Software Quality},
series = {SBQS},
year = {2018},
isbn = {978-1-4503-6565-9},
location = {Curitiba, Brazil},
pages = {11--20},
numpages = {10},
HAL-id = {hal-01944493},
PDF = {http://rmod.inria.fr/archives/workshops/Cout18a-SBQS-QualitedOrientedApproachforMoveMethod.pdf},
url = {http://doi.acm.org/10.1145/3275245.3275247},
doi = {10.1145/3275245.3275247},
acmid = {3275247},
publisher = {ACM},
address = {New York, NY, USA},
keywords = {Move Method, Quality Metrics, Refactoring, Software Architecture, lse-pub}
}
@inproceedings{Cost18a,
title = {Collectors},
abstract = {Observing and modifying object-oriented programs often means interacting with objects. At runtime, it can be a complex task to identify those objects due to the live state of the program. Some objects may exist for only a very limited period of time, others can be hardly reachable because they are never stored in variables. To address this problem we present Collectors. They are dedicated objects which can collect objects of interest at runtime and present them to the developer. Collectors are non-intrusive, removable code instrumentations. They can be dynamically specified and injected at runtime. They expose an API to allow their specification and the access to the collected objects. In this paper, we present an implementation of Collectors in Pharo, a Smalltalk dialect. We enrich the Pharo programming and debugging environment with tools that support the Collectors API. We illustrate the use of these API and tools through the collection and the logging of specific objects in a running IOT application.},
author = {Costiou, Steven and Kerboeuf, Mickael and Plantec, Alain and Denker, Marcus},
url = {http://hal.univ-brest.fr/hal-01829183},
PDF = {http://rmod.inria.fr/archives/papers/Cost18a-PX-Collectors.pdf},
booktitle = {{PX'18 - Programming Experience 2018}},
address = {Nice, France},
publisher = {{ACM Press}},
series = {Companion of the 2nd International Conference on Art, Science, and Engineering of Programming },
pages = {9},
year = {2018},
month = apr,
doi = {10.1145/3191697.3214335},
HAL-id = {hal-01829183},
keywords = {lse-pub}
}
@inproceedings{Ali17a,
annote = {internationalworkshop},
author = {Alidra, Abdelghani and Saker, Moussa and Anquetil, Nicolas and Ducasse, St\'ephane},
title = {Identifying class name inconsistency in hierarchy: a first simple heuristic},
HALURL = {https://hal.archives-ouvertes.fr/hal-01663603},
booktitle = {International Workshop on Smalltalk Technologies (IWST'17)},
DOI = {10.1145/3139903.3139920},
keywords = {kzVisualization kzEvolution lse-pub},
URL = {http://rmod.inria.fr/archives/papers/Alid17a-IdentifyingClassNames-IWST17.pdf},
Tagnicolasa = {other analysis},
year = {2017}
}
@incollection{Duca18a,
annote = {bookarticle},
title = {SmartAnvil: Open-Source Tool Suite for Smart Contract Analysis},
author = {Ducasse, St\'ephane and Rocha, Henrique and Bragagnolo, Santiago and Denker, Marcus and Francomme, Cl\'ement},
abstract = {Smart contracts are new computational units with special properties: they act as classes with aspectual concerns; their memory structure is more complex than mere objects; they are obscure in the sense that once deployed it is difficult to access their internal state; they reside in an append-only chain. There is a need to support the building of new generation tools to help developers. Such support should tackle several important aspects: (1) the static structure of the contract, (2) the object nature of published contracts, and (3) the overall data chain composed of blocks and transactions. In this chapter, we present SmartAnvil an open platform to build software analysis tools around smart contracts. We illustrate the general components and we focus on three important aspects: support for static analysis of Solidity smart contracts, deployed smart contract binary analysis through inspection, and blockchain navigation and querying. SmartAnvil is open-source and supports a bridge to the Moose data and software analysis platform.},
booktitle = {Blockchain and Web 3.0: Social, economic, and technological challenges},
keywords = {kzEvolution kzBlockchain kzTools lse-pub},
HAL-id = {hal-01940287},
URL = {http://rmod.inria.fr/archives/papers/Duca18a-BookChapter-SmartAnvil.pdf},
publisher = {Routledge},
year = {2018}
}
@phdthesis{Govi18a,
author = {Brice Govin},
title = {Support \`a la r\'enovation d'une architecture logicielle patrimoniale : Un cas r\'eel chez Thales Air Systems},
school = {Universit\'e de Lille},
year = {2018},
keywords = {lse-pub},
month = jun,
URL = {http://rmod.inria.fr/archives/phd/PhD-20180-GovinBrice.pdf},
abstract = {Les entreprises accordent \'enorm\'ement d'importance \`a identifier des d\'emarches automatis\'ees et r\'eplicables pour r\'esoudre leurs probl\`emes. Ce constat s'applique aussi aux d\'emarches de r\'enovation d'architecture logicielle. Au sein d'une grande entreprise, nous avons int\'egr\'e l'\'equipe charg\'ee de r\'ealiser la r\'enovation de l'architecture d'un logiciel. Nous avons \'etudi\'e la d\'emarche informelle suivie par cette \'equipe afin d'en proposer une g\'en\'eralisation et des outils facilitant son automatisation et sa r\'eplication \`a d'autres projets. La plupart des solutions propos\'ees dans la litt\'erature ne peuvent s'appliquer \`a ce projet, du fait de leur caract\`ere manuel, de leurs contraintes particuli\`eres ou de leur manque d'application sur des cas r\'eels. Toutefois, nous avons propos\'e une nouvelle d\'emarche structur\'ee qui se base sur une adaptation d'une technique existante et sur la d\'emarche r\'ealis\'ee par l'entreprise. Enfin, pour r\'epondre au besoin d'automatisation, nous avons d\'efini ce que nous appelons des op\'erateurs. Ils se basent sur les activit\'es que nous avons identifi\'ees dans le travail des ing\'enieurs de l'entreprise. Nous avons montr\'e que ces op\'erateurs permettraient de r\'epliquer enti\`erement notre d\'emarche structur\'ee autorisant ainsi son application efficace sur d'autres projets.},
Hal-Id = {tel-01881319},
Hal = {http://hal.inria.fr/tel-01881319}
}
@techreport{Duca12b,
Annote = {techreport},
Author = { Ducasse, St\'ephane and Denker, Marcus and Pollet, Damien},
Institution = {Inria},
Keywords = {Pharo StefPub kzPharo lse-pub},
URL = {http://rmod.inria.fr/archives/reports/Duca12b-PharoVision.pdf},
Title = {Pharo's Vision: Goals, Processes, and Development Effort},
hal = {hal-01879346},
Year = {2012}
}
@inproceedings{Bera17b,
TITLE = {Sista: Saving Optimized Code in Snapshots for Fast Start-Up},
ANNOTE = {internationconference},
AUTHOR = {B{\'e}ra, Cl{\'e}ment and Miranda, Eliot and Felgentreff, Tim and Denker, Marcus and Ducasse, St{\'e}phane},
HALURL = {https://hal.inria.fr/hal-01596321},
URL = {http://rmod.inria.fr/archives/papers/Bera17b-ManLang-SistaArchitecture.pdf},
BOOKTITLE = {Proceedings of the 14th International Conference on Managed Languages and Runtimes},
ADDRESS = {Prague, Czech Republic},
PUBLISHER = {ACM},
PAGES = {1 - 11},
YEAR = {2017},
MONTH = sep,
DOI = {10.1145/3132190.3132201},
KEYWORDS = {kzVM kzPharo ; Just-in-time compilation ; Runtime compiler ; Object-oriented language ; lse-pub},
PDF = {http://rmod.inria.fr/archives/papers/Bera17b-ManLang-SistaArchitecture.pdf},
HAL-id = {hal-01596321}
}
@inproceedings{Lece18a,
annote = {internationalconference topconference},
abstract = {Empowering software engineers often requires to let them write code transformations. However existing automated or tool-supported approaches force developers to have a detailed knowledge of the internal representation of the underlying tool. While this knowledge is time consuming to master, the syntax of the language, on the other hand, is already well known to developers and can serve as a strong foundation for pattern matching. Pattern languages with metavariables (that is variables holding abstract syntax subtrees once the pattern has been matched) have been used to help programmers define program transformations at the language syntax level. The question raised is then the engineering cost of metavariable support. Our contribution is to show that, with a GLR parser, such patterns with metavariables can be supported by using a form of runtime reflexivity on the parser internal structures. This approach allows one to directly implement such patterns on any parser generated by a parser generation framework, without asking the pattern writer to learn the AST structure and node types. As a use case for that approach we describe the implementation built on top of the SmaCC (Smalltalk Compiler Compiler) GLR parser generator framework. This approach has been used in production for source code transformations on a large scale. We will express perspectives to adapt this approach to other types of parsing technologies.},
TITLE = {A Reflexive and Automated Approach to Syntactic Pattern Matching in Code Transformations},
AUTHOR = {Lecerf, Jason and Brant, John and Goubier, Thierry and Ducasse, St{\'e}phane},
HALURL = {https://hal.archives-ouvertes.fr/hal-01851857},
BOOKTITLE = {IEEE International Conference on Software Maintenance and Evolution (ICSME'18)},
ADDRESS = {Madrid, Spain},
MONTH = sep,
DOI = {10.1109/ICSME.2018.00052},
KEYWORDS = {StefPub kzEvolution kzTools parser generation ; GLR parsing ; syntactic patterns ; pattern matching ; code templates lse-pub},
URL = {http://rmod.inria.fr/archives/papers/Lece18a-ICSME-ReflectiveParsing.pdf},
HAL-ID = {hal-01851857},
year = {2018}
}
@techreport{Delp18b,
Annote = {techreport},
abstract = {Unit tests are a tenant of agile programming methodologies, and are widely used to improve code quality and prevent code regression. A passing (green) test is usually taken as a robust sign that the code under test is valid. However, we have noticed that some green tests contain assertions that are never executed; these tests pass not because they assert properties that are true, but because they assert nothing at all. We call such tests Rotten Green Tests. Rotten Green Tests represent a worst case: they report that the code under test is valid, but in fact do nothing to test that validity, beyond checking that the code does not crash. We describe an approach to identify rotten green tests by combining simple static and dynamic analyses. Our approach takes into account test helper methods, inherited helpers, and trait compositions, and has been implemented in a tool called DrTest. We have applied DrTest to several test suites in Pharo 7.0, and identified many rotten tests, including some that have been " sleeping " in Pharo for at least 5 years.},
Author = {Delplanque, Julien and Ducasse, St\'ephane and Black, Andrew P. and Polito, Guillermo},
Institution = {Inria},
Keywords = {moose StefPub kzChecking kzTools lse-pub},
Title = {Rotten Green Tests: a First Analysis},
URL = {http://rmod.inria.fr/archives/reports/Delp18b-RottenTests.pdf},
hal-id = {hal-01819302},
Year = {2018}}
@inproceedings{Delp18c,
Abstract={Modern relational database management systems provide advanced features allowing, for example, to include behaviour directly inside the database (stored procedures). These features raise new difficulties when a database needs to evolve (e.g. adding a new table). To get a better understanding of these difficulties, we recorded and studied the actions of a database architect during a complex evolution of the database at the core of a software system. From our analysis, problems faced by the database architect are extracted, generalized and explored through the prism of software engineering. Six problems are identified: (1) difficulty in analysing and visualising dependencies between database's entities, (2) difficulty in evaluating the impact of a modification on the database, (3) replicating the evolution of the database schema on other instances of the database, (4) difficulty in testing database's functionalities, (5) lack of synchronization between the IDE's internal model of the database and the database actual state and (6) absence of an integrated tool enabling the architect to search for dependencies between entities, generate a patch or access up to date PostgreSQL documentation. We suggest that techniques developed by the software engineering community could be adapted to help in the development and evolution of relational databases.},
Author = {Delplanque, Julien and Etien, Anne and Anquetil, Nicolas and Auverlot, Olivier},
Institution = {Inria},
Keywords = {lse-pub},
DOI = {10.1109/ICSME.2018.00073},
URL = {http://rmod.inria.fr/archives/papers/Delp18c-ICSME-DatabaseSchemaEvolution.pdf},
Title = {Relational Database Schema Evolution: An Industrial Case Study},
Booktitle = {2018 IEEE International Conference on Software Maintenance and Evolution (ICSME)},
hal-id = {hal-01945042},
annote = {internationalconference},
Tagnicolasa = {other database},
Year = {2018}}
@inproceedings{Delp19a,
Abstract={Unit tests are a tenant of agile programming methodologies, and are widely used to improve code quality and prevent code regression. A green (passing) test is usually taken as a robust sign that the code under test is valid. However, some green tests contain assertions that are never executed. We call such tests Rotten Green Tests. Rotten Green Tests represent a case worse than a broken test: they report that the code under test is valid, but in fact do not test that validity. We describe an approach to identify rotten green tests by combining simple static and dynamic call-site analyses. Our approach takes into account test helper methods, inherited helpers, and trait compositions, and has been implemented in a tool called DrTest. DrTest reports no false negatives, yet it still reports some false positives due to conditional use or multiple test contexts. Using DrTest we conducted an empirical evaluation of 19,905 real test cases in mature projects of the Pharo ecosystem. The results of the evaluation show that the tool is effective; it detected 294 tests as rotten-green tests that contain assertions that are not executed. Some rotten tests have been "sleeping" in Pharo for at least 5 years.},
Author = {Delplanque, Julien and Ducasse, St\'ephane and Black, Andrew P. and Polito, Guillermo and Etien, Anne},
Institution = {Inria},
Keywords = {lse-pub kzChecking},
Title = {Rotten Green Tests},
Booktitle = {2019 International Conference on Software Engineering (ICSE)},
hal-id = {hal-02002346},
annote = {topconference internationalconference},
Year = {2019}}
@inproceedings{Abde07a,
Annote = {internationalworkshop},
Author = {Hani Abdeen and Ilham Alloui and St\'ephane Ducasse and Damien Pollet and Mathieu Suen},
Booktitle = {FAMOOSr, 1st Workshop on FAMIX and Moose in Reengineering},
Keywords = {moose StefPub kzVisualization lse-pub},
Title = {Package References Distribution Fingerprint},
Year = {2007}}
@inproceedings{Abde08b,
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},
Author = {Hani Abdeen and Ilham Alloui and St\'ephane Ducasse and Damien Pollet and Mathieu Suen},
Booktitle = {Proceeding of the 12th European Conference on Software Maintenance and Reengineering (CSMR'08)},
HALURL = {http://hal.inria.fr/inria-00200869},
Hal-Id = {inria-00200869},
Keywords = {moose cook-pub lse-pub StefPub kzVisualization},
Location = {Athens, Greece},
Misc = {Acceptance rate: 24/87 = 27\%},
Pages = {213--222},
Publisher = {IEEE Computer Society Press},
Rate = {27\%},
Title = {Package Reference Fingerprint: a Rich and Compact Visualization to Understand Package Relationships},
URL = {http://rmod.inria.fr/archives/papers/Abde08b-CSMR2008-Fingerprint.pdf},
Year = {2008}}
@inproceedings{Abde09b,
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 soft- ware 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},
Author = {Hani Abdeen and St\'ephane Ducasse and Houari A. Sahraoui and Ilham Alloui},
Booktitle = {Proceedings of the 16th International Working Conference on Reverse Engineering (WCRE'09)},
Hal = {http://hal.inria.fr/inria-00425417},
Hal-Id = {inria-00425417 to recover as lse},
Keywords = {moose remoose2 lse-pub cook StefPub kzRemodularisation},
Misc = {acceptance rate: 20/79 = 25\%},
Pages = {103--112},
Publisher = {IEEE Computer Society Press},
Rate = {25\%},
Title = {Automatic Package Coupling and Cycle Minimization},
Url = {http://rmod.inria.fr/archives/papers/Abde09b-WCRE2009-AutomaticPackageCoupling.pdf},
Year = {2009}}
@phdthesis{Abde09c,
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},
Author = {Hani Abdeen},
Hal-Id = {tel-00498389 / zi#3ow#h},
Institution = {INRIA},
Keywords = {moose remoose2 lse-pub cook kzVisualization kzVisualization},
School = {Universit\'e de Lille},
Title = {Visualizing, Assessing and Re-Modularizing Object-Oriented Architectural Elements},
Url = {http://rmod.inria.fr/archives/phd/PhD-2009-Abdeen.pdf},
Year = {2009}}
@article{Abde10a,
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 interrelation- ships 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},
Author = {Hani Abdeen and St\'ephane Ducasse and Damien Pollet and Ilham Alloui},
Doi = {10.1016/j.infsof.2010.07.005},
Hal-Id = {inria-00531496},
Impactfactor = {ISI impact factor (2010) 1.821},
Journal = {Information and Software Technology Journal},
Keywords = {moose remoose2 lse-pub StePub cook kzVisualisation},
Pages = {1312-1330},
Url-Second = {http://rmod.inria.fr/archives/papers/Abde10a-IST-packageFingerprints.pdf},
Title = {Package Fingerprint: a visual summary of package interfaces and relationships},
Url = {http://rmod.inria.fr/archives/papers/Abde10a-IST-Official-packageFingerprints.pdf},
Volume = {52},
Year = {2010}}
@inproceedings{Abde11a,
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},
Author = {Hani Abdeen and St\'ephane Ducasse and Houari A. Sahraoui},
Booktitle = {Proceedings of the 18th IEEE International Working Conference on Reverse Engineering (WCRE'11)},
HalURL = {http://hal.inria.fr/inria-00614778/},
Hal-Id = {inria-00614778},
Keywords = {moose cutter lse-pub raweb2011 kzMetric StefPub kzRemodularisation},
Misc = {Short paper, acceptance rate: 50/104 = 48\%},
Publisher = {IEEE Computer Society Press},
Rate = {acceptance rate (full + short papers): 50/104 = 48\%},
Title = {Modularization Metrics: Assessing Package Organization in Legacy Large Object-Oriented Software},
Url = {http://rmod.inria.fr/archives/papers/Abde11a-WCRE-ModularizationMetrics-INRIA.pdf},
HalPDF = {http://hal.inria.fr/docs/00/61/45/83/PDF/ModularizationMetrics-INRIA.pdf},
Year = {2011}}
@techreport{Abde11i,
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 = {technicalreport},
Author = {Abdeen, Hani and Ducasse, St\'ephane and Sahraoui, Houari A.},
Hal-Id = {inria-00614583},
Institution = {RMod -- INRIA Lille-Nord Europe},
Keywords = {Software Metrics Software Modularization Coupling Cohesion Packages Modularity kzMetric kzRemodularisation},
Hal-PDF = {http://hal.inria.fr/inria-00614583/PDF/ModularizationMetrics-INRIA.pdf},
Title = {Modularization Metrics: Assessing Package Organization in Legacy Large Object-Oriented Software},
Url = {http://rmod.inria.fr/archives/reports/Abde11a-TechReport-ModularizationMetrics-INRIA.pdf},
Year = {2011}}
@inproceedings{Abde13a,
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 ap- proach aims at increasing the cohesion and reducing the coupling and cyclic connectivity of packages, by modifying as less as pos- sible 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},
Author = {Hani Abdeen and Houari Sahraoui and Osama Shata and Nicolas Anquetil and St\'ephane Ducasse},
Booktitle = {International Working Conference on Reverse Engineering (WCRE'13)},
Hal-Id = {hal-00862063},
Keywords = {moose cutter lse-pub kzMetric StefPub kzInterface},
Misc = {Acceptance rate: 38/97 = 39\%},
Publisher = {IEEE Computer Society Press},
Title = {Towards Automatically Improving Package Structure While Respecting Original Design Decisions},
Url = {http://rmod.inria.fr/archives/papers/Abde13a-ImprovingPackageStructure-WCRE13.pdf},
Tagnicolasa = {architecture},
Year = {2013}}
@article{Abde14a,
Annote = {internationaljournal},
Author = {Hani Abdeen and St\'ephane Ducasse and Damien Pollet and Ilham Alloui and Jean-R\'emy Falleri},
Hal-Id = {hal-00957695},
Impactfactor = {5-Year ISI impact factor (2010) 4.865},
Journal = {Science of Computer Programming},
Keywords = {lse-pub StefPub kzVisualization},
Month = feb,
Title = {The Package Blueprint: Visually analyzing and quantifying packages dependencies},
Url = {http://rmod.inria.fr/archives/papers/Abde14a-Official-PackageBlueprint-SCP.pdf},
Year = {2014}}
@article{Alle13a,
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},
Author = {Esteban Allende and Oscar Callau and Johan Fabry and Eric Tanter and Marcus Denker},
Doi = {10.1016/j.scico.2013.06.006},
Hal-Id = {hal-00862815},
Journal = {Science of Computer Programming},
Keywords = {type systems, gradual typing, smalltalk, lse-pub},
Title = {Gradual Typing for Smalltalk},
Url = {http://rmod.inria.fr/archives/papers/Alle13aGradualTyping.pdf},
Year = {2013}}
@inproceedings{Alli12a,
Annote = {internationalconference},
Author = {Simon Allier and Nicolas Anquetil and Andre Hora and St\'ephane Ducasse},
Booktitle = {Proceedings of the 19th International Working Conference on Reverse Engineering (WCRE'12)},
Hal-Id = {hal-00747817v1},
Keywords = {lse-pub StefPub kzChecking},
Misc = {Acceptance rate: 43/138 = 31\%},
Tagnicolasa = {analysis},
Title = {A Framework to Compare Alert Ranking Algorithms},
Url = {http://rmod.inria.fr/archives/papers/Alli12a-wcre2012-ComparisonOfAlertsRankingAlgorithms.pdf},
Year = {2012}}
@inproceedings{Anqu00a,
Address = {Los Alamitos, CA, USA},
Annote = {internationalconference},
Author = {Anquetil, Nicolas},
Booktitle = {WCRE'00: Proceedings of the Seventh Working Conference on Reverse Engineering (WCRE'00)},
Note = {Due to an error of the editor, the paper does not appear in the proceedings},
Publisher = {IEEE Computer Society},
Tagnicolasa = {analysis},
Title = {Concepts + Relations = 'Abstract Constructs'},
Url = {http://rmod.inria.fr/archives/papers/Anqu00a-WCRE-Concepts+Relations.pdf},
Year = {2000}}
@inproceedings{Anqu00b,
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},
Author = {Anquetil, Nicolas},
Booktitle = {Proceedings of the 8th International Workshop on Program Comprehension},
Isbn = {0-7695-0656-9},
Keywords = {Reverse Engineering, Concept Analysis, Clustering},
Pages = {231--},
Publisher = {IEEE Computer Society},
Series = {IWPC '00},
Tagnicolasa = {architecture},
Title = {A Comparison of Graphs of Concept for Reverse Engineering},
Url = {http://rmod.inria.fr/archives/papers/Anqu00b-ICSM-GraphsConcepts.pdf},
Year = {2000}}
@inproceedings{Anqu01a,
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},
Author = {Anquetil, Nicolas},
Booktitle = {WCRE '01: Proceedings of the Eighth Working Conference on Reverse Engineering (WCRE'01)},
Doi = {10.1109/WCRE.2001.957821},
Isbn = {0-7695-1303-4},
Misc = {acceptance rate: 27/104 = 26\%},
Pages = {166--175},
Publisher = {IEEE Computer Society},
Tagnicolasa = {knowledge},
Title = {Characterizing the Informal Knowledge Contained in Systems},
Url = {http://rmod.inria.fr/archives/papers/Anqu01a-WCRE-InformalKnowledge.pdf},
Year = {2001}}
@incollection{Anqu02a,
Address = {New York, NY, USA},
Annote = {articlebook},
Author = {Lethbridge, Timothy C. and Anquetil, Nicolas},
Booktitle = {Advances in software engineering: Comprehension, Evaluation, and Evolution},
Editor = {Hakan Erdogmus, Oryal Tanir},
Isbn = {0-387-95109-1},
Pages = {137--157},
Publisher = {Springer-Verlag New York, Inc.},
Tagnicolasa = {architecture},
Title = {Approaches to clustering for program comprehension and remodularization},
Url = {http://portal.acm.org/citation.cfm?id=505630.505637},
Year = {2002}}
@article{Anqu03a,
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},
Author = {Nicolas Anquetil and Timothy Lethbridge},
Doi = {10.1049/ip-sen:20030581},
Journal = {IEE Proceedings - Software},
Number = {3},
Pages = {185-201},
Tagnicolasa = {architecture},
Title = {Comparative study of clustering algorithms and abstract representations for software remodularization},
Url = {http://rmod.inria.fr/archives/papers/Anqu03a-IEESoft-ComparativeStudy.pdf},
Volume = {150},
Year = {2003}}
@inproceedings{Anqu03b,
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},
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},
Booktitle = {Proceedings of the Fifteenth International Conference on Software Engineering \& Knowledge Engineering (SEKE'2003)},
Misc = {acceptance rate: 71/159 = 45\%},
Pages = {61--68},
Tagnicolasa = {knowledge},
Title = {Knowledge for Software Maintenance},
Year = {2003}}
@incollection{Anqu06a,
Annote = {articlebook},
Author = {Nicolas Anquetil and K\'athia M. de Oliveira and M\'arcio G. B. Dias},
Booktitle = {Ontologies for Software Engineering and Software Technology},
Chapter = {5},
Doi = {10.1007/3-540-34518-3\_5},
Editor = {Coral Calero, Francisco Ruiz, Mario Piattini},
Isbn = {978-3-540-34517-6},
Pages = {153--173},
Publisher = {Springer-Verlag New York, Inc.},
Tagnicolasa = {knowledge},
Title = {Software Maintenance Ontology},
Year = {2006}}
@inproceedings{Anqu06c,
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.},
Author = {Alexandre H. Torres and Nicolas Anquetil and K\'athia M. de Oliveira},
Booktitle = {Proceedings of the Eighth International Workshop on Learning Software Organizations},
Pages = {19--27},
Tagnicolasa = {knowledge},
Title = {Pro-active dissemination of knowledge with learning histories},
Url = {http://rmod.inria.fr/archives/papers/Anqu06c-LSO-ProactiveKnowldge.pdf},
Year = {2006}
}
@article{Anqu07a,
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},
Author = {Anquetil, Nicolas and de Oliveira, K\'{a}thia M. and de Sousa, Kleiber D. and Batista Dias, M\'{a}rcio G.},
Doi = {10.1016/j.infsof.2006.07.007},
Impactfactor = {Impact Factor (2008) 1.200},
Issn = {0950-5849},
Journal = {Information Software Technology},
Number = {5},
Pages = {515--529},
Publisher = {Butterworth-Heinemann},
Tagnicolasa = {knowledge},
Title = {Software maintenance seen as a knowledge management issue},
Url = {http://rmod.inria.fr/archives/papers/Anqu07a-IST-MaintenanceKnowledge.pdf},
Volume = {49},
Year = {2007}
}
@inproceedings{Anqu08a,
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},
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}},
Booktitle = {ECMDA Traceability Workshop Proceedings},
Month = {jun},
Pages = {77--86},
Publisher = {SINTEF ICT},
Tagnicolasa = {other traceability SPL},
Title = {Traceability for Model Driven, Software Product Line Engineering},
Url = {http://doc.utwente.nl/64994/},
Year = {2008}}
@article{Anqu08b,
Annote = {nationaljournal},
Author = {Anquetil, Nicolas and Noppen, Joost and Galv{\~a}o, Ism{\^e}nia},
Journal = {L'Objet},
Number = {3},
Pages = {47--57},
Publisher = {Lavoisier},
Tagnicolasa = {other traceability SPL},
Title = {La tra{\c{c}}abilit{\'e} dans les lignes de produits logiciels},
Volume = {14},
Year = {2008}}
@article{Anqu08c,
Annote = {nationaljournal},
Author = {Anquetil, Nicolas and Arboleda, Hugo and DE ALEXANDRIA FERNANDES, Fabricio and Nunez, Angel and Royer, Jean-Claude},
Journal = {L'Objet},
Number = {3},
Pages = {15--31},
Publisher = {Lavoisier},
Tagnicolasa = {other traceability SPL},
Title = {Lignes de produits logiciels et usines logicielles},
Volume = {14},
Year = {2008}}
@inproceedings{Anqu09a,
Annote = {invited},
Author = {Anquetil, Nicolas and Lethbridge, Timothy C},
Booktitle = {Reverse Engineering, 2009. WCRE'09. 16th Working Conference on},
Organization = {IEEE},
Pages = {7--7},
Tagnicolasa = {architecture},
Title = {Ten years later, experiments with clustering as a software remodularization method},
Year = {2009}}
@inproceedings{Anqu09b,
Annote = {internationalconference},
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},
Booktitle = {Reverse Engineering, 2009. WCRE'09. 16th Working Conference on},
Hal-Id = {hal-00457219},
Organization = {IEEE},
Pages = {317--318},
Tagnicolasa = {architecture},
Title = {Javacompext: Extracting architectural elements from java source code},
Year = {2009}}
@article{Anqu10a,
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},
Author = {Anquetil, Nicolas and Kulesza, Uir\'{a} and Mitschke, Ralf and Moreira, Ana and Royer, Jean-Claude and Rummler, Andreas and Sousa, Andr\'{e}},
Doi = {10.1007/s10270-009-0120-9},
Hal-Id = {hal-00668175},
Impactfactor = {Impact Factor (2011) 1.061},
Issn = {1619-1366},
Journal = {Journal of Software and Systems Modeling (SOSYM)},
Number = {4},
Pages = {427--451},
Publisher = {Springer-Verlag New York, Inc.},
Tagnicolasa = {other traceability SPL},
Title = {A model-driven traceability framework for software product lines},
Url = {http://rmod.inria.fr/archives/papers/Anqu10a-SOSYM-TraceabilitySPL.pdf},
Volume = {9},
Year = {2010}}
@inproceedings{Anqu11a,
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},
Author = {Nicolas Anquetil and Jannik Laval},
Booktitle = {Proceedings of the 15th European Conference on Software Maintenance and Reengineering (CSMR'11)},
Hal-Id = {hal-00745773},
Keywords = {moose lse-pub cutter raweb2011 pharo kzRemodularisation kzEvolution},
Misc = {acceptance rate: 29/101 = 29\%},
Pages = {279--286},
Tagnicolasa = {architecture metric},
Title = {Legacy Software Restructuring: Analyzing a Concrete Case},
Url = {http://rmod.inria.fr/archives/papers/Anqu11a-CSMR2011-Coupling.pdf},
Year = {2011}}
@incollection{Anqu11b,
Annote = {articlebook},
Author = {Nicolas Anquetil and Uir\'a Kulesza and Ricardo Mateus and Ralf Mitschke and Ana Moreira and Jean-Claude Royer and Andreas Rummler},
Booktitle = {Aspect-Oriented, Model-Driven Software Product Lines -- The AMPLE way},
Chapter = {8},
Doi = {10.1017/CBO9781139003629.008},
Editor = {Awais Rashid and Jean-Claude Royer and Andreas Rummler},
Isbn = {978-0-521-76722-4},
Keywords = {ample lse-pub raweb2011},
Pages = {222--262},
Publisher = {Cambridge University Press},
Tagnicolasa = {other SPL traceability},
Title = {Managing information flow in the {SPL} development processes},
Year = {2011}}
@incollection{Anqu11c,
Annote = {articlebook},
Author = {Phil Greenwood and Vander Alves and John Hutchinson and Christa Schwanninger and Nicolas Anquetil},
Booktitle = {Aspect-Oriented, Model-Driven Software Product Lines -- The AMPLE way},
Chapter = {14},
Doi = {10.1017/CBO9781139003629.014},
Editor = {Awais Rashid and Jean-Claude Royer and Andreas Rummler},
Isbn = {978-0-521-76722-4},
Keywords = {ample lse-pub raweb2011},
Pages = {411--443},
Publisher = {Cambridge University Press},
Tagnicolasa = {other SPL},
Title = {Empirical research in software product line engineering},
Year = {2011}}
@techreport{Anqu12x,
Abstract = {This is the yearly report of the RMOD team (http://rmod.inria.fr/). A good way to understand what we are doing.},
Annote = {technicalreport},
Author = {Nicolas Anquetil and Damien Cassou and Marcus Denker and St\'ephane Ducasse and Damien Pollet},
Hal-Id = {hal-00777904},
Institution = {INRIA},
Keywords = {rmod raweb lse-pub kzTeamReport},
Title = {Project-Team RMoD (Analyses and Language Constructs for Object-Oriented Application Evolution) 2012 Activity Report},
Tagnicolasa = {ignore},
Url = {http://rmod.inria.fr/archives/reports/Anqu12x-RAWEB-RMOD-2012-TeamActivityReport.pdf},
Year = {2012}
}
@techreport{Anqu13a,
author = {Nicolas Anquetil and Andr\'e Hora},
title = {Assessing the Quality of Architectural Design Quality Metrics},
institution = {Inria Lille Nord Europe},
year = {2013},
url = {https://hal.inria.fr/hal-01664311},
Hal-Id = {hal-01664311},
Tagnicolasa = {architecture metric}
}
@article{Anqu14a,
Annote = {vulgarisation},
Author = {Nicolas Anquetil and St\'ephane Ducasse and Muhammad U. Bhatti},
Journal = {ERCIM News},
Keywords = {moose lse-pub raweb2014 StePub kzIDE kzTools},
Month = oct,
Pages = {22--23},
Tagnicolasa = {other analysis},
Title = {Dedicated Software Analysis Tools},
PDF = {http://ercim-news.ercim.eu/images/stories/EN99/EN99-web.pdf},
Url = {http://rmod.inria.fr/archives/reports/Anqu14a-Ercim-EN99-web.pdf},
Volume = {99},
Year = {2014}}
@techreport{Anqu14b,
author = {Nicolas Anquetil},
title = {HDR - Supporting Software Evolution in the Organizations},
institution = {Universit{\'e} des Sciences et Technologie de Lille - Lille I},
Hal-Id = {tel-01086785},
Tagnicolasa = {other},
year = {2014},
month = {may},
annote = {habilitation}
}
@techreport{Anqu14c,
author = {Nicolas Anquetil and Yuriy Tymchuk and Anne Etien and Gustavo Santos and St\'ephane Ducasse},
title = {A Generic Platform for Name Resolution in Source Code Analysis},
institution = {Inria Lille Nord Europe},
year = {2014},
url = {https://hal.inria.fr/hal-01664258},
Hal-Id = {hal-01664258},
Tagnicolasa = {other model}
}
@techreport{Anqu17a,
Abstract = {This is the yearly report of the RMOD team (http://rmod.inria.fr/). A good way to understand what we are doing.},
Annote = {technicalreport},
Author = {Nicolas Anquetil and Marcus Denker and St\'ephane Ducasse and Anne Etien and Damien Pollet},
Hal-Id = {hal-01444225},
Inriareport = {2016},
Institution = {INRIA},
Keywords = {rmod raweb lse-pub kzTeamReport},
Title = {Project-Team RMoD (Analyses and Language Constructs for Object-Oriented Application Evolution) 2016 Activity Report},
Tagnicolasa = {ignore},
Url = {http://rmod.inria.fr/archives/reports/Anqu17a-RAWEB-RMOD-2016-TeamActivityReport.pdf},
Year = {2017}}
@inproceedings{Anqu17b,
author = {Nicolas Anquetil and Muhammad Bhatti and St\'ephane Ducasse and Andr\'e Hora and Jannik Laval},
title = {The Case for Non-Cohesive Packages},
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.},
booktitle = {SQAMIA 2017 - 6th workshop on Software Quality Analysis, Monitoring, Improvement, and Applications},
year = {2017},
Annote = {internationalworkshop},
Hal-Id = {hal-01585703},
Tagnicolasa = {architecture},
Url = {https://hal.archives-ouvertes.fr/hal-01585703},
Url-Conference = {http://ceur-ws.org/Vol-1938/paper-anq.pdf},
pdf = {http://rmod.inria.fr/archives/papers/Anqu17b-Sqamia-Metrics.pdf},
month = {sep},
KEYWORDS = {lse-pub kzMetric kzEvolution},
address = {Belgrade, Serbia}
}
@inproceedings{Anqu97a,
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},
Author = {Anquetil, Nicolas and Lethbridge, Timothy C.},
Booktitle = {Proceedings of the 1997 conference of the Centre for Advanced Studies on Collaborative research},
Keywords = {clustering},
Location = {Toronto, Ontario, Canada},
Month = nov,
Pages = {184--195},
Publisher = {IBM Press},
Series = {CASCON'97},
Tagnicolasa = {architecture},
Title = {File clustering using naming conventions for legacy systems},
Url = {http://portal.acm.org/citation.cfm?id=782010.782012},
Year = {1997}}
@inproceedings{Anqu98a,
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},
Author = {Nicolas Anquetil and Timothy C. Lethbridge},
Booktitle = {Proceedings of the 1998 conference of the Centre for Advanced Studies on Collaborative research},
Location = {Toronto, Ontario, Canada},
Pages = {213--222},
Publisher = {IBM Press},
Series = {CASCON'98},
Tagnicolasa = {knowledge},
Title = {Assessing the relevance of identifier names in a legacy software system},
Url = {http://portal.acm.org/citation.cfm?id=783160.783164},
Year = {1998}}
@inproceedings{Anqu98b,
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},
Author = {Nicolas Anquetil and Timothy C. Lethbridge},
Booktitle = {Proceedings of the 20th international conference on Software engineering},
Isbn = {0-8186-8368-6},
Location = {Kyoto, Japan},
Pages = {84--93},
Publisher = {IEEE Computer Society},
Series = {ICSE'98},
Tagnicolasa = {architecture},
Title = {Extracting Concepts from File Names: a New File Clustering Criterion},
Url = {http://portal.acm.org/citation.cfm?id=302163.302172},
Year = {1998}}
@article{Anqu98c,
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},
Author = {Anquetil, Nicolas and Vaucher, Jean},
Doi = {10.1145/609742.609749},
Issn = {0362-1340},
Issue = {1},
Journal = {SIGPLAN Notices},
Keywords = {multiple inheritance, negation, object model, reflection, theoretical foundations},
Tagnicolasa = {other model},
Month = {jan},
Pages = {48--55},
Publisher = {ACM},
Title = {Expressing opposition in the object model, first step towards negation},
Volume = {33},
Year = {1998}}
@inproceedings{Anqu99a,
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},
Author = {Nicolas Anquetil and Timothy Lethbridge},
Booktitle = {Proceedings of Working Conference on Reverse Engineering (WCRE'99)},
Doi = {10.1109/WCRE.1999.806964},
Isbn = {0-7695-0303-9},
Keywords = {clustering},
Pages = {235--255},
Tagnicolasa = {architecture},
Title = {Experiments with {Clustering} as a {Software} {Remodularization} {Method}},
Year = {1999}}
@article{Anqu99b,
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},
Author = {Nicolas Anquetil and Timothy C. Lethbridge},
Doi = {10.1002/(SICI)1096-908X(199905/06)11:3<201::AID-SMR192>3.0.CO;2-1},
Journal = {Journal of Software Maintenance: Research and Practice},
Misc = {5 Year ISI impact factor (2010) 1.523},
Pages = {201--21},
Tagnicolasa = {architecture},
Title = {Recovering Software Architecture from the Names of Source Files},
Volume = {11},
Year = {1999}}
@article{Aran14a,
Author = {Aranega, Vincent and Mottu, Jean-Marie and Etien, Anne and Degueule, Thomas and Baudry, Benoit and Dekeyser, Jean-Luc},
Doi = {10.1002/stvr.1532},
Issn = {1099-1689},
Hal-Id = {hal-00988164},
annote = {internationaljournal},
Journal = {Software Testing, Verification and Reliability},
Keywords = {MDE, model transformation, mutation analysis, traceability, mutation operator},
Title = {Towards an automation of the mutation analysis dedicated to model transformation},
Url = {http://dx.doi.org/10.1002/stvr.1532},
Year = {2014}}
@booklet{Ardi95b,
Annote = {lectures},
Author = {Laurent Arditi and St\'ephane Ducasse},
Keywords = {stefPub kzTeaching},
Note = {support de cours de Deug SM-PE et Mass, 120 pages},
Title = {Une premi\`ere approche fonctionnelle et r\'ecursive de la programmation},
Year = {1995}}
@book{Ardi96a,
Address = {Paris},
Annote = {book},
Author = {Laurent Arditi and St\'ephane Ducasse},
Isbn = {2-212-08915-5},
Keywords = {stefPub scglib kzBook kzTeaching},
Month = apr,
Note = {238 pages, Pr\'eface de G\'erard Huet},
Publisher = {Eyrolles},
Title = {La programmation: une approche fonctionelle et r\'ecursive avec Scheme},
Year = {1996}}
@inproceedings{Ardi97a,
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},
Author = {Laurent Arditi and St\'ephane Ducasse},
Booktitle = {Actes des Journ\'ees Fran\c{c}aises des Langages Applicatifs (JFLA '97)},
Hal-Id = {inria-00533051},
Keywords = {stefPub kzTeaching},
Pages = {209--228},
Title = {Scheme: un langage applicatif pour l'enseignement de l'informatique en milieu aride},
Url = {http://rmod.inria.fr/archives/papers/Ardi97a-JFLA07-SchemeTeaching.pdf},
Year = {1997}}
@inproceedings{Arev03c,
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 com- posed 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},
Author = {Gabriela Ar{\'e}valo and St\'ephane Ducasse and Oscar Nierstrasz},
Booktitle = {Proceedings of 18th Conference on Automated Software Engineering (ASE'03)},
Doi = {10.1109/ASE.2003.1240318},
Hal-Id = {inria-00533054},
Keywords = {recast03 scg-pub stefPub moose arevalo jb04 kzRemodularisation},
Month = oct,
Note = {Short paper},
Pages = {267--270},
Publisher = {IEEE Computer Society},
Url-Second = {http://rmod.inria.fr/archives/papers/Arev03cASE03XRayViews.pdf},
Title = {{X-Ray} Views: Understanding the Internals of Classes},
Url = {http://rmod.inria.fr/archives/papers/Arev03c-ASE03-XRayViews.pdf},
Year = {2003}}
@inproceedings{Arev03d,
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},
Author = {Gabriela Ar{\'e}valo and St\'ephane Ducasse and Oscar Nierstrasz},
Booktitle = {Proceedings of 2nd International Workshop on MASPEGHI 2003 (ASE'03)},
Keywords = {snf04 scg-pub skip-doi tefPub arevalo jb04 moose kzRemodularisation},
Month = oct,
Pages = {9--18},
Publisher = {CRIM --- University of Montreal (Canada)},
Title = {Understanding Classes using {X-Ray} Views},
Url-Second = {http://rmod.inria.fr/archives/papers/Arev03dMASPEGHI03XRayViews.pdf},
Url = {http://rmod.inria.fr/archives/papers/Arev03d-MASPEGHI03-XRayViews.pdf},
Year = {2003}}
@inproceedings{Arev05b,
Abstract = {Object-oriented applications are difficult to extend and maintain, due to the presence of implicit dependencies in the inheritance hierarchy. Although these dependencies of- ten 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},
Author = {Gabriela Ar{\'e}valo and St\'ephane Ducasse and Oscar Nierstrasz},
Booktitle = {Proceedings of 9th European Conference on Software Maintenance and Reengineering (CSMR'05)},
Doi = {10.1109/CSMR.2005.24},
Hal-Id = {inria-00533057},
Impactfactor = {hors},
Keywords = {scg-pub arevalo jb05 recast05 StefPub moose kzRemodularisation},
Location = {Manchester, United Kingdom},
Misc = {acceptance rate: 33/81 = 41\%},
Month = mar,
Pages = {62--71},
Publisher = {IEEE Computer Society},
Rate = {41\%},
Url-Second = {http://rmod.inria.fr/archives/papers/Arev05bCSMR05ClassHierarchies.pdf},
Title = {Discovering Unanticipated Dependency Schemas in Class Hierarchies},
Url = {http://rmod.inria.fr/archives/papers/Arev05b-CSMR05-ClassHierarchies.pdf},
Year = {2005}}
@inproceedings{Arev05c,
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},
Author = {Gabriela Ar{\'e}valo and St\'ephane Ducasse and Oscar Nierstrasz},
Booktitle = {Proceedings of 3rd International Conference on Formal Concept Analysis (ICFCA'05)},
Doi = {10.1007/b105806},
Hal-Id = {inria-00533445},
Impactfactor = {hors},
Keywords = {scg-pub jb05 recast05 arevalo StefPub kzRemodularisation},
Location = {Lens, France},
Month = feb,
Pages = {95--112},
Publisher = {Springer Verlag},
Url-Second = {http://rmod.inria.fr/archives/papers/Arev05cICFCA05LessonsLearned.pdf},
Series = {LNAI (Lecture Notes in Artificial Intelligence)},
Title = {Lessons Learned in Applying Formal Concept Analysis},
Url = {http://rmod.inria.fr/archives/papers/Arev05c-ICFCA05-LessonsLearned.pdf},
Volume = {3403},
Year = {2005}}
@article{Arev10a,
Annote = {internationaljournal},
Author = {Gabriela Ar\'evalo and St\'ephane Ducasse and Silvia Gordillo and Oscar Nierstrasz},
Doi = {10.1016/j.infsof.2010.05.010},
Hal-Id = {inria-00531498},
Impactfactor = {ISI impact factor (2010) 1.821},
Inriareport = {2010},
Issn = {0950-5849},
Journal = {Journal of Information and Software Technology},
Keywords = {moose lse-pub cook StefPub treport2010 kzRemodularisation},
Month = dec,
Pages = {1167-1187},
Url-Second = {http://rmod.inria.fr/archives/papers/Arev10a-IST-Official-generatingCatalog.pdf},
Title = {Generating a catalog of unanticipated schemas in class hierarchies using Formal Concept Analysis},
Url = {http://rmod.inria.fr/archives/papers/Arev10a-IST-generatingCatalog.pdf},
Volume = {52},
Year = {2010}}
@inproceedings{Arlo16a,
Title = {Pillar: A Versatile and Extensible Lightweight Markup Language},
Author = {Thibault Arloing and Yann Dubois and Damien Cassou and St\'ephane Ducasse},
Url = {http://rmod.inria.fr/archives/papers/Arlo16a-IWST16-Pillar.pdf},
Doi = {10.1145/2991041.2991066},
Booktitle = {International Workshop on Smalltalk Technologies {IWST'16}},
ADDRESS = {Prague, Czech Republic},
Hal-Id = {hal-01353882},
Keywords = {moose lse-pub kzOther},
year = {2016},
month = aug,
annote = {internationalworkshop}
}
@inproceedings{Arna10a,
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 read- only 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},
Author = {Jean-Baptiste Arnaud and Marcus Denker and St\'ephane Ducasse and Damien Pollet and Alexandre Bergel and Mathieu Suen},
Booktitle = {Proceedings of the 48th International Conference Objects, Models, Components, Patterns (TOOLS'10)},
Doi = {10.1007/978-3-642-13953-6\_7},