Principles of Software Development

Universidad Carlos III de Madrid

Course Description

  • Course Name

    Principles of Software Development

  • Host University

    Universidad Carlos III de Madrid

  • Location

    Madrid, Spain

  • Area of Study

    Computer Engineering, Computer Info Systems, Computer Programming, Computer Science, Systems Engineering

  • Language Level

    Taught In English

  • Prerequisites

    STUDENTS ARE EXPECTED TO HAVE COMPLETED:

    Programming

  • Course Level Recommendations

    Lower

    ISA offers course level recommendations in an effort to facilitate the determination of course levels by credential evaluators.We advice each institution to have their own credentials evaluator make the final decision regrading course levels.

    Hours & Credits

  • ECTS Credits

    6
  • Recommended U.S. Semester Credits
    3
  • Recommended U.S. Quarter Units
    4
  • Overview

    Operating Systems (218 - 13878)
    Study: Bachelor in Informatics Engineering
    Semester 2/Spring Semester
    2nd Year Course/Lower Division

    Students are expected to have completed:

    Programming

    Compentences and Skills that will be Acquired and Learning Results:

    The goal of the course is to allow the student knowing in depth the software development process, with features about software testing and quality software issues.
    To achieve this goal, the student must acquire the following PO: a, b, d, e, f, g, k

    Generic Competences: (PO: a, b, d, e, g, k)
    Abstraction, Analysis (PO: b), Synthesis, Ability to Organise and Plan (PO: b), Ability to solve problems (PO: a, e, k), Teamwork (PO: d), Capacity to apply theoretical concepts (PO: a, b, d, e, g, k)

    Specific Competences:

    - Cognitives (CECRI8): to know the Software Engineer work, to know how to develop software components in a disciplined way including software development processes and lifecycle (CECRI16); to know about software quality; to learn techniques to find, correct, and prevent defects in software; to learn techniques to measure a software process; to know ethic features in software development process (CECRI1) (PO: a, b, d, e, f, g, k)

    - Instrumental: to plan a software development process; to estimate size, effort and quality in a project; to estimate defects (PO :b, e, k)

    - Attitude: abilities to generate new ideas, to develop a good work using quality measures, to investigate and find solutions to new problems, to concern for the ethic development of a project (PO: e, k)

    Description of Contents: Course Description

    1- Introduction to the Personal Software Process and Software Lifecycle
    1.1.- Introduction to the software engineering and software quality concepts.
    1.2.- Software Development Lifecycle. The Personal Software Process.
    2.- Ethic and Legal Issues in the Software Engineering Profession
    2.1.- The software engineering profession.
    2.2.- The software engineers' code of ethics.
    3- Techniques to state the requirements assigned to an individual software component.
    3.1.- Techniques to analyze requirements assigned to a software component.
    3.2.- Software Requirements Specification.
    4.- Test Driven Development. Functional Testing Techniques.
    4.1.- Introduction to Software Testing.
    4.3- Functional Testing: Equivalence Classes Analysis
    4.3- Functional Testing: Boundary Values Testing
    4.4- Functional Testing: Syntax Analysis
    4- Techniques for a detailed design of a software component
    5.1.- Fundamentals of software components detailed design
    5.2.- Operational Specification of a Software Component
    5.3.- Functional Specification of a Software Component
    5.4.- Other specifications for detailed design of a software component
    6.- Software Review Techniques
    6.1.- Peer review of software requirements specifications
    6.2.- Peer review of software components detailed design
    7.- Estimation and plan of the tasks required to implement a software component.
    7.1.- Proxy based estimation. PROBE Method.
    7.2.- Management of historic data to improve software estimations.
    7.3.- Fundamentals to plan the development of a software components.
    8.- Software Testing Techniques: Structural Testing
    8.1.- Structural Testing: Complexity
    8.2.- Structural Testing: Control Flow and Data Flow

    Learning Activities and Methodology:

    Lectures: 1 ECTS, to get the specific cognitive and instrumental competences of the subject. (PO: a, b, e, f, g, k)

    Exercise Classes: 1 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. (PO: a, b, d, e, f, g, k)

    Academic Work with professor assistance: 1,5 ECTS, Presentation and discussion of a specific software component development case, analyzing all the aspects considered in the theoretical part of the subject. (PO: a, b, d, e, f, g, k)

    Academic Work without professor assistance: 1.5 ECTS, Individual work for the development of a specific software component development case, analyzing all the aspects considered in the theoretical part of the subject. (PO: a, b, e, f, k)

    Exam: 1 ECTS (PO: a, b, d, e, f, g, k)

    Assessment System:

    Guided Exercises 40% (PO: a, b, d, e, f, g, k)
    Theory Tests 20% (PO: a, b, d, e, f, g, k)
    Final Practice (Exam) 40% (PO: a, b, d, e, f, g, k)

    It is mandatory to pass, separately, each one of the parts of the subject to pass the whole subject

    Basic Bibliography:

    Humphrey, Watts. Introduction to the Personal Software Process. Addison Wesley.
    Lee Copeland. A Practitioner's Guide to Software Test Design. . Artech House Publishers .
    Roger S. Pressman. Software Engineering. A Practitioner's Approach. McGraw-Hill. 7th Edition, 2009

    Additional Bibliography:

    Craig S. Larman. UML and Patterns. 2nd Edition. PEARSON EDUCACION. 2003
    Paul C Jorgensen. Software Testing: a craftsman's approach. CRC Press.
    Spyros Xanthakis, Michel Maurice, Antonio de Amescua, Olivier Houri, Luc Griffet. Test & Controle des Logiciels: Methodes, Techniques & Outils. EC2.

Course Disclaimer

Courses and course hours of instruction are subject to change.

ECTS (European Credit Transfer and Accumulation System) credits are converted to semester credits/quarter units differently among U.S. universities. Students should confirm the conversion scale used at their home university when determining credit transfer.