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 use 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

Ana Maria Diniz Moreira, Vasco Miguel Moreira do Amaral

Hours

Weekly - 5

Total - 5

Teaching language

Português

Prerequisites

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

Bibliography

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, and the moodle''s course website.

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

[The following items, namely the need to be physically present, might be subject to change, depending on the evolution of the situation with COVID-19]

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) are 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, 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 27th to September 1st.

2. The students have the deadline of 15h of September to form groups (5 students as members). In case it is not possible contact the professors.

3. Individual weekly challenges in the labs will be evaluated (counts to the maximum of 1 in the final grade, out of 20) and is part of the NP weight.

4. The work of the group members on the project must start since the first day the description of the problem is announced. It will count as part of the NP weight, with the maximum result of 9 in the final grade)

a. The project will imply the submission of weekly reports (detailed when the project is announced).

5.  The project implies an oral discussion to be booked for the FIRST week of JANUARY.

6. The complete grading of the project will depend on the deliverables and the oral discussion.

III -  "Frequency"

1. The concept of "Frequency" means that the student is allowed to pass in 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:

CF=NTx0.5+NPx0.5

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

3. The oral examination implies that the grades can change although it is assured that the grade will never be lower to 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 - Lectures

1. The theoretical classes will be held online, but labs will be presential at FCT (consult the schedule in clip). The links to the zoom sessions will be available on both clip and the moodle websites.

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

Programs where the course is taught: