Checking date: 21/02/2025 11:37:15


Course: 2024/2025

Software Development
(18179)
Bachelor in Computer Science and Engineering (Study Plan 2022) (Plan: 489 - Estudio: 218)


Coordinating teacher: LOPEZ CUADRADO, JOSE LUIS

Department assigned to the subject: Computer Science and Engineering Department

Type: Compulsory
ECTS Credits: 6.0 ECTS

Course:
Semester:




Requirements (Subjects that are assumed to be known)
Programming (Year 1 / Semester 1) Data structures & Algorithms (Year: 1 / Semester 2) Software Engineering (Year 2 / Semester 1) Automata and formal language theory (Year 2 / Semester 1)
Objectives
The objective of the course is to allow the student to deepen in agile development practices that facilitate the achievement of high-quality software components. Functional and structural testing techniques will be learned and applied through automated unit testing in a Test-Driven Development process. The ethical and legal foundations of the Computer Engineering profession will also be introduced. Finally, students will learn code refactoring techniques and apply simple design concepts and design patterns to assign responsibilities.
Learning Outcomes
RA2.1: Ability to analyse complex engineering products, processes and systems in their field of study; to select and apply relevant methods from established analytical, computational and experimental methods; to correctly interpret the outcomes of such analyses. RA3.1: Ability to develop and design complex products (devices, artefacts, etc.), processes and systems in their field of study to meet established requirements, that can include an awareness of non-technical ¿ societal, health and safety, environmental, economic and industrial ¿ considerations; to select and apply relevant design methodologies. RA4.1: Ability to conduct searches of literature, to consult and to critically use scientific databases and other appropriate sources of information, to carry out simulation and analysis in order to pursue detailed investigations and research of technical issues in their field of study. RA4.2: Ability to consult and apply codes of practice and safety regulations in their field of study. RA5.3: Understanding of applicable materials, equipment and tools, engineering technologies and processes, and of their limitations in their field of study. RA7.1: Ability to communicate effectively information, ideas, problems and solutions with engineering community and society at large. RA7.2: Ability to function effectively in a national and international context, as an individual and as a member of a team and to cooperate effectively with engineers and non-engineers. CB2: Students are able to apply their knowledge to their work or vocation in a professional manner and possess the competences usually demonstrated through the development and defence of arguments and problem solving within their field of study. CG5: Use computer, general purpose, collaborative and work optimisation tools for the effective planning and implementation of projects. CG9: Efficiently use ICT resources to write technical reports and project and work reports on computing, as well as quality presentations. CGO3: Ability 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. CGO5: Ability to conceive, develop and maintain computer systems, services and applications using software engineering methods as an instrument for quality assurance, in accordance with the knowledge acquired. CGO7: Ability to know, understand and apply the necessary legislation during the development of the profession of Technical Engineer in Computer Science and to handle specifications, regulations and compulsory standards. CECRI1: Ability to design, develop, select and evaluate computer applications and systems, ensuring their reliability, security and quality, in accordance with ethical principles and current legislation and regulations. CECRI8: Ability to analyse, design, build and maintain applications in a robust, secure and efficient way, choosing the most appropriate paradigm and programming languages. CECRI16: Knowledge and application of the principles, methodologies and life cycles of software engineering.
Description of contents: programme
1.- Agile Software Development Techniques 1.1.- Software development process 1.2.- Coding Standards 1.3.- Code Collective Ownership 2.- Test Driven Development 2.1.- Principles of Test Driven Development 2.2.- Functional Testing Techniques 2.3.- Estructural Testing Techniques 2.4.- Unit Testing Automation 2.5.- Automated Continuous Integration 3.- Refactoring and Simple Design 3.1.- Refactoring 3.2.- Principles of Software Design 3.3.- Design Patterns for Responsibilities Assignment 4.- Ethic and Legal Issues in the Software Engineering Profession 4.1.- The software engineering profession. 4.2.- The software engineers' code of ethics.
Learning activities and methodology
Lectures: 1,5 ECTS, to get the specific cognitive and instrumental competences of the subject. Exercise Classes: 1,5 ECTS, to get the specific instrumental and generic competences, as well as the attitude competences of the subject. A practical example related to the development of a software component (including estimation, specification, design, software reviews and testing activities) will be carried out, considering ethic and legal features. Practical Work with and without professor assistance: 2 ECTS, work on specific software component development case, analyzing all the aspects considered in the theoretical part of the subject. Tutorials: Individualised assistance (individual tutorials) or group assistance (group tutorials) to students by the lecturer. Final Exam: 1 ECTS
Assessment System
  • % end-of-term-examination/test 40
  • % of continuous assessment (assigments, laboratory, practicals...) 60

Calendar of Continuous assessment


Extraordinary call: regulations
Basic Bibliography
  • Beck, Ken, et al.. . Test-Driven Development By Example. . Three Rivers Institute.. 2002
  • Beck, Ken.. Extreme Programming Explained.. Addison-Wesley. . 2000
  • Craig S. Larman. Applying UML and Patterns.. Pearson Education . 3er Edition. 2012
  • Fowler, Martin et al... Refactoring: Improving the Design of Existing Code. . Addison-Wesley. . 1999
  • Lee Copeland.. A Practitioner's Guide to Software Test Design.. Artech House Publishers. 2003
Additional Bibliography
  • Paul C. Jorgensen. Software Testing: a craftsman's approach. . CRC.
  • Roger S. Pressman. . Software Engineering. A practical approach.. McGraw Hill. 7ª Edición.. 2009
  • Spyros Xanthakis, Michel Maurice, Antonio de Amescua, Olivier Houri, Luc Griffet. . Test and contro¿le des logiciels : me¿thodes, techniques and outils. EC2..

The course syllabus may change due academic events or other reasons.