Modern software systems consist of several components interacting in various ways in a distributed setting. The systems may have to satisfy quality requirements such as a short time-to-market, extreme reliability and robustness, or hard real-time constraints. Such challenges need to be taken into consideration from the earliest stages of development, as initial decisions may have far-reaching and disastrous consequences for the completed system.
Software architecture is the discipline concerned with model-based description and analysis of software systems with a view to satisfying the (often contradictory) concerns of stakeholders. The software architecture of a system is a high-level description of its components and their interactions.
The central theme of this course is balancing the concerns and requirements of stakeholders, combining these into an architecture proposal by employing known tactics and patterns, producing a description of the architecture that can be communicated and analysed, and evaluating the resulting architecture's qualities.
- Understanding the role of software architecture in the software lifecycle
- Identifying stakeholders
- Balancing stakeholder concerns and identifying tradeoff points
- Defining viewpoints
- Describing an architecture using several views
- Evaluating an architecture using both review-based and scenario-based methods
- Applying architectural patterns
- Designing three-layered enterprise applications and making a valid choice between relevant patterns
- Identifying concurrency problems and their solution
- Designing a messaging strategy for enterprise application integration
- Understanding the role of components and services
- The ISO 9126 quality framework and the QUINT extension
- The IEEE standard 1471
- Kruchten's 4+1 model
- Architectural description languages and their properties (e.g. ACME, Koala, Wright, CommUnity, ArchiMate, xADL)
- The ATAM evaluation method
- Architectural patterns (Layers, Client-Server, Master-Slave, Pipe-Filter, Broker, Peer-to-Peer, Event-Bus, Model-View-Controller, Blackboard, Interpreter)
- Domain logic patterns (Transaction Script, Domain Model, Table Module)
- Data source logic patterns (Record Set, Table Data Gateway, Data Mapper)
- Presentation logic patterns (Page Controller, Template View, Transform View)
- Client-side presentation technologies (Java applets, Flash, DHTML, XML, Ajax)
- Messaging concepts (Message Channel, Publish-Subscribe Channel, Message Router, Message Endpoint, Polling Consumer, Event-Driven Consumer)
- Component concepts (interfaces, ports, connectors, component weight, Interface Definition Languages)
- Design by Contract (pre- and postconditions, frames, class invariants, polymorphism, inheritance and delegation)
- Service Oriented Architectures (web services, SOAP, WSDL, UDDI, web service standards, orchestration and choreography, BPEL, single sign-on)
European e-Competence Framework
A.4 (Specification Creation) level 4
A.5 (Systems Architecture) level 4
A.6 (Application Design) level 3
ACM Computing Classification System
D.2.7 (Distribution, Maintenance, and Enhancement)
D.2.11 (Software Architectures)
See the FTA tutors page.
The learner must have knowledge and experience with object oriented programming and design, including experience with UML. The learner should also have some knowledge about software requirements.
If you want to enroll into this course, please follow the instructions in the main Courses page.
This material is part of the module: "Software Architecture".
- Authors: A. Bijlsma, B.J. Heeren, E.E. Roubtsova, S. Stuurman
- Licenses:Creative Commons Attribute ShareAlike License