Software Engineers are expected to develop and evolve increasingly complex systems and services using Agile and Lean approaches and emerging technologies like Cloud computing. Hence, there ought to be modernisation of the curricula and mode of delivery for educating and mentoring the future Software Engineers. Software as a Service paradigm has been increasing popular as more are more applications are being developed for mobile and Tablet devices. As part of the restricting the Bachelor of Engineering (Software) degree program at the University of Adelaide, I have designed a new course, Engineering Software as Services, based on a very popular book, Engineering Software As A Service, by Armando Fox and David Patterson. Both of them have also developed a very popular Massive Open Online Course (MOOC) delivered through edX. They also offer a Small Private Online Course (SPOC) for different institutes who are interested in using their book and courseware. I have got a SPOC set up for our course whose brief description and the key objectives are provided here for sharing.
Engineering Software intensive systems and services require Agile and Lean approaches for rapidly developing Engineering has been witnessing several changes paradigm The objectives of these courses 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 service-oriented paradigm with cloud-computing technologies. These courses 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 cloud-based infrastructures. These courses also purport 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. After completing these courses, 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 SOA Patterns, REST architecture style, Scrum, Behaviour 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.
- Develop and implement a pipeline for continuous deployment and monitoring of services.