Agile application
Encyclopedia
An Agile Application is the result of Service Oriented Architecture
and Agile Development
paradigms. An Agile Application is distinguished from average applications in that it is a loosely coupled
set of services with a decoupled orchestration layer
and it is easily modified to address changing business needs and it is scalable by design.
Using Agile Applications development paradigms
, a set of services can be built to address business specific functional components. These services can be exposed using any one of the standard communication protocols including web services. A well designed Agile Application will standardize on a common communication protocol and a common data model. The services can then be orchestrated using a decoupled layer to implement business logic. There are many tools by different vendors in the industry that can support the orchestration layer.
The decoupled nature of an Agile Application permits it to accommodate fault tolerance and scalability
. For example, scalability is addressed through focusing the attention of the QA team
in the set of services that are causing the bottleneck as opposed to trying to solve scalability for the entire system which can be a much bigger problem. Similarly, fault tolerance can be achieved through deploying multiple instances of a service. If one service fails, another instance can pick up the load. For stateless services, this can lead to continuous availability.
Following the Agile Development paradigm, each unit of development cycle can be focused on a single service. Furthermore, multiple of these development cycles can run in parallel leading to faster development completion.
Agile is a means of responsiveness based on customization rather than stable production or standardization.
Service-oriented architecture
In software engineering, a Service-Oriented Architecture is a set of principles and methodologies for designing and developing software in the form of interoperable services. These services are well-defined business functionalities that are built as software components that can be reused for...
and Agile Development
Agile software development
Agile software development is a group of software development methodologies based on iterative and incremental development, where requirements and solutions evolve through collaboration between self-organizing, cross-functional teams...
paradigms. An Agile Application is distinguished from average applications in that it is a loosely coupled
Loose coupling
In computing and systems design a loosely coupled system is one where each of its components has, or makes use of, little or no knowledge of the definitions of other separate components. The notion was introduced into organizational studies by Karl Weick...
set of services with a decoupled orchestration layer
Orchestration (computers)
Orchestration describes the automated arrangement, coordination, and management of complex computer systems, middleware, and services.It is often discussed as having an inherent intelligence or even implicitly autonomic control, but those are largely aspirations or analogies rather than technical...
and it is easily modified to address changing business needs and it is scalable by design.
Using Agile Applications development paradigms
Agile software development
Agile software development is a group of software development methodologies based on iterative and incremental development, where requirements and solutions evolve through collaboration between self-organizing, cross-functional teams...
, a set of services can be built to address business specific functional components. These services can be exposed using any one of the standard communication protocols including web services. A well designed Agile Application will standardize on a common communication protocol and a common data model. The services can then be orchestrated using a decoupled layer to implement business logic. There are many tools by different vendors in the industry that can support the orchestration layer.
The decoupled nature of an Agile Application permits it to accommodate fault tolerance and scalability
Scalability
In electronics scalability is the ability of a system, network, or process, to handle growing amount of work in a graceful manner or its ability to be enlarged to accommodate that growth...
. For example, scalability is addressed through focusing the attention of the QA team
Quality Assurance
Quality assurance, or QA for short, is the systematic monitoring and evaluation of the various aspects of a project, service or facility to maximize the probability that minimum standards of quality are being attained by the production process...
in the set of services that are causing the bottleneck as opposed to trying to solve scalability for the entire system which can be a much bigger problem. Similarly, fault tolerance can be achieved through deploying multiple instances of a service. If one service fails, another instance can pick up the load. For stateless services, this can lead to continuous availability.
Following the Agile Development paradigm, each unit of development cycle can be focused on a single service. Furthermore, multiple of these development cycles can run in parallel leading to faster development completion.
Agile is a means of responsiveness based on customization rather than stable production or standardization.
See also
- Semantic WebSemantic WebThe Semantic Web is a collaborative movement led by the World Wide Web Consortium that promotes common formats for data on the World Wide Web. By encouraging the inclusion of semantic content in web pages, the Semantic Web aims at converting the current web of unstructured documents into a "web of...
- Semantic GridSemantic GridThe Semantic Grid refers to an approach to Grid computing in which information, computing resources and services are described using the semantic data model. In this model the data and metadata are expressed through facts . Therefore it becomes directly understandable for humans...
- Ontology (computer science)Ontology (computer science)In computer science and information science, an ontology formally represents knowledge as a set of concepts within a domain, and the relationships between those concepts. It can be used to reason about the entities within that domain and may be used to describe the domain.In theory, an ontology is...
- Semantic Web Rule Language (SWRL)