Software Processes and Methodologies

Base Knowledge

Although no preceding curricular units are defined, it is highly desirable that the students have knowledge of a programming language, preferably an object-oriented one.

Teaching Methodologies

Classes are taught in a theoretical-practical regime, comprising theoretical exposition of concepts and demonstration of their application, using computers and digital tools. A dynamic teaching and learning process will be used: fundamentally interactive, with support for digital tools and based on “Blended learning” methodologies, centred on the student, with slide shows and practical exercises.

Learning Results

Objectives:

– To provide students with a set of concepts, techniques and tools that enable them to build software in a wide variety of application domains.

 Skills to be acquired:

1. Have a global vision of the role of the different domains of software engineering.

2. Know how to carry out a software requirements analysis.

3. Be able to draw up the architecture of the software to be developed.

4. Know how to choose the most appropriate implementation techniques.

5. Have knowledge of a range of software testing and validation techniques.

6. Be aware of the challenges of building larger systems and applications.

Program

1.           Software engineering

1.1.        Introductory concepts

1.2.        Professional software development

1.3.        Human aspects

1.4.        Ethics

1.5.        Some exemples

 

2.           Software Processes

2.1.        Software process models

2.2.        Process activities

2.3.        Coping with change

2.4.        Process improvement

 

3.           Agile software development

3.1.        Agile methods

3.2.        Agile development techniques

3.3.        Agile project management

3.4.        XP and SCRUM

3.5.        Large projects

 

4.           Requirements engineering

4.1.        Functional and non-functional requirements

4.2.        Requirements engineering processes

4.3.        Requirements elicitation

4.4.        Requirements specification

4.5.        Requirements validation

4.6.        Requirements change

 

5.           System Modelling

5.1.        Core principles

5.2.        Scenario-based modelling

5.3.        Class-based modelling

5.4.        Functional modelling

5.5.        Behavioural models

 

6.           Architectural design

6.1.        Software architecture

6.2.        Architectural design decision

6.3.        Architectural views

6.4.        Architectural patterns

6.5.        Application architectures

 

7.           Design and implementation

7.1.        Object-oriented design using UML

7.2.        User interface

7.3.        Implementation issues

7.4.        Open-source development

 

8.           Software testing

8.1.        Development testing

8.2.        Test-driven development

8.3.        Release testing

8.4.        User testing

 

9.           Software quality

9.1.        Fundamental concepts

9.2.        Achieving software quality

9.3.        Cost impact of software defects

9.4.        Types of reviews

9.5.        Software Quality Assurance

9.6.        The ISO 9000 quality standards

Curricular Unit Teachers

Internship(s)

NAO

Bibliography

Engineering Software Products: An Introduction to Modern Software Engineering,
Ian Sommerville, Published by Pearson, 2019, ISBN 13: 9780135210642

Software Engineering: A Practitioner’s Approach, 9th Edition, 2020, by Roger Pressman and Bruce Maxim, Publisher: McGraw-Hill Education; 9 edition, ISBN 13: 9781259872976

Essentials of Software Engineering 4th Edition, 2016, by Frank Tsui (Author), Orlando Karam (Author), Barbara Bernal (Author), Publisher: Jones & Bartlett Learning; 4 edition ISBN-13: 978-1284106008