Muutke küpsiste eelistusi

Software Technology: 10 Years of Innovation in IEEE Computer [Kõva köide]

Edited by
  • Formaat: Hardback, 384 pages, kõrgus x laius x paksus: 231x152x23 mm, kaal: 703 g
  • Ilmumisaeg: 09-Nov-2018
  • Kirjastus: Wiley-Blackwell
  • ISBN-10: 111917421X
  • ISBN-13: 9781119174219
Teised raamatud teemal:
  • Formaat: Hardback, 384 pages, kõrgus x laius x paksus: 231x152x23 mm, kaal: 703 g
  • Ilmumisaeg: 09-Nov-2018
  • Kirjastus: Wiley-Blackwell
  • ISBN-10: 111917421X
  • ISBN-13: 9781119174219
Teised raamatud teemal:

A comprehensive collection of influential articles from one of IEEE Computer magazine’s most popular columns

This book is a compendium of extended and revised publications that have appeared in the “Software Technologies” column of IEEE Computer magazine, which covers key topics in software engineering such as software development, software correctness and related techniques, cloud computing, self-managing software and self-aware systems. Emerging properties of software technology are also discussed in this book, which will help refine the developing framework for creating the next generation of software technologies and help readers predict future developments and challenges in the field.

Software Technology provides guidance on the challenges of developing software today and points readers to where the best advances are being made. Filled with one insightful article after another, the book serves to inform the conversation about the next wave of software technology advances and applications. In addition, the book:

  • Introduces the software landscape and challenges associated with emerging technologies
  • Covers the life cycle of software products, including concepts, requirements, development, testing, verification, evolution, and security
  • Contains rewritten and updated articles by leaders in the software industry
  • Covers both theoretical and practical topics

Informative and thought-provoking throughout, Software Technology is a valuable book for everyone in the software engineering community that will inspire as much as it will teach all who flip through its pages.

Foreword xv
Preface xix
Acknowledgments xxiii
List of Contributors
xxv
Part I The Software Landscape
1(90)
1 Software Crisis 2.0
3(14)
Brian Fitzgerald
1.1 Software Crisis 1.0
3(2)
1.2 Software Crisis 2.0
5(5)
1.2.1 Hardware Advances
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)
1.2.2 "Big Data"
8(1)
1.2.3 Digital Natives Lifelogging and the Quantified Self
9(1)
1.2.4 Software-Denned*
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)
1.4 Conclusion
13(4)
References
14(3)
2 Simplicity as a Driver for Agile Innovation
17(18)
Tiziana Margaria
Bernhard Steffen
2.1 Motivation and Background
17(3)
2.2 Important Factors
20(2)
2.3 The Future
22(5)
2.4 Less Is More: The 80/20 Principle
27(1)
2.5 Simplicity: A Never Ending Challenge
28(1)
2.6 IT Specifics
29(1)
2.7 Conclusions
29(6)
Acknowledgments
30(1)
References
30(5)
3 Intercomponent Dependency Issues in Software Ecosystems
35(23)
Maelick Claes
Alexandre Decan
Tom Mens
3.1 Introduction
35(1)
3.2 Problem Overview
36(6)
3.2.1 Terminology
36(2)
3.2.2 Identifying and Retrieving Dependency Information
38(1)
3.2.3 Satisfying Dependencies and Conflicts
39(1)
3.2.4 Component Upgrade
40(1)
3.2.5 Inter-Project Cloning
41(1)
3.3 First Case Study: Debian
42(4)
3.3.1 Overview of Debian
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)
3.4.1 Overview of R
46(1)
3.4.2 R Package Repositories
47(3)
3.4.3 Interrepository Dependencies
50(2)
3.4.4 Intrarepository Dependencies
52(1)
3.5 Conclusion
53(5)
Acknowledgments
54(1)
References
54(4)
4 Triangulating Research Dissemination Methods: A Three-Pronged Approach to Closing the Research-Practice Divide
58(33)
Sarah Beecham
Ita Richardson
Ian Sommerville
Padraig O'Leary
Sean Baker
John Noll
4.1 Introduction
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)
4.4.2 Case Studies
69(1)
4.4.3 Action Research
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)
4.6 Conclusion
84(7)
4.6.1 Research and Practice Working Together to Innovate
85(1)
4.6.2 Final Thoughts
86(1)
Acknowledgments
86(1)
References
86(5)
Part II Autonomous Software Systems
91(48)
5 Apoptotic Computing: Programmed Death by Default for Software Technologies
93(14)
Roy Sterritt
Mike Hinchey
5.1 Biological Apoptosis
93(1)
5.2 Autonomic Agents
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)
5.5.2 Other Research
101(1)
5.6 "This Message Will Self-Destruct": Commercial Applications
102(1)
5.7 Conclusion
102(5)
Acknowledgments
103(1)
References
103(4)
6 Requirements Engineering for Adaptive and Self-Adaptive Systems
107(14)
Emit Vassev
Mike Hinchey
6.1 Introduction
107(1)
6.2 Understanding ARE
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)
6.6 Conclusion
118(3)
Acknowledgments
119(1)
References
119(2)
7 Toward Artificial Intelligence through Knowledge Representation for Awareness
121(18)
Emit Vassev
Mike Hinchey
7.1 Introduction
121(1)
7.2 Knowledge Representation
122(4)
7.2.1 Rules
122(1)
7.2.2 Frames
122(1)
7.2.3 Semantic Networks and Concept Maps
122(1)
7.2.4 Ontologies
123(1)
7.2.5 Logic
123(1)
7.2.6 Completeness and Consistency
124(1)
7.2.7 Reasoning
125(1)
7.2.8 Technologies
125(1)
7.3 KnowLang
126(5)
7.3.1 Modeling Knowledge with KnowLang
127(2)
7.3.2 Knowledge Representation for Self-Adaptive Behavior
129(1)
7.3.3 Case Study
129(2)
7.4 Awareness
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)
References
136(3)
Part III Software Development and Evolution
139(102)
8 Continuous Model-Driven Engineering
141(14)
Tiziana Margaria
Anna-Lena Lamprecht
Bernhard Steffen
8.1 Introduction
141(2)
8.2 Continuous Model-Driven Engineering
143(4)
8.3 CMDE in Practice
147(3)
8.4 Conclusion
150(5)
Acknowledgment
150(1)
References
151(4)
9 Rethinking Functional Requirements: A Novel Approach Categorizing System and Software Requirements
155(33)
Manfred Broy
9.1 Introduction
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)
9.3 The System Model
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)
9.3.1.5 Architectures
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)
9.6 Summary
186(2)
Acknowledgments
187(1)
References
187(1)
10 The Power of Ten---Rules for Developing Safety Critical Code
188(14)
Gerard J. Holzmann
10.1 Introduction
188(1)
10.2 Context
189(1)
10.3 The Choice of Rules
190(2)
10.4 Ten Rules for Safety Critical Code
192(8)
10.5 Synopsis
200(2)
References
201(1)
11 Seven Principles of Software Testing
202(6)
Bertrand Meyer
11.1 Introduction
202(1)
11.2 Denning Testing
202(1)
11.3 Tests and Specifications
203(1)
11.4 Regression Testing
204(1)
11.5 Oracles
204(1)
11.6 Manual and Automatic Test Cases
205(1)
11.7 Testing Strategies
205(1)
11.8 Assessment Criteria
206(1)
11.9 Conclusion
207(1)
References
207(1)
12 Analyzing the Evolution of Database Usage in Data-Intensive Software Systems
208(33)
Loup Meurice
Mathieu Goeminne
Tom Mens
Csaba Nagy
Alexandre Decan
Anthony Cleve
12.1 Introduction
208(2)
12.2 State of the Art
210(2)
12.2.1 Our Own Research
211(1)
12.3 Analyzing the Usage of ORM Technologies in Database-Driven Java Systems
212(3)
12.3.1 Coevolution
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)
12.4.5 Discussion
222(1)
12.5 Fine-Grained Analysis of Database Technology Usage
222(14)
12.5.1 Analysis Background
222(2)
12.5.2 Conceptual Schema
224(2)
12.5.3 Metrics
226(9)
12.5.4 Discussion
235(1)
12.6 Conclusion
236(1)
12.7 Future Work
237(4)
Acknowledgments
238(1)
References
238(3)
Part IV Software Product Lines and Variability
241(30)
13 Dynamic Software Product Lines
243(4)
Svein Hallsteinsen
Mike Hinchey
Sooyong Park
Klaus Schmid
13.1 Introduction
243(1)
13.2 Product Line Engineering
243(1)
13.3 Software Product Lines
244(1)
13.4 Dynamic SPLs
245(2)
References
246(1)
14 Cutting-Edge Topics on Dynamic Software Variability
247(24)
Rafael Capilla
Jan Bosch
Mike Hinchey
14.1 Introduction
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)
14.6 Summary
266(1)
14.7 Conclusions
267(4)
References
268(3)
Part V Formal Methods
271(22)
15 The Quest for Formal Methods in Software Product Line Engineering
273(9)
Reiner Hahnle
Ina Schaefer
15.1 Introduction
273(1)
15.2 SPLE: Benefits and Limitations
274(1)
15.3 Applying Formal Methods to SPLE
275(2)
15.3.1 Formal Methods
275(1)
15.3.2 Uniform Formal Modeling Framework
275(1)
15.3.3 Formal Semantics
275(1)
15.3.4 Refinement
275(1)
15.3.5 Compatibility
276(1)
15.3.6 Behavioral Specification
276(1)
15.3.7 Variability, Evolution, and Reuse
276(1)
15.3.8 Modularization
276(1)
15.3.9 Executability
276(1)
15.3.10 Verification
277(1)
15.3.11 Code Generation
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)
15.6.3 Legacy Systems
280(1)
15.6.4 Maintenance
280(1)
15.7 Conclusion
281(1)
References
281(1)
16 Formality, Agility, Security, and Evolution in Software Engineering
282(11)
Jonathan P. Bowen
Mike Hinchey
Helge Janicke
Martin Ward
Hussein Zedan
16.1 Introduction
282(1)
16.2 Formality
283(1)
16.3 Agility
283(1)
16.4 Security
284(1)
16.5 Evolution
285(4)
16.6 Conclusion
289(4)
Acknowledgments
290(1)
References
290(3)
Part VI Cloud Computing
293(34)
17 Cloud Computing: An Exploration of Factors Impacting Adoption
295(20)
Lorraine Morgan
Kieran Conboy
17.1 Introduction
295(1)
17.2 Theoretical Background
296(2)
17.2.1 Defining Cloud Computing
296(1)
17.2.2 Conceptual Model
296(2)
17.3 Research Method
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)
17.4.1.2 Compatibility
304(1)
17.4.1.3 Complexity
305(1)
17.4.1.4 Trialability
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)
References
311(4)
18 A Model-Centric Approach to the Design of Resource-Aware Cloud Applications
315(12)
Reiner Hahnle
Einar Broch Johnsen
18.1 Capitalizing on the Cloud
315(1)
18.2 Challenges
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)
18.6 Opportunities
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)
18.7 Summary
325(2)
Acknowledgments
325(1)
References
325(2)
Index 327
Mike Hinchey, PhD, is a Professor and former Director of Lero - the Irish Software Research Centre at the University of Limerick, Ireland. Dr. Hinchey is also the President of the International Federation for Information Processing (IFIP), a former column editor for Software Technologies (IEEE Computer Magazine), and a senior member of the IEEE. He is the author of more than 200 papers, and has written multiple books.