IT-Universitetet i København
 
  Tilbage Kursusoversigt
Kursusbeskrivelse
Kursusnavn (dansk):Engineering software as services for clouds 
Kursusnavn (engelsk):Engineering software as services for clouds 
Semester:Forår 2015 
Udbydes under:Master i it, Software Engineering (sen) 
Omfang i ECTS:7,50 
Kursussprog:Engelsk 
Kursushjemmeside:https://learnit.itu.dk 
Min. antal deltagere:12 
Forventet antal deltagere:30 
Maks. antal deltagere:30 
Formelle forudsætninger:Pre-requisite:

The potential students for this course should have a very good knowledge and experience of developing software systems using Internet technologies and protocols, Web 2.0 applications, and an object-oriented programming language. This knowledge and experience would have gained by working as a software developer for at least 2 years.

For M.Sc. students: you should have gained the abovementioned knowledge and skills at least on a level comparable to the object oriented programming and Web Services courses offered at the IT University. Preferably, you have experience with Web Services and object oriented software development through participating in a small or medium size software engineering project.

Moreover the student must always meet the admission requirements of the IT University.

Related Courses

Software architecture
System Architecture and Security
Advanced Software Engineering
Interactive Web Services with Java and XML 
Læringsmål:After completing this course, the students should be able to:

Demonstrate an in-depth knowledge of different concepts and mechanisms underpinning Software as Services, Service Oriented Architecture, Agile Approaches, DevOps, Cloud Computing and the synergies among them and their potential impacts on engineering software as services for cyber businesses.

Provide a detailed description of technologies and approaches for engineering software as services for clouds such as Ruby on Rail, Internet infrastructures, virtualization, multi- tenancy, resource provisioning techniques, and protocols.

Explain and apply the fundamental concepts and approaches of Modelling, designing, implementing, and deploying cloud-enabled software services such SoaML, SOA Patterns, REST, Scrum, Behavior Driven Development (BDD), Test Driven Development (TDD), and Open Source tools for continuous deployment and monitoring.

Design and implement software services for cloud infrastructures following the principles, practices, and methods for service oriented and cloud computing.l Evaluate and select an appropriate cloud infrastructure for deployment and operations of software services.

Develop and implement a pipeline for continuous deployment and monitoring of services.

Rigorously assess the designed solutions for security and privacy concerns. 
Fagligt indhold:PLEASE NOTE - THERE ARE NO TRADITIONAL LECTURES DURING THE CLASS TIME IN THIS COURSE. YOU MUST WATCH THE RECORDED VIDEOS OF THE LECTURES BEFORE COMING TO THE FACE-TO-FACE LEARNING SESSIONS.

FACE TO FACE SESSIONS WILL BE ONLY FOR LEARNING ACTIVITIES THROUGH WORKSHOPS AIMED AT DOING AND LEARNING UNDER THE SUPERVISION OF INSTRUCTORS BASED ON THE BOOK CHAPTERS AND VIDEO LECTURES ASSIGNED TO EACH WEEK. IF YOU DON'T WATCH THE VIDEO LECTURE ON A PARTICULAR WEEK, YOU ARE UNLIKELY TO BE ABLE TO DO THE LEARNING ACTIVITIES DURING THAT WEEK.

PLEASE READ THE FOLLOWING DELIVERY MODE AND ONLINE LEARNING ACTIVITIES CAREFULLY.

Delivery Mode & Pedagogical Style - Workshop Style, Flipped Classroom, SPOC, Project Based, Learning by doing.

Digital and social media Technological Innovation - Innovative use of digital and multimedia technologies for course content and delivery, Innovative use of social media for enhancing socially interactive learning through collaborative dialogues and reflections.

Teaching Modes - Workshops, Discussion Sessions (face-to-face and Online), Labs work on learning activities, and Supervisory meetings for reviewing work progress (face-to-face and online).

The objectives of this course are to provide students with the fundamental knowledge, understanding, and skills required for engineering software as services using state-of-the-art software development methods (such as Agile methods and DevOps) and technologies (Ruby on Rail, and Cloud Computing). Designing, building, and evolving large scale IT systems and infrastructures to exploit cloud-computing paradigm. This course will cover not only the theoretical concepts and implementation technologies and techniques for developing Cloud- enabled software services but will also provide knowledge and skills in methods, approaches, and tools for engineering software services to be deployed and operated on private, public, or hybrid Cloud platforms. This course also purports to provide the participants with the technical and non- technical knowledge necessary for leveraging the technological advances in cloud computing and methodological innovation of agile and lean way of engineering software services.

Main Topics Covered:

Introduction to Agile software development approaches and tools such as Scrum, Behaviour Driven Design, Test Driven Development.

DevOps – Key Principles and Practices of Development and Operations for continuous integration and deployment.

Fundamental concepts and approaches to Service Oriented Computing.
SOA Patterns and REST architecture Style.

Modelling and evaluating software services for quality attributes.

Introduction to Ruby on Rail for developing state-of-the-art software services.

Introduction to Cloud computing and foundation of Cloud systems’ architectures. Patterns and tactics for designing Cloud-based software services.

Strategies for estimating (or guesstimating) cost and efforts for service engineering.

Project Management – Version Control, Release management, Cod Branching, Code Reviews, and Documentation.

Open Source environments and tools for Testing and DevOPs support. Concepts and approaches to Engineering Secure and Private Services.

Evaluation and Comparison of proprietary and Open Source Cloud-based Solutions, e.g., EC2, Google AppEngine, Windows Azure, Eucalyptus, and Hadoop. 
Læringsaktiviteter:

1. Watching videos on the course topics and sharing learning via blog in LearnIT.
2. Workshops for discussing course topics based on videos.
3. Learning and preparing virtual machine installation with Ruby on Rail platform with virtualisation on Heroku platform.
4. Class exercises for design and programming tasks.
5. Group discussions and individual quizzes (face-to-face and online).
6. Individual and group assignments. 

Obligatoriske aktivititer:Content

Workload

Activities
1. Class Exercises and Quizzes
2. Service design exercises
3. Programming exercises and assignments
4. Individual and Group Assignment (Incremental submissions)
5. Reading and discussing assigned research articles

Feedback

What if the student fails to pass a mandatory activity:

Be aware: The student will receive the grade NA (not approved) at the ordinary exam, if the mandatory activities are not approved and the student will use an exam attempt. 
Eksamensform og -beskrivelse:X. experimental examination form (7-scale; external exam)

External examiner, 7-point marking scale, D11: Oral examination with project without time for preparation at the exam.

Duration of the oral exam: 20 minutes.  

Litteratur udover forskningsartikler:Armando Fox and David Patterson, Engineering Software as a Service: An Agile Approach Using Cloud Computing, Strawberry Canyon LLC. 2014.