Beyond Software Architecture[c] Creating and Sustaining Winning Solutions

  • Integration is the process of programmatically linking your system with others.

  • Extension is the process of adding new functionality to your system through well-defined approaches, such as plug-in architectures.

  • Integration and extension enable your customers to create the product they seek. As a bonus, it creates tighter customer relationships and decreases the likelihood that a customer will leave you for a competitor.

  • The layered architectural pattern, which organizes various system functions in logical and physical layers, provides several excellent choices for integration and extension in enterprise-class software systems. The primary layers of a layered architecture are

    - User interface

    - Services

    - Domain model

    - Persistent data

    Sublayers may exist within these layers, and other layers may be created to handle specialized requirements.

  • Whatever the structure of your architecture, build it in spikes that is, user-visible functionality driven through all layers or subsystems.

  • There are several ways to provide integration and extension points at the services and domain model layers. For example,

    - Programmatic techniques, such as exposing an API

    - Registration techniques, such as creating a plug-in architecture (like a Web browser)

  • Integration and extension of persistent data can be accomplished through

    - Views

    - Hook tables

    - Spreadsheet pivot tables

    - Extract, transform, and load (ETL) scripts

  • The business ramifications of applications that can be extended and/or integrated include

    - A professional services organization to guide your customers in these activities

    - Training programs to ensure that your customers understand how to do this on their own

    - Certification programs to create an ecosystem associated with your application

    - A community of users around your application

    - License agreements that explicitly support integration and extension

  • Any customer- facing method for integrating and/or extending your application must be carefully managed. You're making a public commitment to stability. Honor it.

Категории