Software Architecture

Credits
6
Types
Specialization compulsory (Software Engineering)
Requirements
  • Prerequisite: IES
Department
ESSI
The aim of the course is to train students to design and implement software systems by applying a set of design techniques, principles and patterns.

Teachers

Person in charge

  • Cristina Gómez Seoane ( )

Others

  • Pau Duran Manzano ( )

Weekly hours

Theory
2
Problems
0
Laboratory
2
Guided learning
0.4
Autonomous learning
5.6

Competences

Technical Competences

Common technical competencies

  • CT2 - To use properly theories, procedures and tools in the professional development of the informatics engineering in all its fields (specification, design, implementation, deployment and products evaluation) demonstrating the comprehension of the adopted compromises in the design decisions.
    • CT2.1 - To demonstrate knowledge and capacity to apply the principles, methodologies and life cycles of software engineering.
    • CT2.3 - To design, develop, select and evaluate computer applications, systems and services and, at the same time, ensure its reliability, security and quality in function of ethical principles and the current legislation and normative.

Technical Competences of each Specialization

Software engineering specialization

  • CES1 - To develop, maintain and evaluate software services and systems which satisfy all user requirements, which behave reliably and efficiently, with a reasonable development and maintenance and which satisfy the rules for quality applying the theories, principles, methods and practices of Software Engineering.
    • CES1.1 - To develop, maintain and evaluate complex and/or critical software systems and services.
    • CES1.4 - To develop, mantain and evaluate distributed services and applications with network support.
  • CES2 - To value the client needs and specify the software requirements to satisfy these needs, reconciling conflictive objectives through searching acceptable compromises, taking into account the limitations related to the cost, time, already developed systems and organizations.
    • CES2.2 - To design adequate solutions in one or more application domains, using software engineering methods which integrate ethical, social, legal and economical aspects.

Transversal Competences

Reasoning

  • G9 [Avaluable] - Capacity of critical, logical and mathematical reasoning. Capacity to solve problems in her study area. Abstraction capacity: capacity to create and use models that reflect real situations. Capacity to design and perform simple experiments and analyse and interpret its results. Analysis, synthesis and evaluation capacity.
    • G9.3 - Critical capacity, evaluation capacity.

Objectives

  1. To explain what is the logical and physical architecture of a software system and relations between them.

    Related competences: CT2.1,
  2. To explain the characteristics of a layered architecture and the design principles that govern the construction of software systems with this type of architecture.

    Related competences: CT2.1,
  3. To explain the characteristics of an object-oriented architecture and the design principles that govern the construction of software systems with this type of architecture.

    Related competences: CT2.1,
  4. To design software systems using a layered and object-oriented software using software services from the specification of requirements (functional and nonfunctional) using traditional and agile methodologies.
    Related competences: G9.3, CT2.1, CES1.1, CES1.4, CES2.2, CT2.3,
  5. To represent the design of software systems using UML.

    Related competences: CT2.1,
  6. To correctly apply design principles when designing software systems.

    Related competences: G9.3, CT2.1, CES1.1, CES2.2, CT2.3,
  7. To design the domain (business) layer of a software system using traditional and agile methodologies.
    Related competences: G9.3, CT2.1, CES1.1, CES1.4, CES2.2, CT2.3,
  8. To design the presentation layer of a software system by identifying the design patterns to apply and applying them correctly.

    Related competences: G9.3, CT2.1, CES1.1, CES2.2, CT2.3,
  9. To explain the characteristics of the different persistence strategies.
    Related competences: CT2.1,
  10. To design the data management layer of a software system using access or data mapper patterns.
    Related competences: G9.3, CT2.1, CES1.1, CES2.2, CT2.3,
  11. To identify and correctly use existing software services when designing software systems.

    Related competences: G9.3, CT2.1, CES1.1, CES1.4, CES2.2, CT2.3,
  12. To evaluate and critique the design of software systems and to propose alternative designs to improve their quality.

    Related competences: G9.3, CT2.1, CES1.1, CES1.4, CES2.2, CT2.3,
  13. To explain what is softtware architecture and design and what are the different views of software architecture.

    Related competences: CT2.1,

Contents

  1. Introduction to the software architecture and design
    Software development methodologies. Software architecture and design. Logical Architecture and Physical Architecture. Role of design patterns in software design. Software architecture and design in traditional and agile methodologies.
  2. Layered and object oriented architectures
    Layered architectural pattern. Application of layered architectural pattern to software systems and services. Layered architecture design principles. Object oriented architectural pattern. Application of object oriented architectural pattern to software systems. Object oriented architecture design principles.
  3. Software design using traditional methodologies
    Software design using traditional methodologies. Domain layer design. Domain Model and Transaction Script patterns. Domain layer design patterns. Use of software services. Presentation layer design. External design of a software system. Presentation layer internal design. Data layer design. Relational databases technology. Persistence strategies. Automatic generation of persistence. Direct design of persistence. Other architectures. Microservice architecture.
  4. Software design using agile methodologies
    Software design using agile methodologies. Extreme Programming. TDD. Tests in TDD.
    Coding in TDD. Pair Programming. Simple Design and Incremental design and architecture. Code Smells and Refactorings.

Activities

Activity Evaluation act


C1

Test 1 (theory and exercises) where all objectives of chapters from 1 to part of 3 are evaluated
Objectives: 13 1 2 3 4 5 6 7
Week: 6
Type: theory exam
Theory
2h
Problems
0h
Laboratory
0h
Guided learning
0h
Autonomous learning
10h

C2

Test 2 (theory and exercises) where part of the objectives of chapter 3 are evaluated
Objectives: 4 6 8 9 10 11
Week: 11
Type: theory exam
Theory
2h
Problems
0h
Laboratory
0h
Guided learning
0h
Autonomous learning
10h

Introduction to software architecture

Listen carefully, take notes and ask questions if necessary. In addition, the student studies the contents that the teacher indicates
Objectives: 13 1
Contents:
Theory
2h
Problems
0h
Laboratory
0h
Guided learning
0h
Autonomous learning
1h

Studying the layered architecture

Listen carefully, take notes and ask questions if necessary. In addition, the student studies the contents that the teacher indicates
Objectives: 2
Contents:
Theory
0h
Problems
0h
Laboratory
1h
Guided learning
0h
Autonomous learning
2h

Styding the object-oriented architecture

Listen carefully, take notes and ask questions if necessary. In addition, the student studies the contents and does the exercises that the teacher indicates
Objectives: 3 5 12
Contents:
Theory
0h
Problems
0h
Laboratory
6h
Guided learning
0h
Autonomous learning
8h

Studying software design using traditional methodologies

Listen carefully, take notes and ask questions if necessary. In addition, the student studies the contents and does the exercises that the teacher indicates
Objectives: 4 5 6 7 8 9 10 11
Contents:
Theory
14h
Problems
0h
Laboratory
14h
Guided learning
0h
Autonomous learning
28h

Studying software design usign agile methodologies

Listen carefully, take notes and ask questions if necessary. In addition, the student studies the contents and does the exercises that the teacher indicates
Objectives: 4 6 7 12
Contents:
Theory
10h
Problems
0h
Laboratory
7h
Guided learning
0h
Autonomous learning
15h

C3

Test 3 (laboratory) where all objectives of chapter 4 are evaluated
Objectives: 6 7 12
Week: 15
Type: lab exam
Theory
0h
Problems
0h
Laboratory
2h
Guided learning
0h
Autonomous learning
10h

Review of C1 (Control 1) with formative feedback (solution delivery with group feedback)

Review of C1 (Control 1) with formative feedback (solution delivery) in groups of 10 students (via meet or with assigned classroom, depending on the availability of classrooms).
Objectives: 1 2 3 4 5 6 7
Contents:
Theory
0h
Problems
0h
Laboratory
0h
Guided learning
2h
Autonomous learning
0h

Review of C2 (Control 2) with formative feedback (solution delivery with group feedback)

Review of C1 (Control 1) with formative feedback (solution delivery) in groups of 10 students (via meet or with assigned classroom, depending on the availability of classrooms).
Objectives: 4 6 8 9 10 11
Contents:
Theory
0h
Problems
0h
Laboratory
0h
Guided learning
2h
Autonomous learning
0h

Review of C3 (Control 3) with formative feedback (solution delivery with group feedback)

Review of C3 (Control 3) with formative feedback (solution delivery) in groups of 10 students (via meet or with assigned classroom, depending on the availability of classrooms).
Objectives: 6 7 12
Contents:
Theory
0h
Problems
0h
Laboratory
0h
Guided learning
2h
Autonomous learning
0h

Teaching methodology

The teaching of the course is structured in theory, exercises and laboratory sessions.

In the theory sessions teachers present some essential content of the course. Typically teachers use slides that students have available before the session. Other contents of the subject will be studied autonomously.

In the exercises sessions the contents of the subject are practiced through the exercises. In the exercises sessions proposed exercises will be solved and several solutions will be discussed. In some sessions, students deliver the exercises solved. Also, in some sessions, at the beginning of the session, the students answer a questionnaire about the contents presented and practiced and/or about the exercises solved in previous sessions.

In the laboratory classes the students work in groups of two (pair programming). During the session, the students solve the laboratory exercises proposed by the teacher. At the beginning of some sessions, the students answer a questionnaire about the contents presented and practiced and/or about the exercises proposed in the previous session.

The students must attend to the group sessions where they are enrolled.

Evaluation methodology

The final grade (NF) of the technical skills of the course is the following:

NF= 0,2*C1 + 0,25*C2 + 0,4*C3 + 0,1*NT + NPP

C1 is the first test mark
C2 is the second test mark
C3 is the third test mark
NT is the mark of the tasks done (delivery of exercises before the class and questionnaires made at the beginning of the classes of exercises and laboratory).
NPP is the mark of the delivered exercises and class participation.

Assesment of NT:

- During the course the students may take 5 tasks.
- If the student delivers 4 or less tasks, NT will be equal to the sum of the marks of all tasks delivered divided by 4.
- If the student delivers the 5 tasks, NT will be equal to the sum of the 4 better marks divided by 4.

Assessment of NPP: This grade will have a maximum value of 0.5. To obtain this grade, the following aspects will be considered:

- The delivery of 75% or more of the problems proposed to be delivered.
- Active participation in class.

Students will be only marked if they attend to the group sessions where they are enrolled.

Final mark of transversal skill is evaluated by one question in the exams where the students must demostrate their critical thinking evaluating the proposed designs. Final mark is the average of the marks obtained in these questions and have an assessment of:
A is the mark is between 8.5 and 10
B is the mark is between 7 and 8.4
C is the mark is between 5 and 6.9
D is the mark is between 0 and 4.9

Bibliography

Basic:

Complementary:

Web links

Previous capacities

Knowing what is a UML/OCL formal specification of functional and nonfunctional requirements of a system.
Knowing the context in which the design of a system may be performed and, in particular, what are the previous and following activities.
Knowing the object-oriented programming and (at least) an object-oriented programming language.