Agile Automation

Last updated

Agile Automation refers to the application of select Agile software development principles, patterns and practices, to the area of industrial automation and process control software development. The term was coined by HAL Software (Ireland) in 2013. The original idea was to simply borrow some of the principles from modern software development. For example, providing a mockup/prototype or 'conference room pilot' at the start of a sprint to convey to stakeholders, what was going to be delivered by the end of the sprint. However some approaches such as unit testing cannot easily be borrowed, because the proprietary nature of industrial programming languages do not allow for unit testing and class modification through extension only. If unit testing is implemented, it is invariably through an open source language and libraries such as Python and an interface API technology such as OPCDA or OPCUA. Both HAL Software, and CoDeSys took this approach)

Traditionally, industrial automation software has been developed using languages that do not fully implement object-oriented programming. Software development lifecycle is in line with the Waterfall model. For example, the GxP (Good Automated manufacturing practice) V model that is pervasive throughout the pharmaceutical regulated industries. There was a growing belief however that the model was too rigid, did not allow for sufficient change throughout the software development lifecycle and did not target testing according to risk. The latest version of the GxP model went some way towards testing based on risk assessment.

The latest GxP model advocates testing and documenting according to perceived risk to the end user. (The patient, in the case of the Pharmaceutical industry).

In fact the GAMP5 guide in 2008 explicitly mentioned Agile programming;

"The approach described in this document is designed to be compatible with a wide range of other models, methods, and schemes, including: Software development methods such as RAD, Agile, RUP, or Extreme programming." (GAMP5) [1]

There is debate however over whether Agile methods can truly satisfy regulatory requirements, as outlined in the article on Alternative Software development models and methods in GxP Environments, by ISAP GMAP D_A_C_H SIG ASDMM. (Pharmaceutical Engineering Jan2012 Vol32 No.1). The Industry has some experience of poorly executed manufacturing execution system Agile software projects and these experiences have tended to reinforce the traditional notion that Waterfall software development lifecycle is the simplest way to enforce Engineering Rigour and budgetary/schedule constraints on a software development team.

As of 2025, Agile project management has made in-roads into the regulated industries, especially regarding IT system rollouts. It is often down to the project managers preference as it is debatable which approach is better. In the hybrid area of IT/OT (Where information technology or traditional IT applications are integrated with Operations technology or custom industrial control applications), the use of various variants of the Agile methodology is common. However it is still hampered by the fact that GxP change control in a regulated industry follows a planned sequence/order of events which is 'waterfall' in nature.

Agile Automation software development has the potential to reduce the development lifecycle and at the same time, encompass automated unit testing. Something that the industry is calling for. In addition, the "don't repeat yourself" aspects of Agile object oriented software development encompassing extension of software classes through interfaces (Software class is open for extension but closed for modification) are very attractive in a regulated industry where software change validation is particularly expensive. Agile software development promotes true object oriented software programming which in turn results in software that is more amenable to change and less likely to break. [2]

The two most widely used strategy design patterns in Pharmaceutical and other Batch Industrial Automation higher level systems (SCADA, Batch and MES ) are ISA S88 & ISA S95. These patterns can be implemented such that the action behaviours (e.g., read/write method or Valve command on/off method) are encapsulated as interfaces using languages such C#, or Java. [3] Commercial Control System software development is biased towards inheritance and subtyping, and the other OOP tenets (Encapsulation, Polymorphism) are not exposed to the programmer to the same extent. This incomplete OOP implementation increases the amount of design effort required. Even Commercial Proprietary DCS systems such as Emerson DeltaV are biased towards subtyping and inheritance without an easy way to implement a behaviour through an interface or similar construct. (There is no way to implement multiple inheritance.)

The IEC 61131-3 programming language is the most widely used language for programming PLC & DCS systems. It is not a truly object oriented language, implementing only 1 tenet of OOP (inheritance/subtyping) and not encapsulation or polymorphism. This limits its amenability to automated unit testing and encapsulating of behaviours for class extension.

Generally there is less scope for encapsulating behaviours in most industrial controllers except for platforms that run a more advanced operating system (for example the Beckhoff Twincat platform) that can be programmed via high level IDEs such as visual studio.

There is a replacement standard (IEC 61499) that is more object oriented, but industry uptake had been small up until recently (2024) .There is however now a new industry/university initiative centred around the organisation behind https://universalautomation.org. In addition, an 'open process automation forum ' (OPAF) initiative driven by Exxon mobile since 2014 (but now managed by https://www.opengroup.org/) essentially looks to standardise both hardware and software components in a process automation system with the benefit of reduction in 'vendor lock in'. As of 2025, companies such as Schneider electric have even open sourced / released an iec61499 runtime so that other vendors can create engineering tools and develop, simulate and test code all within the same PC application. There are moves towards IEC61131-3 consolidation, notably through the PLCOpen standard. This approach to developing an abstract XML class can result in a library of tested class modules/types that can subsequently be instantiated and imported to target platform.

There was some interest in model driven architecture (MDA) Agile programming whereby a platform independent model is first developed. As a result of regulatory filing requirements and the need to protect against litigation, the Pharmaceutical industry records and saves data that must be reconstituted for subsequent filing submittal or Batch release (Electronic batch records). A model developed in the pilot lab and used as the guideline for manufacturing scale up, can aid filing submittal. However by 2025, a majority of new initiatives are re-orienting towards machine learning for the purpose of developing re-useable models.Organisations such as opc foundation now have dedicated AI working groups. [4] [5] [6]

Related Research Articles

In object-oriented programming, a class defines the shared aspects of objects created from the class. The capabilities of a class differ between programming languages, but generally the shared aspects consist of state (variables) and behavior (methods) that are each either associated with a particular object or with all objects of that class.

<span class="mw-page-title-main">Object–relational database</span> Database management system

An object–relational database (ORD), or object–relational database management system (ORDBMS), is a database management system (DBMS) similar to a relational database, but with an object-oriented database model: objects, classes and inheritance are directly supported in database schemas and in the query language. Also, as with pure relational systems, it supports extension of the data model with custom data types and methods.

In software systems, encapsulation refers to the bundling of data with the mechanisms or methods that operate on the data. It may also refer to the limiting of direct access to some of that data, such as an object's components. Essentially, encapsulation prevents external code from being concerned with the internal workings of an object.

This is a list of terms found in object-oriented programming.

<span class="mw-page-title-main">Bertrand Meyer</span> French computer scientist

Bertrand Meyer is a French academic, author, and consultant in the field of computer languages. He created the Eiffel programming language and the concept of design by contract.

The following outline is provided as an overview of and topical guide to software engineering:

<span class="mw-page-title-main">Systems development life cycle</span> Systems engineering terms

In systems engineering, information systems and software engineering, the systems development life cycle (SDLC), also referred to as the application development life cycle, is a process for planning, creating, testing, and deploying an information system. The SDLC concept applies to a range of hardware and software configurations, as a system can be composed of hardware only, software only, or a combination of both. There are usually six stages in this cycle: requirement analysis, design, development and testing, implementation, documentation, and evaluation.

Class-based programming, or more commonly class-orientation, is a style of object-oriented programming (OOP) in which inheritance occurs via defining classes of objects, instead of inheritance occurring via the objects alone.

Object-oriented analysis and design (OOAD) is a technical approach for analyzing and designing an application, system, or business by applying object-oriented programming, as well as using visual modeling throughout the software development process to guide stakeholder communication and product quality.

In object-oriented programming, inheritance is the mechanism of basing an object or class upon another object or class, retaining similar implementation. Also defined as deriving new classes from existing ones such as super class or base class and then forming them into a hierarchy of classes. In most class-based object-oriented languages like C++, an object created through inheritance, a "child object", acquires all the properties and behaviors of the "parent object", with the exception of: constructors, destructors, overloaded operators and friend functions of the base class. Inheritance allows programmers to create classes that are built upon existing classes, to specify a new implementation while maintaining the same behaviors, to reuse code and to independently extend original software via public classes and interfaces. The relationships of objects or classes through inheritance give rise to a directed acyclic graph.

This is an alphabetical list of articles pertaining specifically to software engineering.

Knowledge-based engineering (KBE) is the application of knowledge-based systems technology to the domain of manufacturing design and production. The design process is inherently a knowledge-intensive activity, so a great deal of the emphasis for KBE is on the use of knowledge-based technology to support computer-aided design (CAD) however knowledge-based techniques can be applied to the entire product lifecycle.

The process of establishing documentary evidence demonstrating that a procedure, process, or activity carried out in testing and then production maintains the desired level of compliance at all stages. In the pharmaceutical industry, it is very important that in addition to final testing and compliance of products, it is also assured that the process will consistently produce the expected results. The desired results are established in terms of specifications for outcome of the process. Qualification of systems and equipment is therefore a part of the process of validation. Validation is a requirement of food, drug and pharmaceutical regulating agencies such as the US FDA and their good manufacturing practices guidelines. Since a wide variety of procedures, processes, and activities need to be validated, the field of validation is divided into a number of subsections including the following:

In computing, object model has two related but distinct meanings:

  1. The properties of objects in general in a specific computer programming language, technology, notation or methodology that uses them. Examples are the object models of Java, the Component Object Model (COM), or Object-Modeling Technique (OMT). Such object models are usually defined using concepts such as class, generic function, message, inheritance, polymorphism, and encapsulation. There is an extensive literature on formalized object models as a subset of the formal semantics of programming languages.
  2. A collection of objects or classes through which a program can examine and manipulate some specific parts of its world. In other words, the object-oriented interface to some service or system. Such an interface is said to be the object model of the represented service or system. For example, the Document Object Model (DOM) is a collection of objects that represent a page in a web browser, used by script programs to examine and dynamically change the page. There is a Microsoft Excel object model for controlling Microsoft Excel from another program, and the ASCOM Telescope Driver is an object model for controlling an astronomical telescope.

e is a hardware verification language (HVL) which is tailored to implementing highly flexible and reusable verification testbenches.

Naked objects is an architectural pattern used in software engineering. It is defined by three principles:

In computer science, information hiding is the principle of segregation of the design decisions in a computer program that are most likely to change, thus protecting other parts of the program from extensive modification if the design decision is changed. The protection involves providing a stable interface which protects the remainder of the program from the implementation. Written in another way, information hiding is the ability to prevent certain aspects of a class or software component from being accessible to its clients, using either programming language features or an explicit exporting policy.

<span class="mw-page-title-main">Object-oriented programming</span> Programming paradigm based on the concept of objects

Object-oriented programming (OOP) is a programming paradigm based on the concept of objects, which can contain data and code: data in the form of fields, and code in the form of procedures. In OOP, computer programs are designed by making them out of objects that interact with one another.

In computer programming, a design smell is a structure in a design that indicates a violation of fundamental design principles, and which can negatively impact the project's quality. The origin of the term can be traced to the term "code smell" which was featured in the book Refactoring: Improving the Design of Existing Code by Martin Fowler.

The composition filters model denotes a modular extension to the conventional object model. It provides a solution for a wide range of problems in the construction of large and complex applications. Most notably, one implementation of composition filters provides an abstraction layer for message-passing systems.

References

  1. "Home". ispe.org.
  2. 12JF-Hambloch_GAMP.pdf - Alternative Software development models and methods in GxP environments (reprinted from pharmaceutical engineering)
  3. "Home". isa.org.
  4. Bringing new products to market faster - (Adam Fermier, Paul McKenzie, Terry Murphy, Leif Poulsen, Gene Schaefer) ISPE 2012
  5. 'Design and optimisation of a large scale biopharmaceutical facility using process simulation and scheduling tools' Pharmaceutical engineering 2010 Vol 30 No2
  6. agile principles, patterns and practices in c# - Robert C. MArtin