Software Engineering

Base Knowledge

Programming skills required for writing unit tests.

Teaching Methodologies

The following teaching methodologies are used in this curricular unit:

1. Expository method: explanatory method where theoretical foundations and concepts are presented by the teacher and discussed with the class. Concepts and information will be presented to students through, for example, slide presentations or oral discussions. It will be used in classes to structure and outline the information.

2. Demonstrative method: based on the example given by the teacher of a technical or practical operation that one wishes to be learned. It focuses on how a given operation is carried out, highlighting the most appropriate techniques, tools and equipment. It will be used, for example, in practical and laboratory classes.

3. Interrogative method: process based on verbal interactions, under the direction of the teacher, adopting the format of questions and answers. It allows for greater dynamics in the classroom and consolidates learning. It will be used, for example, to remember elements of previous classes and in revisions of the lectured content.

4. Active methods: pedagogical techniques will be used in which the student is the center of the learning process, being an active participant and involved in his own training. The teacher assumes the role of facilitator, stimulating critical thinking, collaboration, creativity and student autonomy. They will be applied in classes to achieve a dynamic and more lasting learning environment.

Each class will consist of two moments:

1. Introductory presentation: At the beginning of the class, the teacher exposes and discusses the new contents under study with the students;

2. Practical application: After the introductory presentation, students develop work assignments and problem solving, individually and in group, for practical application of new concepts, autonomously and under the guidance of the teacher.

Learning Results

  1. Identify and describe the reasons why software engineering is essential;
  2. Identify and describe the main software development processes;
  3. Identify the different types of requirements and describe the main methods of developing them
  4. Create requirements specification documents;
  5. Identify and describe the main patterns of software architecture;
  6. Design the software architecture appropriate to a particular problem;
  7. Create software modeling using UML diagrams
  8. Identify and describe agile software development processes
  9. Build software tests;
  10. Develop software using low/zero code platforms;
  11. Recognize the importance of software quality.

Program

  1. Basic concepts of software engineering;
  2. Software development process;
  3. Requirements engineering;
  4. Architecture and software design (C4 model);
  5. Modeling systems with UML (Unified Modeling Language);
  6. Software testing;
  7. Agile methods of software development;
  8. Software development using Low Code / Zero Code systems (e.g. OutSystems, Microsoft PowerApps);
  9. Software quality.

Curricular Unit Teachers

Internship(s)

NAO

Bibliography

Guerreiro, S. (2015). Introdução à engenharia de software. FCA. 

Sommerville, I. (2011). Engenharia de software  (9th edition). Addison Wesley.

Palhoto, T. (2016). Desenvolvimento ágil de software. FCA.

Borges, J. L. M., Cunha, J. F., Dias, T. G. (2015). Modelação de dados em UML – uma abordagem por problemas. FCA. 

Laboon, B. (2016).  A friendly introduction to software testing (1st edition). CreateSpace Independent Publishing Platform.