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