Software Process and Quality

Universidad de Deusto - Bilbao

Course Description

  • Course Name

    Software Process and Quality

  • Host University

    Universidad de Deusto - Bilbao

  • Location

    Bilbao, Spain

  • Area of Study

    Computer Programming

  • Language Level

    Taught In English

  • Prerequisites

    Knowledge of software specification, design and implementation techniques.

    Hours & Credits

  • Contact Hours

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

    DESCRIPTION
    One of the top skills in Computing is to be able to undertake the development of a software
    project in an efficient, effective and quality manner. For that, it is paramount to know the
    existing software development methodologies and their real applicability to concrete software
    projects. Besides, it is important to guarantee the maximum quality of the software resulted
    from that development process. In this course, the skills to apply an agile software development
    methodology to the needs of a project are obtained. Students will learn and put in practice the
    software development process management tools that ease their work and coordination with
    other software developers also taking part in a software project.


    Among others, students will acquire skills to employ software configuration tools (construction,
    change control, version control), tests and quality assurance, and software development
    management (documentation and error management). In summary, the aim of this course is that
    students learn to successfully accomplish, in a productive and high quality manner, a software
    development process, encompassing all the development phases (software requirements, design,
    tests, deployment and maintenance), applying an agile methodology and using the set of support
    tools which help them in code generation, version and error control, documentation, tests and
    quality assurance

    CONTENTS
    MODULE 0. SOFTWARE PROJECT MANAGEMENT. Planning techniques. Planning models
    and methodologies. Task priorization and re-planning. Tools to support planning.
    MODULE 1. SOFTWARE DEVELOPMENT PARADIGM. Traditional and agile
    methodologies. Samples of application of different software development models. Maturity
    model CMMi. Software Product Line. Agile Manifesto. eXtreme Programming. Test-Driven
    Development. SCRUM. SCRUM application to software development process.
    MODULE 2. SOFTWARE CONFIGURATION MANAGEMENT. Software Configuration
    Management (SCM) concept. Software construction and automation. Software construction and
    automation tools: Maven. Software change and version control. Software change and version
    control (SVN, GIT).
    MODULE 3. SOFTWARE DEVELOPMENT MANAGEMENT. Technical documentation.
    Automatic documentation generation tools: DOxygen, javadoc. Error and incidences
    management systems. Code debugging tolos: SLF4J and log4j. Error and issue management
    systems. Project management and issue tracking tools, e.g. YouTrack..
    MODULE 4. TESTING AND QUALITY ASSURANCE. Software quality measures and
    factors. Testing types and levels: unity, performance and integration. Continuous integration
    (Jenkins). Testing frameworks: Cobertura, JUnit, Contiperf, Mockito and profiling tools.
    Different testing techniques use and comparison.

    METHODOLOGY
    Next, the main methods and techniques used in the subject are summarized, contextualizing the
    teaching strategy:
    + Exposition. Lecturer presentation of the subject contents in a detailed and organized manner
    in the lecture room. The contents, used in the lessons, will be made available to students (in the
    form of slides, tutorials, web pages and so on), classified by module.
    + Personal experimentation. The software development management methodologies and tools
    will be put in practice in the laboratory lessons. They will be guided by the lecturer. Tools will
    be installed and configured, practical examples will be shown and explained following a
    "learning by example" strategy.
    + Teamwork. Given a requirement specification proposed by the students and validated by the
    lecturer, these will have to accomplish the development of a whole software project, following
    the whole lifecycle of a software development process, applying an agile methodology, and
    using the set of support tools for development and quality assurance studied in the subject.

    ASSESSMENT
    From the point of view of the activities carried out, next, how they are assessed and their
    grading proportion are detailed:
    + TEAM WORK = 75%
    - 5% Team mate evaluation
    - 50% Project evaluation by lecturer
    - 20% Individual contribution to project evaluation by lecturer
    + INDIVIDUAL WORK = 25% (Knowledge test)
    To pass the subject is necessary to obtain at least 4 over 10 in the knowledge test and 5 over 10
    in the team work assignment. Students who do not have access to an assessment carried out by
    their team mates in the project will not opt to such part of the qualification

    READINGS
    All the documentation for the correct follow-up of the subject is placed in the online learning
    platform. The core material used will be slides and guides (HOW-TO documents) associated to
    the theory and practical work of the different subject modules, respectively.
    The basic communication method will be through the online learning platform forum;
    particularly all those notifications and news referring to the subject will be published by this
    means.
    The bibliographic references that will be used in the subject are:
    * SCRUM. http://www.scrum.org/
    * Apache MAVEN. http://maven.apache.org/
    * Git -- fast version control. https://git-scm.com/
    * Git for Windows. https://msysgit.github.io/
    * YouTrack. https://www.jetbrains.com/youtrack/
    * JUnit. http://www.junit.org/
    * Cobertura. http://cobertura.sourceforge.net/
    * Contiperf. http://databene.org/contiperf/
    * Apache log4j. http://logging.apache.org/log4j/1.2/index.html
    * SLF4j. http://www.slf4j.org/
    * DOxygen. http://www.stack.nl/~dimitri/doxygen/
    * Jenkins CI. http://jenkins-ci.org/

Course Disclaimer

Courses and course hours of instruction are subject to change.

Eligibility for courses may be subject to a placement exam and/or pre-requisites.

Credits earned vary according to the policies of the students' home institutions. According to ISA policy and possible visa requirements, students must maintain full-time enrollment status, as determined by their home institutions, for the duration of the program.

Please note that some courses with locals have recommended prerequisite courses. It is the student's responsibility to consult any recommended prerequisites prior to enrolling in their course.