Introduction, modeling, and life cycles, component-based design, requirements engineering, object oriented analysis and design with UML, structured analysis and design. Validation techniques and software testing.
El desarrollo de software es un proceso que implica muchas más fases que la mera escritura de código en algún lenguaje de programación. Con esta asignatura se pretende que el alumno vea y asimile el proceso de desarrollo de software como un proceso de ingeniería en el que debe aplicar una cierta metodología, seguir unas ciertas fases (desde el análisis y captura de requerimientos del cliente hasta la implantación y mantenimiento del producto final) y utilizar unas ciertas herramientas; todo ello orientado a que el producto final sea un producto de calidad que satisfaga las necesidades reales de un cliente real.
Competencies and learning outcomes
- Ability to design, plan, organize, and control systems, processes, and/or components that meet the needs of society within actual environmental conditions.
- Ability to devise, draft, organize, plan, develop, and sign projects within the field of computer engineering aimed at the design, development, or operation of computer systems, services, and applications in information technology.
- Ability to direct the activities of projects within the field of computer science in accordance with the expertise gained from the technologies specific to information technology.
- Capacity to design, develop, evaluate, and ensure the accessibility, ergonomics, usability, and security of computer systems, services, and applications, as well as the information they manage.
- Ability to define, evaluate, and select hardware and software platforms for the development and implementation of computer systems, services, and applications in accordance with the expertise gained from the technologies specific to information technology.
- Capacity to design, develop, and maintain computer systems, services, and applications using software engineering methods as a tool for quality assurance in accordance with the expertise gained from the technologies specific to information technology.
- Capability of recognizing, understanding, and applying the necessary legislation in the development of the technical engineer in the computing profession, and managing specifications, regulations, and mandatory standards.
- Knowledge for making measurements, calculations, assessments, appraisals, surveys, studies, reports, task scheduling, and other similar computer work in accordance with the expertise gained from the technologies specific to information technology.
- Capacity to analyze and assess the social and environmental impact of technical solutions, understanding ethical and professional responsibilities in the activity of the technical engineer in computing.
- Ability to design, develop, select, and evaluate computer applications and systems, ensuring their reliability, safety, and quality in accordance with ethical principles and current legislation.
- Capacity to plan, conceive, deploy, and direct computer projects, services, and systems in all fields, guiding their implementation and continuous improvement, and assessing their economic and social impact.
- Skills for understanding the importance of negotiation, effective work habits, leadership, and communication skills in all software development environments.
- Capacity to prepare the technical specifications of a computer facility that fulfills current standards and regulations.
- Knowledge and application of basic algorithmic procedures of information technologies to design solutions to problems, analyzing the adequacy and complexity of the proposed algorithms.
- Ability to analyze, design, build, and maintain applications in a robust, secure, and efficient manner, choosing the most appropriate programming paradigms and languages.
- Knowledge about and application of the principles, methodologies, and life cycles of software engineering.
- Knowledge about computing rules and regulations on national, European, and international levels.
Objectives (Learning outcomes)
- 01Recognize the software design as an engineering process.
- 02Understand the concept of software life cycle like a process for application development.
- 03Apply the modular design to simplify software components and reuse them.
- 04Model abstract systems using diagrams.
- 05Apply the object-oriented paradigm to build software models.
- 06Meet the standard UML notation (Unified Modeling Language).
Association between objectives and units
|Week||Teaching units||Directed hours||Shared hours||Autonomous hours||Total hours|
Methodology and grading
- Case studies: Learning through the analysis of actual or simulated cases in order to interpret and resolve them by employing various alternative solution procedures.
- Cooperative learning: Develop active learning through cooperative working strategies among students and promote shared responsibility to reach group goals.
- Lecture: Pass on knowledge and activate cognitive processes in students, encouraging their participation.
- Problem-based learning: Develop active learning strategies through problem solving that promote thinking, experimentation, and decision making in the student.
- Project-based learning: Realization of a project to solve a problem, applying acquired learning and promoting abilities related to planning, design, performing activities, and reaching conclusions.
- Solving exercises and problems: Exercise, test, and apply previous knowledge through routine repetition.
- The final grade is calculated from two components:
- Practice Note (50%)
- Theory Note (50%)
The practice note will be the sum of all jobs done by the student throughout the course as well as the presentations made in the classroom.
The theory note will be obtained from a multiple choice test of theoretical concepts performed at the end of the semester.
To pass the course is essential to obtain more than 5 on both the practice as in theory.