Devops, Containers, & the Cloud
Fall 2020
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
-
Identify the requirements, protocols, and policies for the online course
-
Use the selected technology tools for communication and collaboration
-
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.
- Read the syllabus.
- Read the communications policy.
- Introduction
- Take the Survey of Software Engineering Techniques, on Blackboard Due: 09/02/2020
2 Software Architectures
- Software Architecture Guide, Fowler, 2019
- Software Architecture: A Case Based Approach, Varma, ch 1
- 10 Common Software Architectural Patterns in a nutshell, Mallawaarachchi, 2017
- The top 5 software architecture patterns, Wayner, 2017
- Projects & Architectures
-
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
- Assess the impact of incremental models on a development project
- 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
- The Agile Manifesto & Twelve principles
- Scrum Guide
- Incremental development
- 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.
- Unit Testing Frameworks
- JUnit 5 Tutorial, HowToDoInJava
- Hamcrest Tutorial
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.
Version Control
- Version Control
- Understanding Git Conceptually
- git -- Distributed Version Control
- Change Management
- Optional Lab: working with
git
- Optional Lab: working with GitLab
- Installing a GitLab CI Runner on AWS
Continuous Integration
5 Devops
Overview
The merger of Development and Operations.
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.
- Controlling Virtual Machines Programmatically: Perry 11/09/2020
- CI/CD Deployment to Docker Containers: Hallak 11/11/2020
- Alternative CI Services (e.g., Travis): Launi 11/16/2020
- System Testing of Web Applications: Gavindya Jayawardena 11/18/2020
- System Testing of GUI Applications: Tsalikis 11/23/2020
- Kubernetes and CI/CD: Yasith Jayawardena 11/30/2020
- The Default CI Pipeline for Gitlab: Mahanama 12/02/2020
- The Default CI Pipeline for GitHub: Garner 12/07/2020
- AWS Serverless Access: Siddique 12/09/2020
7 Assignments
- Sign-up for Lesson Plan topics, in Blackboard under “Lesson Plan Groups”, starting 09/21/2020
- Schedule individual meetings to review initial state of demonstration project with instructor. 10/12/2020 - 10/21/2020
- 1st draft of Lesson Plan Due: 11/02/2020
- Lesson Plan reviews: Due: 11/16/2020
- Revised Lesson Plan Due: 11/30/2020
- Schedule individual meetings to demonstrate project to instructor. 11/01/2020 - 11/30/2020
- Report on demo project Due: 12/11/2020
8 Preamble
This outline is under perpetual evolution.
8 Postscript
All times in this schedule are given in Eastern Time.
Symbol Key | |
---|---|
Lecture: | |
Slides : | |
Event or important date | |
Read | |
Do lab: | |
Assignment: | |
Take the | |
Do: | |
In your recitation section: | |
Under construction: |
9 Presentation
Topics | Lectures | Readings | Assignments & Other Activities |
---|---|---|---|
topics | lecture slides event exam video project construct | text | exam asst selfassess exam activity lab recitation |
Document Kind | Prefix |
---|---|
lecture | Read lecture notes: |
event | |
exam | Take the exam: |
lab | Do: |
asst | Do assignment: |
reading | Read (optional): |