Checking date: 28/04/2023


Course: 2023/2024

Software Development
(18179)
Bachelor in Computer Science and Engineering (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.
Skills and learning outcomes
Link to document

Description of contents: programme
1.- Ethic and Legal Issues in the Software Engineering Profession 1.1.- The software engineering profession. 1.2.- The software engineers' code of ethics. 2.- Agile Software Development Techniques 2.1.- Software development process 2.2.- Coding Standards 2.3.- Code Collective Ownership 3.- Test Driven Development 3.1.- Principles of Test Driven Development 3.2.- Functional Testing Techniques 3.3.- Estructural Testing Techniques 3.4.- Unit Testing Automation 3.5.- Automated Continuous Integration 4.- Refactoring and Simple Design 4.1.- Refactoring 4.2.- Principles of Software Design 4.3.- Design Patterns for Responsibilities Assignment
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 40
  • % of continuous assessment (assigments, laboratory, practicals...) 60
Calendar of Continuous assessment
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.