1 ITEC3030 SYSTEMS ARCHITECTURE Introduction and Basic Concepts What is Architecture? 2 Feidias – Parthenon, Acropolis Hill (Athens) What is architecture? 3 Friedensreich Hundertwasser – Apartment Buildings in Vienna, Austria 4 What is architecture? "A person in a rented apartment must be able to lean out of his window and scrape off the masonry within arm's reach. And he must be allowed to take a long brush and paint everything outside within arm's reach. So that it will be visible from afar to everyone in the street that someone lives there who is different from the imprisoned, enslaved, standardized man who lives next door." Friedensreich Hundertwasser – Apartment Buildings in Vienna, Austria What is Architecture? 5 Apartment Buildings Toronto What is Architecture? 6 Foster & Partners / Various - Beijing International Airport (Terminal 3) What is architecture? 7 Populous - London’s Olympic Stadium What is architecture? 8 Is affected by the needs and purposes of those who need the artifact (e.g., building, airport, stadium, …). Its shape is the result of small design decisions that are made to address these needs. What is Systems Architecture? 9 Systems = Software-Intensive Systems What is Software? An electrical phenomenon. Happening on a piece of hardware. What is a Software-Intensive System? Software runs on hardware. It is used in the context of a human activity, which it supports. Our focus here though: software. Software Systems 10 Software System: A set of elements that need to be designed and developed in order to meet specific needs. Elements = pieces of the system Module, component, partition, subsystem. Architecture: Refers to the way we put together elements to fulfill needs. Stakeholders 11 Software systems are there to perform purposeful computations. The purposes are defined by humans. We call these the stakeholders. Individuals, teams, organizations or classes thereof with an interest in the realization of the system. System builders, testers, operators, maintainers, their bosses and the bosses of the bosses, those who pay, users, etc. etc.. Stakeholders and Concerns 12 Concern describes the way stakeholders are interested in the system and its architecture. Concern is a requirement, objective, constraint, intention or aspiration a stakeholder has for the architecture. User: want it usable, reliable and fast. Maintainer: wants it easy to change. Marketing: wants it customizable. CEO/strategist: wants it in the market the soonest. Architecture and Stakeholders 13 Architectures are created (or emerge) as the result of stakeholder needs and only. Thus: A good architecture is one that successfully addresses the concerns of its stakeholders, or, in case of conflicts, balances them in an acceptable way. What is a good architecture? 14 Functionality / Externally Visible Behavior What the system actually does. Allows you to add a course, withdraw cash, check-in to a flight, open a bank account, etc.. Quality Property (or Quality Attribute). The quality by which functionality is performed. How quickly? How securely? How easily for the user? How reliably? How easy is it to change? Functionality vs. Quality 15 The exact same functionality may exhibit totally different qualities. Why? Because internal organization is different. Example: airport check-in systems. Load balancer Terminal (Kiosk) Terminal (Kiosk) … Terminal (Kiosk) Terminal (Kiosk) Terminal (Kiosk) Functionality vs. Quality 16 Example: airport check-in systems. They will both check you in. One will be much slower and unreliable than the other Load balancer Terminal (Kiosk) Terminal (Kiosk) … Terminal (Kiosk) Terminal (Kiosk) Terminal (Kiosk) Candidate Architectures 17 Candidate Architectures Load balancer Terminal (Kiosk) Terminal (Kiosk) … Terminal (Kiosk) Terminal (Kiosk) Terminal (Kiosk) Static vs. Dynamic Structures 18 Static Structure Focus on how various design-time elements combine with each other to deliver functionality and qualities. Elements = code in its various forms: programs, functions, services, packages, components, modules, stored procedures, … Dynamic Structure Focus on how various elements behave at run time, ie., how they respond to external and internal stimuli. Check-in Kiosks 19 Static Structure Load balancer Terminal (Kiosk) Terminal (Kiosk) … Terminal (Kiosk) Terminal (Kiosk) Terminal (Kiosk) Check-in Kiosks 20 Dynamic Structure (*) Qualities – SEI Taxonomy 21 Performance: Latency / Response Time, Throughput, Scalability, Capacity Dependability Availability (readiness of usage), Reliability (ability to work for a long period of time), Safety (no catastrophy in the environment), Integrity (no catastrophy in data). Security Confidentiality, Integrity, Availability Maintainability Modifiability, Configurability, Portability Accessibility Usability (*) Mario Barbacci, Mark H. Klein, Thomas A. Longstaff, Charles B. Weinstock. Quality Attributes. Technical Report. CMU/SEI-95-TR-021, ESC-TR-95-021, December 1995. Qualities in this course 22 Quality Maintainability (Evolvability) Reliability Performance Security Qualities in this course 23 50 % of class! Most OO design principles target evolvability. Maintainability (Evolvability) Quality Reliability Performance Security Qualities in this course 24 Addressed towards the end of the class Quality Maintainability (Evolvability) Reliability Performance Security Software Design vs. Systems Architecture vs. Enterprize Architecture 25 Software Design Detailed architecture. Two main concerns: Concern #1: How we organize our Java classes and methods so that they are maintainable, reliable, well performing? What are the classes and what are their responsibilities? Concern #2: How do we arrange the classes and responsibilities to fit the organizational structure of development teams? Software Design vs. Systems Architecture vs. Enterprize Architecture 26 Software Design Architecture in the small. Two main concerns: Concern #1: How we organize our Java classes and methods so that they are maintainable, reliable, well performing? What are the classes and what are their responsibilities? Concern #2: How do we arrange the classes and responsibilities to fit the organizational structure of development teams? Conway’s Law “organizations which design systems ... are constrained to produce designs which are copies of the communication structures of these organizations.” 27 Software Design vs. Systems Architecture vs. Enterprize Architecture (Information) Systems Architecture, encompasses a variety of other aspects: Hardware Infrastructure and Deployment. Software Infrastructure, Modules and Configurations. Network and Connectivity. Operations Architecture. Development Architecture. Enterprise Architecture. The architecture of all IT within an Organization. Enterprize Architecture 28 The Good News 29 Principles are the (more or less) same! Whatever guidelines we use to make design decisions at the low level… … we use at the high level. Examples: Minimize Coupling, Maximize Cohesion, Extend instead of Change, Use Interfaces. Summary 30 Relationship with the architecture of buildings. Architecture = needs and purposes which are shaping the architecture of the artifact. Software Architecture: the organization of a complex electrical phenomenon. The role of stakeholders and their needs. Functionality vs. Quality. Key Qualities: Maintainability, Reliability, Performance, Security Levels of architecture: software architecture, systems architecture and enterprize architecture.