Curricular Unit:Code:
Software Engineering831ESOF
3UndergraduateComputer Systems Engineering6 ects
Learning Period:Language of Instruction:Total Hours:
Winter SemesterPortuguese/English78
Learning Outcomes of the Curricular Unit:
This course introduces and studies software engineering fundamentals, models and tools used in the definition, management, development, evaluation and documentation of software systems.
At the end of the module a student will be able to:
- Describe software engineering processes
- Identify and choose development methodologies
- describe and apply software patterns
- Identify and use UML diagrams following requirements
- Identify and produce different types of documentation
- Plan a project using a management tool and a given methodology
- Describe REST and MVC frameworks, and use them to implement web applications
- Use and configure version management, logging, static code analysis, and optimization tools
- Define unit tests in a continuous integration framework
1. Introduction to software engineering
1.1 Goals, syllabus, assessment
1.1 Software engineering processes
2. Methods of software Engineering
2.1 Programming paradigms
2.2 Design patterns
3. Software project management
3.1 Project planning
3.2 Documentation stages
3.3 Development cycles
3.4 Risk management
4. Tools of software engineering
4.1 Version control
4.2 Static analysis
4.3 Debugging
4.4 Code optimization
5. Practice of software engineering
5.1 Development tools
5.2 Testing
5.3 Integration
Demonstration of the Syllabus Coherence with the Curricular Unit's Objectives:
The syllabus presented are consistent with the learning objectives of the curricular unit since there is a large convergence between the table of contents and the knowledge that the student is supposed to acquire in each of the program topics. The fundamental concepts of software engineering are presented through the different sections of the syllabus. The learning objectives are achieved by supplementing the theoretical concepts with practical examples. The different tasks of the software engineering process are applied on a project proposed to the students, i.e., requirements analysis, modeling, implementation, testing and maintenance.
Teaching Methodologies (Including Evaluation):
The transmission of knowledge in this syllabus will be with theoretical oriented lectures and practical classes in laboratory environment. The lectures present the fundamental concepts for understanding the items of the program. In practical classes students are confronted with real problems that need solving eventually resorting to physical or virtual equipment where suitable. The evaluation is decomposed into two components: the theoretical and the practical. In the first case the assessment results from a set of written tests applied during the semester on the subject that is being taught in the classroom. In the second case stems from practical work proposed by teachers and that are made and defended by students throughout the semester. Another parameter under consideration is the performance of the student in the classroom and their attendance during the academic period. The final grade is a combination of these three components.
Demonstration of the Coherence between the Teaching Methodologies and the Learning Outcomes:
The teaching/learning methodology applied in this curricular unit as well as its evaluation system is perfectly aligned with the objectives to be attained by the students at the end of the term. The theoretical concepts are presented, discussed, applied and evaluated in the context of lectures, which guarantees students a solid foundation to understand the challenges facing this area of knowledge. On the other hand, so that the study is not restricted to conceptual models, in the practical lessons are presented several case studies and implemented solutions for real problems using appropriate equipment and software tools. This combination guarantees training for students that allows them to meet the scientific goals, essential to a good understanding of the theme, as well as the ability to adapt to technological changes. The evaluation process consists of theoretical tests and practical work also guarantees a correct balance between the efforts dedicated to both components. The objective is to train professionals’ specialized in state-of-the-art techniques and tools but also ensure its ability to follow future developments. In this course the different concepts of software engineering will be discussed. The concepts are then applied in the resolution of worksheets and practical projects.
[1] Pressman, R., ”Software Engineering: A practitioner’s Approach”, 7th Ed., McGraw-Hill, 2009.
[2] Sommerville, I., ”Software Engineering”, Adisson-Wesley, 2005.
[3] Jacobson, I., Booch, G., Rumbaugh, J., “The Unified Software Development Process”, Addison-Wesley Professional, 1999.
[4] Guerreiro, S., “Introdução à Engenharia de Software”, FCA, 2015