The Essence of Software Engineering.
Main Author: | |
---|---|
Other Authors: | |
Format: | eBook |
Language: | English |
Published: |
Cham :
Springer International Publishing AG,
2018.
|
Edition: | 1st ed. |
Subjects: | |
Online Access: | Click to View |
Table of Contents:
- Intro
- 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.