2023

Software Engineering

Name: Software Engineering
Code: INF13276M
6 ECTS
Duration: 15 weeks/156 hours
Scientific Area: Informatics

Teaching languages: Portuguese, English
Languages of tutoring support: Portuguese, English
Regime de Frequência: E-learning

Sustainable Development Goals

Learning Goals

After concluding this course, the students should have advanced knowledges of Software Engineering that allows them to build quality, agile and easy maintenance software, including all management process associated with the creation of software. More specifically, the students should:

be able to develop software using test based approaches;
know the software evolution process and be able to maintain the software;
know several software architectures;
know and be able to use different software execution environments;
know and be able to use advanced system building methods deployment processes, continuous integration, continuous deployment and system configuration;
know and be able to use software management and planning methods;

Contents

Software testing
Test based software development processes
Behavior based software development processes
Software evolution
Evolution process
Evolution dynamics
Software maintenance
Management of legacy systems
Software reuse
Software reuse methods
Applicational frameworks
COTS reuse
Component based Software Engineering
Components
Component models
Component composition
Engineering of distributed software
Associated problems
Server-client systems
Architecture patterns
Software as a service
Service based architectures
Services as reusable components
Service engineering
Service based software development
Software execution environments
Containers
Virtual machines
Configuration management
System building
Deployment processes
Continuous integration
Continuous deployment
Infrastructure configuration
Software management
Project management
Project planning
Software quality
Process improvement

Teaching Methods

The teaching methodology will be based on lectures and practical classes. Active learning is sought to stimulate the student to develop the various topics that are addressed in this curricular unit. Group problems will be solved during the practical classes, which will be part of a project that will be developed throughout the curricular unit, with the purpose of developing a software from scratch, resorting to the concepts of Software Engineering presented in the lectures and to the tools explored in the practical classes, allowing students to consolidate the knowledge acquired in this curricular unit.

The evaluation elements will be composed of 2 components: 1) theoretical component (60%) and 2) practical component (40%). The theoretical component consists of 2 tests or one exam. The practical component is composed by the development of a group project, developed throughout the curricular unit.

Teaching Staff