A Pattern Language for Designing Application-Level Communication Protocols and the Improvement of Computer Science Education Through Cloud Computing
Total Page:16
File Type:pdf, Size:1020Kb
Utah State University DigitalCommons@USU All Graduate Theses and Dissertations Graduate Studies 5-2017 A Pattern Language for Designing Application-Level Communication Protocols and the Improvement of Computer Science Education through Cloud Computing Jorge Edison Lascano Utah State University Follow this and additional works at: https://digitalcommons.usu.edu/etd Part of the Computer Sciences Commons Recommended Citation Lascano, Jorge Edison, "A Pattern Language for Designing Application-Level Communication Protocols and the Improvement of Computer Science Education through Cloud Computing" (2017). All Graduate Theses and Dissertations. 6547. https://digitalcommons.usu.edu/etd/6547 This Dissertation is brought to you for free and open access by the Graduate Studies at DigitalCommons@USU. It has been accepted for inclusion in All Graduate Theses and Dissertations by an authorized administrator of DigitalCommons@USU. For more information, please contact [email protected]. A PATTERN LANGUAGE FOR DESIGNING APPLICATION-LEVEL COMMUNICATION PROTOCOLS AND THE IMPROVEMENT OF COMPUTER SCIENCE EDUCATION THROUGH CLOUD COMPUTING by Jorge Edison Lascano A dissertation submitted in partial fulfillment of the requirements for the degree of DOCTOR OF PHILOSOPHY in Computer Science Approved: ______________________ ____________________ Stephen W. Clyde, Ph.D. Curtis Dyreson, Ph.D. Major Professor Committee Member ______________________ ____________________ Haitao Wang, Ph.D. Young-Woo Kwon, Ph.D. Committee Member Committee Member ______________________ ____________________ Luis Gordillo, Ph.D. Mark R. McLellan, Ph.D. Committee Member Vice President for Research and Dean of the School of Graduate Studies UTAH STATE UNIVERSITY Logan, Utah 2017 ii Copyright © Jorge Edison Lascano 2017 All Rights Reserved iii ABSTRACT A Pattern Language for Designing Application-Level Communication Protocols and the Improvement of Computer Science Education through Cloud Computing by Jorge Edison Lascano, Doctor of Philosophy Utah State University, 2017 Major Professor: Stephen W. Clyde, Ph.D. Department: Computer Science Networking protocols have been developed throughout time following layered architectures such as the Open Systems Interconnection model and the Internet model. These protocols are grouped in the Internet protocol suite. Most developers do not deal with low-level protocols, instead they design application-level protocols on top of the low-level protocol. Although each application-level protocol is different, there is commonality among them and developers can apply lessons learned from one protocol to the design of new ones. Design patterns can help by gathering and sharing proven and reusable solution to common, reoccurring design problems. The Application-level Communication Protocols Design Patterns language captures this knowledge about application-level protocol design, so developers can create better, more fitting protocols base on these common and well proven solutions. Another aspect of contemporary development technics is the need of distribution of software artifacts. Most of the development companies have started using Cloud iv Computing services to overcome this need; either public or private clouds are widely used. Future developers need to manage this technology infrastructure, software, and platform as services. These two aspects, communication protocols design and cloud computing represent an opportunity to contribute to the software development community and to the software engineering education curriculum. The Application-level Communication Protocols Design Patterns language aims to help solve communication software design. The use of cloud computing in programming assignments targets on a positive influence on improving the Analysis to Reuse skills of students of computer science careers. (181 pages) v PUBLIC ABSTRACT A Pattern Language for Designing Application-Level Communication Protocols and the Improvement of Computer Science Education through Cloud Computing Jorge Edison Lascano Enterprises that develop software use current technology because of its proven advantages and to accelerate and improve the software development process. Nevertheless, it is difficult to be up-to-date for most professionals in the area. Although students from higher academic institutions need to learn these new tools, and their main purpose is to learn how learn; colleges still need to prepare students for modern enterprise requirements, so they teach new technologies to improve students’ skills. Ubiquitous computing is software and services available everywhere, for example in mobile devices, in different locations, in different networks. This computing requires good communication protocols so the software systems can interconnect properly among them to share data and for distribution purposes. Developers design communication protocols in repetitive times and learn how to deal with different non-functional communication requirements such as reliability, security or synchronicity. This knowledge is typically collected and presented in design pattern languages, they allow professionals to communicate ideas, problems and solutions for communication software implementation. The application-level Communication Design Pattern language aims to gather this knowledge and make it available to computer science novices and experts. Most modern software applications need to be available in the network. vi Developers use cloud computing resources such as virtual infrastructure, software and platforms. These services are available anywhere (anyware). Cloud computing is gradually becoming part of current Computer Science curriculums. Ultimately, we show that using cloud computing resources in programming assignments helps students improve their analysis to reuse skills. vii ACKNOWLEDGMENTS I would like to thank my advisor, Stephen Clyde, for his invaluable support. His academic and professional knowledge has been greatly appreciated and noted from the start to the end of my journey as a researcher at Utah State University. He has also been super supportive in non-academic issues; he is a great person. I would especially like to thank my committee members for their support and assistance throughout the entire process. I give special thanks to the CS staff Vicki, Cora, Genie, who helped on the data gathering for my research and every other requirement. I would like to thank my Logan and USU friends and my entire family for their encouragement, moral support, and patience as I worked my way to the graduation. I could not have done it without all of you, especially without the help of my brave wife Catherine, my lovely mother Isabel, my dear brother René, my encouraging sister-in-law Grace, my loved nephew Matias, and my life-inspiring and reasons to go forward every day -my children, Melody, Daniel, and Jorge. Last but not the least, to USA and Ecuador’s people, to every one of my students and friends who supported me in many ways. Jorge Edison Lascano viii CONTENTS Page ABSTRACT ..................................................................................................................... iii PUBLIC ABSTRACT ...................................................................................................... v ACKNOWLEDGMENTS ............................................................................................... vi LIST OF TABLES ........................................................................................................... ix LIST OF FIGURES .......................................................................................................... x CHAPTER 1. INTRODUCTION .................................................................................................. 1 1.1 Design Patterns for Communication Protocols ................................................. 2 1.2 Cloud Computing in Software Engineering Education .................................... 6 2. A PATTERN LANGUAGE FOR APPLICATION-LEVEL COMMUNICATION PROTOCOLS ............................................................... 11 2.1 Abstract ........................................................................................................... 11 2.2 Introduction ..................................................................................................... 11 2.3 Protocols and Protocol Suites ......................................................................... 15 2.4 Design Patterns and Pattern Languages .......................................................... 16 2.5 Qualities of Communication Protocols ........................................................... 17 2.6 Template for Communication-protocol Patterns ............................................ 23 2.7 CommDP ........................................................................................................ 25 2.8 Summary and Future Work ............................................................................. 33 3. COMMDP: A PATTERN LANGUAGE FOR DESIGNING APPLICATION-LEVEL COMMUNICATION PROTOCOLS QUALITIES AND APPLICABILITY ............................................................. 35 3.1 Abstract ........................................................................................................... 35 3.2 Introduction ..................................................................................................... 35 3.3 Background ..................................................................................................... 37 3.4 The CommDP Quality Model