






Study with the several resources on Docsity
Earn points by helping other students or get them with a premium plan
Prepare for your exams
Study with the several resources on Docsity
Earn points to download
Earn points by helping other students or get them with a premium plan
Abstract — Web software development and cloud computing based on Service-Oriented Architecture (SOA) and Service-Oriented Computing (SOC) represent the.
Typology: Study notes
1 / 12
This page cannot be seen from the preview
Don't miss anything!







Abstract — Web software development and cloud computing based on Service-Oriented Architecture (SOA) and Service-Oriented Computing (SOC) represent the modern software engineering theories, practices, and technologies. As an architecture-driven computing paradigm, SOA and SOC are mature and are becoming the major paradigm for software development. SOA and SOC should be taught in all computer science and computer engineering programs. We do not suggest using SOC to replace the currently taught Object-Oriented Computing (OOC) paradigm. As SOC is based on OOC, we suggest to teaching SOC as the continuation and extension of OOC. At Arizona State University, SOA and SOC paradigm is incorporated into our Computing Science and Software Engineering programs since 2006. This paper presents the topics of the related courses and the open resources created for the courses, which are available for public accesses, including textbooks, lecture presentation slides, tests and assignments, software tools, a repository of sample services and applications, and tutorials of using tools and the cloud computing environment for service hosting and deployment.
Keywords – Computing paradigm, service-oriented architecture, service repository, computing curriculum, computer science education
Software development has evolved for several generations from imperative, procedural, object- oriented, to distributed object-oriented computing paradigms [1][2]. As the emergence of Service- Oriented Architecture (SOA) and Service-Oriented Computing (SOC) [3][4][5], software development is shifting from distributed object-oriented development, represented by for example, CORBA (Common Object Request Broker Architecture) [5] developed by OMG (Object Management Group) and Distributed Component Object Model (DCOM) [7] developed by Microsoft, to service-oriented development (SOD). SOA, SOC, and SOD have been adopted and supported by all major computer companies. The related technologies have been standardized by OASIS, W3C, and ISO [8]. Government agencies also adopted SOC in their system development [9].
Before proceed further, let us first clarify the fundamental concepts used in the paper and in other literatures: SOA, SOC, SOD, and SaaS (Software-as- a-service) [3][4][5][8]. SOA is a distributed software architecture, which considers a software system consisting of a collection of loosely coupled services that communicate with each other through standard interfaces and standard protocols [3][4]. These services are platform independent. Services can be published in public or private directories or repositories for software developers to compose their applications. As a software architecture, SOA is a conceptual model that concerns the organization and interfacing among the software components (services). It does not concern the development of operational software. SOC refers to the computing based on the SOA conceptual model [5]. However, SOC goes a step further to include not only the concepts and principles, but also the methods, algorithms, coding, and evaluation, which form a large part of the software development process. SOD concerns the entire software development cycle based on SOA concepts and SOC paradigm, including requirement, specification, architecture design, composition, service discovery, service implementation, testing, evaluation, deployment, and maintenance [8]. SOD also involves using the current technologies and tools to effectively produce operational software. SaaS is a special kind of software that runs on the top of a cloud platform. The simplest SaaS is simply a Web service. However, SaaS often refers to a Web application that uses Multi-Tenancy Architecture (MTA) with a scalable scheduler. SaaS takes advantages of the computing resources provided by the cloud platform, such as platform-as-a-service (PaaS) and infrastructure-as-a-service (IaaS). Well-known PaaS include GAE (Google App Engine), EC2, and Azure. Similarly, Salesforce.com is a well-known SaaS with MTA. A MTA SaaS uses one code base but can serve hundreds of thousand tenants, and each tenant has it own users. Thus, a MTA SaaS with a single code
Proceedings of The 6th IEEE International Symposium on Service Oriented System Engineering (SOSE 2011)
978-1-4673-0412-2/11/$26.00 ©2011 IEEE 122
base can serve millions of users with many different customizations by the tenants. In OOD, the software is often developed on desktop computers and distributed through executable files, the deployment is not a major issue. In SOD, on the other hand, software can be developed on desktop and then deployed to a server, or directly developed and hosted on a cloud computing environment. Hosting and deployment are major issues in the development process, which makes the teaching topics on SOD important, in additional to the topics on SOA and SOC. In Computer Science and Computer System Engineering programs at the Arizona State University, particularly in the Software Engineering concentration, SOA, SOC, and SOD are taught in a number of courses, including freshman course CSE (Introduction to Computer Science and Engineering), sophomore course CSE240 (Introduction to Programming Languages), senior course CSE (Distributed Software Development), and CSE (Software Integration and Engineering). CSE teaches different programming paradigms and uses a programming language in each paradigm to write application programs in the paradigm. SOC is introduced as the latest computing paradigm [2]. This paper will focus on CSE101, CSE445, and CSE494, where service orientation is the key topics of these courses. While teaching these courses, we collected and created abundance of resources, which are made available to all instructors and students around the world, including textbooks [2][8], syllabi [10][16][17], presentation slides, tests and assignments, a repository of sample services and applications for public accesses [21]. The courses also suggested the software tools and the cloud computing environment for service hosting and deployment and created tutorials of using the tools environments. This paper is organized as follows. Section II presents the service-oriented robotics application development in the freshman course CSE101. Sections III and IV discuss the core topics of SOA, SOC, and SOD taught in CSE445 and CSE494, respectively. Section V presents the repository of resources created for the courses. Section VI outlines the textbook developed for the courses discussed in this paper. Section VII shows the enrollments history of the courses since offered. Section VIII concludes this paper.
II. SERVICE-ORIENTED ROBOTICS PROGRAMMING CSE101 is a course required for all students in Computer Science program and Computer System Engineering program at Arizona State University. The course consists of one lecture hour and three lab hours each week for 15 weeks. The main tasks in the three lab hours are using service-oriented robotics development to learn the engineering design process.
The development environment used is Microsoft Robotics Developer Studio (MRDS) and its Visual Programming Language (VPL) [11]. First released in 2006, MRDS and VPL laid an important milestone in service-oriented computing. VPL is architecture-driven and is a service-oriented programming language that allows students to develop services, deploy the services into a repository, and then use the services in the repository to develop workflow-based robotics applications. As shown in Figure 1, MRDS is based on the .Net framework. VPL, C#, and Visual Basic can be used to program services as well as applications. The services can be added into MRDS’s service repository. The Concurrency and Coordination Runtime (CCR) shown in Figure 1 (right) provides a concurrent message- oriented programming model for SOA application development, and it manages asynchronous operations, dealing with concurrency, exploiting parallel hardware and handling exceptions and failures. As a result, users do not need to deal with threading, locks, and semaphores. Decentralized System Services (DSS) provides a service-hosting environment and a set of basic services facilitating tasks such as debugging, logging, monitoring, security, discovery, and data persistence. It also manages the interoperability between simulation engine and CCR, and allows application compositing using remote services. The DSS runtime is built on top of CCR and standard communication protocols. Instead of using SOAP over HTTP, DSS runtime uses REST (Representational State Transfer) over HTTP, which can better deal with the real-time requirement in the robotics applications.
.Net Framework
Robotics Studio
C#
VPL
Robotic services in C# or VB
VB
Writing robotic services in VPL
Writing robotic applications in VPL
Figure 1. MRDS and its development environment
Selecting a good development environment is important in a freshman class. Designing laboratories and a good design project is even more critical. We piloted the first offer of the service-oriented robotics development course in Fall 2006, two months after Microsoft released the Robotics Studio and VPL in June 2006, thanks to our prior research on service- oriented robotics application sponsored by Microsoft Embedded Systems Research Grant starting in 2003. The course evolved to the form of today after five years’ offerings. The course consists of one lecture hour and three laboratory hours. Student takes the lecture in the
a. Students understand the role of service publication and service directories; b. Students can identify available services in service registries; c. Students can design services in a programming language and publish services for the public to use.
applications using service orientation. It covers the models of Web applications, structure of Web applications, state management in Web applications, including view state, session state, cookies, application state, and file system. Database and caching support to Web application state management are discussed in the next course, as a tradeoff between the materials in the sequence of two courses. This unit also covers dynamic graphics generation to leverage the presentation of Web applications at the programming level.
Seller.aspx
Default.aspx
MyCart.aspx
Figure 3. Developing an online bookstore
For each unit, students will complete a development project to enforce the contents covered in the lectures. These projects are:
students will write a chicken-farm thread that supplies chickens at dynamic prices and multiple stores that buy chickens from the farm. Whenever a chicken price cut event occurs, the stores will be alerted. The stores will order chickens based on the price and stock.
Students taking CSE445 are expected to have good programming background in an object-oriented programming language such as C++, Java, or C#, and basic software engineering background. All development tasks are language-based either in Java or in C#, including multithreading software development, Web service development, and Web application development. In contrast, the next course, CSE494/598, will focus more on the software composition and integration using existing services and components.
Data and Resource Representation
Service Implementation and Development Platforms
Service Protocols
Service Description
Infrastructure Computing and Communication Resources
Workflow and Composition
Cloud Computing
Security
Coordination & Transaction
Reliability Message Correlation
IntrospectionPolicy ExchangeManagement
Technologies supporting the functionality
Knowledge Description Knowledge Organization
Service Broker
Figure 4. Organization of the SOC-enabling technologies
CSE494 (Software Integration and Engineering) course is built on the basic concepts and principles discussed in CSE445, yet they do not rely on the detail of CSE445. If both courses are offered, CSE445 should be offered before CSE494. However, with a review of the basic concepts and preparation in XML, this course can be taught independent of CSE445. CSE emphasizes software composition and integration using existing services and components. The approach is based on higher-level of data management and application building techniques. The objectives and outcomes of the course are [17]
chapter. Notice that the Part III, Appendices of the same text, is used for CSE101. Thus, the same text is used for multiple service-oriented computing courses that we discussed in the paper. Textbook is further discussed in Section VI.
V. SOFTWARE DESIGN WITH SAAS CSE564 (Software design) is a core course in software engineering for senior and beginning graduate course that cover various software design techniques. The syllabus was written so that the course can be easily updated with new materials. In the last two years, this course has covered SaaS with the following topics: Introduction to cloud computing: This introduces SaaS, PaaS, cloud computing such as GAE (GFS and BigTable), Dynamo, and MapReduce. Introduction to SaaS: This introduces SaaS, SaaS maturity models, various SaaS structures such as CCSOA [25], GSE [26], UCSOA [27], EasySaaS [32]. Customization: This introduces tenant customization design and processes, variability points, MTA, and OIC model of customization [28]. Database design and partitioning: This introduces the database design, data partitioning, and data in SaaS. Ontology and SaaS design: This introduces ontology, its applications in SaaS; how to use ontology to support SaaS. Service composition and recommendation: This introduces service composition and recommendation in SaaS such as the Grapevine model. SaaS modeling, code generation and resource management: This introduces a model-based approach to construct SaaS include modeling, model-based code generation, and intelligent resource management. Recovery, Fault-tolerance, Recovery, and Scheduling: SaaS and PaaS fault tolerance and techniques, redundancy management [31], scalable MTA scheduling. Scalability and Security: This introduces scalablity issues and metrics, ways to evaluate scalablity and security mechanisms such as filtering and isolation. Automated SaaS Testing: This introduces automated testing in SaaS, automated testing is important as SaaS integrates software development, execution, and testing together in an integrated system. Sample SaaS Implementations: This introduces several simplified SaaS implementations for students to exercise and experiment. The sample systems illustrate various features of EasySaaS. Note that the topics include both SaaS application and SaaS infrastructure development. SaaS application development includes using PaaS, or PaaS with a SaaS infrastructure to develop SaaS applications. SaaS
infrastructure development involves constructing a design framework for tenant customization and a runtime to manage SaaS application execution. SaaS infrastructure can be developed on top of a PaaS or a database management system. For example, one step of SaaS application development is tenant customization process and it involves database schema, composing SaaS applications using services and GUIs. SaaS infrastructure design involves database design, partitioning, and matching algorithms, and recommendation algorithms, and a runtime monitoring, provisioning, and recovery algorithms to manage SaaS application execution. As a part of regular course, CSE564 also covers traditional software design topics such as design-for- change, design patterns, object-oriented frameworks, SOD, traditional software architecture such as the Blackboard architecture. But 60% of the course addresses SaaS. As most of SaaS contents are new and thus students will learn from research papers, PPT, white papers, and public videos such as Google I/O, even though the textbook contains a chapter on these related topics. Furthermore, the SaaS contents change significantly as the field advances. In 2010, students were taught these concepts, but in 2011, students in CSE construct a small SaaS called MiniSaaS using GAE using MTA. Next year, students will experiment the MiniSaaS for resource management, scheduling, and fault tolerance. In addition to the MiniSaaS, students are also exposed to several small SaaS design so that they are comfortable to design one code base for a variety of applications. Students have reacted positively to these MTA SaaS samples. We plan to make the MiniSaaS open source so that other universities can also exercise and experiment the SaaS application and SaaS infrastructure development. MiniSaaS is essentially a simplified version of EasySaaS, and it has GUI, workflow, service, and data customization, MTA. It can also have its own runtime infrastructure. Instead of developing SaaS application by developing the corresponding code, SaaS application can be done by the service-oriented manner, i.e., publishing, discovery, composition, deployment, and management. Instead of having its own runtime infrastructure, it can be run on top of a commercial PaaS such as GAE.
VI. ASU REPOSITORY OF SERVICES AND APPLICATIONS The purpose of SOC is to improve the quality and productivity of software and application development. It can succeed only if a large repository of services is available. Ideally, all services developed by all corporations and by individuals will be open to the
public in public directories and repositories. The current situations are: Private Services: Many corporations, for example, IBM and SAP, keep their repositories private for internal use only. These services will not be available for education purposes. Paid Services: Many corporations, for example, Amazon Web Services, offer commercial services and subscription and payments are required. It is obviously correct and necessary for the application holders to pay for the services they use, in order to reflect the value of the services and the entire service-oriented computing paradigm, as well as maintain the service agreement between the service providers and service clients. However, such services are not useful for education purposes, as we cannot ask students to use these services to build their course projects, although many of our students paid for the services in order to develop better assignment projects. Free public services: There are a number of service directories where free public services are listed, including Xmethods.net, Webservicex.net, and remotemethods.com. Google and Microsoft offer free services and APIs in a number of areas in search and map services. Free public services are great resources for education purposes, which are the main sources our students use to develop their applications. There are several problems with the free public services.
The number of services and the range of services are limited.
The performance of some of the services is not adequate. The services are too slow to use (frequent timeout when many students are accessing). The situation occurs particularly before an assignment is due and a large number of students are accessing the free services.
The availability, reliability, and maintainability are not warranted. Services are often offline or be removed without notice. Service interfaces and implementations can be modified too. To reduce the possible problems, we have developed a repository of our own at: http://venus.eas.asu.edu/WSRepository/repository.h tml This repository complements the free public services in several ways. We develop services according the need of the course and its assignments. The source code of the services and applications are open and explained as examples in the text [8]. The services and applications include simple function services that illustrate the development process, for example, encryption and decryption services, access
control services, random number guessing game services, random string (strong password) generation services, dynamic image generation services, random string image (image verifier) service, caching services, shopping cart services, messaging buffer services, and mortgage application/approval services. The services are implemented in multiple formats, including ASP .Net services, Windows Communication Foundation services, RESTful services, and Work Flow services. All the services are free and open to the public. We maintain the server to keep the high availability and reliability of the services. We also developed a service directory that lists services offered by other service directories and repositories using a service crawler that discovers available services online. The service directory can be accessed through a service engine at: http://venus.eas.asu.edu/sse/. We also offered a registration page for anyone to list their services into the service directory. The registration is at: http://venus.eas.asu.edu/sse/ServiceRegister.aspx
VII. THE TEXTBOOK As we discussed in the previous sections, a textbook is necessary to support these new courses and is developed that summarizes the main contents of the four courses in SOA, SOC, SOD, SaaS [8]. Three editions have been published, and the third edition of the book has the following chapters, which are organized in three parts for the three courses. The cover page of the book in Figure 6 shows the key topics of the text, where SOC, SOC, SOD, and SaaS concepts and principles are the center of all the related technologies.
Figure 6. SOC, SOC, SOD and SaaS
The reasons for frequently updating are twofold. First, this is a new domain and we have been learning the materials and learning the feedback from our students. Second, domain is emerging and new methods and technologies are occurring rapidly. After the third editions of intensive revision of the text, we believe we have a set of stable materials.
IE, FSE also include the many all other engineering schools, such as aerospace engineering, bioengineering, chemical engineering, civil engineering, electrical and electronic engineering, environmental engineering, mechanic engineering, and material engineering. At the same time in 2006, the authors were tasked to redevelop CSE445 to reflect the new development paradigm in distributed software development. CSE was named Distributed Computing with Java and CORBA. The course was renamed Distributed Software Development and the contents are changed to base on service-oriented computing, as discussed in the previous section. CSE445 is required for Software Engineering concentration, which is a part of CS program. There are about 50 students are enrolled in SE concentration. CS and CSE students can take CSE445 as a credit elective. CSE445 is also listed as CSE598 as an elective of graduate students. The enrollment numbers of CSE445/598 are given in Table
Table 2. CSE445/598 enrollments since Fall 2006 Year Semester 445 enrollment
598 enrollment
Enrollment total 2006 Fall 25 14 39 2007 Spring 16 16 32 2007 Fall 24 21 45 2008 Spring 39 8 47 2008 Fall 35 23 58 2009 Spring 38 13 51 2009 Fall 33 10 45 2010 Spring 38 22 60 2010 Fall 42 34 76 2011 Spring 50 20 70 2011 Fall 30 52 82 Figure 8 plots the data, which visualize the enrollment in of CSE445 and CSE598. Both sections show significant increase from 2006 to 2011. The combined enrollment has increased from 39 in Fall 2006 to 82 in Fall 2011. Course evaluation is done at the end of the course by all students. Table 3 shows the average scores of CSE445/598 (Distributed Software Development) since Fall 2006. The scores are out of 5.0, where 5.0 is very good, 4.0 is good, 3.0 is fair, and 2.0 is poor. Table 3. CSE445/598 student evaluation scores Year Semester 445 score 598 score 2006 Fall (^) 3.69 4. 2007 Spring 3.99 4. 2007 Fall 4.03 4. 2008 Fall 4.52 4. 2009 Spring 4.22 4. 2010 Spring 4.44 4. 2010 Fall 4.56 4. 2011 Spring 4.49 4.
0
10
20
30
40
50
60
70
80
90
CSE
Combined
CSE
Figure 8. CSE445/598 enrollment 2006 to 2011
In additional to numerical scores, ASU course evaluation also asks students answer three questions in writing. Below is a complete set of written feedbacks from CSE445 students in Spring 2010, without any addition or subtraction.
What did you like most about this course? The instructor is one of the best instructors I've had at ASU and this course is one of the most important courses I've taken at ASU real world technology applied today The new material/subject area I like the instructor very much! Actually I wish I can take more courses of his. Having an open book and open note quiz every class helped my motivation to attend class and helped me understand topics better. This course used a combination of daily lecture exercises, chapter quizzes, programming projects, and exams to test and reinforce the course material. I felt like this was a very successful way to keep students involved, and rewards consistent effort and engagement in the course. It's interesting and applicable in most of what I want to do. learning how to create a website and the services that they can provide Useful concepts learned by doing homework projects It one of the most relevant courses I've ever taken at ASU. It has real applications, and the projects/ Homework are right on the money. This is stuff people can use. The topic of the class is a very interesting topic Very hands-on. Interesting subject matter, lots of application and programming. Learning Service Oriented Computing and the hands on experience you get with SOC. I also liked working with Visual Studio 2008. Before this class, there was very
little use of full featured developmental tools. I think 95% of everything I have done was on a plain text editor. I like that we learned about web based technologies which are very relevant in todays job market. Chen's courses are always very well put together. He inspires practical application by having us do it ourselves.
What did you like least about this course? It would have been nice to have all online content available Always a power point, never really ventured outside of that. Linked assignments 3 and 5. I don't like having assignments that build off each other because if you don't get the first one working correctly, you can't really do the second. I know this was an optional linkage but the group I am in didn't agree to start from scratch on something else. Nothing. I thoroughly enjoyed this course, and wish more of the courses I took at ASU were similar to this one. Very difficult time understanding his English. The in class quizzes, Lecture exercise EVERY DAY Sometimes he goes too much into specifics of how to open Visual Studio, how to add a Service Reference, etc. He should have tutorials for that if students find it helpful, but the class time should be spent on the more complicated aspects of what he is teaching. Lectures were boring. I often felt like I couldn't connect in-class examples to homework. Heavy focus on a single technology in a single programming language. The focus is kind of necessary since we have people who need that help, but in reality the concepts are language agnostic. Some of the instruction on how to do thing is VS did not work as they were supposed to and you have to find other ways to get things to work correctly on your own. Everything was Microsoft... understood because it is supported by the school.
Comments Awesome course! Dr. Chen did an amazing job with this course. Team projects are not for everybody, aka. me. Unfortunately due to our capstone professor and the unnecessary amount of time that class consumed I was unable to spend an appropriate amount of time in this class. Due to those circumstances I don't feel like i got as much out of this class as i should have. Add some discussion or more examples to liven up the lectures. Very good for such a new class. Once the class gets a little more mature, it will be even better.
Based on the feedbacks from students, a follow up class of CSE445/598 class has been designed and pilot- taught in summer 2010 and summer 2011, with 20 students enrolled in both sections. The new course CSE494/598 has been approved as a required course for the Software Engineering Concentration from Spring 2012, which has the same status as CSE445/598. We expect the course to have similar number of enrollment.
IX. CONCLUSIONS The paper presented four courses in SOA and SOC in the curriculum of computer science, computer system engineering, and software engineering at the Arizona State University. Two of the courses have been included in the curriculum since 2006, the third was added in 2010, and the fourth is a regular course updated with new contents. In addition to outlining the course contents, a few examples are shown in the paper to add certain detail of the types of materials covered in the courses. For all the major concepts and topics in the courses, working examples are given to make sure that students not only understand the concepts and principles, but also know how to implement the concepts and principles in operational software. Web deployment of software into a Web and cloud computing environments is another emphasis of CSE445/598 and CSE494/598, as it is not covered in any other object-oriented software development courses. The increase in the enrollment of the courses as well as the feedbacks from students show that these courses improved our curriculum and are well received by students. Resources are created and made available for other universities to adopt.
X. ACKNOWLEDGEMENT This paper is based projects sponsored by U.S. National Science, Foundation project DUE 0942453, and the European Regional Development Fund and the Government of Romania under the grant no. 181 of 18.06.2010.
REFERENCES
[1] Carlo Ghezzi, Mehdi Jazayeri, Programming Language Concepts, 3rd^ Edition, John Wiley & Sons, New York,
[2] Yinong Chen, W.T. Tsai, Introduction to programming languages: Programming in C, C++, Scheme, Prolog, C#, and SOA, 2nd^ Ed., Kendall Hunt Publishing, 2006. [3] D. Krafzig, K. Banke, and D. Slama, Enterprise SOA: Service-Oriented Architecture Best Practices, Prentice Hall, PTR, 2005 [4] Th. Erl, Service-Oriented Architecture: Concepts, Technology, and Design, Prentice Hall, August 2005.