- Codd's Twelve Rules for Normalization
- Service Oriented Architecture
Service-oriented architecture (SOA) is a set of design principles used during the phases of systems development and integration in computing. A system based on a SOA will package functionality as a suite of interoperable services that can be used within multiple separate systems from several business domains.
SOA also generally provides a way for consumers of services, such as web-based applications, to be aware of available SOA-based services. For example, several disparate departments within a company may develop and deploy SOA services in different implementation languages; their respective clients will benefit from a well understood, well defined interface to access them. XML is commonly used for interfacing with SOA services, though this is not required.
Web services, while representing independent units of application logic can be used as stand-alone applications fulfilling requests from different service requestors. However, the real power of web services lies in the fact that you can bind them within service compositions, applying the principles and concepts of Service-Oriented Architecture.
Ideally, web services should be designed to be loosely coupled so that they can potentially be reused in various SOA solutions and used for a wide range of service requestors. When utilized within an SOA, services are part of a business process determining the logical order of service activities, logical units of work performed by one or more services.
Today, the most popular tool for organizing service activities into business processes is Web Services Business Process Execution Language (WS-BPEL), a language defining an execution format for business processes operating on services.
While it is not a trivial task to create a business process definition with WS-BPEL from scratch, using a graphical WS-BPEL tool can significantly simplify this process.
It is fairly obvious that examples and practice are much more valuable than theory when it comes to discussions of how to build applications using specific development tools.