Module ICL-3002:
Software Engineering

Module Facts

Run by School of Computer Science and Electronic Engineering

20 Credits or 10 ECTS Credits

Semester 2

Overall aims and purpose

Introduce the theoretical underpinnings of the Software Engineering discipline. These core concepts will provide the framework to overlay on current industrial practice. This course is designed to be programming language, development style, and tool agnostic as far as possible. Utilising the theory provided will situate the professional practice of software engineering in the modern development industry. This course will also provide theoretical support to project management, professionalism, and process choices by showing how and why those choices are made.

Course content

● Offer complementary views of the Software Development Lifecycle, such as Waterfall, Double-Diamond, Agile, SCRUM.

● Propose methods of generating and managing the, often complex, list of requirements for any sizable software engineering project.

● Introduce the concept of ‘full-stack’ developers, specialist developers, DevOps, Operations, and their roles in developing and maintaining software systems.

● Introduce Source Code Management (SCM) concepts, objects, and processes. Comparing and contrasting the centralised and de-centralised models of SCM tools.

● Present Continuous Integration (CI) and Continuous Delivery (CD) forms of the development process and how these are supported by other parts of the lifecycle, other tools and processes.

● Offer both traditional and semantic versions practices, demonstrating the strengths and weaknesses of each.

● Demonstrate the need for strong quality controls in software engineering, the practice of managing quality records and the surrounding issues. ● Investigate traditional application environments, enterprise environments, cloud environments and their impact on software engineering.

● Examine release strategies and processes and their consequences on quality, customers, and the product.

Assessment Criteria

good

Appreciate the core concepts of the Software Engineering discipline.

Able to relate the concepts to each other and the project the student is presented with.

Distinguish versioning practices and their appropriate use.*

Able to apply the most appropriate scheme to a given problem.

Understand the various objects, processes, and strategies involved in Source Control Management and their implementation is contemporary software products.

Able to determine in which situations branches and/or tags are most applicable. Define merges and the precautions necessary when completing them.

Evaluate and select appropriate release and delivery strategies according to project requirements.

Able to determine which method is most appropriate given a project’s constraints.

Illustrate appropriate implementations of quality practices within Software Engineering.

Is able to generalize the workflow to any form of issue, including Change Requests. Understands the necessity of a Issue Tracking System.

Describe different methods to create, categorise, and store software requirements.

Able to create requirements in an appropriate form. Able to prioritise requirements using the MoSCoW method.

Associate elements of the Software Development Lifecycle with the appropriate project management and software engineering theory.

Combine knowledge and practice from both fields to make appropriate judgements on software engineering tasks.

threshold

Appreciate the core concepts of the Software Engineering discipline.

Able to define SCM, Release Engineering, DevOps, Operations, etc. Also, able to understand where in the process these concepts fit.

Distinguish versioning practices and their appropriate use.*

Able to define the traditional version and semantic version scheme.

Understand the various objects, processes, and strategies involved in Source Control Management and their implementation is contemporary software products.

Able to define key terms; such as repository, branch, tag. Also, able to distinguish between centralised and de-centralised tools such as Subversion and Git.

Evaluate and select appropriate release and delivery strategies according to project requirements.

Able to define manual release, continuous integration, and continuous delivery methods.

Illustrate appropriate implementations of quality practices within Software Engineering.

Able to define and construct a Defect (Bug) Report, has an appreciation of the workflow surrounding fixing defects.

Describe different methods to create, categorise, and store software requirements.

Able to recognise User Stories, Sprint Objectives and traditional prose requirements.

Associate elements of the Software Development Lifecycle with the appropriate project management and software engineering theory.

Recognise that software engineering is first a type of project. Able to match phases of the lifecycle to tasks present in software engineering texts.

excellent

Appreciate the core concepts of the Software Engineering discipline.

Able to choose the appropriate concept to apply in a given Software Engineering situation from those available.

Distinguish versioning practices and their appropriate use.*

In addition, able to justify with appropriate practices the choice between schemes.

Understand the various objects, processes, and strategies involved in Source Control Management and their implementation is contemporary software products.

Appreciate and understand SCM in the context of the development lifecycle and workflow. Able to describe workflows, such as GitFlow, designed to benefit developers.

Evaluate and select appropriate release and delivery strategies according to project requirements.

Able to justify with appropriate theory the choice of release method. (i.e. does not dogmatically insist on one method as best.)

Illustrate appropriate implementations of quality practices within Software Engineering.

Able to choose an appropriate priority for issues, what this classification entails and the appropriate response.

Describe different methods to create, categorise, and store software requirements.

Able to justify a choice of form over others, based on available theory and project particulars.

Associate elements of the Software Development Lifecycle with the appropriate project management and software engineering theory.

Appreciate how both fields complement rather than compete with each other. Able to describe how a project can benefit from utilising the best of both fields.

Learning outcomes

    1. Appreciate the core concepts of the Software Engineering discipline.
    1. Understand the various objects, processes, and strategies involved in Source Control Management and their implementation is contemporary software products.
    1. Evaluate and select appropriate release and delivery strategies according to project requirements.
    1. Illustrate appropriate implementations of quality practices within Software Engineering.
    1. Distinguish versioning practices and their appropriate use.
    1. Describe different methods to create, categorise, and store software requirements.
    1. Associate elements of the Software Development Lifecycle with the appropriate project management and software engineering theory.

Assessment Methods

Teaching and Learning Strategy

Hours
Lecture

24 of the 200 notional learning hours - 24 hours of lectures.

The tutorial sessions, which take place in lecture a theatre, and will include interactive demonstrations, group discussions, role play, individual and group work.

Formative assessment is provided by marked (but ungraded) exercises during tutorials, assignments, and the industry-inspired planning exercise. Summative assessment is provided by formal written examinations.

24
Tutorial

24 of the 200 notional learning hours - 24 hours of tutorial.

The tutorial sessions, which take place in lecture a theatre, and will include interactive demonstrations, group discussions, role play, individual and group work.

Formative assessment is provided by marked (but ungraded) exercises during tutorials, assignments, and the industry-inspired planning exercise. Summative assessment is provided by formal written examinations.

24
Tutorial

152 of the 200 notional learning hours - 152 tutor directed student learning.

The tutorial sessions, which take place in lecture a theatre, and will include interactive demonstrations, group discussions, role play, individual and group work.

Formative assessment is provided by marked (but ungraded) exercises during tutorials, assignments, and the industry-inspired planning exercise. Summative assessment is provided by formal written examinations.

152

Transferable skills

  • Literacy - Proficiency in reading and writing through a variety of media
  • Numeracy - Proficiency in using numbers at appropriate levels of accuracy
  • Computer Literacy - Proficiency in using a varied range of computer software
  • Self-Management - Able to work unsupervised in an efficient, punctual and structured manner. To examine the outcomes of tasks and events, and judge levels of quality and importance
  • Critical analysis & Problem Solving - Able to deconstruct and analyse problems or complex situations. To find solutions to problems through analyses and exploration of all possibilities using appropriate methods, rescources and creativity.

Resources

Reading list

“The Devops Handbook: How to Create World-Class Agility, Reliability, and Security in Technology

Organizations” – Kim and Bebois

“Release It! Design and Deploy Production-Ready Software” – Nygard

“Beginning Software Engineering” – Stephens

“Software Engineering, Global Edition” - Sommerville

Courses including this module

Compulsory in courses: