Library Oriented Architecture
File:Library Oriented Architecture.png
In software engineering, 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 as opposed to implementations.
Principles
Three principles rule Library Oriented Architecture frameworks:
- A software library 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.{{cite journal|last=Gruber|first=Thomas Robert|title=Toward Principles for the Design of Ontologies Used for Knowledge Sharing|journal=International Journal of Human-Computer Studies|year=1992|volume=43|issue=5–6 |pages=907–928|doi=10.1006/ijhc.1995.1081 |s2cid=1652449 |url=http://tomgruber.org/writing/onto-design.pdf}}
- All domain specific software libraries must be maintained and supported with separate life-cycles.{{cite web |last=Triana |first=Michel |date=2012-04-09 |title=Library Oriented Architecture |url=http://micheltriana.com/2012/04/09/library-oriented-architecture/ |url-status=dead |archive-url=https://web.archive.org/web/20140626074722/http://micheltriana.com/2012/04/09/library-oriented-architecture/ |archive-date=2014-06-26 |accessdate=2012-04-09}}
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 of distributed systems.{{cite web|last=Crowley|first=Richard|title=Developing Operability|url=http://rcrowley.org/2012/02/25/superconf.html|accessdate=2012-04-09}}
- Build highly reliable software systems because of the inherent properties and constraints of the LOA principles.
- Information Systems 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{{cite web |last=Triana |first=Michel |date=2010-12-05 |title=Writing Elegant Code and the Maintainability Index |url=http://micheltriana.com/2010/12/05/writing-elegant-code-and-the-maintainability-index/ |url-status=dead |archive-url=https://web.archive.org/web/20140525223141/http://micheltriana.com/2010/12/05/writing-elegant-code-and-the-maintainability-index/ |archive-date=2014-05-25 |accessdate=2012-04-12 |work=Light of Bytes |publisher=WordPress}} 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 of the software engineering team.{{cite journal|last=Redmond|first=Matthew C.|author2=Paul Newton |title=Integrating GIS in the Engineering, Planning and Design Processes|year=2003|url=http://proceedings.esri.com/library/userconf/proc03/p0559.pdf|accessdate=2012-04-12}}
See also
- Ontology (information science)
- Service-oriented architecture
- Distributed system
- Modular programming
- Software library
- Software design pattern
- [http://micheltriana.com/2010/12/05/writing-elegant-code-and-the-maintainability-index/ Writing Elegant Code and the Maintainability Index]
- [http://blogs.msdn.com/b/zainnab/archive/2011/05/26/code-metrics-maintainability-index.aspx Code Metrics – Maintainability Index]