Agile Software Development - Waterford
The focus is on use of Agile Development methods requiring test-driven developed and regular automated software builds. The aim is to assemble a toolkit of modern tools that enable the set-up of a software development process where this structure is automated by the tools. Students taking this module should have strong object-oriented programming and design skills (e.g. be graduate of a BSc(Hons) or BEng involving significant programming experience) with a moderate understanding of computer architecture, operating systems and distributed computing.
The module guides you through a variety of Agile tooling and technologies that you will use to support and automate your development process. Initially, you will be introduced to the Kotlin programming language, which will be used in conjunction with the Javalin lightweight web framework to build a RESTful API. During the app development process, the lab exercises will utilise a variety of technologies and Continuous Integration and Continuous Deployment (CI/CD) tooling such as Swagger for API design and documentation, Maven to automate the build process, Heroku to host the app, PostgreSQL and Jetbrains Exposed to provide persistence, Vue to develop the UX, JUnit5 and Unirest to perform automated unit and integration testing, GitHub for version control, and so on. This module is designed to be very practical serving, and should you choose to pursue the Master's degree, the contents of the module supports software development for the dissertation.
Introduction to Agile Development e.g. object oriented programming review; agile practices; SOLID principles
Test Driven Development (TDD) e.g. Principles of testing; unit testing; integration testing; performance testing; TDD patterns
Developer Operations e.g. principles of automated build management and continuous integration
Frameworks e.g. Web App Frameworks; Model-View-Controller; Reactive Patterns; RESTful APIs; Serialization and Parsing (such as XML, JSON, YAML)
3 months blended/online.