On Integrating Service-Oriented Paradigm Into Introductory IS Courses: On Integrating Service-Oriented Paradigm Into Introductory IS Courses Billy B. L. Lim
Chu Jong
School of Information Technology
Illinois State University
Normal, IL 61790-5150, USA
Evolution of Approaches: Evolution of Approaches Delivery mode
Programming
Mainframe-based
PCs
Text-based
Graphical user interfaces (GUIs)
Web
Java Applet, JavaScript
Analysis and Design
Structured
OO
Next wave
SOA (service-oriented architecture) / WS (Web services)?
Procedural Object-Oriented
Service, Service Paradigm, and SOA: Service, Service Paradigm, and SOA Service
“Services are self-describing, platform-agnostic computational elements that support rapid low-cost composition of distributed applications.” (Papazoglou, 2003)
“[A service] is an application function packaged as a reusable component for use in a business process. It either provides information or facilitates a change to business data from one valid and consistent state to another.” (Bennett, 2002)
Service-oriented paradigm / SOA
utilizes services as fundamental building blocks for developing applications
Web services: The 4 W’s: Web services: The 4 W’s What
“A Web service is a software system designed to support interoperable machine-to-machine interaction over a network. It has an interface described in a machine-processable format (specifically WSDL). Other systems interact with the Web service in a manner prescribed by its description using SOAP-messages, typically conveyed using HTTP with an XML serialization in conjunction with other Web-related standards.” [W3C]
Web services Components
WSDL (Web Service Description Language)
SOAP (Simple Object Access Protocol)
UDDI (Universal Description, Discovery, and Integration)
Web services: The 4 W’s (cont’d): Web services: The 4 W’s (cont’d) Why
4 papers at ISECON 2006
“Creating Web Services for Legacy COBOL”
“Web Services: Introduction and Travel Project Tutorials Using Visual Studio and ASP.NET”
“Service-Oriented Architecture: Concepts and Implementation”
“Integrating a Service-Oriented Paradigm into Introductory IS Courses”
This seems to be one of the most promising advances in software design & development in recent years
Interoperable, Easy to use, Reusable, Ubiquitous, Firewall-friendly, Platform/language independent, etc.
Web services: The 4 W’s (cont’d): Web services: The 4 W’s (cont’d) Who
Major solution providers
Microsoft, IBM, Sun, Oracle, HP, BEA, etc.
Consumers/Producers
State Farm, Caterpillar, Amazon, Google, Nordstrom, General Motors, Nasdaq, etc.
List of public Web Services http://www.xmethods.net/
Who should pay attention to this?
All of us!
When
2006 to 2008 (fully dynamic search and use) [IDC]
Casual / ad-hoc use of services
New business models possible
Commoditization of software
Pervasive use in nontraditional devices
Service Paradigm in Introductory IS Courses: Why?: Service Paradigm in Introductory IS Courses: Why? Why not!
Prepares students for upper division courses
=> prepares students for the IT industry
Allows for “concrete” showcase of concepts
Makes the courses fun!
Integration Scenarios: Integration Scenarios Method Invocation
Sequential, Iterative, and Decision Structures
Sorting and/or Searching
Miscellaneous Data structures
Use of Different OS
File vs. DBMS
System Concepts
EDI / System Integration
Sequential, Iterative, and Decision Structures: Sequential, Iterative, and Decision Structures An example
Traditional approach
Same old stuff
Web services approach
A plausible scenario here is to discuss a problem where one wishes to find out the coldest temperature in an area by zip codes at a particular moment in time. Further, the coldest area needs to be plotted on a map.
Sequential, Iterative, and Decision Structures (cont’d): Sequential, Iterative, and Decision Structures (cont’d) Web services available (for the task)
http://www.xmethods.net/sd/2001/TemperatureService.wsdl
Returns current temperature for a given U.S. zipcode
http://teachatechie.com/GJTTWebServices/ZipCode.asmx
GetNearbyZipCodes
Returns a DataSet containing maximum of 250 zip codes and radius mileage within a given radius of a zip code
http://staging.mappoint.net/standard-30/mappoint.wsdl
Finding Addresses, Finding Nearby Places, Routing, Map Rendering, etc.
WS-based Solution: WS-based Solution
WS-based Solution: WS-based Solution
WS-based Solution (C#): WS-based Solution (C#) // Get the two input values
string homeZip = textBox1.Text;
string radius = textBox2.Text;
ZipCode zipService = new ZipCode();
// get all the nearBy zips
DataSet ds = zipService.GetNearbyZipCodes(homeZip,Convert.ToDecimal(radius));
string[] zipArr = processZip(ds);
// get the coldest one and display
string coldestZip = findColdestZip(zipArr);
textBox3.Text = coldestZip;
// plot the map with the coldest zip
getMap(coldestZip);
1st Web service
WS-based Solution (C#): WS-based Solution (C#) // Process the zipcodes (in XML format) and return them as an array of strings
string[] processZip (DataSet ds) {
string xmlText = ds.GetXml();
XmlDocument doc = new XmlDocument( );
doc.LoadXml( xmlText);
XmlNodeList zip = doc.GetElementsByTagName( "ZIP_CODE" );
XmlNodeList distance = doc.GetElementsByTagName( "RADIUS_MILES" );
string[] zipArr = new string[zip.Count];
for ( int i = 0; i < zip.Count; ++i )
{
Console.WriteLine( "{0}, {1}", zip[i].InnerText, distance[i].InnerText);
zipArr[i] = zip[i].InnerText;
}
return zipArr;
}
WS-based Solution (C#): WS-based Solution (C#) // Iterate over all the zipcodes and find the temperature each time through.
// Record the coldest one along the way.
string findColdestZip(string [] zipArr) {
TemperatureService tempService = new TemperatureService();
// Get the first zipcode
string currentZip = zipArr[0];
float coldestTemp = tempService.getTemp(currentZip);
int coldestZip = 0;
// Go thru all the other zipcodes and find the coldest temperature
for (int i = 1; i < zipArr.Length; i++) {
currentZip = zipArr[i];
float temp = tempService.getTemp(currentZip);
if (temp < coldestTemp) {
coldestTemp = temp;
coldestZip = i;
}
}
return zipArr[coldestZip];
} 2nd Web service
WS-based Solution (C#): WS-based Solution (C#) void getMap(string coldestZip) {
string myUserId = “12345";
string mySecurePassword = “secret";
RenderServiceSoap renderService = new RenderServiceSoap();
renderService.Credentials = new System.Net.NetworkCredential(myUserId, mySecurePassword);
FindServiceSoap findService = new FindServiceSoap();
findService.Credentials = new System.Net.NetworkCredential(myUserId, mySecurePassword);
FindSpecification findSpec = new FindSpecification();
findSpec.DataSourceName = "MapPoint.NA";
findSpec.InputPlace = coldestZip;
FindResults foundResults = findService.Find(findSpec);
ViewByHeightWidth[] myview = new ViewByHeightWidth[1];
myview[0] = foundResults.Results[0].FoundLocation.BestMapView.ByHeightWidth;
MapSpecification mapSpec = new MapSpecification();
mapSpec.DataSourceName = "MapPoint.NA";
mapSpec.Views = myview;
mapSpec.Options = new MapOptions();
mapSpec.Options.Format = new ImageFormat();
mapSpec.Options.Format.Height = this.pictureBox1.Size.Height;
mapSpec.Options.Format.Width = this.pictureBox1.Size.Width;
MapImage[] mapImages = renderService.GetMap(mapSpec);
this.pictureBox1.Image =
Bitmap.FromStream(new System.IO.MemoryStream(mapImages[0].MimeData.Bits));
} more Web services
What to Put in / Take Out?: What to Put in / Take Out? This will always be institution-dependent (and controversial!)
For me:
Put In: JUnit Testing, SOA/Web services
Take Out: Some GUI, some Ethics (let me explain )
Perhaps in the near future, it would be easier to manage this
In terms of approaches and topics (e.g., how OOP replaces structured programming)
Concluding Remarks: Concluding Remarks Summary
service integration makes sense and doable!
But a lot of work lie ahead (i.e., course materials, textbook, etc.)
Future Work
Google Maps
More in-depth integration at my own School
Advanced Web Development (SOA + Mobile Computing recently approved)
NSF grant application
Stay tuned!