Scalable Agility for Critical Systems
by Christof Ebert
Agile practices have evolved over the past thirty years at a steady pace. Industry soon realized that critical systems need more than an agile manifesto. Today we have scalable agile frameworks which can be blended with lean development and lean management to address actual industry needs for critical systems. Read this blog and learn how to apply agility in your specific context...
— Christof Ebert
Business models in software-driven systems have evolved to flexible eco-systems. The classic functional split demanded by legacy-driven architectures is replaced by a more service-oriented architecture and delivery model. Recent technology trends such as three-tier cloud architectures, adaptive component frameworks, and connectivity for Internet of Things (IoT) and Internet of Services (IoS) facilitate new business models and scalable reuse across companies and industries.
Development in the future will be a continuous process which will fully decouple the rather stable hardware from delivered services driven by continuous software upgrades. Agile service delivery models combining DevOps, micro-services and cloud solutions will allow functional changes far beyond the traditional V approach. Hierarchic modeling of business processes, functionality and architecture from a systems perspective allows early simulation while ensuring robustness and security. Development processes across the entire life-cycle from vision to concept to operations and service will follow this trend to fluid delivery models. Agility finally has arrived in real development, beyond mere software applications.
Agile practices have evolved over the past thirty years at a steady pace. Microsoft invented most practices in the early nineties. Driven by the fast growing complexity in their Windows and Office suites, Microsoft very early advanced concepts such as continuous build, feature-driven teams, and a close connect of business needs with requirements and architecture flexibility. A key milestone was the Internet Explorer which was fully re-developed in the late nineties to allow for flexible and scalable evolution. These practices later found their way to the early agile frameworks. The initial agile manifesto which based on this experiences of Microsoft, IBM and others primarily collected practices and added the label “agile”.
Agility in its early years was rather a label and almost religious dogma, than a coherent useful framework. At times some of the so-called gurus preferred to fight processes for the sake of revolution, rather than delivering to industry needs. Even today developers and managers are puzzled by themes such as “customer on board” or “software before documentation”. Soon industry realized that critical systems need more meat to work in a flexible mode and not discard product liability and governance needs. Today we have several scalable agile approaches which are blended to address real industry needs.
Today need for process is not anymore questioned. This allows addressing the real big issues:
Business model: from building to composing.
Governance: from encapsulated critical functions to interwoven quality assurance ensuring product liability, functional safety, cyber security, privacy, and availability.
Competences: from silos of functional know-how to IT as a core competence of all engineers.
Development: from components and functions to services.
Hardware architecture: from distributed electronic controllers to three-tier architecture connecting cyber-physical embedded peripherals, high-performance middleware, and flexible cloud services.
Software architecture: from localized features to service-oriented patterns with the convergence of embedded electronics and open IT systems.
Technology: from proprietary building blocks and communication stacks to open systems with off-the-shelf adaptive software components connected by state-of-the-art IP over Ethernet and mobile networks.
Process: from the classic V model with rather heavy release cycles to scalable agile processes.
Since quality, deadlines and cost are pivotal to mitigate liability and governance risks, the push for even better processes and project management is continuing at a high pace. Demands are rising towards more agility and flexibility. Users expect the same adaptive behaviors and continuous delivery models as they are used to from their mobile devices. Rapid advances toward open and flexible connectivity in IoT are straining standardization as they struggle to keep up with issues of legal and ethical responsibility, cyber security, and short-cycle re-certification after OTA software updates.
Here are some practical recommendations for developers:
Move from classic embedded design to distributed IT. Grow methodologies and underlying technologies from embedded engineering to comprehensive systems engineering. Understand the methods and solutions of modern IT systems, such as SOA, cyber security etc.
Enhance the life-cycle towards agility and post-delivery continuous development. Using concepts of DevOps and agility change the classic V towards agile cyclic W. Focus on speed, synchronization and integrity. Establish flexible synchronization points between HW and SW along the life-cycle to facilitate fast adaptations.
Evolve embedded architectures towards the 3-tier model: (1) sensor/actor preprocessing, (2) high performance computing and (3) cloud services. Introduce service-oriented embedded architectures and adequate service delivery models, such as predictive maintenance for better reliability or continuous delivery for flexibility. Enhance with the relevant design and testing approaches.
Approach novel technologies on system level: Systems-on-chip, microservices, augmented reality and cloud solutions for innovative products and for engineering.
Focus on horizontal integration of embedded systems complementary to vertical integration towards active IoT solutions of networked embedded systems. Introduce integrated processes and a systematic methodology based on a model-driven PLM tool-chain.
Enhance reuse across platforms, products and markets. Manage variants and master system complexity by means of concepts such as product line engineering. Evolve from classic portability and maintainability to Self-X type architectures and technologies such as self-aware adaptive systems to cope with fast changing components and environments. Current challenges in automotive, aerospace and railways demand cost-efficient solutions while at the same time mastering the fast increasing system complexity.
Thoroughly ensure robust system level design. Master relevant quality requirements to critical systems. Cyber security, functional safety, service-orientation and usability must be designed and achieved on the systems engineering level.
The following figure shows hot to establish agile development of critical systems. The classic V-abstraction is evolving to a W of continuous deliveries, starting at the bottom with design and integration, growing with service-oriented architectures, and moving upwards to DevOps with over-the-air software updates to each single vehicle. LeanSAFE (Lean Scaled Agility for Engineering) Framework is Vector Consulting’s implementation of the W model for critical systems.
Each of these changes alone would already be perceived as heavy. All these trends combined, although not impossible to manage, illustrate one thing clearly: Industrial software engineering is the most challenging endeavor you can imagine. It’s the place to be and to work, especially for young people looking for real challenges and fast innovation cycles.
Read selected white papers on agile and lean development from our media-center:
Read the 2017 edition of technology trends in IEEE Software:
Christof Ebert is the managing director of Vector Consulting Services. He is on the IEEE Software editorial board and teaches at the University of Stuttgart and the Sorbonne in Paris.