Index:
1) Service-Oriented Architecture - A practical example by Jaime Marcial
2) Choose your Words, Designs, and Tools Wisely! by Derek Ferguson, Editor-in-Chief, .NET Developer's Journal
3) Illinois Institute of Technology offers new short course on SOA
4) About Modularis
1. Service-Oriented Architecture - A practical example
by Jaime Marcial
On our last issue of SOA Today, we defined Service-Oriented
Architecture (SOA) as a software architecture in which all operations
are encapsulated in small but independent units of functionality
(services). These services are defined using a description language and
have exposed interfaces that are called by services to perform business
processes. These services should be platform-independent.
Now, let us try to apply this highly abstract definition to a real-world scenario.
Company ABC is a brick and mortar store that wishes to offer their products online as well. They want to have the ability to keep track of their online customers using a membership model.
It seems like a very straightforward application. However, let's analyze this sentence from a Service Oriented Architecture perspective:
* Will multiple departments (Shipping, Customer Service, Sales and/or Accounting, etc.) share and process order information?
* Are the sales or marketing departments interested in gathering customer information?
* Is there an existing system used to manage the company's item catalog and/or inventory?
* What is the future strategy as far as online retailing goes for Company ABC? Are they planning to create more than one online store to target specific or vertical markets?
There are three key factors to construct a first-class Service-Oriented Architecture. As the Software Architect:
1) You must know the business and its processes.
2) You must follow a proven software development methodology.
3) You must establish a clear communication path between every domain involved in all business activities.
A Software Architect is not only a good technologist but also must have very good business and communication skills. He/she must know how to keep the balance between business needs, design, and implementation details in order to make key decisions on how to build the software infrastructure of an organization.
In order to establish a technology roadmap, you must have an understanding of the current state of the business, its policies and procedures, and its short-term and long-term goals. This technology roadmap will give the project manager the information necessary to create a realistic and achievable project plan that will help forecast development costs and identify key milestones. Having this knowledge allows the Software Architect to understand the big picture and identify the critical services that the business needs.
Application development methodologies are necessary to gather your business requirements and design your services. A structured approach to software development is nothing new. However, most of the time, it is the first thing that suffers when time and cost constraints are come into play. You must be careful with which corners you cut! If you carefully design your services, debugging, testing and maintenance costs are sure to decrease.
It is imperative to involve each member of your design team as well as representatives of every domain in your organization in order to better design an enterprise-wide Service-Oriented Architecture that will integrate your business. Business these days moves at the speed of light. Requirements are constantly changing and your design team must serve as the keeper of these changes, many of which may affect more than one domain. By communicating constantly, the different domains affected by a change can better prepare and adjust their internal processes to handle change effectively.
Now, let's go back to our example. Let's examine our first question:
Will multiple departments (Shipping, Customer Service, Sales and/or Accounting, etc.) share and process order information?
Let's assume that the answer is yes and the details are as follows:
* The Shipping department requires the information for order fulfillment purposes.
* The Customer Service department requires the information for customer issues, order tracking and returns.
* The Sales department requires the information to create a sales forecast.
* The Accounting department requires the information for billing purposes.
Each business domains uses the order information for very distinct reasons. Even though the data is the same, the context in which it is processed is completely different.
Let's start defining the Service-Oriented Architecture for our application. The following diagram helps us visualize the different services that should satisfy these business requirements defined above at a high level:
<Click on the link below to see the illustration>
http://www.soatoday.com/newsletter/volume1/issue2/SOAIllustration1.png
We defined an Order Management service to decouple its functionality from our current project (online store). This functionality will be available to our online store and to other services and projects, which Company ABC can build in the future.
Once you have your domains defined and your services identified, you can design the interface exposed by them. In our example, we can define the Order Management Service as follows:
Order Management Service
* Create order. Consumed by our online store interface.
* Update order. Consumed by our Customer Care Service.
* Get order. Consumed by all services.
* Cancel Order. Consumed by our Customer Care Service and optionally by the online store.
Now that we have our interface defined, let's analyze every operation in more detail.
Create Order
* Receives and stores customer billing, shipping and order information.
* Assuming there is an external inventory service, it updates the item count.
* Notifies the billing and shipping department.
Update Order
* Receives and updates revised customer billing, shipping and order information.
* Assuming there is an external inventory service, it updates the item count.
* Notifies the billing and shipping department.
Cancel Order
* Receives and updates and voids customer billing, shipping and order information.
* Assuming there is an external inventory service, it updates the item count.
* Notifies the billing and shipping department of cancellation.
Get Order
* Returns customer billing, shipping and order information based on a given criteria.
In conclusion, the software design process starts with the core business processes. You can design the user interface in parallel if desired, but it should not drive your overall design decisions.
2. Choose your Words, Designs, and Tools Wisely!
by Derek Ferguson, Editor-in-Chief, .NET Developer's Journal
I recently wrote an Editorial as Editor-in-Chief of the .NET
Developer's Journal in which I openly questioned the value of
re-architecting existing systems to use the latest and greatest
technologies. Specifically, I illustrated my argument with the case of a local ISV I know that spent several months re-architecting a successful COM-based application to use .NET while their competitors continued to add features to their existing system. The end result was that after a few months of development by both organizations, the company that had stayed on their legacy platform and invested in features had a much richer product than the folks who had spent their resources porting to .NET.
Unfortunately, this Editorial has been misunderstood in some quarters as an attack on the virtues of upfront design vs. most organizations' "just start coding" approach. Others among my critics have suggested that I bring the value of the .NET platform into question whenever I suggest that not every legacy system out there in existence is an equally good candidate for migration to my favorite platform. To both of these groups, I have just one thing to say: get real!
As a Microsoft Most Valuable Professional for the .NET Compact Framework and Chief Technologist for Expand Beyond Corporation (http://www.XB.com), a leading provider of mobile software services and training, I am well-acquainted with the value of up-front design and education. Organizations that refuse to do proper planning and design before embarking on the construction of any modern, large-scale system will soon find themselves bleeding money like stuck pigs once they get midway in their development efforts.
This truth will become increasingly evident as the move towards interconnected, Service-Oriented Architectures (SOA) continues to accelerate over the remainder of this decade. SOA has rendered forever obsolete the idea of the lone programmer acting in complete isolation as analyst, architect, and coder for any serious software project.
We are fortunate as software engineers to have a platform as robust and extensible as .NET upon which to build the large-scale SOA systems of the near future. Virtualized execution on the CLR represents the same quantum leap forward in reliability and security as the move from DOS to Win32 before it. The ability to transparently access, store, and expose object-based functionality via industry-standard XML is -- although not strictly required by SOA -- so fundamental to 21st century interoperability requirements as to make any attempt at modern software development in its absence nearly impossible!
The devil in all of these details, however, is the phenomenal difficulty that can arise in implementing any of these technologies without sufficient expertise. Modularis' Accelerator is an excellent example of a tool that cuts through the complexity of implementing SOA on .NET like a machete clearing a path through a jungle. It will save you thousands of lines of code, but more importantly, by generating code directly from your design, it will save you from making mistakes during implementation that could be orders of magnitude even more costly to your organization.
3.
Illinois Institute of Technology offers new short course on SOA
IIT has just announced a new 2-day course centering around SOA and .NET:
------
SC 414 - Accelerating the Software Development Lifecycle
------
In this course, the latest tools, techniques, and methodologies to accelerate the software development lifecycle will be discussed. The best practices for the architecture, design, and implementation of mission-critical software on the Microsoft .NET platform will also be covered in some detail.
This course will explore Service-Oriented Architecture (SOA) and its impact on software quality, efficiency, performance, and flexibility. A practical approach to implementing SOA rapidly and safely will be demonstrated via a hands-on lab.
Prerequisites: Participants should have a basic understanding of object-oriented design and computer programming. Experience with Microsoft .NET is recommended, but not required.
Who should attend: This course is valuable for anyone interested in learning about the latest advances in software architecture, tools, and techniques that accelerate the software development lifecycle and drive down the risk, time, and cost of software development.
Expected outcomes: Participants will learn Service-Oriented Architecture (SOA), Model-Driven development, and will be able to start designing and rapidly building SOA-enabled .NET software applications.
Schedule:
Dates & Times Cost CEU Course Number & Location
-----------------------------------------------
Oct 20 - 21, 2004 $695 1.4 SC 414
Chicago Loop
Nov 9 - 10, 2004 $695 1.4 SC 414
Rice Campus - Wheaton
Course Outline:
Day 1: Interactive Discussion
* Introduction to the Accelerated Software Development Lifecycle
* Introduction to Service-Oriented Architecture (SOA)
* Impact of SOA on the Software Development Lifecycle
* Impact of SOA on software quality, performance, and flexibility
* Introduction to Model-Driven Development
* Lessons from Manufacturing: Tools and Techniques to automate software construction
* Accelerated Lifecycle Case Study Review
Day 2: Hands-On Workshop
* Designing, Building, Testing, and Deploying an SOA-Enabled .NET application
Registration:
Online - Visit http://www.cpd.iit.edu/shortcourse/register, complete the online form and submit.
Call or email Janet Reif - 630.682.6035 or mailto:reif@iit.edu
4. About Modularis
Founded in 1999 and headquartered in Chicago, Illinois, Modularis, Inc. is doing
for software, what automation and robotics has done for manufacturing. Modularis
leveraged its expertise in Service-Oriented Architecture (SOA) and automation to
build Modularis Accelerator 6, an Architected-RAD environment without equal on
the Microsoft .NET platform.
Accelerator enables Modularis customers to build scalable, available, and
maintainable .NET applications at a fraction of the risk, time, and cost
typically associated with custom software development. For more information
about Modularis Accelerator, call Gery Knapp at (312) 648-1740 x208, or visit us
on the web at www.accelerating.net.
|