Introduction to Software Engineering

You are here

Credits
6
Types
Compulsory
Requirements
  • Prerequisite: BD
  • Precorequisite: EDA
Department
ESSI
The main objective of the course is to provide an overview of software engineering, with particular emphasis on the stages of specification and design. At the end of the course, the student should be able to specify a simple software system using the UML notation and to design it by means of the same notation and applying the domain model architectural pattern and also some of the most well-known design patterns.

Teachers

Person in charge

  • Ernest Teniente Lopez ( )

Others

  • Dolors Costal Costa ( )
  • José Francisco Crespo Sanjusto ( )
  • Manuel Rello Saltor ( )
  • Xavier Oriol Hilari ( )

Weekly hours

Theory
2
Problems
2
Laboratory
0
Guided learning
0
Autonomous learning
6

Competences

Technical Competences

Common technical competencies

  • CT2 - To use properly theories, procedures and tools in the professional development of the informatics engineering in all its fields (specification, design, implementation, deployment and products evaluation) demonstrating the comprehension of the adopted compromises in the design decisions.
    • CT2.1 - To demonstrate knowledge and capacity to apply the principles, methodologies and life cycles of software engineering.
    • CT2.3 - To design, develop, select and evaluate computer applications, systems and services and, at the same time, ensure its reliability, security and quality in function of ethical principles and the current legislation and normative.
    • CT2.4 - To demonstrate knowledge and capacity to apply the needed tools for storage, processing and access to the information system, even if they are web-based systems.
  • CT3 - To demonstrate knowledge and comprehension of the organizational, economic and legal context where her work is developed (proper knowledge about the company concept, the institutional and legal framework of the company and its organization and management)
    • CT3.3 - To be able to find and interpret basic information for evaluating the economic environment of the organization.
  • CT5 - To analyse, design, build and maintain applications in a robust, secure and efficient way, choosing the most adequate paradigm and programming languages.
    • CT5.5 - To use the tools of a software development environment to create and develop applications.
  • CT6 - To demonstrate knowledge and comprehension about the internal operation of a computer and about the operation of communications between computers.
    • CT6.1 - To demonstrate knowledge and capacity to manage and maintain computer systems, services and applications.
  • CT7 - To evaluate and select hardware and software production platforms for executing applications and computer services.
    • CT7.1 - To demonstrate knowledge about metrics of quality and be able to use them.
  • CT8 - To plan, conceive, deploy and manage computer projects, services and systems in every field, to lead the start-up, the continuous improvement and to value the economical and social impact.
    • CT8.1 - To identify current and emerging technologies and evaluate if they are applicable, to satisfy the users needs.
    • CT8.2 - To assume the roles and functions of the project manager and apply, in the organizations field, the techniques for managing the timing, cost, financial aspects, human resources and risk.
    • CT8.3 - To demonstrate knowledge and be able to apply appropriate techniques for modelling and analysing different kinds of decisions.
    • CT8.4 - To elaborate the list of technical conditions for a computers installation fulfilling all the current standards and normative.
    • CT8.5 - To manage and solve problems and conflicts using the capacity to generate alternatives or future scenarios analysed properly, integrating the uncertainty aspects and the multiple objectives to consider.
    • CT8.6 - To demonstrate the comprehension of the importance of the negotiation, effective working habits, leadership and communication skills in all the software development environments.
    • CT8.7 - To control project versions and configurations.

Transversal Competences

Effective oral and written communication

  • G4 [Avaluable] - To communicate with other people knowledge, procedures, results and ideas orally and in a written way. To participate in discussions about topics related to the activity of a technical informatics engineer.
    • G4.2 - To use strategies to prepare and perform oral presentations and write texts and documents with a coherent content, adequate structure and style and a good orthographic and grammatical level. To perform an oral presentation in front of a limited audience. To choose properly the contents, style, timing and format of the presentation. To be capable of communicating effectively with the user in a non-technical language, and understand its needs.

Objectives

  1. Students should be able to provide an overview of the software engineering process
    Related competences: CT2.1, CT6.1, CT8.2, CT3.3,
  2. Students should be able to understand the requirements of a software system and relate these to the different parts of the specifications
    Related competences: CT8.3, CT8.6, CT8.5, CT3.3,
  3. Students should be able to write specifications for a UML software system
    Related competences: CT8.1, CT8.3, G4.2, CT8.5, CT8.7, CT3.3, CT5.5, CT2.3,
  4. Students should be able to understand the desirable properties of specifications for a software system.
    Related competences: CT7.1, CT8.4,
  5. Students should be able to analyse the completeness and consistency of the specifications.
    Related competences: CT8.1, CT8.3, CT7.1, CT5.5, CT2.3,
  6. Students should be able to understand the general principles of software architecture and object-oriented design in UML
    Related competences: CT8.1, CT8.5,
  7. Students should be able to understand the logic structure in layers of an information system: presentation, domain and data management layers
    Related competences: CT8.1, CT8.3, CT2.4,
  8. Students should be able to transform a UML model into a design specification
    Related competences: G4.2, CT5.5, CT2.4,
  9. Students should be able to understand the concept of design template and use some of the better known templates.
    Related competences: CT2.1, CT8.1, CT8.3, G4.2, CT2.3,
  10. Students should be able to understand the basic concepts of software testing
    Related competences: CT2.1, CT8.3, CT7.1, CT8.4, CT5.5,

Contents

  1. Introduction to software engineering
  2. Software requirements and software specifications
  3. UML use case models
  4. UML software system specification
    Class diagrams, behaviour diagrams and state diagrams.
  5. Introduction to software design
  6. Object-oriented design with UML

Activities

Activity Evaluation act


Introduction to software engineering


Objectives: 1
Contents:
Theory
2h
Problems
0h
Laboratory
0h
Guided learning
0h
Autonomous learning
2h

Software requirements and software specifications


Objectives: 1 2
Contents:
Theory
1h
Problems
0h
Laboratory
0h
Guided learning
0h
Autonomous learning
2h

UML use case models


Objectives: 2 3
Contents:
Theory
1h
Problems
0h
Laboratory
0h
Guided learning
0h
Autonomous learning
4h

UML data structural diagram


Objectives: 2 3 4 5
Contents:
Theory
4h
Problems
12h
Laboratory
0h
Guided learning
0h
Autonomous learning
23h

UML behaviour diagram


Objectives: 2 3 4 5
Contents:
Theory
4h
Problems
8h
Laboratory
0h
Guided learning
0h
Autonomous learning
16h

Introduction to software design


Objectives: 6 7
Contents:
Theory
2h
Problems
0h
Laboratory
0h
Guided learning
0h
Autonomous learning
2h

Software design in UML


Objectives: 6 8 9
Contents:
Theory
10h
Problems
10h
Laboratory
0h
Guided learning
0h
Autonomous learning
33h

UML structural model test

Parts of learning objectives 1 to 5 will be assessed
Objectives: 1 2 3 4 5
Week: 6 (Outside class hours)
Theory
2h
Problems
0h
Laboratory
0h
Guided learning
0h
Autonomous learning
3h

UML behavioural model test

Parts of learning objectives 1 to 5 will be assessed
Objectives: 2 3 4 5
Week: 9 (Outside class hours)
Theory
2h
Problems
0h
Laboratory
0h
Guided learning
0h
Autonomous learning
3h

Software design test

Part of learning objectives 6 to 10 will be assessed
Objectives: 6 7 8 9 10
Week: 15 (Outside class hours)
Theory
2h
Problems
0h
Laboratory
0h
Guided learning
0h
Autonomous learning
2h

Teaching methodology

The subject is structured around theory and problem-solving classes.

In the theory classes the lecturer will explain the main subject content. Lecturers typically use slides that students should obtain before class.

In problem-solving classes, course content (whether presented in class or studied independently) will be studied by completing problems. This will sometimes require problems to be resolved (or at least attempted) before class, so that the best solutions can be collectively analysed and discussed in class. On other occasions, the problem will be both set and resolved in class.

Evaluation methodology

The final mark will be based on three assessment activities (C1, FHC1, FHC2) issued throughout the course and on participation in course activities. The final mark is calculated as:

Final mark = 40% FHC1 + 15% C1 + 40% FHC2 + 5% participation.

taking into account that:
The mark of participation is achieved by delivering at least the 75% of the exercises proposed during the course and by actively participating at class.
Final Mark = NP if the student does not show to FHC2 and his/her mark according to the previous formula is <4.

There is no final exam.

In addition to a subject mark, a generic competency mark will be awarded with the score A (excellent), B (good), C (satisfactory) , D (fail) or NA (Not evaluated).

Bibliography

Basic:

Complementary:

Web links

Previous capacities

Students are expected to be sufficiently knowledgeable about data structures, algorithms and programming to study software engineering.