
In
software engineering
Software engineering is a systematic engineering approach to software development.
A software engineer is a person who applies the principles of software engineering to design, develop, maintain, test, and evaluate computer software. The term '' ...
, a Library Oriented Architecture (LOA) is a set of principles and
methodologies for designing and developing software in the form of reusable software libraries constrained in a specific ontology domain. LOA provides one of the many alternate methodologies that enable the further exposure of software through a service-oriented architecture. Library orientation dictates the ontological boundaries of a library that exposes business functionality through a set of public APIs. Library Oriented Architecture further promotes practices similar to
Modular Programming, and encourages the maintenance of internal libraries and modules with independent internal open-source life-cycles. This approach promotes good software engineering principles and patterns such as
separation of concerns and designing to
interfaces
Interface or interfacing may refer to:
Academic journals
* Interface (journal), ''Interface'' (journal), by the Electrochemical Society
* ''Interface, Journal of Applied Linguistics'', now merged with ''ITL International Journal of Applied Lin ...
as opposed to implementations.
Principles
Three principles rule Library Oriented Architecture frameworks:
# A
software library
In computer science, a library is a collection of non-volatile resources used by computer programs, often for software development. These may include configuration data, documentation, help data, message templates, pre-written code and subr ...
implementation and subject area expertise must be constrained to only one
ontology domain.
# A software library that needs to use concepts and
artifacts from a different ontology domain than the one it belongs to, must interface and reuse the library corresponding to that specific ontology domain.
# All domain specific software libraries must be maintained and supported with separate
life-cycles.
Benefits
Library Oriented Architecture may provide different process improvements to existing software engineering practices and
software development life-cycle. Some tangible benefits from its adoption are:
# Simplify
configuration management
Configuration management (CM) is a process for establishing and maintaining consistency of a product's performance, functional, and physical attributes with its requirements, design, and operational information throughout its life. The CM proc ...
of distributed systems.
# Build highly
reliable software systems because of the inherent properties and constraints of the LOA principles.
#
Information Systems
An information system (IS) is a formal, sociotechnical, organizational system designed to collect, process, information storage, store, and information distribution, distribute information. From a sociotechnical perspective, information systems a ...
built using LOA are
technology-independent. These systems can easily replace or swap entire libraries and domain implementations with localized impact and minimal upstream ripple effect.
# Increase the
Maintainability Index of your distributed systems and integration repositories.
# Minimize the risk of
high coupling, this can be more evident on large
enterprise systems.
# Bring developers up to speed orders of magnitude more quickly than a traditional system. Move developers and teams across libraries and domain ontologies and collaborate seamlessly.
# Spot bugs and zero-in on the problem almost instantly. There is something to be said about the amount of time a developer spends debugging.
# Maximization of the
Bus Factor
The bus factor is a measurement of the risk resulting from information and capabilities not being shared among team members, derived from the phrase "in case they get hit by a bus". It is also known as the bus problem, lottery factor, truck factor, ...
of the software engineering team.
See also
*
Ontology (information science)
In computer science and information science, an ontology encompasses a representation, formal naming, and definition of the categories, properties, and relations between the concepts, data, and entities that substantiate one, many, or all domains ...
*
Service-oriented architecture
In software engineering, service-oriented architecture (SOA) is an architectural style that focuses on discrete services instead of a monolithic design. By consequence, it is also applied in the field of software design where services are provide ...
*
Distributed system
*
Modular programming
*
Software library
In computer science, a library is a collection of non-volatile resources used by computer programs, often for software development. These may include configuration data, documentation, help data, message templates, pre-written code and subr ...
*
Software design pattern
In software engineering, a software design pattern is a general, reusable solution to a commonly occurring problem within a given context in software design. It is not a finished design that can be transformed directly into source or machine code ...
Writing Elegant Code and the Maintainability IndexCode Metrics – Maintainability Index
References
{{reflist
Software architecture
Enterprise application integration