11 Tips for Smarter Service Design
Here are the principles, patterns, and approaches you need to know to design services effectively.
by David S. Linthicum
June 8, 2005
Software design has always been a focus for developers, but as we have cycled through different approaches, standards, and architectures over the years, we have had a tendency to neglect the fundamentals of software engineering. Clearly, the decline in software quality is not from a lack of programming talent, but from a lack of upfront architecture and design. Skip this step and your service will cost much more to build and deploy, as you find yourself in an interactive death spiral that’s difficult to recover from.
As we learn more about Web services and their uses within SOA, we also learn how to design and build them correctly. Many traditional analysis and design techniques don’t apply, and through trial and error, we’re narrowing in on best practices.
In this article, I'll give some background on services and service-oriented architecture, define six unique service design principles and describe how to test for them, review different types of operational patterns for services, and finally reveal five tips for solid service design.
Services are the building blocks of service-oriented architecture (SOA). SOA is an architectural style supporting loosely coupled services that enable the construction of many systems that are technology-agnostic. Moreover, SOA uses a composite set of services supporting a flexible and dynamic reconfigurable end-to-end, using interface-based service descriptions (see Figure 1).
Although there are no hard-and-fast guidelines on what makes up a well-defined and well-developed service, we do know a few things. First, services are not applications. They are a small part of applications. Nor are they subsystems; they are small parts of subsystems as well. Indeed, services are more analogous to traditional application functions in terms of design and how they are leveraged to form solutions.
Considering the pattern Update Existing Employee Record, the pseudo code for such a service could be:
Start
Validate New Data
Locate Employee Record
Lock Record
Update Record with New Information
Unlock Record
End
Back to top
|