School / Prep
ENSEIRB-MATMECA
Internal code
EI9PG301
Description
Speakers: Georges Eyrolles, Philippe Narbel
This course will present the general principles of software architecture design, with a particular focus on object-oriented architectures. The five so-called SOLID principles (single responsibility, open/closed, Liskov substitutability, interface segregation, dependency inversion) will be defined and developed in detail, in terms of their implementation, consequences, qualities and shortcomings. These principles will also be illustrated and related to classic Design Patterns, such as Adapter, Composite, Decorator, Mediator, Strategy and Visitor. The latter will also be introduced and defined.
Although the notions and concepts will be presented with all the rigor they deserve, this course will give pride of place to experiments, practical exercises and case studies.
BIBLIOGRAPHY: - Agile Software Development. Robert Martin. Prentice Hall. 2003. - Working Effectively with Legacy Code. Feathers, Prentice Hall. 2005. - Design Patterns. Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides. Addison-Wesley. 1995 (also called "GoF" for "Gang of Four") - Pattern Hatching: Design Patterns Applied. John Vlissides. Addison-Wesley. 1998. - Object-oriented Software Construction. Bertrand Meyer. Prentice-Hall. 1988, 1997. - Object-Oriented Modeling and Design with UML. Blaha and Rumbaugh. Prentice Hall. 1991, 2005. - Large-Scale C++ Software Design. John Lakos. Addison-Wesley. 1996. - Design Patterns for Object-Oriented Software Development. W. Pree. Addison-Wesley. 1995. - Structured Analysis and System Specification. DeMarco. Prentice Hall. 1979. - Structured Design: Fundamentals of a Discipline of Computer Program and Systems Design. Yourdon and Constantine. 1979. - The Practical Guide to Structured Systems Design. Page-Jones. Prentice Hall. 1988
PLAN :
- Software architectures, components, dependencies. - Substitutability. - Coupling and cohesion. - Responsibilities, role separation. - Segregation. - Open/closed concept.
Teaching hours
- CIIntegrated courses26h
- TIIndividual work10h
Mandatory prerequisites
- Object-oriented programming (PG202/203). - Good knowledge of Java.
Syllabus
- Software architectures, components, dependencies. - Substitutivity. - Coupling and cohesion. - Responsibilities, role separation. - Segregation. - Open/closed concept.
Assessment of knowledge
Initial assessment / Main session - Tests
Type of assessment | Type of test | Duration (in minutes) | Number of tests | Test coefficient | Eliminatory mark in the test | Remarks |
---|---|---|---|---|---|---|
Final inspection | Written | 120 | 1 | without document without calculator |
Second chance / Catch-up session - Tests
Type of assessment | Type of test | Duration (in minutes) | Number of tests | Test coefficient | Eliminatory mark in the test | Remarks |
---|---|---|---|---|---|---|
Final test | Written | 90 | 1 | without document |