Software Engineering

Objectives

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 evolve an existing system of non-trivial dimension using systematic reverse and forward engineering techniques; use patterns, frameworks and APIs.

General characterization

Code

12660

Credits

9.0

Responsible teacher

Miguel Carlos Pacheco Afonso Goulão

Hours

Weekly - 5

Total - 70

Teaching language

Português

Prerequisites

Available soon

Bibliography

Main:

Sommerville I., Software Engineering, Pearson, 10th edition, 2015 

Arlow J. and Neustadt I., UML 2 and the Unified Process: Practical Object-Oriented Analysis and Design (2nd Edition), Addison-Wesley Professional; 2 ed, 2005

Additional:

Lanza M.; Marinescu R. Object-Oriented Metrics in Practice. Springer 2006.

Bass L. et al, "Software Architecture in Practice", 4th ed, Addison-Wesley, 2021

Gamma E. et al, Design Patterns: Elements of Reusable Object-Oriented Software, Addison-Wesley, 1995

Bass L. et al, DevOps: A Software Architect''s Perspective, Pearson Education, 2015

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

Aniche, M. Effective Software Testing, Manning, 2022

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 clarify their doubts during class or during office hours.

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 50% of the final grade. The average of the two tests must be, at least, of 9.5 values to be approved.


Evaluation method

Assessment Components

The assessment is made up of two components: the laboratory component and the theoretical-practical component. All assessment elements will be scaled from 0 to 20 points, rounded to the nearest tenth.

Laboratory Component and Frequency

The laboratory component is made up of a project and several challenges, in some cases individual, in others in groups created for the challenge in question.

The project is carried out in groups of 6 students throughout the semester, with several milestones that groups of students must meet, a final delivery and a mandatory, individual oral discussion for all group members.

The challenges are proposed throughout the practical classes, normally taking a short time to resolve. The grades for the challenges, even when carried out in groups, are always individual.

The Laboratory Component (CL) grade has a weight of 50% in the final grade and is structured as follows:

- 5% allocated to participation in practical classes and solving the challenges proposed in them;

- 45% allocated to the project, resulting from the project evaluation

To obtain frequency, a student must obtain an individual project grade >= 9.5

Theoretical-Practical Component

The theoretical-practical component consists of two tests (during the class period) or one exam (during the Appeal Period). The three tests are face-to-face, individual, written and without consultation. Electronic devices (e.g. calculators, cell phones, tablets, smartwatches and laptops) are not permitted.

There is no pre-registration for tests.

Each test (T1 and T2) weighs 25% of the final grade. During the classes period, the Theoretical-Practical Component (TP) is:

CTP = (T1 + T2)/2

During the appeal period, the grade from the two tests is replaced by the grade from the appeal exam (R).

CTP = R

In both cases, the weight of CTP in the final grade is 50%.

Final grade

The student''s final grade (F) is:

- F = CTP, if CTP < 9.5

- F = (CTP + CL)/2, if CTP >= 9.5

All intermediate grades are rounded to the nearest tenth.

The final grade F is rounded to the nearest unit.

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 - Specification and modelling with UML - Implementation and evolution - Software complexity evaluation - Reuse: frameworks and APIs

Programs

Programs where the course is taught: