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.

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.

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 is small. 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.

Interest is growing 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. [4] [5] [6]

Related Research Articles

In computer programming and software design, code refactoring is the process of restructuring existing computer code—changing the factoring—without changing its external behavior. Refactoring is intended to improve the design, structure, and/or implementation of the software, while preserving its functionality. Potential advantages of refactoring may include improved code readability and reduced complexity; these can improve the source code's maintainability and create a simpler, cleaner, or more expressive internal architecture or object model to improve extensibility. Another potential goal for refactoring is improved performance; software engineers face an ongoing challenge to write programs that perform faster or use less memory.

<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. In addition, just 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:

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.

In software testing, test automation is the use of software separate from the software being tested to control the execution of tests and the comparison of actual outcomes with predicted outcomes. Test automation can automate some repetitive but necessary tasks in a formalized testing process already in place, or perform additional testing that would be difficult to do manually. Test automation is critical for continuous delivery and continuous testing.

The Shlaer–Mellor method, also known as object-oriented systems analysis (OOSA) or object-oriented analysis (OOA) is an object-oriented software development methodology introduced by Sally Shlaer and Stephen Mellor in 1988. The method makes the documented analysis so precise that it is possible to implement the analysis model directly by translation to the target architecture, rather than by elaborating model changes through a series of more platform-specific models. In the new millennium the Shlaer–Mellor method has migrated to the UML notation, becoming Executable UML.

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:

Object-oriented design (OOD) is the process of planning a system of interacting objects to solve a software problem. It is a method for software design. By defining classes and their functionality for their children, each object can run the same implementation of the class with its state.

<span class="mw-page-title-main">Parasoft</span> Software testing framework

Parasoft is an independent software vendor specializing in automated software testing and application security with headquarters in Monrovia, California. It was founded in 1987 by four graduates of the California Institute of Technology who planned to commercialize the parallel computing software tools they had been working on for the Caltech Cosmic Cube, which was the first working hypercube computer built.

<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.

PackML is an industry technical standard for the control of packaging machines, as an aspect of industrial automation.

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.

Data warehouse automation (DWA) refers to the process of accelerating and automating the data warehouse development cycles, while assuring quality and consistency. DWA is believed to provide automation of the entire lifecycle of a data warehouse, from source system analysis to testing to documentation. It helps improve productivity, reduce cost, and improve overall quality.

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