Introduction
Steven J. Zeil
1 The Course
Students will explore the process of automating the integration of changes into a code base, the testing of that code on varied platforms, and the delivery and deployment of the code products.
1.1 This is About Late-Stage Software Engineering
We can divide the activities that make up the lifetime of a software project into:
- Development: What happens to prepare the software and get it working.
- Operations: What happens after the supposedly working code is released.
Development | Operations | |
---|---|---|
Activities | ||
Supporting Technology |
1.1.1 Trends in Development are Stressing Ops
- Incremental development, particularly Agile
- Time between releases has shrunk from a couple of releases per year to a release every 2-4 weeks.
- That doesn’t allow much time for system testing and deployment
- Micro-Service architectures
- Popular for web-based systems
- Multiplies the number of distinct systems entering operations
- Increases inter-system interactions that require system testing
1.2 Key Concepts
Key concepts to be explored will be:
- Continuous integration and continuous deployment
- Build pipelines
- Automated system testing
- The use of virtual machines and containers as testbeds.
- Conducting testing in the cloud (AWS).
- Deploying products to the cloud.
1.3 Demonstration Projects
Part of this course will be hands-on
-
Students will demonstrate the techniques learned on a body of software.
-
Emphasis is on demonstrating a process, not on writing code for the project.
1.4 Expect to use:
- Virtual machines
- Docker
- Cloud-based servers
- All students will be provided AWS accounts
1.5 This is Not a Finished Course
This is intended as a prototype for a future course to be offered at the 400/500 level.
- As the semester progresses, students will help build that future course.
- Our own starting point will depend on where the students are
- Based on results of a survey in week 1, I will decide how much CS350 material needs to be reviewed before we can start learning about operations.
2 What You Will Be Doing
2.1 Lesson Plans
Each student will be expected to prepare a lesson plan on a topic selected in conjunction with the instructor. This lesson plan will consist of
- An introductory document.
- A list of possible readings.
- A step-by-step lab/assignment to introduce use of the relevant technology.
- A presentation by the student to the class walking through the introductory document.
All students will be expected to read all lesson plans.
2.2 Reviews
Each student will also be assigned to formally review two lesson plans created by other students. This review will entail
* Critiquing the introductory document and choice of readings.
* Attempting the lab/assignment, while keeping a log of steps performed and difficulties encountered.
2.3 Examples of Possible Topics
- Controlling Virtual Machines Programmatically
- CI/CD Deployment to Docker Containers
- System Testing of Web Applications
- System Testing of GUI Applications
- Kubernetes
- The Default CI Pipeline for Gitlab
- or GitHub
- AWS CLI (serverless) Access
- System testing on AWS
- CI/CD in Windows Environments on AWS
- MacOS Cloud Services
- Alternative CI Services (e.g., Travis)
2.4 Demonstration Project
Each student must maintain, through the semester, a demonstration project involving a non-trivial amount of code, preferably code that includes some system dependencies.
-
Students will prepare a report to be submitted at the end of the semester detailing the initial state of this project and the course-relevant technologies that have been added to the project.
-
Actual progress in developing the project functionality is not relevant to this course and will not be part of the grading.
-
Ideally, students in this course will already be members of a research group in the CS Dept or other open-source effort for which they are developing software that they can use as a testbed for the ideas explored in this course.
-
A project will be provided for students who cannot supply their own.
2.5 Grading
Tasks | Grade % |
---|---|
Lesson plan | 35% |
Lesson reviews | 30% |
Demonstration project | 25% |
Class participation | 10% |