Page 1 of 1

Module Code - Title:

CS4135 - SOFTWARE ARCHITECTURES

Year Last Offered:

2025/6

Hours Per Week:

Lecture

2

Lab

1

Tutorial

1

Other

0

Private

6

Credits

6

Grading Type:

N

Prerequisite Modules:

Rationale and Purpose of the Module:

Provide students with technical exposure to the concepts, principles, methods, and best practices in software architecture, enabling them to design and evaluate robust, scalable, and maintainable software systems.

Syllabus:

- Definitions of software architecture; - Role of a software architect; - Architecture versus design; - Relationship between system qualities and software architectures; how quality attributes drive the architecture; quality attribute tradeoffs; - Software architecture process: determine, identify and prioritise requirements; choose an architectural framework; validate using scenarios and prototyping; - Concepts of views and viewpoints: module-structured views, component-and-connector views and allocation views; the role of views in specifying an architecture; - Differentiate between pattern and framework; - Architectural styles/patterns: data flow architectural style, call and return architectural style, layered systems; object-oriented systems, independent components architectural style; Broker architecture, Event-Driven Architecture, Plug-in Architecture, and Microservices architecture. - Middleware architectures and technologies: distributed objects, message-oriented middleware, application servers, message brokers; - Aspect-oriented architectures, model-driven architectures, service-oriented architectures; - Architectural description languages; - Documenting a software architecture; - Software architecture evaluation; - Architectural reuse; Evaluation of Software Architecture: Architecture Trade-of analysis Method (ATAM), and Software Architecture Analysis Method (SAAM).

Learning Outcomes:

Cognitive (Knowledge, Understanding, Application, Analysis, Evaluation, Synthesis)

On successful completion of this module, students will be able to: 1. Identify and assess the appropriate quality attributes of a system at the architectural level. 2. Recognise software architectural styles, design patterns, and frameworks within existing software systems. 3. Debate the current trends and technologies in the field, such as model-driven, service-oriented, and aspect-oriented architectures. 4. Express a software architecture using appropriate representations. 5. Generate architectural alternatives for a problem and select among them. 6. Evaluate a software architecture;

Affective (Attitudes and Values)

Psychomotor (Physical Skills)

NA

How the Module will be Taught and what will be the Learning Experiences of the Students:

The module will be delivered using the flipped teaching method, In which students will engage with course materials before scheduled class sessions. Lectures will be concise, with classroom activities emphasising collaborative project work, discussions, problem-solving exercises utilizing case studies, and laboratory practice. This approach aims to foster an engaging and interactive classroom environment.

Research Findings Incorporated in to the Syllabus (If Relevant):

Prime Texts:

Mark Richards (2015) Software Architecture Patterns , O'Reilly
Ian Gorton (2011) Essential Software Architecture , Springer
Brown, Simon (2013) Software architecture for developers , Coding the Architecture
Richards, Mark, and Neal Ford (2020) Fundamentals of Software Architecture , Wiley
L. Bass, P. Clements and R. Kazman (2003) Software Architecture in Practice (2nd edition) , Prentice-Hall
Nick Rozanski and Eóin Woods (2005) Software Systems Architecture: Working With Stakeholders Using Viewpoints and Perspectives , Addison-Wesley Professional

Other Relevant Texts:

Programme(s) in which this Module is Offered:

Semester(s) Module is Offered:

Spring

Module Leader:

salim.saay@ul.ie