Preface

Chapter 1: Introduction
  1.1 Objectives of this Book
  1.2 Who this Book is For
  1.3 What this Book Does Not Cover
    Topics Covered by Other Books
    SOA Standardization Efforts
  1.4 How this Book is Organized
    Part I: Fundamentals
    Part II: Design Principles
    Part III: Supplemental
    Appendices
  1.5 Symbols, Figures, and Style Conventions
    Symbol Legend
    How Color is Used
    The Service Symbol
  1.6 Additional Information
    Updates, Errata, and Resources
    Master Glossary
    Referenced Specifications
    Service-Oriented Computing Poster
    The SOA Magazine
    Notification Service
    Contact the Author

Chapter 2: Case Study
  2.1 How Case Study Examples are Used
  2.2 Case Study Background: Cutit Saws Ltd.
    History
    Technical Infrastructure and Automation Environment
    Business Goals and Obstacles

Part I. Fundamentals
Chapter 3: Service-Oriented Computing and SOA
  3.1 Design Fundamentals
    Design Characteristic
    Design Principle
    Design Paradigm
    Design Pattern
    Design Pattern Language
    Design Standard
    Best Practice
    A Fundamental Design Framework
    Summary of Key Points
  3.2 Introduction to Service-Oriented Computing
    Service-Oriented Architecture
    Service-Orientation, Services, and Service-Oriented Solution Logic
    Service Compositions
    Service Inventory
    Understanding Service-Oriented Computing Elements
    Service Models
    SOA and Web Services
    Service Inventory Blueprints
    Service-Oriented Analysis and Service Modeling
    Service-Oriented Design
    "Service-Oriented Architecture: Concepts, Technology, and Design,"
    Summary of Key Points
  3.3 Goals and Benefits of Service-Oriented Computing
    Increased Intrinsic Interoperability
    Increased Federation
    Increased Vendor Diversification Options
    Increased Business and Technology Domain Alignment
    Increased ROI
    Increased Organizational Agility
    Reduced IT Burden
    Summary of Key Points
  3.4 Case Study Background

Chapter 4: Service-Orientation
  4.1 Introduction to Service-Orientation
    Services in Business Automation
    Services are Collections of Capabilities
    Service-Orientation as a Design Paradigm
    Service-Orientation and Interoperability
    Summary of Key Points
  4.2 Problems Solved by Service-Orientation
    Life Before Service-Orientation
    The Need for Service-Orientation
    Summary of Key Points
  4.3 Challenges Introduced by Service-Orientation
    Design Complexity
    Need for Design Standards
    Top-Down Requirements
    Counter-Agile Delivery
    Governance Demands
    Summary of Key Points
  4.4 Additional Considerations
    It is Not a Revolutionary Paradigm
    Enterprise-wide Standardization is not Required
    Reuse is Not an Absolute Requirement
    Summary of Key Points
  4.5 Effects of Service-Orientation on the Enterprise
    Service-Orientation and the Concept of "Application"
    Service-Orientation and the Concept of "Integration"
    The Service Composition
    Application, Integration, and Enterprise Architectures
    Summary of Key Points
  4.6 Origins and Influences of Service-Orientation
    Object-Orientation
    Web Services
    Business Process Management (BPM)
    Enterprise Application Integration (EAI)
    Aspect-Oriented Programming (AOP)
    Summary of Key Points
  4.7 Case Study Background

Chapter 5: Understanding Design Principles
  5.1 Using Design Principles
    Incorporate Principles within Service-Oriented Analysis
    Incorporate Principles within Formal Design Processes
    Establish Supporting Design Standards
    Apply Principles to a Feasible Extent
    Summary of Key Points
  5.2 Principle Profiles
    Summary of Key Points
  5.3 Design Pattern References
  5.4 Principles that Implement vs. Principles that Regulate
    Summary of Key Points
  5.5 Principles and Service Implementation Mediums
    "Capability" vs. "Operation" vs. "Method"
  5.6 Principles and Design Granularity
    Service Granularity
    Capability Granularity
    Data Granularity
    Constraint Granularity
    Sections on Granularity Levels
    Summary of Key Points
  5.7 Case Study Background
    The Lab Project Business Process

Part II. Design Principles
Chapter 6: Service Contracts (Standardization and Design)
  6.1 Contracts Explained
    Technical Contracts in Abstract
    Origins of Service Contracts
    Summary of Key Points
  6.2 Profiling this Principle
    Summary of Key Points
  6.3 Types of Service Contract Standardization
    Standardization of Functional Service Expression
    Standardization of Service Data Representation
    Standardization of Service Policies
    Summary of Key Points
  6.4 Contracts and Service Design
    Data Representation Standardization and Transformation Avoidance
    Standardization and Service Granularity
    Standardized Service Contracts and Service Models
    How Standardized Service Contract Design Affects Other Principles
    Summary of Key Points
  6.5 Risks Associated with Service Contract Design
    Versioning
    Technology Dependencies
    Development Tool Deficiencies
    Summary of Key Points
  6.6 More About Service Contracts
    Non-Technical Service Contract Documents
    "Web Service Contract Design for SOA"
  6.7 Case Study Example
    Planned Services
    Design Standards
    Standardized WSDL Definition Profiles
    Standardized XML Schema Definitions
    Standardized Service and Data Representation Layers
    Service Descriptions
    Conclusion

Chapter 7: Service Coupling (Intra-Service and Consumer Dependencies)
  7.1 Coupling Explained
    Coupling in Abstract
    Origins of Software Coupling
    Summary of Key Points
  7.2 Profiling this Principle
    Summary of Key Points
  7.3 Service Contract Coupling Types
    Logic-to-Contract Coupling (the coupling of service logic to the service contract)
    Contract-to-Logic Coupling (the coupling of the service contract to its logic)
    Contract-to-Technology Coupling (the coupling of the service contract to its underlying technology)
    Contract-to-Implementation Coupling (the coupling of a service contract to its implementation environment)
    Contract-to-Functional Coupling (the coupling of a service contract to external logic)
    Summary of Key Points
  7.4 Service Consumer Coupling Types
    Consumer-to-Implementation Coupling
    Standardized Service Coupling and Contract Centralization
    Consumer-to-Contract Coupling
    Measuring Consumer Coupling
    Summary of Key Points
  7.5 Service Loose Coupling and Service Design
    Coupling and Service-Orientation
    Service Loose Coupling and Service Granularity
    Coupling and Service Models
    How Service Loose Coupling Affects Other principles
    Summary of Key Points
  7.6 Risks Associated with Service Loose Coupling
    Limitations of Logic-to-Contract Coupling
    Performance Problems when Schema Coupling is "too loose"
    Summary of Key Points
  7.7 Case Study Example
    Coupling Levels of Existing Services
    Introducing the InvLegacyAPI Service
    Service Design Options

Chapter 8: Service Abstraction (Information Hiding and Meta Abstraction Types)
  8.1 Abstraction Explained
    Origins of Information Hiding
    Summary of Key Points
  8.2 Profiling this Principle
    Summary of Key Points
  8.3 Types of Meta Abstraction
    Technology Information Abstraction
    Functional Abstraction
    Programmatic Logic Abstraction
    Quality of Service abstraction
    Meta Abstraction Types and the Web service Regions of Influence
    Meta Abstraction Types in the Real World
    Summary of Key Points
  8.4 Measuring Service Abstraction
    Contract Content Abstraction Levels
    Access Control Levels
    Abstraction Levels and Quality of Service Meta Information
    Summary of Key Points
  8.5 Service Abstraction and Service Design
    Service Abstraction vs. Service Encapsulation
    How Encapsulation Can Affect Abstraction
    Service Abstraction and Non-Technical Contract Documents
    Service Abstraction and Service Granularity
    Service Abstraction and Service Models
    How Service Abstraction Affects Other Principles
    Summary of Key Points
  8.6 Risks Associated with Service Abstraction
    Multi-Consumer Coupling Requirements
    Misjudgment by Humans
    Security and Privacy Concerns
    Summary of Key Points
  8.7 Case Study Example
    Service Abstraction Levels
    Operation-Level Abstraction Examples

Chapter 9: Service Reusability (Commercial and Agnostic Design)
  9.1 Reuse Explained
    Reuse in Abstract
    Origins of Reuse
    Summary of Key Points
  9.2 Profiling this Principle
    Summary of Key Points
  9.3 Measuring Service Reusability and Applying Commercial Design
    Commercial Design Considerations
    Measures of Planned Reuse
    Measuring Actual Reuse
    Commercial Design Versus Gold-Plating
    Summary of Key Points
  9.4 Service Reuse in SOA
    Reuse and the Agnostic Service
    The Service Inventory Blueprint
    Summary of Key Points
  9.5 Standardized Service Reuse and Logic Centralization
    Understanding Logic Centralization
    Logic Centralization as an Enterprise Standard
    Logic Centralization and Web Services
    Logic Centralization and Contract Centralization
    Challenges to Achieving Logic Centralization
    Summary of Key Points
  9.6 Service Reusability and Service Design
    Service Reusability and Service Modeling
    Service Reusability and Service Granularity
    Service Reusability and Service Models
    How Service Reusability Affects Other Principles
    Summary of Key Points
  9.7 Risks Associated with Service Reusability and Commercial Design
    Cultural Concerns
    Governance Concerns
    Reliability Concerns
    Security Concerns
    Commercial Design Requirement Concerns
    Agile Delivery Concerns
    Summary of Key Points
  9.8 Case Study Example
    The Inventory Service Profile
    Assessing Current Capabilities
    Modeling for a Targeted Measure of Reusability
    The New EditItemRecord Operation
    The New ReportStockLevels Operation
    The New AdjustItemsQuantity Operation
    Revised Inventory Service Profile

Chapter 10: Service Autonomy (Processing Boundaries and Control)
  10.1 Autonomy Explained
    Autonomy in Abstract
    Origins of Autonomy
    Summary of Key Points
  10.2 Profiling this Principle
    Summary of Key Points
  10.3 Types of Service Autonomy
    Runtime Autonomy (execution)
    Design-Time Autonomy (governance)
    Summary of Key Points
  10.4 Measuring Service Autonomy
    Service Contract Autonomy (services with normalized contracts)
    Shared Autonomy
    Service Logic Autonomy (partially isolated services)
    Pure Autonomy (isolated services)
    Services with Mixed Autonomy
    Summary of Key Points
  10.5 Autonomy and Service Design
    Service Autonomy and Service Modeling
    Service Autonomy and Service Granularity
    Service Autonomy and Service Models
    How Service Autonomy Affects Other Principles
    Summary of Key Points
  10.6 Risks Associated with Service Autonomy
    Misjudging the Service Scope
    Wrapper Services and Legacy Logic Encapsulation
    Overestimating Service Demand
    Summary of Key Points
  10.7 Case Study Example
    Existing Implementation Autonomy of the GetItem Operation
    New Operation-Level Architecture with Increased Autonomy
    Effect on the Run Lab Project composition

Chapter 11: Service Statelessness (State Deferral and Stateless Design)
  11.1 State Management Explained
    State Management in Abstract
    Origins of State Management
    Deferral vs. Delegation
    Summary of Key Points
  11.2 Profiling this Principle
    Summary of Key Points
  11.3 Types of State
    Active and Passive
    Stateless and Stateful
    Session and Context Data
    Summary of Key Points
  11.4 Measuring Service Statelessness
    Non-Deferred State Management (low-to-no statelessness)
    Partially Deferred Memory (reduced statefulness)
    Partial Architectural State Management Deferral (moderate statelessness)
    Full Architectural State Management Deferral (high statelessness)
    Internally Deferred State Management (high statelessness)
    Summary of Key Points
  11.5 Statelessness and Service Design
    Messaging as a State Deferral Option
    Service Statelessness and Service Instances
    Service Statelessness and Service Granularity
    Service Statelessness and Service Models
    How Service Statelessness Affects Other Principles
    Summary of Key Points
  11.6 Risks Associated with Service Statelessness
    Dependency on the Architecture
    Increased Runtime Performance Demands
    Underestimating Delivery Effort
    Summary of Key Points
  11.7 Case Study Example
    Solution Architecture with State Management Deferral

Chapter 12: Service Discoverability (Interpretability and Communication)
  12.1 Discoverability Explained
    Discovery and Interpretation, Discoverability and Interpretability in Abstract
    Origins of Discovery
    Summary of Key Points
  12.2 Profiling this Principle
    Summary of Key Points
  12.3 Types of Discovery and Discoverability Meta Information
    Design-Time and Runtime Discovery
    Discoverability Meta Information
    Functional Meta Data
    Quality of Service Meta Data
    Summary of Key Points
  12.4 Measuring Service Discoverability
    Fundamental Levels
    Custom Rating System
  12.5 Discoverability and Service Design
    Service Discoverability and Service Modeling
    Service Discoverability and Service Granularity
    Service Discoverability and Policy Assertions
    Service Discoverability and Service Models
    How Service Discoverability Affects Other Principles
    Summary of Key Points
  12.6 Risks Associated with Service Discoverability
    Post-Implementation Application of Discoverability
    Application of this Principle by Non-Communicative Resources
    Summary of Key Points
  12.7 Case Study Example
    Service Profiles (functional meta information)
    Related Quality of Service Meta Information

Chapter 13: Service Composability (Composition Member Design and Complex Compositions)
  13.1 Composition Explained
    Composition in Abstract
    Origins of Composition
    Summary of Key Points
  13.2 Profiling this Principle
    Summary of Key Points
  13.3 Composition Roles, Models, and Service Activities
    Compositions and Composition Instances
    Composition Members and Controllers
    Service Compositions and Web Services
    Service Activities
    Composition Initiators
    Point-to-Point Data Exchanges and Compositions
    Types of Compositions
    Summary of Key Points
  13.4 The Complex Service Composition
    Stages in the Evolution of a Service Inventory
    Defining the Complex Service Composition
    Preparing for the Complex Service Composition
    Summary of Key Points
  13.5 Measuring Service Composability and Composition Effectiveness Potential
    Evolutionary Cycle States of a Composition
    Composition Design Assessment
    Composition Runtime Assessment
    Composition Governance Assessment
    Measuring Composability
    Summary of Key Points
  13.6 Composition and Service Design
    Service Composability and Service Granularity
    Service Composability and Service Models
    Service Composability and Composition Autonomy
    Service Composability and Orchestration
    How Service Composability Affects Other Principles
    Summary of Key Points
  13.7 Risks Associated with Service Composition
    Composition Members as Cascading, Single Points of Failure
    Composition Members as Performance Bottle-necks
    Governance Rigidity of "over-reuse" in Compositions
    Summary of Key Points
  13.8 Case Study Example

Part III. Supplemental
Chapter 14: Service-Orientation and Object-Orientation: A Comparison of Principles and Concepts
  14.1 A Tale of Two Design Paradigms
    Summary of Key Points
  14.2 A Comparison of Goals
    Increased Business Requirements Fulfillment
    Increased Robustness
    Increased Extensibility
    Increased Flexibility
    Increased Reusability and Productivity
    Summary of Key Points
  14.3 A Comparison of Fundamental Concepts
    Classes and Objects
    Methods and Attributes
    Messages
    Interfaces
    Summary of Key Points
  14.4 A Comparison of Design Principles
    Encapsulation
    Inheritance
    Generalization and Specialization
    Abstraction
    Polymorphism
    Open-Closed Principle (OCP)
    Don't Repeat Yourself (DRY)
    Single Responsibility Principle (SRP)
    Delegation
    Association
    Composition
    Aggregation
  14.5 Guidelines for Designing Service-Oriented Classes
    Implement Class Interfaces
    Limit Class Access to Interfaces
    Do Not Define Public Attributes in Interfaces
    Use Inheritance with Care
    Avoid Cross-Service "has-a" Relationships
    Use Abstract Classes for Modeling, Not Design
    Use Façade Classes
    Summary of Key Points

Chapter 15: Supporting Practices
  15.1 Service Profiles
    Service-Level Profile Structure
    Capability Profile Structure
    Additional Considerations
    Summary of Key Points
  15.2 Vocabularies
    Service-Oriented Computing Terms
    Service Classification Terms
    Types and Associated Terms
    Design Principle Application Levels
    Summary of Key Points
  15.3 Organizational Roles
    Service Analyst
    Service Architect
    Service Custodian
    Schema Custodian
    Policy Custodian
    Service Registry Custodian
    Technical Communications Specialist
    Enterprise Architect
    Enterprise Design Standards Custodian (and Auditor)
    Summary of Key Points

Chapter 16: Mapping Principles to Strategic Goals
  16.1 Principles that Increase Intrinsic Interoperability
  16.2 Principles that Increase Federation
    16.3 Principles that Increase Vendor Diversification Options
    16.4 Principles that Increase Business and Technology Domain Alignment
    16.5 Principles that Increase ROI
    16.6 Principles that Increase Organizational Agility
    16.7 Principles that Reduce the Overall Burden of IT

Appendix A: Case Study Conclusion

Appendix B: Process Descriptions
  B.1 Delivery Processes
    Bottom-Up vs. Top-Down
    The Inventory Analysis Cycle
    Inventory Service Analysis and Service-Oriented Design
    Choosing a Delivery Strategy
  B.2 Service-Oriented Analysis Process
  B.3 Service Modeling Process
  B.4 Service-Oriented Design Processes
    Design Processes and Service Models
    Service Design Processes and Service-Orientation

Appendix C: Principles and Patterns Cross-Reference

Additional Resources
About the Author
About the Photographs
Index
SOA Principles of Service Design
SOA Principles of Service Design
by Thomas Erl