Web
software development and cloud computing based on Service-Oriented Architecture
(SOA) and Service-Oriented Computing (SOC) represent the modern software
engineering theory, practices and technologies. The book takes a comprehensive
and coherent approach to address these issues. The goal is to learn the
concepts, principles and methods in advanced software architecture, software
engineering, and software development. The approach is learning by developing.
We assume students have basic understanding of software architecture, and this
book takes an architecture-driven approach to help students creating working
solutions for their architecture design, including programming and code
deployment. The text consists of fourteen
chapters and three appendices, which are organized into three parts.
Chapter 1 Introduction to
Distributed Service-Oriented Computing
Chapter 2 Distributed Computing
with Multithreading
Chapter 3 Essentials in
Service-Oriented Software Development
Chapter 4 XML Data
Representation and Processing
Chapter 5 Web Application
and Data Management
Chapter 6 Dependability
of Service-Oriented Software
Chapter 7 Advanced
Services and Architecture-Driven Application Development
Chapter 8 Enterprise
Software Development and Integration
Chapter 9
Service-Oriented and Event-Driven Robotics Applications
Chapter 10 Interfacing
Service-Oriented Software with Databases
Chapter 11 Ontology and Semantic Web
Chapter 12 Service-Oriented Application Architecture
Chapter 13 A Mini Walkthrough of Service-Oriented Software Development
Chapter 14 Cloud Computing and Software as a Service
Appendix A Web Application Development
Appendix B Service-Oriented Robotics
Applications
Appendix C ASU Repository of Services and
Applications
Each part is relatively independent and can be used in a different course. Part
I includes the first six chapters, which can be used for a service-oriented
computing and distributed software development course at the senior level or
graduate level of universities. This part emphasizes the computing paradigm,
data representation, data management, and programming language-based SOC
software development. It introduces fundamental concepts and principles, in
addition to technologies and tools, which have not been taught in traditional
software engineering courses. This part covers multithreading, event-driven
programming, service-oriented development, Web-based programming, Web data
management, and reliability and security mechanism development.
Part II includes the next eight chapters. These chapters are built on the basic
concepts and principles discussed in Part I, yet they do not rely on the detail
of the first six chapters. This part emphasizes software composition and
integration using services and components. The approach is based on higher-level
of data management and application building techniques. Part II covers advanced
service and application development and integration in Windows Communication
Foundation, Workflow Foundation for application integration, Business Process
Execution Language (BPEL) for enterprise software integration, and Visual
Programming Language (VPL) for event-driven software development and robotics
applications, interfaces between service-oriented software and databases,
ontology languages and applications, service-oriented application architecture,
and cloud computing. The materials in Part II can be used for a senior or
graduate course on advanced software engineering and software integration. While
most contents in Part II are based on matured knowledge and technologies, many
research questions are also discussed to help graduate students to identify
their research directions and topics.
Part III Appendix A and Appendix B contain tutorial-based materials that provide
stepwise instructions, without missing pieces, to build working applications
from scratch. These tutorials and exercises can help students to learn concepts
by examples. This part can also be used for a freshman level course to introduce
computing concepts through robotics programming and Web application programming.
Appendix C lists the deployed examples and URLs of services, applications, and
other resources used in this text.
At Arizona State University, we use the book as the text for two courses. The
first course is CSE445/598 (Distributed Software Development), where the CSE445
session is for seniors and the CSE598 session is for graduate students. This
course mainly teaches the content from Part I. Biweekly programming assignments
and projects are given at the end of each chapter.
Part II of the book is used for a newly developed course CSE494/598 (Software
Integration Engineering) for seniors and graduate students.
We recommend teaching the two courses in a sequence. However, the two courses
can be taught independently without making one to be the prerequisite of the
other. In this case, the basic concepts and principles from Part I, including
those from a part of Chapter One and the first section of Chapter Four, should
be reviewed or be assigned as reading materials for preparing the required
concepts to start the course using Part II.
The first edition of the book covered the concepts, principles, methodology, and
the latest technologies in service-oriented software development. As this field
is still a rapidly developing young field, many new concepts as well as
technologies have emerged since the publication of the first edition in 2008. In
the latest edition of the book, we have embraced a large of part of the new
knowledge, including concepts, principles, and technologies developed in the
past years. Five new chapters are added, and all the other chapters have been
significantly revised and extended. The new chapters include the following:
Chapter Five on Web application and data management, which discusses stateful
Web application development using different state management techniques,
including view state, session state, application state, file management, Web
caching, and dynamic graphics generation.
Chapter Seven on service-oriented and resource-oriented computing, which
introduces Web service development, service hosting, RESTful service development
in Windows Communication Foundation, and workflow development and application
integration in Workflow Foundation.
Chapter Nine on service-oriented computing in robotics applications, which
studies Visual Programming Language (VPL) and uses it develop robotics services
and applications. Distributed robotics applications and Robot-as-a-Service
(RaaS) are also presented.
Chapter Ten on service-oriented database management, which presents interface
between service-oriented software and relational database, XML database, and
LINQ (Integrated Language Query) and using LINQ to access object, relational
database, and XML database.
Chapter Fourteen on cloud computing, which introduces the most recent trend in
SOC. It covers multi-tenancy
architecture, Web databases and file systems, scheduling, fault-tolerant
techniques, and real-time computing. It also presents cloud computing platforms
and development environments from Google, Microsoft, and Salesforce.com.
Software-as-a-Service is the focus of the chapter.
We like to thank many of our sponsors, colleagues, and students in this project,
particularly in preparing this edition of the book, including Prof. Xiaoying Bai
of Tsinghua University, Dr. Shuyuan Chen of SAP, Dr. J. Y. Chung of IBM, Prof.
Zhihui Du of Tsinghua University, Mr. Marcos Garcia-Acosta of Intel, Prof. Mei
Hong of Peking University, Dr. K. W. Hwang of IBM, Prof. Zhi Jin of Peking
University, Prof. Y. H. Lee of Arizona State University, Prof. Yisheng Li of
Fudan University, Mr. John Oliver of Intel, Dr. Raymond Paul of DoD OSD NII,
Prof. S. S. Yau of Arizona State University, and Prof. Lian Yu of Peking
University. They contributed to our understanding of the materials. We also
acknowledge the generous support from Intel, the U.S. Department of Education,
the U.S. Department of Defense, and the National Science Foundation. Without
their support, this book would not be possible. We also thank the teaching
assistants and research assistants at Arizona State University, including Jay
Elston, Wu Li, Guanqiu Qi, Edward Raleigh, Qihong Shao, Xin Sun, Le Xu, and
Peide Zhong. They validated many of the examples and assignments used in the
book. Finally, we would like to thank our families for their support and
understanding of taking on such a project while carrying out a full research and
teaching load at the university.
Note for
Instructors
All the assignments and projects have been classroom-tested at Arizona State
University. Furthermore, all the code presented in this book has been developed
and tested. Contact the authors if you are interested in obtaining more
materials in this book. Instructor-only resources, such as presentation slides,
assignments, and tests, can be obtained by directly contacting the authors at
{yinong, wtsai}@asu.edu
Yinong Chen, Arizona State University
Wei-Tek Tsai, Arizona State University
and Tsinghua University
June 2011 (Third Edition)
Table of Contents