Javascript Menu by Deluxe-Menu.com
Lero - The Irish Software Engineering Research Centre  

Entry-Exit points

 

University of Limerick Program Plan:

Stage 1 (Taught Component)*
First year, Autumn SemesterFirst year, Spring Semester
Core Modules:Core Modules: Quantitative Research Methods
Philosophy of ResearchElective Modules (Choose three from:)
Software RequirementsSoftware Quality
Software Engineering FundamentalsSoftware Architecture
Software DesignSoftware Evolution
 Software Development ParadigmsHuman-Computer Interaction

 

Also in year one preliminary research will take place.

All course modules will be accredited according to the European Credit Transfer System (ECTS)

Students will each have a tailored curriculum agreed with their Doctoral Studies Panel as part of their Personal Development Plan. The Doctoral Program Board will ensure that modules are appropriate to the level. This curriculum in Stage 1 includes two mandatory research method modules, four core software engineering modules, and three elective software courses that support the students' research interests. The table above outlines this structure. However, it would be possible to amend the elective module choices to provide a conceptual grounding in other possible research areas. These further elective modules could be provided in any of the partner universities. The elective modules are at graduate level in areas such as Computer Science, Data Communications & Distributed Systems, Localisation, Multi-Media, Software Engineering, Security, and cognate areas such as Management and Marketing. Typically, the principal supervisor will recommend the specific elective modules that will be taken.

The six mandatory modules have been chosen to ensure a uniform experience and grounding for students who are to undertake a Software Engineering graduate research degree. The modules (elective and core) have been considered to ensure that there is good coverage of the overall software development lifecycle. The elective modules on software architecture, software evolution and software quality provide additional support to the core modules available in the autumn semester. The HCI module reflects the growing trend for designing software artefacts to fit human needs better. The authors of the various modules have considered where overlap might occur, e.g. between software architecture and software design, for example, and are aware of such issues.

Certain modules will, if required, be made accessible for remote access via the Internet by recording lectures and uploading lecture material to the web.

This framework of core modules in the autumn semester and elective modules in the spring semester is one that could be tailored to suit different specialisations. Thus, while the framework is instantiated here for a software engineering graduate program, it could be configured differently to support graduate programs in different disciplines.

Stage 2

3 years research leading to completion of PhD thesis (Potential formal assessments during stage 2 also)

*This is an indicative program structure that it will be configured slightly differently in each University

Module Descriptions

First Year, Autumn Semester

Philosophy of Research

The aim of this module is to introduce students to the philosophical and methodological underpinnings of the primary issues in research. The basic principles of research methods and the overall research process will be covered.

The module will also cover qualitative research methods which were originally developed in the social sciences to enable researchers to understand and explain social and cultural phenomena. Increasingly these issues become more important as software becomes more pervasive in modern life.

The following is a probable list of topics to be covered in this course:

  • Theoretical and empirical concepts - design science and natural science models

  • Epistemology, ontology, methodology and axiology

  • Positivist, interpretivist and critical research paradigms

  • Basic phases of a research project

  • Deductive and inductive logic systems

  • Validity and generalisability

  • Research Ethics

  • Qualitative research methods (e.g. action research, case studies, ethnography and grounded theory)

  • Qualitative modes of analysis (e.g. hermeneutics and semiotics)

As software engineering matures as a discipline, its status and relationship with science needs to be understood. Part of this discussion can be grounded in ideas and concepts from design science which differentiates natural science/behavioural science and design science. Natural science is typically concerned with basic research in physics, biology etc and adopts a theory focus. Design Science is concerned with applied research devising artifacts to attain goals, and has a utility focus. The interaction between design science and natural/behavioural science is important. Also, the basic vocabulary for discussing such issues arises in the subject matter for the proposed course.

Software Requirements

To provide students with the knowledge and skills to elicit and document system and software requirements in a variety of development situations and to be able to verify and validate requirements so as to provide a sound basis for the development, testing and evaluation of software.

The Requirements Process:
Requirements in the Software Life Cycle
Requirements and Design; Requirements and Testing; Requirements Engineering.

The elicitation and discovery of requirements:
The sources of requirements;
The roles of Stakeholders; Discovering and Inventing Requirements;
Elicitation techniques: Prototyping and Scenarios; Task Analysis;
Joint techniques; Requirements workshops; Facilitation techniques;
User-centred requirements elicitation; Requirements situations.

The modelling and analysis of requirements:
Uses of modelling; Models, descriptions and specifications; data requirements; analysis patterns;
Problem Frames; Problem domain descriptions;
Goals, Constraints, and Proposed Solutions in requirements documentation.

Requirements Documentation: Standards and Templates;
Documentation styles: Domain level and product level
Task Descriptions; Glossaries and data dictionaries
Domain-level requirements; Product-level requirements; Requirements Templates:
IEEE-830 and Volere. Writing non-functional requirements; Interface requirements;
Quality factors and quality requirements; Making requirements measurable.

Management of requirements:
Keeping track of requirements; Change control; The requirements management process; Requirements attributes; Traceability; Tools

Requirements validation:
Verification and validation of requirements; reviews and walkthroughs; the Quality of requirements; requirements defects;
Requirements inspection techniques; Negotiation and agreement of requirements:
Organisational and Social Issues.

Software Engineering Fundamentals

Aims & Objectives:

To introduce the primary concepts in theoretical computer science (and the relations between them) that impinge on how we reason about software.

Topics Selected From:

  • Syntax and Semantics of Mathematical Expressions, Prefix Postfix and Graphical Representations, Evaluation Mechanisms;

  • Introducing to Structure of Formal Proofs in Elementary Algebra Using Post's Production Systems

  • Formal Languages, Grammars, and Chomsky's Adaptation of Post's Notation to Specification of Grammars

  • State Machines (FSM, Stack Automata, Turing Machines) in Computer Science and Software Engineering

  • Introduction to Recursive Function Theory

  • State Machines, the Grammars of the Languages they recognize, and the functions they can compute.

  • Induction over Natural Numbers and over Well-Ordered Sets

  • Formal Semantics of Propositional and Predicate Logic and Simple Imperative Programming Languages

  • Formal Derivation and Verification of Simple Imperative Programs

  • Binary Relations, Logical Data Modelling

  • Introduction to Programming Language Paradigms;

  • Signatures, Expressions, Objects, and Algebras.

Aims & Objectives:
Software is the success story of our times playing a critical and ever more pervasive role in personal, social and commercial life. However, despite almost 50 years of software development experience, software development remains problematic in many organisations in practice. A range of software development paradigms or approaches have been applied, ranging from very heavy-duty formal processes to ad-hoc informal 'anything goes' approaches, with a recent category of agile approaches, trying to address the middle ground. These paradigms differ enormously in terms of techniques proposed, life-cycle coverage and emphasis, and underpinning philosophy of systems development. For example, some methods focus on early life-cycle phases such as planning (e.g. BSP), some focus on the requirements and systems perspectives of different stakeholders in the development context (e.g. Soft Systems Method), and some cover the analysis and design phases (e.g. SSADM). Even within the more confined realm of agile methods, there are wide discrepancies - some methods emphasise the programming activity (e.g., eXtreme Programming), some emphasise project management (e.g. SCRUM), and others emphasise reflection and improvement processes (e.g. Crystal).

The aim of this course is to expose students to the deeper principles and concepts underlying the various software development approaches and thus prepare them better to understand and evaluate the myriad of approaches which are often presented as 'silver bullet' type solutions to software development. The course will thus enable students to better understand how the various software development paradigms are instantiated in practice in actual software development contexts.

The following is a suggested list of topics to be covered in this course:

  • Software Development: A Historical Perspective

  • Systems Perspective

  • Common Software Lifecycle Models

  • Software Development: Method-in-Action

  • Hard and Soft Approaches to Systems Development

  • Agile Approaches

  • Open Source Software Development and Inner Source

 

Software Design

The objectives of this module are to equip students with the fundamental knowledge and techniques necessary to design quality object-oriented software. The emphasis is on the support of functional requirements using data driven design, with limited reference to architectural concerns that are covered in a subsequent module. The learner should be able to demonstrate the ability to:

  • Design good software that incorporates architectural and design patterns.
  • Develop the supporting documentation for the requirement, analysis, and design phases of a software development project using an Object-Oriented Analysis and Design (OOAD) method in conjunction with The Unified Modelling Language (UML).

  • Create supporting documentation for the specification workflow in a Component-Based Development (CBD) approach.

  • Critique, and compare and contrast the artefacts delivered from the OOAD and CBD approaches.

Topics presented include:

  • Problems with the Object-Oriented (OO) and Component-Based Development (CBD) paradigms.

  • Characteristics of good software focusing on modular decomposition, interfaces, and encapsulation.

  • Requirements modelling with use cases, use case descriptions, prototyping, and the identification of quality attributes.

  • Object-Oriented Analysis and Design (OOAD) using a generic OO method in conjunction with the Unified Modelling Language (UML). Quality scenarios and quality tactics will be incorporated into the discussions.

  • System design focusing on architectural patterns such as the Model View Controller (MVC), Broker, and Interceptor.

  • Detailed design focusing on creational, structural, and behavioural design patterns.

  • Introduction to Refactoring and bad code smells.

  • Overview of Component-Based Development with an emphasis on functional decomposition.

  • Critique of the OO paradigm ad the use of The UML for sketching, blueprinting, and execution.

Software Architecture

Software Architecture has been attracting significant attention from researchers and practitioners since the last decade of 20th century. The increasing size, complexity, and demand for quality software systems are some of the most important issues that have increased interest in this sub-discipline of software engineering. Since a good architecture is considered one of the key factors in successfully developing and evolving a system or a family of systems, an increasing number of organisations are spending a considerable amount of effort and resources on designing and evaluating architectures of their software-intensive systems. Employers are expecting software engineers to be highly skilled and competent in designing, evaluating, and managing architectures of large-scale systems. That is why an increasing number of academic institutes are responding to the increasing demand of knowledgeable and skilled software architects by offering dedicated courses on software architecture in software engineering curricula. The objective of the course is to provide postgraduate students with a sound technical exposure to the concepts, principles, methods, and best practices in software architecture. At the conclusion of the course, the students are expected to be able to:
- Appreciate the importance and role of software architecture in large scale software systems
- Design and understand software architecture for large scale software systems
- Recognise major software architectural styles, design patterns, and frameworks
- Describe a software architecture using various documentation approaches and architectural description languages
- Generate architectural alternatives for a problem and select among them
- Use well-understood paradigms for designing new systems
- Identify and assess the quality attributes of a system at the architectural level
- Appreciate the architectural concerns and approach for families of products
- Demonstrate an understanding of the current trends and technologies such as model-driven, service-oriented, and aspect-oriented architectures
- Be aware of the coming attractions in software architecture research and practice

The following are the topics to be covered in this course:

  • Introduction to the fundamentals of software architecture
  • Role of software architecture in software quality

  • Fundamental principles and guidelines for software architecture design, architectural styles, patterns, middlewares, and frameworks

  • Methods, techniques, and tools for describing software architecture and documenting design rationale

  • Software architecture design and evaluation processes

  • Software architectures for product lines

  • Model Driven approaches and tools for designing and evaluating architectures

  • Domain Specific, component-Based, Service-Based, Architectures

  • Future challenges and emerging trends in software architecture discipline.

This course introduces the practices and latest state-of-the-art software architecture. What a software system is designed to do and how the properties and interactions among different components and connectors influence the quality of a system. The course will examine the practical applicability of architecture research, specifically its relationship to the work in software reuse, model-driven, and service-oriented architectures. The major topics of the course will be illustrated by a selection of "industrial-strength" case studies.

First year, Spring Semester

Quantitative Research Methods for Science, Engineering and Technology

Aims & Objectives:

  • To introduce candidates to the powers and limitations of quantitative applied research;
  • To address the traditional dichotomy between research methodologies this course is designed to encourage a critical perspective for students undertaking a PhD.

  • To provide the statistical skills and approaches necessary to undertake advanced (PhD research);

  • To understand the most appropriate tests in any given research scenario;

  • To understand and interpret the common statistical techniques used in advanced research.

Syllabus

  • Descriptive versus Inferential Statistics, Data Collection and Sampling, Probability distributions, Model building and experimental design, Hypothesis testing, Analysis of Variance, Regression and Time series analysis, Factor analysis.
  • The power, elegance and limitations of statistical/mathematical modelling (Ackoff's Systems Thinking, Gödel's Incompleteness Theorem, Turing's Computability Concepts, Nash's Equilibrium Theory).

  • How to construct a sample. The use of sampling theory and methods to identify appropriate sampling frames and the need to calculated the power of a test .

  • The use of Distribution Theory for the analysis and interpretation of large volumes of experimental data. Including the concept of a parameter estimation, maximum likelihood , the method of moments and Cramer-Rao Uniqueness Theorem. The uses of multiple regression analysis: logit, probit, poisson etc. discriminant analysis, and linear structural equations in research.

  • To highlight the emphasis on the mean within classical statistics and to introduce students to robust methodologies e.g. median polish and M - estimators etc. outliers, influence points and Robust Bisquare Regression

  • Experimental Designs; Response Surface Methods: Method of Steepest Ascent, verifying adequacy of first order model. Analysis of second order response surface. Characterising the response surface. Selecting designs for fitting response surfaces. Central composite designs. Box-Behnken designs and Taguchi Transformations for digital and analogue signal to noise ratios.

Elective Modules

Software Evolution

Aims & Objectives:
Many reports since the late '80 suggest that the majority of software development occurs after delivery of the 'finished' product. This phase of development deals with redressing faults in the original system or, more commonly, evolving the system in line with changing business contexts and requirements. However undergraduate and graduate courses seldom incorporate this (possibly infinite) phase of the software lifecycle explicitly.

The aim of this module is to focus on the tools, technologies, theories and practices of software evolution. In doing so, it will make students aware of the wide range of software evolution challenges faced by the software industry today and will equip students to meet these challenges.

Syllabus
Topics presented include:

  • Review of Taxonomies of Software Evolution
  • Introduction to prevalent issues in Software Evolution, such as bug triaging, version control, concept location (information seeking), change impact analysis, and architectural drift.

  • Analysis of Software Evolution processes

  • Cost Estimation issues in software evolution.

  • Evaluating Program Comprehension strategies and techniques.

  • Automated Approaches to Concept Location (Plan Recognition, Natural Language, AI)

  • Evaluation and measurement of Software Change.

  • Reverse engineering, Reengineering and Re-documentation of legacy systems

  • Assessing Architectural conformance

  • Techniques for Change Impact Analysis

  • Software Evolution Tools

  • Visualization of Software Evolution

  • Empirical Studies of Software Evolution

Software Quality

Aims & Objectives:
To give students an understanding of:

  • Management of software quality
  • Software Process Quality

  • Software Product Quality

  • Quality issues during the development of software

  • Measurement techniques for monitoring software quality

Syllabus

Importance of quality within software development organisations; Role of Software Quality Management; Differences and similarities between software quality and manufacturing quality; Differences and similarities between software product quality and software product quality; Total Quality Management tools and techniques and their application to software; Software Quality Assurance; Software process models such as Capability Maturity Model Integrated (CMMI) and Software Process Improvement and Capability dEtermination Model (SPICE); Use of models in Software Process Assessment; Use of assessment results to define, plan and control Software Process Improvement projects; Software Product and Software Process Metrics including statistical methods, estimation and prediction models, quality control principles and data analysis; Setting quantifiable improvement goals; Software Inspections; Software Testing; Software Defect Prevention; Configuration Management; Risk Management; Software quality in small companies, large companies and distributed teams.

Human-Computer Interaction

Human-computer interaction (HCI) is an interdisciplinary field concerned with the design, evaluation and implementation of interactive computing systems for human activities and with the study of the contexts in which they are used. HCI is about the design of technologies that are safe, easy to learn and use, efficient, and provide the user with a positive experience of use. Many computer technologies are still being designed without consideration for the people who will use them or be affected by their use, often resulting in systems that do not adequately match the user's needs, styles of thinking and working, are unsafe and inefficient, and often resulting in the loss of data and system breakdowns. As computer technology is becoming more ubiquitous and consumer-orientated, the need for understanding users and the contexts of use is becoming more and more important commercially. HCI is historically associated with the fields of ergonomics and human-factors psychology and has been heavily influenced by the knowledge, theory and methods of cognitive psychology to assist in the design of human-computer interfaces. Nowadays, its scope has broadened to include computer science, sociology, anthropology, and industrial design. HCI traditionally takes a user-centred approach to design, putting the user of technology at the centre of the design process. The advantages of incorporating HCI into the software development lifecycle include: higher quality systems and products from the user's (customer) perspective; systems that are safer and less prone to human error (important in aviation, banking, government, military, etc.); reduced frustration and time spent learning to use systems; increased acceptability of technology among the elderly; and research also associates higher return of investment with the incorporation of HCI principles early in the design lifecycle.

On completion of this module students should be able to:

  • Demonstrate an understanding of the key elements required for the design of interactive technologies;
  • Demonstrate an understanding of the conceptual and methodological bases of interaction design, as well as it's historical context;

  • Demonstrate and understanding of the psychological and social scientific bases of HCI;

  • demonstrate an ability to apply principles and heuristics for the design of interactive technologies;

  • Conduct a user-centred usability evaluation of an interactive artefact and derive recommendations for re-design from this process;

  • Demonstrate knowledge and understanding of methods for involving end users as participants in the creation of new interactive technologies (participatory design).

The following is a list of topics to be covered in this course:

  • Introduction to HCI and associated fields - ergonomics, human-factors, interaction design, computer-supported cooperative work;
  • HCI in the design lifecycle - user-centred design, participatory design, usability engineering;

  • HCI technologies;

  • The Psychology of Human-Computer Interaction;

  • Principles for usability in user-interface design;

  • Task analysis;

  • Methods for studying users in context;

  • HCI design & prototyping methods;

  • Methods for the evaluation of computer systems - for usability and user experience.

 

 



 

RSS icon
View a printer-friendly version of this page
Page last updated: 02/12/2009