Foreword |
|
xv | |
Preface |
|
xix | |
Acknowledgments |
|
xxiii | |
|
|
xxv | |
|
Part I The Software Landscape |
|
|
1 | (90) |
|
|
3 | (14) |
|
|
|
3 | (2) |
|
|
5 | (5) |
|
|
6 | (1) |
|
1.2.1.1 Parallel Processing |
|
|
7 | (1) |
|
1.2.1.2 IBM Watson Technology Platform |
|
|
7 | (1) |
|
1.2.1.3 Quantum Computer and the Memcomputer |
|
|
7 | (1) |
|
|
8 | (1) |
|
1.2.3 Digital Natives Lifelogging and the Quantified Self |
|
|
9 | (1) |
|
|
10 | (1) |
|
1.3 Software Crisis 2.0: The Bottleneck |
|
|
10 | (3) |
|
1.3.1 Significant Increase in Volume of Software Required |
|
|
11 | (1) |
|
1.3.2 New Skill Sets Required for Software Developers |
|
|
12 | (1) |
|
1.3.2.1 From Runtime to Design-Time Switch |
|
|
13 | (1) |
|
|
13 | (4) |
|
|
14 | (3) |
|
2 Simplicity as a Driver for Agile Innovation |
|
|
17 | (18) |
|
|
|
2.1 Motivation and Background |
|
|
17 | (3) |
|
|
20 | (2) |
|
|
22 | (5) |
|
2.4 Less Is More: The 80/20 Principle |
|
|
27 | (1) |
|
2.5 Simplicity: A Never Ending Challenge |
|
|
28 | (1) |
|
|
29 | (1) |
|
|
29 | (6) |
|
|
30 | (1) |
|
|
30 | (5) |
|
3 Intercomponent Dependency Issues in Software Ecosystems |
|
|
35 | (23) |
|
|
|
|
|
35 | (1) |
|
|
36 | (6) |
|
|
36 | (2) |
|
3.2.2 Identifying and Retrieving Dependency Information |
|
|
38 | (1) |
|
3.2.3 Satisfying Dependencies and Conflicts |
|
|
39 | (1) |
|
|
40 | (1) |
|
3.2.5 Inter-Project Cloning |
|
|
41 | (1) |
|
3.3 First Case Study: Debian |
|
|
42 | (4) |
|
|
42 | (2) |
|
3.3.2 Aggregate Analysis of Strong Conflicts |
|
|
44 | (1) |
|
3.3.3 Package-Level Analysis of Strong Conflicts |
|
|
45 | (1) |
|
3.4 Second Case Study: The R Ecosystem |
|
|
46 | (7) |
|
|
46 | (1) |
|
3.4.2 R Package Repositories |
|
|
47 | (3) |
|
3.4.3 Interrepository Dependencies |
|
|
50 | (2) |
|
3.4.4 Intrarepository Dependencies |
|
|
52 | (1) |
|
|
53 | (5) |
|
|
54 | (1) |
|
|
54 | (4) |
|
4 Triangulating Research Dissemination Methods: A Three-Pronged Approach to Closing the Research-Practice Divide |
|
|
58 | (33) |
|
|
|
|
|
|
|
|
58 | (2) |
|
4.2 Meeting the Needs of Industry |
|
|
60 | (3) |
|
4.2.1 Commercialization Feasibility Study |
|
|
61 | (1) |
|
4.2.2 Typical GSE Issues Were Reported |
|
|
62 | (1) |
|
4.2.2.1 Why Don't Practitioners Read the Academic Literature That Addresses Their Problems? |
|
|
63 | (1) |
|
4.3 The Theory--Practice Divide |
|
|
63 | (3) |
|
4.3.1 Making Research Accessible |
|
|
64 | (1) |
|
4.3.2 Where Do Practitioners Really Go for Support? |
|
|
65 | (1) |
|
4.4 Solutions: Rethinking Our Dissemination Methods |
|
|
66 | (10) |
|
4.4.1 Workshops, Outreach, and Seminars |
|
|
66 | (3) |
|
|
69 | (1) |
|
|
70 | (1) |
|
4.4.4 Practitioner Ph.D.'s |
|
|
71 | (2) |
|
4.4.5 Industry Fellowships |
|
|
73 | (1) |
|
4.4.6 Commercializing Research |
|
|
74 | (2) |
|
4.5 Obstacles to Research Relevance |
|
|
76 | (8) |
|
4.5.1 The (IR)Relevance of Academic Software Engineering Research |
|
|
76 | (1) |
|
4.5.2 Barriers to Research Commercialization |
|
|
77 | (1) |
|
4.5.3 Academic Barriers to Commercialization |
|
|
78 | (1) |
|
4.5.4 Business Barriers to Commercialization |
|
|
79 | (1) |
|
4.5.5 Organizational Barriers to Commercialization |
|
|
80 | (1) |
|
4.5.6 Funding Barriers to Commercialization |
|
|
81 | (3) |
|
|
84 | (7) |
|
4.6.1 Research and Practice Working Together to Innovate |
|
|
85 | (1) |
|
|
86 | (1) |
|
|
86 | (1) |
|
|
86 | (5) |
|
Part II Autonomous Software Systems |
|
|
91 | (48) |
|
5 Apoptotic Computing: Programmed Death by Default for Software Technologies |
|
|
93 | (14) |
|
|
|
|
93 | (1) |
|
|
94 | (2) |
|
5.3 Apoptosis within Autonomic Agents |
|
|
96 | (2) |
|
5.4 NASA SWARM Concept Missions |
|
|
98 | (2) |
|
5.5 The Evolving State-of-the-Art Apoptotic Computing |
|
|
100 | (2) |
|
5.5.1 Strong versus Weak Apoptotic Computing |
|
|
100 | (1) |
|
|
101 | (1) |
|
5.6 "This Message Will Self-Destruct": Commercial Applications |
|
|
102 | (1) |
|
|
102 | (5) |
|
|
103 | (1) |
|
|
103 | (4) |
|
6 Requirements Engineering for Adaptive and Self-Adaptive Systems |
|
|
107 | (14) |
|
|
|
|
107 | (1) |
|
|
108 | (1) |
|
6.3 System Goals and Goals Models |
|
|
109 | (2) |
|
6.4 Self-* Objectives and Autonomy-Assistive Requirements |
|
|
111 | (5) |
|
6.4.1 Constraints and Self-* Objectives |
|
|
113 | (1) |
|
6.4.2 Mission Analysis and Self-* Objectives |
|
|
114 | (2) |
|
6.5 Recording and Formalizing Autonomy Requirements |
|
|
116 | (2) |
|
6.5.1 ARE Requirements Chunk |
|
|
117 | (1) |
|
|
118 | (3) |
|
|
119 | (1) |
|
|
119 | (2) |
|
7 Toward Artificial Intelligence through Knowledge Representation for Awareness |
|
|
121 | (18) |
|
|
|
|
121 | (1) |
|
7.2 Knowledge Representation |
|
|
122 | (4) |
|
|
122 | (1) |
|
|
122 | (1) |
|
7.2.3 Semantic Networks and Concept Maps |
|
|
122 | (1) |
|
|
123 | (1) |
|
|
123 | (1) |
|
7.2.6 Completeness and Consistency |
|
|
124 | (1) |
|
|
125 | (1) |
|
|
125 | (1) |
|
|
126 | (5) |
|
7.3.1 Modeling Knowledge with KnowLang |
|
|
127 | (2) |
|
7.3.2 Knowledge Representation for Self-Adaptive Behavior |
|
|
129 | (1) |
|
|
129 | (2) |
|
|
131 | (5) |
|
7.4.1 Classes of Awareness |
|
|
132 | (1) |
|
7.4.2 Structuring Awareness |
|
|
133 | (1) |
|
7.4.3 Implementing Awareness |
|
|
134 | (2) |
|
7.5 Challenges and Conclusion |
|
|
136 | (3) |
|
|
136 | (3) |
|
Part III Software Development and Evolution |
|
|
139 | (102) |
|
8 Continuous Model-Driven Engineering |
|
|
141 | (14) |
|
|
|
|
|
141 | (2) |
|
8.2 Continuous Model-Driven Engineering |
|
|
143 | (4) |
|
|
147 | (3) |
|
|
150 | (5) |
|
|
150 | (1) |
|
|
151 | (4) |
|
9 Rethinking Functional Requirements: A Novel Approach Categorizing System and Software Requirements |
|
|
155 | (33) |
|
|
|
155 | (3) |
|
9.2 Discussion: Classifying Requirements -- Why and How |
|
|
158 | (6) |
|
9.2.1 On Classifying Requirements as Being Functional |
|
|
158 | (1) |
|
9.2.2 "Nonfunctional" Requirements and Their Characterization |
|
|
159 | (1) |
|
9.2.3 Limitations of Classification Due to Heterogeneity and Lacking Precision |
|
|
160 | (2) |
|
9.2.4 Approach: System Model-Based Categorization of Requirements |
|
|
162 | (1) |
|
9.2.4.1 Fundamentals on Requirements and System Models |
|
|
162 | (1) |
|
9.2.4.2 Pragmatic vs. Model-Based Formulation of Requirements |
|
|
163 | (1) |
|
|
164 | (8) |
|
9.3.1 The Basics: System Modeling Ontology |
|
|
164 | (3) |
|
9.3.1.1 Data Models -- Data Types |
|
|
167 | (1) |
|
9.3.1.2 Interface Behavior |
|
|
167 | (1) |
|
9.3.1.3 State Machines by State Transition Functions |
|
|
168 | (1) |
|
9.3.1.4 Systems and Their Functionality |
|
|
169 | (1) |
|
|
169 | (1) |
|
9.3.1.6 Probabilistic Interface View |
|
|
170 | (1) |
|
9.3.2 System Views and Levels of Abstractions |
|
|
171 | (1) |
|
9.3.3 Structuring Systems into Views |
|
|
172 | (1) |
|
9.4 Categorizing System Properties |
|
|
172 | (6) |
|
9.4.1 System Behavior: Behavioral Properties |
|
|
173 | (1) |
|
9.4.1.1 Functional Properties: Logical and Probabilistic Interface Behavior |
|
|
174 | (1) |
|
9.4.1.2 Behavioral Glass Box View: Logical and Probabilistic Behavior |
|
|
174 | (1) |
|
9.4.2 Variations in Modeling System Behavior |
|
|
175 | (1) |
|
9.4.3 System Context: Properties of the Context |
|
|
176 | (1) |
|
9.4.4 Nonbehavioral System Properties: System Representation |
|
|
177 | (1) |
|
9.5 Categorizing Requirements |
|
|
178 | (8) |
|
9.5.1 A Rough Categorization of Requirements |
|
|
179 | (2) |
|
9.5.1.1 Functional Requirements: Logic, Time, and Probability |
|
|
181 | (1) |
|
9.5.1.2 Actually Nonfunctional Requirements: Internal Behavior and Representation |
|
|
182 | (1) |
|
9.5.1.3 Quality Requirements |
|
|
182 | (1) |
|
9.5.2 A Novel Taxonomy of Requirements? |
|
|
183 | (3) |
|
|
186 | (2) |
|
|
187 | (1) |
|
|
187 | (1) |
|
10 The Power of Ten---Rules for Developing Safety Critical Code |
|
|
188 | (14) |
|
|
|
188 | (1) |
|
|
189 | (1) |
|
|
190 | (2) |
|
10.4 Ten Rules for Safety Critical Code |
|
|
192 | (8) |
|
|
200 | (2) |
|
|
201 | (1) |
|
11 Seven Principles of Software Testing |
|
|
202 | (6) |
|
|
|
202 | (1) |
|
|
202 | (1) |
|
11.3 Tests and Specifications |
|
|
203 | (1) |
|
|
204 | (1) |
|
|
204 | (1) |
|
11.6 Manual and Automatic Test Cases |
|
|
205 | (1) |
|
|
205 | (1) |
|
|
206 | (1) |
|
|
207 | (1) |
|
|
207 | (1) |
|
12 Analyzing the Evolution of Database Usage in Data-Intensive Software Systems |
|
|
208 | (33) |
|
|
|
|
|
|
|
|
208 | (2) |
|
|
210 | (2) |
|
|
211 | (1) |
|
12.3 Analyzing the Usage of ORM Technologies in Database-Driven Java Systems |
|
|
212 | (3) |
|
|
213 | (2) |
|
12.4 Coarse-Grained Analysis of Database Technology Usage |
|
|
215 | (7) |
|
12.4.1 Selected Java Projects and Relational Database Technologies |
|
|
215 | (1) |
|
12.4.2 Evolution of Database Technology Usage |
|
|
216 | (1) |
|
12.4.3 Co-Occurrence of Database Technologies |
|
|
217 | (2) |
|
12.4.4 Introduction and Disappearance of Database Technologies |
|
|
219 | (3) |
|
|
222 | (1) |
|
12.5 Fine-Grained Analysis of Database Technology Usage |
|
|
222 | (14) |
|
12.5.1 Analysis Background |
|
|
222 | (2) |
|
|
224 | (2) |
|
|
226 | (9) |
|
|
235 | (1) |
|
|
236 | (1) |
|
|
237 | (4) |
|
|
238 | (1) |
|
|
238 | (3) |
|
Part IV Software Product Lines and Variability |
|
|
241 | (30) |
|
13 Dynamic Software Product Lines |
|
|
243 | (4) |
|
|
|
|
|
|
243 | (1) |
|
13.2 Product Line Engineering |
|
|
243 | (1) |
|
13.3 Software Product Lines |
|
|
244 | (1) |
|
|
245 | (2) |
|
|
246 | (1) |
|
14 Cutting-Edge Topics on Dynamic Software Variability |
|
|
247 | (24) |
|
|
|
|
|
247 | (1) |
|
14.2 The Postdeployment Era |
|
|
248 | (1) |
|
14.3 Runtime Variability Challenges Revisited |
|
|
249 | (4) |
|
14.4 What Industry Needs from Variability at Any Time? |
|
|
253 | (2) |
|
14.5 Approaches and Techniques for Dynamic Variability Adoption |
|
|
255 | (11) |
|
|
266 | (1) |
|
|
267 | (4) |
|
|
268 | (3) |
|
|
271 | (22) |
|
15 The Quest for Formal Methods in Software Product Line Engineering |
|
|
273 | (9) |
|
|
|
|
273 | (1) |
|
15.2 SPLE: Benefits and Limitations |
|
|
274 | (1) |
|
15.3 Applying Formal Methods to SPLE |
|
|
275 | (2) |
|
|
275 | (1) |
|
15.3.2 Uniform Formal Modeling Framework |
|
|
275 | (1) |
|
|
275 | (1) |
|
|
275 | (1) |
|
|
276 | (1) |
|
15.3.6 Behavioral Specification |
|
|
276 | (1) |
|
15.3.7 Variability, Evolution, and Reuse |
|
|
276 | (1) |
|
|
276 | (1) |
|
|
276 | (1) |
|
|
277 | (1) |
|
|
277 | (1) |
|
15.4 The Abstract Behavioral Specification Language |
|
|
277 | (2) |
|
15.5 Model-Centric SPL Development with ABS |
|
|
279 | (1) |
|
15.6 Remaining Challenges |
|
|
280 | (1) |
|
15.6.1 Scaling to Family-Based Analysis |
|
|
280 | (1) |
|
15.6.2 Integration into Existing Workflows |
|
|
280 | (1) |
|
|
280 | (1) |
|
|
280 | (1) |
|
|
281 | (1) |
|
|
281 | (1) |
|
16 Formality, Agility, Security, and Evolution in Software Engineering |
|
|
282 | (11) |
|
|
|
|
|
|
|
282 | (1) |
|
|
283 | (1) |
|
|
283 | (1) |
|
|
284 | (1) |
|
|
285 | (4) |
|
|
289 | (4) |
|
|
290 | (1) |
|
|
290 | (3) |
|
|
293 | (34) |
|
17 Cloud Computing: An Exploration of Factors Impacting Adoption |
|
|
295 | (20) |
|
|
|
|
295 | (1) |
|
17.2 Theoretical Background |
|
|
296 | (2) |
|
17.2.1 Defining Cloud Computing |
|
|
296 | (1) |
|
|
296 | (2) |
|
|
298 | (5) |
|
17.3.1 Selection of Participants |
|
|
298 | (1) |
|
17.3.2 Data Collection and Analysis |
|
|
298 | (5) |
|
17.4 Findings and Analysis |
|
|
303 | (7) |
|
17.4.1 Technological Factors Impacting Adoption |
|
|
303 | (1) |
|
17.4.1.1 Relative Advantage |
|
|
303 | (1) |
|
|
304 | (1) |
|
|
305 | (1) |
|
|
305 | (1) |
|
17.4.2 Organizational Factors Impacting Adoption |
|
|
306 | (1) |
|
17.4.2.1 Improved Collaboration |
|
|
306 | (1) |
|
17.4.2.2 Traceability and Auditability |
|
|
306 | (1) |
|
17.4.2.3 IT Manager Resistance |
|
|
307 | (1) |
|
17.4.3 Environmental Factors Impacting Adoption |
|
|
308 | (1) |
|
17.4.3.1 Regulatory and Legal Environment |
|
|
308 | (1) |
|
17.4.3.2 Real World Examples |
|
|
309 | (1) |
|
17.5 Discussion and Conclusion |
|
|
310 | (5) |
|
17.5.1 Limitations and Future Research |
|
|
311 | (1) |
|
|
311 | (4) |
|
18 A Model-Centric Approach to the Design of Resource-Aware Cloud Applications |
|
|
315 | (12) |
|
|
|
18.1 Capitalizing on the Cloud |
|
|
315 | (1) |
|
|
316 | (2) |
|
18.2.1 Empowering the Designer |
|
|
316 | (1) |
|
18.2.2 Deployment Aspects at Design Time |
|
|
316 | (2) |
|
18.3 Controlling Deployment in the Design Phase |
|
|
318 | (1) |
|
18.4 ABS: Modeling Support for Designing Resource-Aware Applications |
|
|
319 | (1) |
|
18.5 Resource Modeling with ABS |
|
|
320 | (4) |
|
|
324 | (1) |
|
18.6.1 Fine-Grained Provisioning |
|
|
324 | (1) |
|
18.6.2 Tighter Provisioning |
|
|
324 | (1) |
|
18.6.3 Application-Specific Resource Control |
|
|
324 | (1) |
|
18.6.4 Application-Controlled Elasticity |
|
|
324 | (1) |
|
|
325 | (2) |
|
|
325 | (1) |
|
|
325 | (2) |
Index |
|
327 | |