E-Book, Englisch, 258 Seiten
Suryanarayana / Samarthyam / Sharma Refactoring for Software Design Smells
1. Auflage 2014
ISBN: 978-0-12-801646-6
Verlag: Elsevier Science & Techn.
Format: EPUB
Kopierschutz: 6 - ePub Watermark
Managing Technical Debt
E-Book, Englisch, 258 Seiten
ISBN: 978-0-12-801646-6
Verlag: Elsevier Science & Techn.
Format: EPUB
Kopierschutz: 6 - ePub Watermark
Girish Suryanarayana is currently a Senior Research Scientist at Research and Technology Center, Siemens Technology and Services Pvt. Ltd. Bangalore, India. At Siemens, he is involved in providing architectural guidance to software development teams, pursuing research in topics related to software architecture and cloud computing, and conducting internal software design and architecture training. Girish is a member of the IEEE Software Advisory Board and is the General Chair for the IEEE Software Experts Summit 2014 conference. He actively contributes to software engineering conferences. In 2013, he was on the program committee for the Software Engineering In Practice (SEIP) track at the 35th International Conference on Software Engineering (ICSE). Girish received a PhD in Information and Computer Science from the University of California, Irvine, in 2007. His research interests include software architecture, design patterns, design smells, refactoring, cloud computing, and reputation-based trust management systems. He is an IEEE-certified Software Engineering Certified Instructor (SECI) and regularly conducts training for the IEEE SWEBOK Certificate Program (SCP) and IEEE Certified Software Development Associate (CSDA) programs. He has also helped contribute course material for the IEEE's SWEBOK Certificate Program (SCP). He is regularly invited by local universities to deliver guest lectures on software architecture and design topics. Additionally, he is the General Chair for IEEE SES (Software Expert Summit) 2014 which is being organized by IEEE Software.
Autoren/Hrsg.
Weitere Infos & Material
1;Front
Cover;1
2;Refactoring for
Software Design
Smells;4
3;Copyright;5
4;Dedication;6
5;Contents;8
6;Foreword by Grady Booch;10
7;Foreword by Dr. Stéphane Ducasse;12
8;Preface;14
8.1;WHAT IS THIS BOOK ABOUT?;14
8.2;WHAT DOES THIS BOOK COVER?;14
8.3;WHO SHOULD READ THIS BOOK?;15
8.4;WHAT ARE THE PREREQUISITES FOR READING THIS BOOK?;16
8.5;HOW TO READ THIS BOOK?;16
8.6;WHERE CAN I FIND MORE INFORMATION?;17
8.7;WHY DID WE WRITE THIS BOOK?;18
9;Acknowledgments;20
10;Chapter 1 - Technical Debt;22
10.1;1.1 WHAT IS TECHNICAL DEBT?;23
10.2;1.2 WHAT CONSTITUTES TECHNICAL DEBT?;23
10.3;1.3 WHAT IS THE IMPACT OF TECHNICAL DEBT?;25
10.4;1.4 WHAT CAUSES TECHNICAL DEBT?;27
10.5;1.5 HOW TO MANAGE TECHNICAL DEBT?;28
11;Chapter 2 - Design Smells;30
11.1;2.1 WHY CARE ABOUT SMELLS?;31
11.2;2.2 WHAT CAUSES SMELLS?;33
11.3;2.3 HOW TO ADDRESS SMELLS?;36
11.4;2.4 WHAT SMELLS ARE COVERED IN THIS BOOK?;36
11.5;2.5 A CLASSIFICATION OF DESIGN SMELLS;36
12;Chapter 3 - Abstraction Smells;42
12.1;3.1 MISSING ABSTRACTION;45
12.2;3.2 IMPERATIVE ABSTRACTION;50
12.3;3.3 INCOMPLETE ABSTRACTION;55
12.4;3.4 MULTIFACETED ABSTRACTION;61
12.5;3.5 UNNECESSARY ABSTRACTION;65
12.6;3.6 UNUTILIZED ABSTRACTION;70
12.7;3.7 DUPLICATE ABSTRACTION;75
13;Chapter 4 - Encapsulation Smells;82
13.1;4.1 DEFICIENT ENCAPSULATION;84
13.2;4.2 LEAKY ENCAPSULATION;93
13.3;4.3 MISSING ENCAPSULATION;99
13.4;4.4 UNEXPLOITED ENCAPSULATION;107
14;Chapter 5 - Modularization Smells;114
14.1;5.1 BROKEN MODULARIZATION;117
14.2;5.2 INSUFFICIENT MODULARIZATION;123
14.3;5.3 CYCLICALLY-DEPENDENT MODULARIZATION;129
14.4;5.4 HUB-LIKE MODULARIZATION;139
15;Chapter 6 - Hierarchy Smells;144
15.1;6.1 MISSING HIERARCHY;148
15.2;6.2 UNNECESSARY HIERARCHY;155
15.3;6.3 UNFACTORED HIERARCHY;161
15.4;6.4 WIDE HIERARCHY;171
15.5;6.5 SPECULATIVE HIERARCHY;175
15.6;6.6 DEEP HIERARCHY;178
15.7;6.7 REBELLIOUS HIERARCHY;184
15.8;6.8 BROKEN HIERARCHY;194
15.9;6.9 MULTIPATH HIERARCHY;203
15.10;6.10 CYCLIC HIERARCHY;208
16;Chapter 7 - The Smell Ecosystem;214
16.1;7.1 THE ROLE OF CONTEXT;214
16.2;7.2 INTERPLAY OF SMELLS;217
17;Chapter 8 - Repaying Technical Debt in Practice;224
17.1;8.1 THE TOOLS;224
17.2;8.2 THE PROCESS;227
17.3;8.3 THE PEOPLE;233
18;Appendix A - Software Design Principles;234
18.1;A.1 ABSTRACTION;234
18.2;A.2 ACYCLIC DEPENDENCIES PRINCIPLE;234
18.3;A.3 DON’T REPEAT YOURSELF PRINCIPLE;234
18.4;A.4 ENCAPSULATION;235
18.5;A.5 INFORMATION HIDING PRINCIPLE;235
18.6;A.6 KEEP IT SIMPLE SILLY;235
18.7;A.7 LISKOV’S SUBSTITUTION PRINCIPLE;235
18.8;A.8 HIERARCHY;236
18.9;A.9 MODULARIZATION;236
18.10;A.10 OPEN/CLOSE PRINCIPLE;236
18.11;A.11 SINGLE RESPONSIBILITY PRINCIPLE;236
18.12;A.12 VARIATION ENCAPSULATION PRINCIPLE;236
19;Appendix B - Tools for Repaying Technical Debt;238
20;Appendix C - Notations for Figures;244
21;Appendix D - Suggested Reading;246
21.1;D.1 ESSENTIALS;246
21.2;D.2 REFACTORING AND REENGINEERING;246
21.3;D.3 PATTERNS AND ANTI-PATTERNS;247
21.4;D.4 TECHNICAL DEBT;247
22;Bibliography;248
23;Index;252
Technical Debt
Abstract
Technical debt is the debt that accrues when developers knowingly or unknowingly make wrong or nonoptimal design decisions. Technical debt is akin to financial debt. Allowing a small debt to occur is acceptable provided it is paid soon enough; not paying the debt for a longer period invites bigger troubles. Similarly, in a software project, technical debt needs to be repaid regularly to avoid its accumulation. Large technical debt significantly degrades the quality of the software system and affects the productivity of the development team. In extreme cases, when the accumulated technical debt becomes so huge that it cannot be paid off anymore, the product has to be abandoned. This chapter emphasizes the importance of the concept of technical debt, the factors that contribute to it, and its impact on software projects.
Keywords
Causes of technical debt; Design debt; Project failures; Refactoring; Technical bankruptcy; Technical debt
Design smells are certain structures in the design that indicate violation of fundamental design principles and negatively impact design quality.
1.1. What is Technical Debt?
Technical debt is the debt that accrues when you knowingly or unknowingly make wrong or non-optimal design decisions.
1.2. What Constitutes Technical Debt?
FIGURE 1.1 Dimensions of technical debt.




