CLOUD SOFTWARE ENGINEERING

SHE Level 5
SCQF Credit Points 20.00
ECTS Credit Points 10.00
Module Code MMI324106
Module Leader Brian Hainey
School School of Computing, Engineering and Built Environment
Subject Computing
Trimester
  • B (January start)

Summary of Content

This module is concerned with the approach taken to software engineering when developing modern cloud hosted software systems. The module covers the cloud computing design patterns that govern the architecture of typical cloud platforms. In addition, software engineering techniques and the approach taken to developing software including Application Lifecycle Management (ALM) and the use of Development Operations (DevOps) services is covered. An in depth study is also provided of the architecture, technology and services available on a typical cloud platform and the development of applications for that platform.

Syllabus

Cloud Application Architecture and Design Patterns: Overview of design pattern concepts, Software as a Service (SaaS), Platform as a Service (PaaS) and Infrastructure as a Service (IaaS) compound patterns and application architecture SaaS, PaaS and IaaS constituent patterns such as: Workload Distribution, Shared Resources, Resource Pooling, Dynamic Scalability, Usage Monitoring, Platform Provisioning, Centralized Remote Administration Software Engineering for Cloud Platforms: Overview of ALM and DevOps including the Development Process, Agile and Iterative, RUP, Scrum, The Twelve-Factor App, Requirements Capture, Source Control, Test Management / Execution and Build / Deployment Management Software Development for a Specific Cloud Platform: In depth study of software development for a specific cloud platform such as IBM BlueMix including available runtimes and containers Review of ALM and DevOps services such as Track and Plan, Version Control, Build & Deploy, Auto-Scaling, Monitoring and Analytics Review of application services such as Apache Spark, Apache Hadoop, DB2, Speech to Text, Visual Recognition, AppScan Dynamic Analyser, Single Sign On Examples of tasks undertaken by students in practical session are: -360 Configuration of lifecycle management tools and components to allow automated building of software during development. Configuration of a cloud platform and its associated software tools to allow development of a specific software component or service. Creation, deployment and test of a specific cloud hosted software component or service. Load and scalability testing of software components and systems hosted on a cloud platform.

Learning Outcomes

On successful completion of this module a student should be able to:Demonstrate a detailed understanding of cloud application architecture and design patterns.Critically appraise the approaches taken to software engineering when developing cloud-hosted software.Demonstrate a detailed understanding of Application Lifecycle Management (ALM) and Development and Operations (DevOps) services.Design and implement, using appropriate ALM and DevOps services, a cloud platform hosted solution to a specific software development problem.

Teaching / Learning Strategy

The learning and teaching strategy for this module has been informed by the university's 'Strategy for Learning' design principles. The course material is introduced through lectures and laboratory sessions that draw upon and extend the lecture material to deepen students' knowledge. The laboratory sessions are designed as a set of formative exercises and a substantial summative exercise spanning several weeks. The formative exercises introduce a range of technologies that allow students to gain confidence and build knowledge of the range of solutions that can be applied to particular problems. Summative exercises provide experience in real-world problem-solving and challenges students to demonstrate analytical skills and capacity for divergent thinking. Tutorials will be used to help explain and elaborate on both the lecture material and the laboratory exercises; these will include a range of case studies that bring a global perspective to the subject matter. During all lab and tutorial sessions students receive formative feedback on their performance in undertaking the laboratory and tutorial exercises. Summative feedback and grades are also provided for the coursework assignments undertaken as part of the module, using GCULearn. GCU Learn is also used to provide the students with module specific Forums and Wikis to stimulate student and lecturer interaction outwith the normal lecture, laboratory and tutorial sessions. Flexible learning is encouraged and supported. All teaching materials and self-testing exercises are made available on GCULearn and links are provided to external materials such as podcasts, MOOCs, videos and relevant literature. All the computing resources used for laboratories are made available either by virtual machine images (supplied to students for use on their own computers) or online using industry standard cloud computing services provided by major global computing industry vendors. Due to the provision of all material and computing facilities online, the module is suitable for use where Flexible and Distributed Learning (FDL) is required. Students will be issued with any required license code to access the cloud platforms covered by this module to allow them to undertake tutorial, labs and assessment work either on campus or elsewhere.

Indicative Reading

Erl, T et. al. (2015); Cloud Computing Design Patterns; Prentice Hall; ISBN-13: 978-0-13-385856-3 Gousset, M et al. (2010); Professional Application Lifecycle Management, with Visual Studio 2013 Wrox, ISBN-13: 978-1118836583 Bass, L et. al. (2015); DevOps A Software Architect's Perspective, Addison-Wesley Professional, ISBN-13: 978-0134049847 Raffaele Stifani (2015); IBM Bluemix, The Cloud Platform for Creating and Delivering Applications, IBM, REDP-5242-00 ISBN 0738454427 Carrizo, S et. al. (2015); Using Liberty for DevOps, Continuous Delivery, and Deployment; IBM, SG24-8286-00 ISBN 0738441163 IBM Academic Initiative (2015), Essentials of Cloud Application Development on IBM Bluemix (VY301) Sarna, David E. Y. (2011) Implementing and Developing Cloud Computing Applications. Auerbach Publications; ISBN-13: 978-1439830826

Transferrable Skills

D1 Specialist knowledge and application D2 Critical thinking and problem solving D3 Critical analysis D4 Communication skills, written, oral and listening D5 Numeracy D7 Computer literacy D8 Self-confidence, self-discipline & self-reliance (independent working) D11 Knowledge of international affairs D12 Appreciating and desiring the need for continuing professional development D13 Reliability, integrity, honesty and ethical awareness D14 Ability to prioritise tasks and time management D17 Commercial awareness

Module Structure

Activity Total Hours
Independent Learning (FT) 120.00
Tutorials (FT) 12.00
Lectures (FT) 24.00
Assessment (FT) 20.00
Practicals (FT) 24.00

Assessment Methods

Component Duration Weighting Threshold Description
Coursework 1 n/a 50.00 45% Technical report on the Software Engineering practices used in the development of cloud hosted software applications. (2000 word approx.)
Coursework 2 n/a 50.00 45% Design and implementation, using ALM and DevOps services, of a cloud hosted solution to a specific software development problem.