Web software development and cloud computing, which are based on Service-Oriented Architecture (SOA), Service-Oriented Computing (SOC), and Service-Oriented Development (SOD), represent the modern software engineering theory, practices, and technologies. The availability and unification of computing capacities and data resources are reshaping the world. The latest wonder of technology is the Big Data. The amount of the data is not the key. The relationship among all data is the key. Finding the connections of all related data and making use of the connections to make decisions become possible after the maturity of cloud computing and related data management technologies.
The text takes a comprehensive and coherent approach to study the latest distributed and service-oriented architecture, distributed computing paradigm, and distributed software development and integration technologies.
The text takes a comprehensive and coherent approach to study the latest distributed and service-oriented architecture, distributed computing paradigm, and distributed software development and integration technologies. The goal is to learn the concepts, principles, methods, development frameworks, and their applications. The methodology is learning by developing examples. In the service development part, we assume that students have good knowledge in object-oriented computing. Students learn to build services through class definition, interface specification, the association between class methods and service operations, service deployment and service hosting. In the software integration part, we assume that students have basic understanding of software architecture. We take an architecture-driven approach to help students creating the working solution step by step from their architecture design. The first step is to design the
architecture, which includes the major components and the interconnection. The next step is to define the interfaces among the components using the standard data types. Finally, the behavior of each component is linked to remote service or local object. The elaborated architecture is automatically translated into the executable.
Part I: Distributed Service-Oriented Software
Development and Web Data Management
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
Big Data and
Ontology Systems
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
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, state management, and programming language-based SOC software development. It introduces fundamental concepts and principles, in addition to technologies and tools, which are not being taught in traditional software engineering courses.
Chapter 1 gives an overview and explains fundamental concepts of distributed software architecture, design patterns, distributed computing, service-oriented architecture, and enterprise software architecture. The connections and distinctions between object orientation and service orientation are discussed in detail.
Chapter 2 studies parallel computing in multithreading. It discusses threading, synchronization, coordination, event-driven programming, and performance of parallel computing under multicore computers.
Chapter 3 introduces the essential concepts and techniques in service-oriented architecture, particularly the three-party model of service-oriented software development: Service providers, service brokers, and service consumers. Service interfaces, service communication protocols, and service hosting are keys for supporting this new computing paradigm.
Chapter 4 discusses XML and related technologies, which are used in almost everywhere in service oriented software development. XML is used for representing data, interface, standards, protocols, and even the execution process definition. This chapter studies not only XML representations, but also XML processing and transforming.
Chapter 5 is a long chapter and comprises application logic, data and state management, and presentation design. It involves application building based on architecture design using existing services and components, stateful Web application development using different state management techniques, including view state, session state, application state, file management, and Web caching. At the presentation layer, it discusses dynamic graphics generation, animation, and phone app development.
Chapter 6 deals with the dependability issues in Web-based applications, including access control through Forms security, encryption and decryption applications, and Secure Sockets Layer in Web communication. The chapter also discusses the reliability issues in Web application design and particularly in Web communication.
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 details of the first six chapters. This part emphasizes software composition and integration using existing services and components. The approach is based on architecture-driven approach, higher-level of data management, and message-based integration.
Chapter 7 starts with reviewing service-oriented computing and service development covered in Part I. Then the chapter moves to discuss more advanced service development that supports asynchronous communications. It also presents more detail in RESTful service development that has been briefly discussed in Part I. Finally, the chapter moves to Workflow Foundation that supports architecture-driven software development. It uses examples and case studies to demonstrate software development by drawing the flowchart consisting of blocks of services and local components, adding inputs/outputs to the blocks, and then compiling the flowchart into executable.
Chapter 8 further discusses flowchart-based and architecture-driven software development by using other process languages and developments environments. It starts with BPEL (Business Process Execution Language) and BPEL-based development environments. Then the discussion is extended into message-based software integration, Enterprise Service Bus, and Mashup tools for integrating Web contents.
Chapter 9 extends Web-based computing to Internet of Things and Robot as a Service (RaaS). As an example, robotics applications are studied in detail, which use the service-oriented Visual Programming Language (VPL) from Microsoft to develop robotics services and applications. A new visual programming environment, ASU-VPL, is introduced, which can be used as a follow-up language of Microsoft VPL. Full programming examples in ASU-VPL and hardware platforms supported are given.
Chapter 10 is on service-oriented database management, which focuses the interface between service-oriented software and relational database, XML database, and LINQ (Language Integrated Query) and using LINQ to access object, relational database, and XML database. LINQ is the focus of the chapter.
Chapter 11 studies the major issues in big data, including big data infrastructure, big data management, big data analytics, and big data applications. The relationship between big data and cloud computing is discussed. Ontology is presented as a part of big data representation and big data processing techniques.
Chapter 12 focuses on the application layer of service-oriented computing systems. It compares and contrasts the architectures and features of a few major enterprise software systems.
Chapter 13 offers a full case study on service-oriented software development.
Chapter 14 dedicates to cloud computing, which introduces the most recent trend in cloud computing and data centers. It covers multi-tenancy architecture, Web databases and file systems, scheduling, and fault-tolerant techniques in cloud computing and in 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.
Part III has three appendices that supplement and support the contents on Web application development and service-oriented robotics application development.
Appendices A and 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, in conjunction with Chapter 9, can also be used for a freshman level course to introduce computing concepts through robotics programming and Web application programming.
Appendix C is the entrance to ASU Repository of Services and Applications. It lists and explains some of the deployed examples and URLs of SOAP services, RESTful services, Web applications, and other resources used in this text. Free services found on Internet come and go without any guarantee on quality of service. The repository provides a stable resource for teaching from this book without worrying about the availability and performance of the free services found on Internet. ASU Repository of Services and Applications is open to public and can be accessed at the link: http://venus.eas.asu.edu/WSRepository/
The book embraces extensive contents. It can be used in multiple courses. At Arizona State University, we use the book as the text for two major 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. The course started in Fall 2006, and first edition of the book was developed for this course in 2008. Now the contents in Part I of this text are used for this course.
A second course CSE446/598 (Software Integration and Engineering) was piloted in 2010 and 2011, and then the course becomes a regular course in 2012. Part II of this text is used for this course.
Both CSE445 and CSE446 are required courses of the Software Engineering Concentration in the Computer Science program at Arizona State University.
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 1 and the first section of Chapter 4, should be reviewed or be assigned as reading materials for preparing the course using Part II.
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, Prof. Farokh Bastani of University of Texas at Dallas, Mr. Calvin Cheng of Banner Health, Dr. J. Y. Chung of IBM, Prof. Zhongshi He of Chongqing University, Prof. Mei Hong of Shanghai Jiaotong University, Dr. K. W. Hwang of IBM, Prof. Zhi Jin of Peking University, Prof. Yingxu Lai of Beijing University of Technology, Prof. Y. H. Lee of Arizona State University, Prof. Yisheng Li of Fudan University, Prof. K. J. Lin of University of California at Irvine, Mr. John Oliver of Intel, Dr. Raymond Paul of DoD OSD NII, Profs. Qian Wang and Yongkang Xing of Chongqing University, Profs. Ruzhi Xu and Zhizheng Zhou of Qilu University of Technology, Prof. S. S. Yau of Arizona State University, and Prof. I-Ling Yen of University of Texas at Dallas. 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. They validated many of the examples and assignments used in the book. We also thank the teaching assistants and research assistants at Arizona State University, including Calvin Cheng, Gennaro De Luca, Jay Elston, Qian Huang, Adam Lew, Wu Li, Gavin Liu, Mengxue Liu, Sheng Liu, Sami Mian, Xin Sun, Jingjing Xu, Xinyu Zhou, and Peide Zhong. They implemented and 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 complete presentation slides, assignments, and tests, can be obtained by directly contacting the authors at yinong@asu.edu.
Yinong Chen
Wei-Tek Tsai
June 2015
(Fifth Edition)