The Essence of Software Engineering
- Length: 251 pages
- Edition: 1
- Language: English
- Publisher: Springer
- Publication Date: 2018-07-04
- ISBN-10: 3319738968
- ISBN-13: 9783319738963
- Sales Rank: #4773924 (See Top 100 Books)
This open access book includes contributions by leading researchers and industry thought leaders on various topics related to the essence of software engineering and their application in industrial projects. It offers a broad overview of research findings dealing with current practical software engineering issues and also pointers to potential future developments.
Celebrating the 20th anniversary of adesso AG, adesso gathered some of the pioneers of software engineering including Manfred Broy, Ivar Jacobson and Carlo Ghezzi at a special symposium, where they presented their thoughts about latest software engineering research and which are part of this book. This way it offers readers a concise overview of the essence of software engineering, providing valuable insights into the latest methodological research findings and adesso’s experience applying these results in real-world projects.
Preface Contents List of Contributors The Leading Role of Software and Systems Architecture in the Age of Digitization 1 Introduction: Software Is Eating the World 2 Structuring Architecture: Future Reference Architecture 3 On Systems, Their Interfaces and Properties 3.1 About Architecture 3.2 On the Essence of Architecture: Architecture Design Is Architecture Specification 3.3 Logical Subsystem Architectures 4 Interfaces Everywhere 4.1 Property-Oriented Specification of Interfaces of Systems 4.2 Composition 4.3 Structuring Interfaces 5 Composition: Interfaces in Architectures 5.1 Interaction Assertions 5.2 Using Different Types of Interfaces Side by Side 5.3 Layered Architectures 6 On the Asset of Foundations 6.1 Not Formal Methods but Formal Foundation 6.2 Flexibility and Universality of the Presented Approach 6.3 System Components as Schedulable and Deployable Units 6.4 Modularity 6.5 Strict Property Orientation: Architecture Designs by Specifications 6.6 Real Time and Probability: Functional Quality Properties 7 Concluding Remarks Appendix: A Formal Model of Interfaces Data Models Syntactic Interfaces and Interface Behavior Syntactic Interfaces System Interaction: Timed Data Streams Interface Behavior Interface Assertions Composing Interfaces Specifying Contracts Interface Assertions for Assumption/Commitment Contracts Contracts in Architectures References Formal Methods and Agile Development: Towards a Happy Marriage 1 Introduction 2 Understanding Change 2.1 The Machine and the World 2.2 Evolution and Adaptation 3 Achieving Self-adaptive Software 4 Supporting Dependable Evolution 5 Towards a Unified View of Development and Operation 6 Concluding Remarks References Escaping Method Prison – On the Road to Real Software Engineering 1 Typical Methods and Their Problems 2 Method Prisons 3 A History of Methods and Method Prison 3.1 Gurus, Method Wars and Zig-Zag Paths 3.2 Lifecycles and Method Prisons 3.3 Practices and Method Prisons 4 What to do to Escape Method Prisons 5 How to Escape the Method Prison 5.1 Essence - the common ground of software engineering 5.2 Using Essence 5.3 Reflection 6 Out of the Method Prison References What is software?: 1 Apologia 1.1 Why ask the Question? 1.2 The Importance of Measurement 2 Other Kinds of Software 2.1 Processes are (like?) software 2.1.1 Measurement of Processes: 2.2 Legislation is (like?) software development: 2.2.1 Measurement of Laws 2.3 Recipes are software 2.3.1 Measurement of Recipes 2.4 Other Types of Software 3 What makes these different types of software like each other? 3.1 They are non-tangible, and non-physical, but often intended to manage tangibles 3.2 Hierarchical Structure is a common feature. 3.3 They consist of components having different purposes 3.4 All are expected to require modification/evolution 3.5 Interconnections are key 3.6 Analysis and verification are universal underlying needs 4 Characterizing software 5 What can computer software engineering contribute to other forms of software engineering? 6 What can computer software engineers learn from the study of other forms of software? 6.1 Resources 6.2 Timing 6.3 Verification and analysis of legislation 7 Conclusion References Only the Architecture You Need 1 Introduction 2 Software Architecture: Essence, Benefits, and Costs 2.1 Benefits 2.2 Techniques… and Costs 2.3 Summary and Roadmap 3 Personal Software Architecture 4 Team Software Architecture 4.1 Communication 4.2 Complexity 5 Summary 6 High-Consequence Software 7 Conclusion: Excuses Are Not Strategies References Variability in Standard Software Products 1 Introduction 2 Software Product Line Engineering 3 SPLE in the Insurance Industry 3.1 Current Situation 3.2 Transition Strategies 4 The Extended Pilot Project 4.1 The Setup 4.2 Selecting Charter Clients 4.3 Cooperation of Software Vendor and Charter Clients 4.4 Pros and Cons 5 Summary References Using Design Thinking for Requirements Engineering in the Context of Digitalization and Digital Transformation: A Motivation and an Experience Report 1 Introduction and Motivation 2 From Digitization to Digital Transformation 2.1 Level 1: Digitization 2.2 Level 2: Digitalization 2.3 Level 3: Digital Transformation 2.4 Conclusion: The Growing Need for a Holistic Design Competence in Software Engineering 3 Design Thinking as a Method to Think About Software 3.1 A Brief Overview of Design Thinking 3.2 Example 1: Online Jewelry Shopping 3.3 Example 2: Developing Innovative Software for Dentists 4 Summary and Conclusions References Towards Deviceless Edge Computing: Challenges, Design Aspects, and Models for Serverless Paradigm at the Edge 1 Introduction 2 Related Work 3 Deviceless Edge Platform 3.1 Approach 3.2 Platform Usage and Architecture Overview 4 Programming Support for Deviceless Edge Computing 4.1 Programming Support for Deviceless Edge Functions 4.2 Intents and IntentScopes 4.3 Data and Control Points 5 Provisioning Support for Deviceless Edge Computing 5.1 Software-Defined Gateways 5.2 Deviceless Provisioning Middleware 6 Conclusion References Data-Driven Decisions and Actions in Today's Software Development 1 Introduction 2 Recommendation 2.1 Code Example Recommendation Systems 2.2 Naturalness of Software 2.3 Evaluation 3 Testing 3.1 Automated Unit Test Case Generation 3.1.1 Single-Target Approaches 3.1.2 Multi-Target Approaches 3.1.3 Limitations and Outlook 3.2 Performance Testing 3.2.1 Problems 3.2.2 Current Solutions 3.2.3 Outlook 4 Continuous Delivery 4.1 Build Breakage 4.2 Release Confidence and Velocity 4.2.1 Model of Release Confidence and Velocity 4.2.2 Transitioning Between Categories 5 Deployment 6 Summarization Techniques for Code, Change, Testing, Software Reuse, and User Feedback 6.1 Source Code Summarization 6.2 Task-Driven Software Summarization 6.2.1 Code Change Summarization 6.2.2 Summarization Techniques for Testing and Code Reuse 6.3 Summarization of Textual User Feedback 6.4 Future Research 7 Summary References Software Architecture: Past, Present, Future 1 Introduction 2 Past: Focus on Architecture Description and Reuse 2.1 Formalization of Architectural Models 2.2 Software Product Lines for Reusing Software Components 3 Present: Establishment of Domain-Specific Architectures and Focus on Quality Attributes 3.1 Example: Microservice Architectures 3.2 Focus on Quality Requirements 4 Future: Proper Integration of Architecture Work into Agile Software Development 4.1 Integrating Architecture Owners into Agile Teams 4.2 Integrating Software Development and Operations: DevOps 4.3 Achieving Reliability with Agile Software Development 4.4 Using Architecture Models for Runtime Adaptability 4.5 Keeping Architecture Knowledge up to Date for Long-Living Software Systems 5 Summary References Software Product Lines 1 Introduction 2 Differences Between SPLE and Single System Development 2.1 Two Development Processes 2.2 Product Line Variability 2.3 Software Variability Versus Product Line Variability 3 Domain Engineering 3.1 Product Management 3.2 Domain Requirements Engineering 3.3 Domain Design 3.4 Domain Realization 3.5 Domain Quality Assurance 4 Application Engineering 4.1 Application Requirements Engineering 4.2 Application Design 4.3 Application Realization 4.4 Application Quality Assurance 5 Modeling Product Line Variability 5.1 Key Modeling Constructs 5.2 Integrated Versus Orthogonal Modeling of Variability 6 Variability Modeling in Non-Product-Line Settings 7 Summary References Enabling Flexible and Robust Business Process Automation for the Agile Enterprise 1 Introduction 2 Traditional Process-Aware Information Systems 2.1 Business Process Modeling 2.2 Architectural Principles of a PAIS 2.3 Process Enactment Based on Executable Process Models 2.4 Traditional Process Lifecycle Support 2.5 Key Features of a Process-Aware Information System 3 Enabling Process Flexibility at the Operational Level 4 Adaptive Process-Aware Information Systems 4.1 The AristaFlow Process Management Technology 4.2 Support for Process Adaptation and Process Evolution 4.3 Advanced Process Lifecycle Support in Adaptive PAIS 4.4 Making Process Implementations Flexible and Robust 4.4.1 Error Prevention 4.4.2 Error and Exception Handling in the AristaFlow BPM Suite 5 Conclusions References Achievements, Failures, and the Future of Model-Based Software Engineering 1 Introduction 2 Model-Based Software Engineering 2.1 Unified Modeling Language and Systems Modeling Language 2.2 Constructive Model Use: Interpreters and Code Generators 2.3 Benefits and Drawbacks of Using Models Constructively 3 Failures of Model-Based Software Engineering 4 Where Model-Based Software Engineering Is Successful 5 Can We Draw Conclusions? References
Donate to keep this site alive
1. Disable the AdBlock plugin. Otherwise, you may not get any links.
2. Solve the CAPTCHA.
3. Click download link.
4. Lead to download server to download.