Software Architecture

Credits
6
Types
Specialization compulsory (Software Engineering)
Requirements
  • Prerequisite: IES
Department
ESSI
L'objectiu de l'assignatura és capacitar a l'alumne per dissenyar i implementar sistemes software mitjançant l'aplicació d'un conjunt de tècniques, principis i patrons de disseny.

Teachers

Person in charge

  • Cristina Gómez Seoane ( )

Others

  • Claudia Patricia Ayala Martinez ( )
  • Lidia López Cuesta ( )

Weekly hours

Theory
2
Problems
1.4
Laboratory
0.6
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.
  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
1h
Laboratory
0h
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
6h
Laboratory
0h
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
14h
Laboratory
0h
Guided learning
3h
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
3h
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

Teaching methodology

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

In the theory sessions teachers present the 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 in advance the exercises to be solved. Also, in some sessions, at the beginning of the session, the students answer a questionnaire about the contents presented and practiced the week before and/or about the exercises proposed in the previous session.

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 the session, the students answer a questionnaire about the contents presented and practiced the week before 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,3*C1 + 0,3*C2 + 0,3*C3 + 0,1*NT

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).

Assesment of NT:

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

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 two exams (C1 and C3) 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.

Addendum

Contents

NO HI HA CANVIS RESPECTE LA INFORMACIÓ PUBLICADA A LA GUIA DOCENT

Teaching methodology

La docència de l'assignatura està estructurada en classes de teoria, classes de problemes i classes de laboratori. Classes de teoria. En les classes de teoria els professors presenten els continguts essencials de l'assignatura. Els professors usen transparències que els estudiants tenen disponibles abans de les classes. Altres continguts de l'assignatura s'han d'estudiar de forma autònoma. Classes problemes. En les classes de problemes es practiquen els continguts de l'assignatura presentats o adquirits autònomament prèviament a la classe. Durant la classe es resolen els problemes proposats prèviament a la classe, i es comenten possibles solucions alternatives. En algunes sessions, els alumnes entreguen previament els problemes a resoldre. Classes laboratori. En les classes de laboratori els estudiants treballen en equips. Durant la classe els estudiants fan els exercicis de laboratori proposats pel professor. En algunes sessions, a l'inici de la classe, els estudiants resolen un qüestionari sobre els continguts presentats, practicats o adquirits autònomament prèviament a la classe. Els estudiants han d'assistir a les classes del SUBGRUP ON ESTAN MATRICULATS.

Evaluation methodology

La Nota Final (NF) de les competències tècniques de l'assignatura s'obté amb la fórmula següent: NF= 0,45*C1 + 0,45*C2 + 0,1*NT C1 és la nota del primer control C2 és la nota del segon control NT és la nota de les tasques realitzades (entrega de problemes abans de la classe i qüestionaris realitzats a l'inici de les classes de problemes i laboratori). Càlcul de NT: - Durant el curs els estudiants podran realitzar 5 tasques. - Si l'estudiant entrega 4 o menys tasques, NT serà igual al sumatori de les notes de totes les tasques entregats dividit per 4. - Si l'estudiant entrega les 5 tasques, NT serà igual al sumatori de les 4 millors notes de les tasques entregades dividit per 4. Els estudiants NOMÉS SE'LS PODRÀ AVALUAR SI ASSISTEIXEN a les classes del SUBGRUP ON ESTAN MATRICULATS. La competència transversal s'avalua mitjançant una pregunta en cada control, on els alumnes han de demostrar la seva capacitat crítica i d'avaluació dels dissenys proposats. La Nota Final de la competència transversal s'obté fent la mitjana de les notes obtingudes en aquestes preguntes i té una qualificació de: A si la nota està entre 8.5 i 10 B si la nota està entre 7 i 8.4 C si la nota està entre 5 i 6.9 D si la nota està entre 0 i 4.9

Contingency plan

En cas de nova alarma sanitària per rebrot de la pandèmia del virus Covid-19, que impedís tota activitat lectiva físicament presencial, les classes de problemes/laboratori es farien de forma remota i síncrona. Les classes de teoria es continuarien fent de forma remota i síncrona.