-
Notifications
You must be signed in to change notification settings - Fork 3
/
references.bib
1218 lines (1122 loc) · 70.3 KB
/
references.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
% Encoding: UTF-8
@online{Boittiaux2016,
author = {Pascaline Boittiaux},
title = {Infographie: Le Web dit adieu à Flash},
shorttitle = {Infographie},
date = {2016-12-13},
url = {https://fr.statista.com/infographie/7186/le-web-dit-adieu-a-flash/},
urldate = {2023-01-07},
abstract = {Ce graphique indique le pourcentage de sites utilisant Flash.},
langid = {french},
organization = {{Statista Infographies}},
file = {C\:\\Users\\Cris\\Zotero\\storage\\3PSLMP7T\\le-web-dit-adieu-a-flash.html}
}
@article{AB2012,
author = {Al Dallal, Jehad and Briand, Lionel C.},
title = {A Precise Method-Method Interaction-Based Cohesion Metric for Object-Oriented Classes},
journal = {ACM Transactions on Software Engineering and Methodology},
year = {2012},
volume = {21},
number = {2},
month = mar,
pages = {1--34},
issn = {1049-331X},
doi = {10.1145/2089116.2089118},
url = {http://doi.acm.org/10.1145/2089116.2089118},
acmid = {2089118},
address = {New York, NY, USA},
articleno = {8},
issue_date = {March 2012},
keywords = {Object-oriented software quality, attribute, class cohesion, low-level design, method, method-method interaction, refactoring},
numpages = {34},
owner = {Cris},
publisher = {ACM},
timestamp = {2016.02.27}
}
@article{AL2005,
author = {Alshayeb, Mohammad and Li, Wei},
title = {An empirical study of system design instability metric and design evolution in an agile software process },
journal = {Journal of Systems and Software },
year = {2005},
volume = {74},
number = {3},
pages = {269--274},
abstract = {Software project tracking and project plan adjustment are two important software engineering activities. The class growth shows the design evolution of the software. The System Design Instability (SDI) metric indicates the progress of an object-oriented (OO) project once the project is set in motion. The \{SDI\} metric provides information on project evolution to project managers for possible adjustment to the project plan. The objectives of this paper are to test if the System Design Instability metric can be used to estimate and re-plan software projects in an XP-like agile process and study system design evolution in the Agile software process. We present an empirical study of the class growth and the \{SDI\} metric in two \{OO\} systems, developed using an agile process similar to Extreme Programming (XP). We analyzed the system evolutionary data collected on a daily basis from the two systems. We concluded that: the systems' class growth follows observable trends, the \{SDI\} metric can indicate project progress with certain trends, and the \{SDI\} metric is correlated with \{XP\} activities. In both of the analyzed systems, we observed two consistent jumps in the \{SDI\} metric values in early and late development phases. Part of the results agrees with a previous empirical study in another environment. },
doi = {http://dx.doi.org/10.1016/j.jss.2004.02.002},
issn = {0164-1212},
keywords = {Empirical study},
owner = {Cris},
timestamp = {2016.03.05},
url = {http://www.sciencedirect.com/science/article/pii/S016412120400007X}
}
@article{AlDallal2011,
author = {Al Dallal, J.},
title = {Measuring the Discriminative Power of Object-Oriented Class Cohesion Metrics},
year = {2011},
volume = {37},
number = {6},
month = {11},
pages = {788--804},
issn = {0098-5589},
doi = {10.1109/TSE.2010.97},
abstract = {Several object-oriented cohesion metrics have been proposed in the literature. These metrics aim to measure the relationship between class members, namely, methods and attributes. Different metrics use different models to represent the connectivity pattern of cohesive interactions (CPCI) between class members. Most of these metrics are normalized to allow for easy comparison of the cohesion of different classes. However, in some cases, these metrics obtain the same cohesion values for different classes that have the same number of methods and attributes but different CPCIs. This leads to incorrectly considering the classes to be the same in terms of cohesion, even though their CPCIs clearly indicate that the degrees of cohesion are different. We refer to this as a lack of discrimination anomaly (LDA) problem. In this paper, we list and discuss cases in which the LDA problem exists, as expressed through the use of 16 cohesion metrics. In addition, we empirically study the frequent occurrence of the LDA problem when the considered metrics are applied to classes in five open source Java systems. Finally, we propose a metric and a simulation-based methodology to measure the discriminative power of cohesion metrics. The discrimination metric measures the probability that a cohesion metric will produce distinct cohesion values for classes with the same number of attributes and methods but different CPCIs. A highly discriminating cohesion metric is more desirable because it exhibits a lower chance of incorrectly considering classes to be cohesively equal when they have different CPCIs.},
journal = {Software Engineering, IEEE Transactions on},
keywords = {Java;laser Doppler anemometry;object-oriented methods;public domain software;cohesive interactions;discrimination anomaly;discriminative power measurement;object oriented class cohesion metrics;open source Java systems;simulation based methodology;Object oriented modeling;Phase measurement;Power measurement;Software measurement;Cohesive interactions;connectivity pattern;discrimination metric;discriminative power;lack of discrimination anomaly;object-oriented class cohesion.},
owner = {Cris},
timestamp = {2016.02.14}
}
@book{alexander_pattern_1977,
author = {Alexander, Christopher and Ishikawa, Sara and Silverstein, Murray and Jacobson, Max and Fiksdahl-King, Ingrid and Angel, Shlomo},
title = {A {Pattern} {Language}: {Towns}, {Buildings}, {Construction}},
year = {1977},
language = {English},
publisher = {Oxford University Press},
isbn = {9780195019193},
abstract = {You can use this book to design a house for yourself with your family; you can use it to work with your neighbors to improve your town and neighborhood; you can use it to design an office, or a workshop, or a public building. And you can use it to guide you in the actual process of construction. After a ten-year silence, Christopher Alexander and his colleagues at the Center for Environmental Structure are now publishing a major statement in the form of three books which will, in their words, "lay the basis for an entirely new approach to architecture, building and planning, which will we hope replace existing ideas and practices entirely." The three books are The Timeless Way of Building, The Oregon Experiment, and this book, A Pattern Language. At the core of these books is the idea that people should design for themselves their own houses, streets, and communities. This idea may be radical (it implies a radical transformation of the architectural profession) but it comes simply from the observation that most of the wonderful places of the world were not made by architects but by the people. At the core of the books, too, is the point that in designing their environments people always rely on certain "languages," which, like the languages we speak, allow them to articulate and communicate an infinite variety of designs within a forma system which gives them coherence. This book provides a language of this kind. It will enable a person to make a design for almost any kind of building, or any part of the built environment. "Patterns," the units of this language, are answers to design problems (How high should a window sill be? How many stories should a building have? How much space in a neighborhood should be devoted to grass and trees?). More than 250 of the patterns in this pattern language are given: each consists of a problem statement, a discussion of the problem with an illustration, and a solution. As the authors say in their introduction, many of the patterns are archetypal, so deeply rooted in the nature of things that it seemly likely that they will be a part of human nature, and human action, as much in five hundred years as they are today.},
address = {New York},
shorttitle = {A {Pattern} {Language}}
}
@book{Arapidis2012,
title = {Sonar Code Quality Testing Essentials},
author = {Charalampos S. Arapidis},
year = {2012},
isbn = {9781849517867},
publisher = {Packt Publishing},
url = {http://amazon.com/o/ASIN/184951786X/},
month = {8},
price = {$49.99},
timestamp = {2016.02.23},
totalpages = {318}
}
@article{avge16a,
author = {Paris Avgeriou and Philippe Kruchten and Ipek Ozkaya and Carolyn Seaman},
title = {{Managing Technical Debt in Software Engineering (Dagstuhl Seminar 16162)}},
pages = {110--138},
journal = {Dagstuhl Reports},
issn = {2192-5283},
year = {2016},
volume = {6},
number = {4},
editor = {Paris Avgeriou and Philippe Kruchten and Ipek Ozkaya and Carolyn Seaman},
publisher = {Schloss Dagstuhl--Leibniz-Zentrum fuer Informatik},
address = {Dagstuhl, Germany},
url = {http://drops.dagstuhl.de/opus/volltexte/2016/6693},
urn = {urn:nbn:de:0030-drops-66938},
doi = {10.4230/DagRep.6.4.110},
annote = {Keywords: coding tools and techniques, design tools and techniques, management, metrics, software engineering}
}
@misc{basleijdekkers2016,
title = {{BasLeijdekkers}/{MetricsReloaded}},
author = {Leijdekkers, Bas},
year = {2016},
url = {https://github.com/BasLeijdekkers/MetricsReloaded},
urldate = {2016-02-24},
abstract = {MetricsReloaded - Automated code metrics plugin for IntelliJ IDEA},
journal = {GitHub}
}
@article{BBM1996,
author = {Basili, V. R. and Briand, L. C. and Melo, W. L.},
title = {A validation of object-oriented design metrics as quality indicators},
year = {1996},
volume = {22},
number = {10},
month = oct,
pages = {751--761},
issn = {0098-5589},
doi = {10.1109/32.544352},
journal = {Software Engineering, IEEE Transactions on}
}
@article{blincoe2019high,
title = {High-level software requirements and iteration changes: a predictive model},
author = {Blincoe, Kelly and Dehghan, Ali and Salaou, Abdoul-Djawadou and Neal, Adam and Linaker, Johan and Damian, Daniela},
journal = {Empirical Software Engineering},
volume = {24},
number = {3},
pages = {1610--1648},
year = {2019},
publisher = {Springer}
}
@book{Budgen2003,
title = {Software Design (2nd Edition)},
publisher = {Addison-Wesley},
year = {2003},
author = {David Budgen},
edition = {2},
month = {5},
isbn = {9780201722192},
price = {$77.60},
timestamp = {2016.02.25},
totalpages = {400},
url = {http://amazon.com/o/ASIN/0201722194/}
}
@article{chen2017expertise,
title = {The expertise reversal effect is a variant of the more general element interactivity effect},
author = {Chen, Ouhao and Kalyuga, Slava and Sweller, John},
journal = {Educational Psychology Review},
volume = {29},
number = {2},
pages = {393--405},
year = {2017},
publisher = {Springer}
}
@article{CK1994,
author = {Chidamber, S. R. and Kemerer, C. F.},
title = {A metrics suite for object oriented design},
journal = {Software Engineering, IEEE Transactions on},
year = {1994},
volume = {20},
number = {6},
month = jun,
pages = {476--493},
issn = {0098-5589},
doi = {10.1109/32.295895},
keywords = {object-oriented methods;object-oriented programming;software metrics;automated data collection tool;measurement principles;metrics suite;object oriented design;object oriented programming;organization;process improvement;software development;software measures;Application software;Engineering management;Information management;Information technology;Ontologies;Programming;Software development management;Software engineering;Software measurement;Technology management}
}
@book{coad97a,
title = {Object {{Models}}: {{Strategies}}, {{Patterns}}, and {{Applications}}},
shorttitle = {Object {{Models}}},
author = {Coad, Peter},
year = {1997},
month = jan,
edition = {2},
publisher = {{Pearson Technology Group}},
address = {{Upper Saddle River, N.J}},
abstract = {This new edition of a best-seller gives object programmers the latest information on getting faster, better results with strategies and templates. This book delivers up-to-the-minute guidance on object modeling, from three of the world's leading experts. This book presents 177 strategies and 31 patterns (templates) for achieving the best possible results with object modeling in all three leading methodologies: Coad, OMT and Unified.},
isbn = {978-0-13-840117-7},
language = {English}
}
@incollection{Cockburn:1996:PFS:231958.232956,
author = {Cockburn, Alistair},
title = {Prioritizing forces in software designs},
booktitle = {Pattern Languages of Program Design 2},
publisher = {Addison-Wesley Longman Publishing Co., Inc.},
year = {1996},
editor = {Vlissides, John M. and Coplien, James O. and Kerth, Norman L.},
chapter = {Prioritizing Forces in Software Design},
pages = {319--333},
address = {Boston, MA, USA},
acmid = {232956},
isbn = {0-201-895277},
numpages = {15},
url = {http://dl.acm.org/citation.cfm?id=231958.232956}
}
@book{craig_uml_2005,
author = {Larman, Craig},
title = {{UML} 2 et les design patterns},
year = {2005},
edition = {3},
publisher = {Village Mondial},
isbn = {9782744070907},
abstract = {Cet ouvrage est une introduction pratique à l'analyse et la conception orientées objet (A/COO) au moyen du langage de modélisation UML et des design patterns. Il propose de suivre la démarche du Processus Unifié (UP), qui guide pas à pas l'utilisateur, de la spécification des besoins au code de l'application. Le Processus Unifié utilise UML qui s'est imposé comme le standard international de notation graphique pour la modélisation objet. Le livre y a donc recours, à l'aide de nombreux exemples de diagrammes expliqués en détail pour enseigner l'A/COO. L'ouvrage présente également les patterns de conception (design patterns) qui constituent les ""meilleures pratiques"" que les experts en A/COO appliquent au développement de systèmes. Il apprend à employer ces patterns, notamment les célèbres patterns GoF et les patterns GRASP. La pédagogie de l'ouvrage se caractérise par l'analyse complète de deux études de cas, qui illustrent de façon réaliste tout le processus d'A/COO. Reconnu comme l'un des plus grands experts mondiaux en UML et génie logiciel, Craig Larman est actuellement directeur scientifique chez Valtech (entreprise de conseil internationale). II est l'auteur de plusieurs ouvrages sur la conception objet et UML dont Agile and Iterative Development: A Manager's Guide; Java 2 Performance and Idiom Guide Applying UML and Design Patterns. Il est également consultant et conférencier international. Consultant senior et formateur chez Valtech France Pascal Roques a plus de dix-huit ans d'expérience dans la modélisation de systèmes complexes (SADT OMT Processus Unifié…). Il est actuellement responsable de l'ensemble des formations Valtech Training sur le thème ""Modélisation avec UML"". Il a déjà publié trois ouvrages en français sur UML, issus de son expérience de formateur. Langue: Français Lectorat: Etudiants en informatique en universités et en écoles d'ingénieurs (2e et 3e cycles). Professionnels : concepteurs analystes chefs de projet développeurs.},
address = {Paris},
langid = {french}
}
@inproceedings{Cunningham1992,
author = {Cunningham, Ward},
title = {The {WyCash} {Portfolio} {Management} {System}},
year = {1992},
series = {{OOPSLA} '92},
publisher = {ACM},
isbn = {9780897916103},
pages = {29--30},
doi = {10.1145/157709.157715},
url = {http://doi.acm.org/10.1145/157709.157715},
urldate = {2018-01-04},
address = {New York, NY, USA}
}
@misc{Cunningham2009,
author = {Cunningham, Ward},
title = {Debt {Metaphor}},
year = {2009},
date = {2009-02-14},
url = {https://www.youtube.com/watch?v=pqeJFYwnkjE},
urldate = {2018-01-04},
keywords = {Cunningham, Fowler, Martin, Ward, agile, debt, extreme, metaphore, programming, refactoring}
}
@book{Evans2003,
author = {Evans, Eric},
title = {Domain-Driven Design: Tackling Complexity in the Heart of Software},
year = {2003},
edition = {1},
publisher = {Addison-Wesley Professional},
isbn = {9780321125217},
url = {http://amazon.com/o/ASIN/0321125215/},
month = {8},
owner = {Cris},
price = {$74.99},
timestamp = {2016.02.28},
totalpages = {560}
}
@article{FA2001,
author = {Fayad, Mohammed E. and Altman, Adam},
title = {Thinking Objectively: An Introduction to Software Stability},
journal = {Communications of the ACM},
year = {2001},
volume = {44},
number = {9},
month = sep,
pages = {95--97},
issn = {0001-0782},
doi = {10.1145/383694.383713},
url = {http://doi.acm.org/10.1145/383694.383713},
acmid = {383713},
address = {New York, NY, USA},
issue_date = {Sept. 2001},
publisher = {ACM}
}
@book{FBBOR1999,
author = {Fowler, Martin and Beck, Kent and Brant, John and Opdyke, William and Roberts, Don},
title = {Refactoring: Improving the Design of Existing Code},
year = {1999},
edition = {1},
publisher = {Addison-Wesley Professional},
isbn = {9780201485677},
url = {http://amazon.com/o/ASIN/0201485672/},
month = {7},
owner = {Cris},
price = {$64.99},
timestamp = {2016.02.28},
totalpages = {464}
}
@book{fitzpatrick_team_2012,
address = {Sebastopol. CA},
edition = {1},
title = {Team {Geek}: {A} {Software} {Developer}'s {Guide} to {Working} {Well} with {Others}},
isbn = {9781449302443},
shorttitle = {Team {Geek}},
abstract = {In a perfect world, software engineers who produce the best code are the most successful. But in our perfectly messy world, success also depends on how you work with people to get your job done.In this highly entertaining book, Brian Fitzpatrick and Ben Collins-Sussman cover basic patterns and anti-patterns for working with other people, teams, and users while trying to develop software. This is valuable information from two respected software engineers whose popular series of talks—including "Working with Poisonous People"—has attracted hundreds of thousands of followers.Writing software is a team sport, and human factors have as much influence on the outcome as technical factors. Even if you've spent decades learning the technical side of programming, this book teaches you about the often-overlooked human component. By learning to collaborate and investing in the "soft skills" of software engineering, you can have a much greater impact for the same amount of effort.Team Geek was named as a Finalist in the 2013 Jolt Awards from Dr. Dobb's Journal. The publication's panel of judges chose five notable books, published during a 12-month period ending June 30, that every serious programmer should read.},
language = {English},
publisher = {O'Reilly Media},
author = {Fitzpatrick, Brian W. and Collins-Sussman, Ben},
month = jul,
year = {2012}
}
@book{ford_productive_2008,
author = {Ford, Neal},
title = {The {Productive} {Programmer}},
year = {2008},
language = {English},
edition = {1},
publisher = {O'Reilly Media},
isbn = {9780596519780},
abstract = {Anyone who develops software for a living needs a proven way to produce it better, faster, and cheaper. The Productive Programmer offers critical timesaving and productivity tools that you can adopt right away, no matter what platform you use. Master developer Neal Ford not only offers advice on the mechanics of productivity-how to work smarter, spurn interruptions, get the most out your computer, and avoid repetition-he also details valuable practices that will help you elude common traps, improve your code, and become more valuable to your team. You'll learn to:Write the test before you write the codeManage the lifecycle of your objects fastidiouslyBuild only what you need now, not what you might need laterApply ancient philosophies to software developmentQuestion authority, rather than blindly adhere to standardsMake hard things easier and impossible things possible through meta-programmingBe sure all code within a method is at the same level of abstractionPick the right editor and assemble the best tools for the jobThis isn't theory, but the fruits of Ford's real-world experience as an Application Architect at the global IT consultancy ThoughtWorks. Whether you're a beginner or a pro with years of experience, you'll improve your work and your career with the simple and straightforward principles in The Productive Programmer.},
address = {Sebastopol, CA},
month = jul
}
@misc{Ford2009,
author = {Ford, Neal},
title = {Evolutionary architecture and emergent design: {Investigating} architecture and design},
year = {2009},
date = {2009-02-24},
language = {en},
type = {{CT}316},
month = feb,
url = {https://web.archive.org/web/20161029141308/http://www.ibm.com/developerworks/library/j-eaed1/},
urldate = {2023-02-09},
abstract = {Software architecture and design generate a lot of conversational heat but not much light. To start a new conversation about alternative ways to think about them, this article launches the Evolutionary architecture and emergent design series. Evolutionary architecture and emergent design are agile techniques for deferring important decisions until the last responsible moment. In this introductory installment, series author Neal Ford defines architecture and design and then identifies overarching concerns that will arise throughout the series.},
copyright = {© Copyright IBM Corporation 2009},
owner = {Cris},
shorttitle = {Evolutionary architecture and emergent design},
timestamp = {2023-02-09}
}
@misc{fowl07a,
title = {Bliki: {{DesignStaminaHypothesis}}},
shorttitle = {Bliki},
author = {Fowler, Martin},
year = {2007},
month = jun,
url = {https://www.martinfowler.com/bliki/DesignStaminaHypothesis.html},
urldate = {2023-01-05},
abstract = {The value of good software design is economic: you can continue to add new functionality quickly even as the code-base grows in size.},
journal = {martinfowler.com},
language = {English}
}
@book{Fowl18a,
author = {Fowler, Martin},
title = {Refactoring: Improving the Design of Existing Code},
publisher = {Addison-Wesley Professional},
year = {2018},
address = {Boston},
edition = {2},
isbn = {9780134757599},
shorttitle = {Refactoring},
language = {English},
month = nov
}
@book{Fowler2003,
title = {{UML} Distilled: A Brief Guide to the Standard Object Modeling Language (3rd Edition)},
author = {Martin Fowler},
year = {2003},
edition = {3},
isbn = {9780321193681},
publisher = {Addison-Wesley Professional},
url = {http://amazon.com/o/ASIN/0321193687/},
month = {9},
price = {$49.99},
timestamp = {2016.02.10},
totalpages = {208}
}
@misc{Fowler2004,
author = {Fowler, Martin},
title = {Is {Design} {Dead}?},
year = {2004},
url = {http://martinfowler.com/articles/designDead.html},
urldate = {2016-03-04},
abstract = {The rise of agile methods (particularly XP) makes some people wonder if there's any role left for software design. I argue that this change shifts from planned to evolutionary design.},
owner = {Cris},
timestamp = {2016.03.06}
}
@misc{Fowler2009,
author = {Martin Fowler},
title = {bliki: {TechnicalDebtQuadrant}},
year = {2009},
date = {2009-10-14},
url = {https://martinfowler.com/bliki/TechnicalDebtQuadrant.html},
urldate = {2018-01-03},
abstract = {People argue about whether some kinds of bad code count as Technical Debt. I prefer to focus on the interest/principal decision, and recognize debt has different causes.},
shorttitle = {bliki}
}
@book{FreemanBatesSierraRobson200410,
author = {Eric Freeman and Elisabeth Robson and Bert Bates and Kathy Sierra},
title = {Head First Design Patterns},
year = {2004},
edition = {1},
publisher = {O'Reilly Media},
isbn = {9780596007126},
url = {http://amazon.com/o/ASIN/0596007124/},
month = {10},
price = {$59.99},
timestamp = {2016.02.09},
totalpages = {694}
}
@book{GoF1994,
title = {Design {Patterns}: {Elements} of {Reusable} {Object}-{Oriented} {Software}},
author = {Erich Gamma and Richard Helm and Ralph Johnson and John Vlissides},
year = {1994},
edition = {1},
isbn = {9780201633610},
publisher = {Addison-Wesley Professional},
url = {http://amazon.com/o/ASIN/0201633612/},
abstract = {This book isn't an introduction to object-oriented technology or design. Many books already do a good job of that. This book assumes you are reasonably proficient in at least one object-oriented programming language, and you should have some experience in object-oriented design as well. You definitely shouldn't have to rush to the nearest dictionary the moment we mention "types" and"polymorphism," or "interface" as opposed to "implementation" inheritance.On the other hand, this isn't an advanced technical treatise either. It's a book of design patterns that describes simple and elegant solutions to specific problems in object-oriented software design. Design patterns capture solutions that have developed and evolved over time. Hence they aren't the designs people They reflect untold redesign and recoding as developers have struggled for greater reuse and flexibility in their software.Design patterns capture these solutions in a succinct and easily applied form.The design patterns require neither unusual language features nor amazing programming tricks with which to astound your friends and managers. All can be implemented in standard object-oriented languages, though they might take a little more work than ad hoc solutions. But the extra effort invariably pays dividends in increased flexibility and reusability.Once you understand the design patterns and have had an "Aha!" and not just a "Huh?" experience with them, you won't ever think about object-oriented design in the same way. You'll have insights that can make your own designs more flexible, modular, reusable, and understandable - which is why you're interested in object-oriented technology in the first place, right?A word of warning and encouragement: Don't worry if you don't understand this book completely on the first reading. We didn't understand it all on the first writing! Remember that this isn't a book to read once and put on a shelf. We hope you'll find yourself referring to it again and again for design insights and for inspiration.This book has had a long gestation. It has seen four countries, three of its authors' marriages, and the birth of two unrelated offspring.Many people have had a part in its development. Special thanks are due Bruce Andersen, Kent Beck, and Andre Weinand for their inspiration and advice. We also thank those who reviewed drafts of the manuscript: Roger Bielefeld, Grady Booch, Tom Cargill, Marshall Cline, Ralph Hyre, Brian Kernighan, Thomas Laliberty, Mark Lorenz, Arthur Riel, Doug Schmidt, Clovis Tondo, Steve Vinoski, and Rebecca Wirfs-Brock. We are also grateful to the team at Addison-Wesley for their help and patience: Kate Habib, Tiffany Moore, Lisa Raffaele, Pradeepa Siva, and John Wait. Special thanks to Carl Kessler, Danny Sabbah, and Mark Wegman at IBM Research for their unflagging support of this work.Last but certainly not least, we thank everyone on the Internet and points beyond who commented on versions of the patterns, offered encouraging words, and told us that what we were doing was worthwhile. These people include but are not limited to Ran Alexander, Jon Avotins, Steve Berczuk, Julian Berdych, Matthias Bohlen, John Brant, Allan Clarke, Paul Chisholm, Jens Coldewey, Dave Collins, Jim Coplien, Don Dwiggins, Gabriele Elia, Doug Felt, Brian Foote, Denis Fortin, Ward Harold, Hermann Hueni, Nayeem Islam, Bikramjit Kalra, Paul Keefer, Thomas Kofler, Doug Lea, Dan LaLiberte, James Long, Ann Louise Luu, Pundi Madhavan, Brian Marick, Robert Martin, Dave McComb, Carl McConnell, Christine Mingins, Hanspeter Mossenbock, Eric Newton, Marianne Ozcan, Roxsan Payette, Larry Podmolik, George Radin, Sita Ramakrishnan, Russ Ramirez, Dirk Riehle, Bryan Rosenburg, Aamod Sane, Duri Schmidt, Robert Seidl, Xin Shu, and Bill Walker.We don't consider this collection of design patterns complete and static; it's more a recording of our current thoughts on design. We welcome comments on it, whether criticisms of our examples, references and known uses we've missed, or design patterns we should have included. You can write us care of Addison-Wesley, or send electronic mail to design-patterns@cs.uiuc.edu . You can also obtain softcopy for the code in the Sample Code sections by sending the message "send design pattern source" to design-patterns-source@cs.uiuc.edu .Mountain View, California - E.G.Montreal, Quebec - R.H.Urbana, Illinois - R.J.Hawthorne, New York - J.V.August 1994 0201633612P04062001},
address = {Reading, Mass},
month = {11},
price = {$59.99},
timestamp = {2016.02.04},
totalpages = {395}
}
@book{Grand2002,
title = {Patterns in Java: A Catalog of Reusable Design Patterns Illustrated with UML, 2nd Edition, Volume 1},
publisher = {Wiley},
year = {2002},
author = {Mark Grand},
edition = {2},
month = {9},
isbn = {9780471227298},
price = {$60.00},
timestamp = {2016.03.17},
totalpages = {544},
url = {http://amazon.com/o/ASIN/0471227293/}
}
@article{gyimothy2005empirical,
author = {Gyimothy, Tibor and Ferenc, Rudolf and Siket, Istvan},
title = {Empirical validation of object-oriented metrics on open source software for fault prediction},
journal = {IEEE Transactions on Software engineering},
year = {2005},
volume = {31},
number = {10},
pages = {897--910},
publisher = {IEEE}
}
@book{hanmer_patterns_2007,
author = {Hanmer, Robert},
title = {Patterns for {Fault} {Tolerant} {Software}},
year = {2007},
language = {English},
edition = {1},
publisher = {Wiley},
isbn = {9780470319796},
abstract = {Software patterns have revolutionized the way developer's and architects think about how software is designed, built and documented. This new title in Wiley's prestigious Series in Software Design Patterns presents proven techniques to achieve patterns for fault tolerant software. This is a key reference for experts seeking to select a technique appropriate for a given system. Readers are guided from concepts and terminology, through common principles and methods, to advanced techniques and practices in the development of software systems. References will provide access points to the key literature, including descriptions of exemplar applications of each technique. Organized into a collection of software techniques, specific techniques can be easily found with sufficient detail to allow appropriate choices for the system being designed.},
address = {Chichester, England ; Hoboken, NJ},
month = nov
}
@misc{Hickey2011,
author = {Hickey, Rich},
title = {Simple Made Easy (transcribed by Nehlsen, Matthias)},
year = {2011},
note = {original-date: 2014-10-07T13:20:35Z},
month = sep,
url = {https://github.com/matthiasn/talk-transcripts},
urldate = {2017-12-28},
owner = {Cris},
timestamp = {2017.12.28}
}
@book{Horstmann2005,
title = {Object-Oriented Design and Patterns},
publisher = {Wiley},
year = {2005},
author = {Cay S. Horstmann},
edition = {2},
month = {6},
isbn = {9780471744870},
timestamp = {2016.03.15},
totalpages = {476},
url = {http://amazon.com/o/ASIN/0471744875/}
}
@article{Hu2013,
author = {Hu, Chenglie},
title = {The Nature of Software Design and Its Teaching: An Exposition},
journal = {ACM Inroads},
year = {2013},
volume = {4},
number = {2},
pages = {62--72},
month = jun,
acmid = {2465103},
address = {New York, NY, USA},
doi = {10.1145/2465085.2465103},
issn = {2153-2184},
issue_date = {June 2013},
keywords = {design knowledge, design process, design thinking, software design education},
numpages = {11},
publisher = {ACM},
url = {http://doi.acm.org/10.1145/2465085.2465103}
}
@article{IF2010,
author = {Ayelet Israeli and Dror G. Feitelson},
title = {The Linux kernel as a case study in software evolution },
journal = {Journal of Systems and Software },
year = {2010},
volume = {83},
number = {3},
pages = {485--501},
abstract = {We use 810 versions of the Linux kernel, released over a period of 14 years, to characterize the system's evolution, using Lehman's laws of software evolution as a basis. We investigate different possible interpretations of these laws, as reflected by different metrics that can be used to quantify them. For example, system growth has traditionally been quantified using lines of code or number of functions, but functional growth of an operating system like Linux can also be quantified using the number of system calls. In addition we use the availability of the source code to track metrics, such as McCabe's cyclomatic complexity, that have not been tracked across so many versions previously. We find that the data supports several of Lehman's laws, mainly those concerned with growth and with the stability of the process. We also make some novel observations, e.g. that the average complexity of functions is decreasing with time, but this is mainly due to the addition of many small functions. },
doi = {http://dx.doi.org/10.1016/j.jss.2009.09.042},
issn = {0164-1212},
keywords = {Software evolution},
url = {http://www.sciencedirect.com/science/article/pii/S0164121209002519}
}
@misc{intellij2016,
title = {{IntelliJ} {IDEA} the {Java} {IDE}},
author = {Jetbrains},
year = {2016},
url = {https://www.jetbrains.com/idea/},
urldate = {2016-02-24},
abstract = {Code-centric IDE, focused on your productivity. Full Java EE support, deep code understanding, best debugger, refactorings, everything right out of the box...},
journal = {JetBrains}
}
@article{IO2013,
author = {Isong, Bassey and Obeten, Ekabua},
title = {A systematic review of the empirical validation of object-oriented metrics towards fault-proneness prediction},
journal = {International Journal of Software Engineering and Knowledge Engineering},
year = {2013},
volume = {23},
number = {10},
pages = {1513--1540},
month = dec,
abstract = {Object-oriented (OO) approaches of software development promised better maintainable and reusable systems, but the complexity resulting from its features usually introduce some faults that are difficult to detect or anticipate during software change process. Thus, the earlier they are detected, found and fixed, the lesser the maintenance costs. Several OO metrics have been proposed for assessing the quality of OO design and code and several empirical studies have been undertaken to validate the impact of OO metrics on fault proneness (FP). The question now is which metrics are useful in measuring the FP of OO classes? Consequently, we investigate the existing empirical validation of CK + SLOC metrics based on their state of significance, validation and usefulness. We used systematic literature review (SLR) methodology over a number of relevant article sources, and our results show the existence of 29 relevant empirical studies. Further analysis indicates that coupling, complexity and size measures have strong impact on FP of OO classes. Based on the results, we therefore conclude that these metrics can be used as good predictors for building quality fault models when that could assist in focusing resources on high risk components that are liable to cause system failures, when only CK + SLOC metrics are used.},
doi = {10.1142/S0218194013500484},
issn = {0218-1940},
journaltitle = {International Journal of Software Engineering and Knowledge Engineering},
owner = {Cris},
timestamp = {2016.02.24},
url = {http://www.worldscientific.com/doi/abs/10.1142/S0218194013500484},
urldate = {2016-02-25}
}
@article{IO2013_bad,
title = {A systematic review of the empirical validation of object-oriented metrics towards fault-proneness prediction},
author = {Isong, Bassey and Obeten, Ekabua},
year = {2013},
number = {10},
pages = {1513--1540},
volume = {23},
journal = {International Journal of Software Engineering and Knowledge Engineering},
publisher = {World Scientific}
}
@article{Karac_TDD_2018,
author = {I. {Karac} and B. {Turhan}},
journal = {IEEE Software},
title = {What Do We (Really) Know about Test-Driven Development?},
year = {2018},
volume = {35},
number = {4},
pages = {81-85},
abstract = {Test-driven development (TDD) involves more than just testing before coding. This article examines how (and whether) TDD has lived up to its promises. Test-driven development (TDD) is one of the most controversial agile practices in terms of its impact on software quality and programmer productivity.},
keywords = {program testing;software quality;test-driven development;TDD;Productivity;Task analysis;Systematics;Software engineering;Testing;Software quality;test-driven development;TDD;test-first;test-last;software development;software engineering},
doi = {10.1109/MS.2018.2801554},
issn = {1937-4194},
month = {July}
}
@article{Kelly2006,
author = {Kelly, Diane},
title = {A study of design characteristics in evolving software using stability as a criterion},
journal = {Software Engineering, IEEE Transactions on},
year = {2006},
date = {2006-06-19},
volume = {32},
number = {5},
pages = {315--329},
doi = {10.1109/TSE.2006.42},
url = {http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=1642679},
urldate = {2016-03-05},
abstract = {There are many ideas in software design that are considered good practice. However, research is still needed to validate
their contributions to software maintenance. This paper presents a method for examining software systems that have been actively
maintained and used over the long term and are potential candidates for yielding lessons about design. The method relies on a
criterion of stability and a definition of distance to flag design characteristics that have potentially contributed to long-term
maintainability. It is demonstrated by application to an example of long-lived scientific software. The results from this demonstration
show that the method can provide insight into the relative importance of individual elements of a set of design characteristics for the
long-term evolution of software.},
owner = {Cris},
publisher = {IEEE},
timestamp = {2016.03.05}
}
@article{knuth84,
author = {Knuth, Donald E.},
title = {Literate Programming},
year = {1984},
issue_date = {May 1984},
publisher = {Oxford University Press, Inc.},
address = {USA},
volume = {27},
number = {2},
issn = {0010-4620},
url = {https://doi.org/10.1093/comjnl/27.2.97},
doi = {10.1093/comjnl/27.2.97},
journal = {Comput. J.},
month = may,
pages = {97–111},
numpages = {15}
}
@book{larman_applying_2001,
title = {Applying {{UML}} and {{Patterns}}: {{An Introduction}} to {{Object-Oriented Analysis}} and {{Design}} and the {{Unified Process}}},
shorttitle = {Applying {{UML}} and {{Patterns}}},
author = {Larman, Craig},
date = {2001-01-01},
edition = {2nd edition},
publisher = {{Prentice Hall}},
location = {{Upper Saddle River, NJ}},
isbn = {978-0-13-092569-5},
langid = {english},
pagetotal = {627}
}
@article{LarmanPV2001,
author = {Larman, Craig},
title = {Protected Variation: The Importance of Being Closed},
journal = {IEEE Software},
year = {2001},
volume = {18},
number = {3},
month = may,
pages = {89--91},
issn = {0740-7459},
doi = {10.1109/52.922731},
url = {http://dx.doi.org/10.1109/52.922731},
acmid = {626275},
address = {Los Alamitos, CA, USA},
issue_date = {May 2001},
numpages = {3},
publisher = {IEEE Computer Society Press}
}
@article{Lehman1980,
author = {Lehman, Meir M.},
title = {Programs, life cycles, and laws of software evolution},
journal = {Proceedings of the IEEE},
year = {1980},
volume = {68},
number = {9},
pages = {1060--1076},
publisher = {IEEE}
}
@article{LieHol1989,
author = {Lieberherr, K. J. and Holland, I. M.},
title = {Assuring good style for object-oriented programs},
journal = {Software, IEEE},
year = {1989},
volume = {6},
number = {5},
month = sep,
pages = {38--48},
issn = {0740-7459},
doi = {10.1109/52.35588},
abstract = {The language-independent Law of Demeter, which encodes the ideas of encapsulation and modularity in an easy-to-follow form for object-oriented programmers, is presented. The law was developed during the design and implementation of the Demeter system, which provides a high-level interface to class-based, object-oriented systems. Two forms of the law, the class and object forms, are described. Its motivation is to ensure that the software is as modular as possible. Principles covered by the law include coupling control, information hiding, information restriction, information localization, and structured induction. An example is given to show how the law is applied, and valid violations are identified. It is shown how to transform a method that does not satisfy the law into one that does.<>},
keywords = {object-oriented programming;programming environments;user interfaces;Demeter system;Law of Demeter;class forms;coupling control;encapsulation;good style;high-level interface;information hiding;information localization;information restriction;modularity;object forms;object-oriented programs;structured induction;Encapsulation;Programming profession}
}
@inproceedings{Liskov1987,
author = {Liskov, Barbara},
title = {Keynote Address - Data Abstraction and Hierarchy},
booktitle = {Addendum to the Proceedings on Object-oriented Programming Systems, Languages and Applications (Addendum)},
year = {1987},
series = {OOPSLA '87},
pages = {17--34},
address = {New York, NY, USA},
publisher = {ACM},
acmid = {62141},
doi = {10.1145/62138.62141},
isbn = {0-89791-266-7},
location = {Orlando, Florida, USA},
numpages = {18},
url = {http://doi.acm.org/10.1145/62138.62141}
}
@electronic{LOD_Paperboy,
title = {The Paperboy, The Wallet, and The Law Of Demeter},
author = {Bock, David},
url = {http://www.ccs.neu.edu/research/demeter/demeter-method/LawOfDemeter/paper-boy/demeter.pdf},
year = {2000},
organization = {College of Computer and Information Science, Northeastern University},
urldate = {2016-02-09},
cited = {2016-02-09}
}
@article{LR2001,
author = {Lehman, Meir M. and Ramil, Juan F.},
title = {Rules and tools for software evolution planning and management},
journal = {Annals of software engineering},
year = {2001},
volume = {11},
number = {1},
pages = {15--44},
publisher = {Springer}
}
@article{LR2002,
author = {Lehman, Meir M. and Ramil, Juan F.},
title = {Software Evolution and Software Evolution Processes},
journal = {Annals of Software Engineering},
year = {2002},
volume = {14},
number = {1},
pages = {275--309},
abstract = {Most of the software in regular use in businesses and organisations all over the world cannot be completely specified. It cannot be implemented, once and for all. Both the original implementation and the inevitable subsequent evolution (maintenance) are a continual learning experience driven, inter alia, by feedback from the results of the behaviour under execution of the software, as perceived by various stakeholders, by advances and growth in the user organisations and by adaptation to changes in the external world, both independent and as a result of installation and use of the software. Real world, termed type-E, software is essentially evolutionary in nature. The study of the processes of evolution of such software is of considerable interest, as is that of the domains that co-evolve with the software. After briefly discussing the meaning of the term evolution in the context of software, its technology, the software process and related domains, this paper describes some of the facets of the evolution phenomenon and implications to the evolution process as identified during many years of active interest in the topic.},
doi = {10.1023/A:1020557525901},
issn = {1573-7489},
url = {http://dx.doi.org/10.1023/A:1020557525901}
}
@electronic{Martin_SOLID2000,
title = {Design Principles and Design Patterns},
author = {Robert C. Martin},
url = {http://mil-oss.org/resources/objectmentor_design-principles-and-design-patterns.pdf},
year = {2000},
urldate = {2016-02-09}
}
@article{McCabe1976,
author = {McCabe, T. J.},
title = {A Complexity Measure},
journal = {Software Engineering, IEEE Transactions on},
year = {1976},
volume = {SE-2},
number = {4},
month = dec,
pages = {308--320},
issn = {0098-5589},
doi = {10.1109/TSE.1976.233837},
abstract = {This paper describes a graph-theoretic complexity measure and illustrates how it can be used to manage and control program complexity. The paper first explains how the graph-theory concepts apply and gives an intuitive explanation of the graph concepts in programming terms. The control graphs of several actual Fortran programs are then presented to illustrate the correlation between intuitive complexity and the graph-theoretic complexity. Several properties of the graph-theoretic complexity are then proved which show, for example, that complexity is independent of physical size (adding or subtracting functional statements leaves complexity unchanged) and complexity depends only on the decision structure of a program.},
keywords = {Basis;complexity measure;control flow;decomposition;graph theory;independence;linear;modularization;programming;reduction;software;testing;Fluid flow measurement;Graph theory;Linear programming;National security;Software engineering;Software maintenance;Software measurement;Software systems;Software testing;System testing;Basis;complexity measure;control flow;decomposition;graph theory;independence;linear;modularization;programming;reduction;software;testing}
}
@book{McConnell2004,
author = {Steve McConnell},
title = {Code Complete: A Practical Handbook of Software Construction, Second Edition},
year = {2004},
edition = {2},
publisher = {Microsoft Press},
isbn = {9780735619678},
url = {http://amazon.com/o/ASIN/0735619670/},
month = {6},
price = {$49.99},
timestamp = {2016.03.05},
totalpages = {960}
}
@book{Meyer1988,
title = {Object-Oriented Software Construction},
publisher = {Prentice Hall},
year = {1988},
author = {Meyer, Bertrand},
address = {Englewood Cliffs, NJ},
edition = {1},
timestamp = {2016.03.07}
}
@article{Meyer1997,
author = {Meyer, Bertrand},
title = {{UML}: the positive spin},
year = {1997},
volume = {10},
pages = {37--41},
journal = {American Programmer},
owner = {Cris},
timestamp = {2016.03.06}
}
@book{MM2006,
author = {Martin, Robert C. and Martin, Micah},
title = {Agile Principles, Patterns, and Practices in C\#},
year = {2006},
edition = {1},
publisher = {Prentice Hall},
isbn = {9780131857254},
url = {http://amazon.com/o/ASIN/0131857258/},
month = {7},
price = {$74.99},
timestamp = {2016.03.07},
totalpages = {768}
}
@book{monson-haefel_97_2009,
title = {97 {Things} {Every} {Software} {Architect} {Should} {Know}: {Collective} {Wisdom} from the {Experts}},
year = {2009},
editor = {{Monson-Haefel}},
language = {English},
edition = {1},
publisher = {O'Reilly Media},
isbn = {9780596522698},
abstract = {In this truly unique technical book, today's leading software architects present valuable principles on key development issues that go way beyond technology. More than four dozen architects -- including Neal Ford, Michael Nygard, and Bill de hOra -- offer advice for communicating with stakeholders, eliminating complexity, empowering developers, and many more practical lessons they've learned from years of experience. Among the 97 principles in this book, you'll find useful advice such as:Don't Put Your Resume Ahead of the Requirements (Nitin Borwankar)Chances Are, Your Biggest Problem Isn't Technical (Mark Ramm)Communication Is King; Clarity and Leadership, Its Humble Servants (Mark Richards)Simplicity Before Generality, Use Before Reuse (Kevlin Henney)For the End User, the Interface Is the System (Vinayak Hegde)It's Never Too Early to Think About Performance (Rebecca Parsons)To be successful as a software architect, you need to master both business and technology. This book tells you what top software architects think is important and how they approach a project. If you want to enhance your career, 97 Things Every Software Architect Should Know is essential reading.},
address = {Sebastopol, Calif. ; Farnham},
month = feb,
shorttitle = {97 {Things} {Every} {Software} {Architect} {Should} {Know}}
}
@article{MPF2008,
author = {Marcus, A. and Poshyvanyk, D. and Ferenc, R.},
title = {Using the Conceptual Cohesion of Classes for Fault Prediction in Object-Oriented Systems},
year = {2008},
volume = {34},
number = {2},
month = mar,
pages = {287--300},
issn = {0098-5589},
doi = {10.1109/TSE.2007.70768},
abstract = {High cohesion is a desirable property of software as it positively impacts understanding, reuse, and maintenance. Currently proposed measures for cohesion in Object-Oriented (OO) software reflect particular interpretations of cohesion and capture different aspects of it. Existing approaches are largely based on using the structural information from the source code, such as attribute references, in methods to measure cohesion. This paper proposes a new measure for the cohesion of classes in OO software systems based on the analysis of the unstructured information embedded in the source code, such as comments and identifiers. The measure, named the Conceptual Cohesion of Classes (C3), is inspired by the mechanisms used to measure textual coherence in cognitive psychology and computational linguistics. This paper presents the principles and the technology that stand behind the C3 measure. A large case study on three open source software systems is presented which compares the new measure with an extensive set of existing metrics and uses them to construct models that predict software faults. The case study shows that the novel measure captures different aspects of class cohesion compared to any of the existing cohesion measures. In addition, combining C3 with existing structural cohesion metrics proves to be a better predictor of faulty classes when compared to different combinations of structural cohesion metrics.},
journal = {Software Engineering, IEEE Transactions on},
keywords = {object-oriented programming;software fault tolerance;software metrics;conceptual class cohesion;object-oriented software system;open source software system;software fault prediction;software metrics;Code documentation;Document analysis;Document indexing;Maintainability;Metrics/Measurement;Quality analysis and evaluation;Restructuring;and reengineering;reverse engineering},
owner = {Cris},
timestamp = {2016.02.14}
}
@inreference{noauthor_latex_2022,
title = {{LaTeX}},
rights = {Creative Commons Attribution-{ShareAlike} License},
url = {https://en.wikipedia.org/w/index.php?title=LaTeX&oldid=1114993597},
abstract = {{LaTeX} ( {LAH}-tekh or {LAY}-tekh, often stylized as {LaTeX}) is a software system for document preparation. When writing, the writer uses plain text as opposed to the formatted text found in {WYSIWYG} word processors like Microsoft Word, {LibreOffice} Writer and Apple Pages. The writer uses markup tagging conventions to define the general structure of a document to stylise text throughout a document (such as bold and italics), and to add citations and cross-references. A {TeX} distribution such as {TeX} Live or {MiKTeX} is used to produce an output file (such as {PDF} or {DVI}) suitable for printing or digital distribution.
{LaTeX} is widely used in academia for the communication and publication of scientific documents in many fields, including mathematics, computer science, engineering, physics, chemistry, economics, linguistics, quantitative psychology, philosophy, and political science. It also has a prominent role in the preparation and publication of books and articles that contain complex multilingual materials, such as Arabic and Greek. {LaTeX} uses the {TeX} typesetting program for formatting its output, and is itself written in the {TeX} macro language.
{LaTeX} can be used as a standalone document preparation system, or as an intermediate format. In the latter role, for example, it is sometimes used as part of a pipeline for translating {DocBook} and other {XML}-based formats to {PDF}. The typesetting system offers programmable desktop publishing features and extensive facilities for automating most aspects of typesetting and desktop publishing, including numbering and cross-referencing of tables and figures, chapter and section headings, graphics, page layout, indexing and bibliographies.
Like {TeX}, {LaTeX} started as a writing tool for mathematicians and computer scientists, but even from early in its development, it has also been taken up by scholars who needed to write documents that include complex math expressions or non-Latin scripts, such as Arabic, Devanagari and Chinese.{LaTeX} is intended to provide a high-level, descriptive markup language that accesses the power of {TeX} in an easier way for writers. In essence, {TeX} handles the layout side, while {LaTeX} handles the content side for document processing. {LaTeX} comprises a collection of {TeX} macros and a program to process {LaTeX} documents, and because the plain {TeX} formatting commands are elementary, it provides authors with ready-made commands for formatting and layout requirements such as chapter headings, footnotes, cross-references and bibliographies.
{LaTeX} was originally written in the early 1980s by Leslie Lamport at {SRI} International. The current version is {LaTeX}2e (stylised as {LaTeX}2ε), released in 1994, but updated in 2020. {LaTeX}3 ({LaTeX}3) has been under long-term development since the early 1990s. {LaTeX} is free software and is distributed under the {LaTeX} Project Public License ({LPPL}).},
booktitle = {Wikipedia},
urldate = {2022-10-26},
date = {2022-10-09},
langid = {english},
note = {Page Version {ID}: 1114993597}
}
@inreference{noauthor_pandoc_2022,
title = {Pandoc},
rights = {Creative Commons Attribution-{ShareAlike} License},
url = {https://en.wikipedia.org/w/index.php?title=Pandoc&oldid=1116852485},
abstract = {Pandoc is a free-software document converter, widely used as a writing tool (especially by scholars) and as a basis for publishing workflows. It was created by John {MacFarlane}, a philosophy professor at the University of California, Berkeley.},
booktitle = {Wikipedia},
urldate = {2022-10-26},
date = {2022-10-18},
langid = {english},
note = {Page Version {ID}: 1116852485}
}
@inreference{noauthor_plantuml_2022,
title = {{PlantUML}},
rights = {Creative Commons Attribution-{ShareAlike} License},
url = {https://en.wikipedia.org/w/index.php?title=PlantUML&oldid=1111009429},
abstract = {{PlantUML} is an open-source tool allowing users to create diagrams from a plain text language. Besides various {UML} diagrams, {PlantUML} has support for various other software development related formats (such as Archimate, Block diagram, {BPMN}, C4, Computer network diagram, {ERD}, Gantt chart, Mind map, and {WBD}), as well as visualisation of {JSON} and {YAML} files.
The language of {PlantUML} is an example of a domain-specific language. Besides its own {DSL}, {PlantUML} also understands {AsciiMath}, Creole, {DOT}, and {LaTeX}. It uses Graphviz software to lay out its diagrams and Tikz for {LaTeX} support. Images can be output as {PNG}, {SVG}, {LaTeX} and even {ASCII} art. {PlantUML} has also been used to allow blind people to design and read {UML} diagrams.},
booktitle = {Wikipedia},
urldate = {2022-10-26},
date = {2022-09-18},
langid = {english},
note = {Page Version {ID}: 1111009429}
}
@online{noauthor_quarto_2023,
title = {Quarto},
url = {https://quarto.org/},
abstract = {Quarto® is an open-source scientific and technical publishing system built on Pandoc.},
urldate = {2023-02-14},
date = {2023-02-14},
langid = {english}
}
@article{oakley_coping_2004,
title = {Coping with Hitchhikers and Couch Potatoes on Teams},
author = {Oakley, Barbara and Felder, RM and Brent, R and Elhajj, I},
year = {2004},
volume = {2},
pages = {32--34},
journal = {Journal of Student Centered Learning},
url = {https://www.cs.cornell.edu/courses/cs3110/2018fa/teams/hitchhikers.html},
number = {1}
}
@article{oakley2004turning,
title = {Turning student groups into effective teams},
author = {Oakley, Barbara and Felder, Richard M and Brent, Rebecca and Elhajj, Imad},
journal = {Journal of student centered learning},
volume = {2},
number = {1},
pages = {9--34},
year = {2004}
}
@book{oakley2021uncommon,
title = {Uncommon sense teaching: Practical insights in brain science to help students learn},
author = {Oakley, Barbara and Sejnowski, Terrence J},
year = {2021},
publisher = {Penguin}
}
@techreport{Parnas1971,
author = {Parnas, David Lorge},
title = {Information distribution aspects of design methodology},
institution = {Carnegie Mellon University},
year = {1971},
type = {Technical report},
url = {http://repository.cmu.edu/compsci/1829/},
urldate = {2016-03-03}
}
@article{PC1986,
author = {Parnas, D. L. and Clements, P. C.},
title = {A Rational Design Process: How and Why to Fake It},
journal = {IEEE Transactions on Software Engineering},
year = {1986},
volume = {12},
number = {2},
month = feb,
pages = {251--257},
issn = {0098-5589},
url = {http://dl.acm.org/citation.cfm?id=9794.9800},
acmid = {9800},
address = {Piscataway, NJ, USA},
issue_date = {Feb. 1986},
numpages = {7},
publisher = {IEEE Press}
}
@inproceedings{Petre2013,
title = {{UML} in Practice},
author = {Petre, Marian},
booktitle = {Proceedings of the 2013 International Conference on Software Engineering},
year = {2013},
isbn = {978-1-4673-3076-3},
location = {San Francisco, CA, USA},
pages = {722--731},
publisher = {IEEE Press},
series = {ICSE '13},
url = {http://dl.acm.org/citation.cfm?id=2486788.2486883},
acmid = {2486883},
address = {Piscataway, NJ, USA},
numpages = {10}
}
@book{PM2014,
title = {Software Engineering: A Practitioner's Approach},
publisher = {McGraw-Hill Education},
year = {2014},
author = {Pressman, Roger and Maxim, Bruce},
edition = {8},
month = {1},
isbn = {9780078022128},
timestamp = {2016.03.04},
totalpages = {976},
url = {http://amazon.com/o/ASIN/0078022126/}
}
@inproceedings{poole2001MDA,
author = {Poole, John D.},
title = {Model-driven architecture: Vision, standards and emerging technologies},
booktitle = {ECOOP Workshop on Metamodeling and Adaptive Object Models},
year = {2001},
owner = {Cris},
timestamp = {2016.02.28}
}
@article{PT1976,
author = {Peters, Lawrence J. and Tripp, Leonard L.},
title = {Is software design wicked},
journal = {Datamation},
year = {1976},
volume = {22},
number = {5},
pages = {127},
owner = {Cris},
publisher = {CAHNERS-DENVER PUBLISHING CO 8773 S RIDGELINE BLVD, HIGHLANDS RANCH, CO 80126-2329},