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 lead activities aimed at projects within the field of computer science, according to the knowledge acquired by the specific technology of information technology.
- Capacity to design, develop, evaluate, and ensure 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, according to the knowledge acquired by the specific technology of information technology.
- Capacity to design, develop, and maintain computer systems, services, and applications using software engineering methods as a tool for quality assurance, according to the knowledge acquired by the specific technology of information technology.
- Capability to recognize, understand, and apply the necessary legislation in the development of the technical engineer in computing profession, and manage specifications, regulations, and mandatory standards.
- Knowledge for making measurements, calculations, assessments, appraisals, surveys, studies, reports, task scheduling, and other similar computer work, according to the knowledge acquired by the specific technology of information technology.
- Capacity to analyze and assess the social and environmental impact of technical solutions, understanding the ethical and professional responsibility 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, leading 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 develop the technical specifications of a computer facility that fulfill current standards and regulations.
- Knowledge about and application of basic algorithmic procedures of information technologies to design solutions to problems, analyzing the appropriateness 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.