Software Engineering


This unit of 9 ECTS has the goal of empowering the students with knowledge and skills to analyse existing complex systems, and evolve them using methodologies and tools typically used in industry. Hence, the student must:

  • Understand the basic principles and concepts of software engineering; system requirements; modelling using a core set of UML; architectural patterns and styles; DevOps; design and programming of extensible software systems; testing and evolving object-oriented code by analysing object-oriented code and deriving the corresponding models; design patterns; frameworks and APIs.

  • Know software engineering processes; a core set of UML; architectural patterns and styles; design patterns; DevOps; forward and reverse engineering techniques.     

  • Be able to use an existing system of non-trivial dimension using systematic reverse and forward engineering techniques; use patterns, frameworks and APIs.

General characterization





Responsible teacher

Ana Maria Diniz Moreira, Miguel Carlos Pacheco Afonso Goulão


Weekly - 5

Total - 5

Teaching language



The desirable pre-condition to enrol in this course is to have successfully finished the courses on Introduction to Programming and Object Oriented Programming.


Ian Sommerville, Software Engineering, Pearson, 10th edition, 2015 

Jim Arlow and Ila Neustadt, UML 2 and the Unified Process: Practical Object-Oriented Analysis and Design (2nd Edition), Addison-Wesley Professional; 2 edition, July 7, 2005

Lanza M.; Marinescu R. Object-Oriented Metrics in Practice. Springer-Verlag 2006. ISBN-10 3-540-24429

L. Bass, P. Clements, R. Kazman, "Software Architecture in Practice", 3rd edition, Addison-Wesley, 2012

Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, Design Patterns: Elements of Reusable Object-Oriented Software, Addison-Wesley, 1995

Len Bass, Ingo Weber, Liming Zhu, DevOps: A Software Architect''''s Perspective (SEI Series in Software Engineering), Pearson Education, 2015

S Demeyer, T Mens, Software Evolution, Springer, 2008

Glenford J. Myers, The Art of Software Testing, Third Edition, John Wiley & Sons, Inc., 2011

Teaching method

3 hours a week for the presentation of concepts, principles and techniques to support the development and evolution of software. The subject, illustrated with application examples, is supported by slides and by the use of the development environment on the teacher''''s computer.

2 hours a week of practical laboratory classes in which students practice the theories and techniques taught in previous theoretical classes. Students can answer to questions during class or during the hours of service.

The evaluation has two components: one project and two tests. The project gives frequency, so the minimum grade is 9.5 values, and is worth 70% of the final grade. The average of the two tests must be, at least, of 9.5 values to be approved.

Evaluation method

Students enrolled in this course for the first time. These students have to get approval in two components: theory and practice.

The students are graded with the scale 0 (minimum) to 20 (maximum) rounded to the nearest tenth.

I - Theoretical evaluation - Tests and Exams

1. The classification of the theoretical part (here labeled as NT) is the arithmetic mean of the two tests.

2. The students that obtain NT greater or equal to 9,5 get the approval in the theoretical part.

3. Each test will cover the content of the lectures taught until one week before the examination.

4. Despite the fact that the tests are supposed to cover the content of the lectures in a modular way, it is not taken from granted that the second test does not use knowledge already examined in the first test.

5. The times and locations of the tests will be announced in the CLIP system.

6. All students have to be enrolled in theoretical lectures and labs.

7. The students can only bring with them during the examination:

a. pen, stencil, eraser;

b. student''''s ID card

8. Any other element (including electronic devices, calculator machines etc) is forbidden. Mobile devices must be switched off so that they don''t disturb the rest of the students. 

9. You can not unstaple the examination papers.

10. The exam will be disqualified if any of the conditions expressed in 7,8,9 are not satisfied.

11. Any form of fraud, plagiarism or bad conduct will lead to immediate failure in the course, and the situation will be reported to the Faculty''s management to proceed with legal consequences. 

II - Labs and Project (Practical evaluation)

1. The labs will start during the week of the 12th of September.

2. The students have a deadline of October 15 to form groups (5 students as members). Students are free to form their groups regardless of the labs they are enrolled in.

3. Making the project implies:

a. the individual delivery of weekly challenges of the labs, using relevant tools and concepts that will be useful for the project. These grant 1 point of the final grade, in the component NP.

b. since the publication of the project: there will be milestones defined, with the mandatory delivery of requirements (detailed in the project description), including weekly project status summaries (to be prepared according to the template provided by professors). The project, with all its deliverables, contributes with up to 9 points to the final grade (within the NP component).

c. The final report shall contain all the elements required in the project description.

4. The project will be discussed and evaluated in the last week of classes.

5. The project grade (NP) will be attributed individually and determined with respect to the project''s deliverables and the oral discussion. This classification will be a value on a scale from 0 to 20.

6. Students with an NP classification greater or equal to 9.5 values obtain frequency.

III -  "Frequency"

1. The concept of "Frequency" means that the student is allowed to pass the course (taking into consideration the rest of the evaluation grading). It is mandatory that the student has a minimum individual performance (Grade of the project >= 9.5) in the execution of his project.

 IV - Final grading of Students E1

1. The final grade (CF) is the result of the following expression rounded to the neareswhole number:


2. The students that have "Frequency", with positive grading that shows a discrepancy greater than 4 units when compared to the average grading in the tests, may be called for an oral examination.

3. The oral examination implies that the grades can change upwards or downwards but the final grade will have a minimum classification of CF=NT.

4. If the student does not participate in the oral exam the final grade will be CF=NT.

IV - Grade improvement

The students that want to improve their grades have to follow the rules of the academic department to be subscribed to CLIP for that purpose.

 V - Classes

1. The lectures have 90 minutes = 10 minutes tolerance for changing classes and setup) + 80 minutes (of the lecture itself)

2. The labs have 120 minutes = 10 minutes tolerance for changing classes and setup) + 110 minutes of the lab itself, with an introduction and guided exercises.

VI - Other issues

1. Students are expected to accompany lectures and labs (or get informed via other students of what happened in class, in case they fail to participate in a given class). Any class content or organizational information transmitted during classes will not be repeated.

2. When contacting via email the teaching staff, students should start  their messages with the subject mandatorily formatted as:

"[ES] (subject)"

The message body must include the lab number, the student number, and the student''s name.

3. We will not answer electronic messages with questions already answered on the previous points, on clip, or on moodle, or discussed in the lectures.

4. The ideal communication means is the Professors'' office hours, dedicated to technical doubts students may have. These office hours should be setup at least a day before. Lectures and labs are also a good place for clarifying questions students might have. Email messages not related to the technical contents will be answered with the possible brevity, or orally during the lectures, when they are considered by the professors as relevant for a wider audience. It is up for the students to get informed of what is said in classes.

5. With few exceptions, emails will not be answered outside of the normal working ours of professors.

Subject matter

  • Software Engineering: goals, principles, ethics and professional responsibilities and liabilities

  • Software project management

  • Software processes (e.g. DevOps) 

  • Software Development Methodologies: 

    • Requirements engineering: requirements types and specification techniques

    • Software Architecture: concepts, patterns and styles     

    • Object-oriented analysis and design, using a core subset of UML (class diagrams, package diagrams, state machines, sequence diagrams)

    • Implementation using object-oriented languages (e.g. Java e C#)

    • Verification and validation: reviews, unit, integration and acceptance tests

    • Planned reuse and risks

  • Supporting technologies:

    • Reverse engineering (e.g. SourceMiner)

    • Specification and modelling (e.g. USE, StarUML) 

    • Implementation and evolution (e.g. Eclipse, GitHub) 

    • Unit tests, integration, acceptance and performance testing (e.g. JUnit, Spock, JMeter)

    • Software complexity evaluation (e.g. eclipse metrics plugin, inFusion)

    • Reuse: frameworks and APIs


Programs where the course is taught: