CS795/895, Fall 2020

Devops, Containers, & the Cloud

Fall 2020

This outline is under perpetual evolution.

Upcoming Events
1 Introduction

Overview

This module introduces you to the course organization, policies, and mechanics. We’ll review the structure of the course website and give you an opportunity to get set up for the semester to come.

We’ll take a brief look at the major themes and areas of emphasis that you can expect to hear more about through the coming semester.

Objectives

  1. Identify the requirements, protocols, and policies for the online course

  2. Use the selected technology tools for communication and collaboration

  3. Discuss the course themes and their relation to software development.

Relevance

An understanding of the tools used in an online course is fundamental in becoming a successful online learner. It is also important to identify the expectations for participation, assignment submission, and the time management skills required in the online format.

You can expect that professional software development will be quite different from typical academic programming assignments. This course will emphasize the tools and techniques that developers use on a daily basis, with an emphasis on automating best practices of software engineering.

Activities
  1. text Read the syllabus.
  2. text Read the communications policy.
  3. lecture Read lecture notes: Introduction
  4. activity Take the Survey of Software Engineering Techniques, on Blackboard Due: 09/02/2020
2 Software Architectures
Activities
  1. text Software Architecture Guide, Fowler, 2019
  2. text Software Architecture: A Case Based Approach, Varma, ch 1
  3. text 10 Common Software Architectural Patterns in a nutshell, Mallawaarachchi, 2017
  4. text The top 5 software architecture patterns, Wayner, 2017
  5. lecture Read lecture notes: Projects & Architectures
  6. activity Take the Demonstration Project Survey, on Blackboard Due: 09/12/2020

3 Agile Methods

Overview

Agile development is a set of practices centered on an incremental development model.

We will review the principles of agile, with particular emphasis on the skillset expected of agile developers.

Objectives

  1. Assess the impact of incremental models on a development project
  2. Discuss the philosophy and components of agile models

Relevance

Agile development is one of the dominant approaches to software development for moderately sized projects developed by small (4–12 people) teams.

Agile presumes a skilled development team, familiar with a variety of standard tools and practices, which we will also need to assume that students in this course are familiar with:

  • Incremental development
  • Test-driven development
  • Software configuration management
  • Automated builds
Activities
  1. text The Agile Manifesto & Twelve principles
  2. text Scrum Guide
  3. lecture Read lecture notes: Incremental development
  4. lecture Read lecture notes: Agile Development
4 Modern Software Construction
4.1 Unit Testing

Overview

In this section we will review the basic principles of unit testing, and then we will look at the problem of automating the testing oracle, the procedure of determining when our code has passed or failed each test.

This will lead us to the world of modern Unit test frameworks, which seek to make running tests so effortless that there is no longer any excuse to defer testing.

4.2 Build Management 09/15/2020 - 09/21/2020

Overview

A build manager has the task of performing any automated steps required to rebuild a software project after programmers have made changes. We will look at the primary models for build management, file dependencies and task dependencies, and the most commonly used managers for each model. We’ll also look at how to replace an IDE’s built-in builder with a more flexible manager.

Modern projects now rely on build managers for much more than just the basic operations of compiling and linking. Build managers are also called upon to run tests, to prepare software packages for deployment, to deploy them, and to prepare project reports and post those reports to project web sites. These demands go far beyond the capabilities of the simple manager included in your IDE. Used properly, a build manger can save a team a lot of tedious work.

4.3 Software Configuration Mgmt 09/23/2020 - 09/30/2020

Overview

Software Configuration Management (SCM) addresses a wide variety of issues in the development of software. These include version control, studied earlier, but also the problems of coping with portability to multiple target platforms and the incorporation of externally developed code libraries into a project.

Version control is concerned with managing the history of changes made to the software by the development team. A good version control system offers a team control over the history, exploration, and collaboration on a project. We’ll look at the issues and approaches to local, centralized, and distributed version control, and explore how to work with a distributed version control system from an IDE.

5 Devops

Overview

The merger of Development and Operations.

Activities
  1. lecture Read lecture notes: DevOps
  2. text What is DevOps?
  3. lecture Read lecture notes: Virtualization
  4. lecture Read lecture notes: System Testing
6 Presentations 11/09/2020 - 12/09/2020

Individual student presentations will take place over the final 5 weeks of the semester.

The order of student presentations will be based upon topics chosen – I will arrange them to provide as coherent an ordering as possible.

Activities
  1. event Controlling Virtual Machines Programmatically: Perry 11/09/2020
  2. event CI/CD Deployment to Docker Containers: Hallak 11/11/2020
  3. event Alternative CI Services (e.g., Travis): Launi 11/16/2020
  4. event System Testing of Web Applications: Gavindya Jayawardena 11/18/2020
  5. event System Testing of GUI Applications: Tsalikis 11/23/2020
  6. event Kubernetes and CI/CD: Yasith Jayawardena 11/30/2020
  7. event The Default CI Pipeline for Gitlab: Mahanama 12/02/2020
  8. event The Default CI Pipeline for GitHub: Garner 12/07/2020
  9. event AWS Serverless Access: Siddique 12/09/2020
7 Assignments
Activities
  1. asst Do assignment: Sign-up for Lesson Plan topics, in Blackboard under “Lesson Plan Groups”, starting 09/21/2020
  2. asst Do assignment: Schedule individual meetings to review initial state of demonstration project with instructor. 10/12/2020 - 10/21/2020
  3. asst Do assignment: 1st draft of Lesson Plan Due: 11/02/2020
  4. asst Do assignment: Lesson Plan reviews: Due: 11/16/2020
  5. asst Do assignment: Revised Lesson Plan Due: 11/30/2020
  6. asst Do assignment: Schedule individual meetings to demonstrate project to instructor. 11/01/2020 - 11/30/2020
  7. asst Do assignment: Report on demo project Due: 12/11/2020

All times in this schedule are given in Eastern Time.

Symbol Key
lecture Lecture:
slides Slides :
event Event or important date
text Read
lab Do lab:
asst Assignment:
exam Take the
activity Do:
recitation In your recitation section:
construct Under construction: