Motivation: We ofen use certain terminology, without clear definition, which might lead to misunderstanding. The same goes for the role sofware architecture plays during the develop- ment process. SA Analysis and Design Goals: Sofware Architecture VO (706.706) Learn the main terms and understand the role of sofware architecture Roman Kern Version 2.1.1 Institute for Interactive Systems and Data Science, TU Graz 1 Outline Terminology Development Process Requirements Architectural Analysis & Design Architectural Views 2 Terminology # First, we need to define the main terminology! Qestions 1. What is sofware architecture ? 2. What is sofware ? 3. What is architecture ? 4. What is a sofware system ? 5. What is a system ? 3
# A system Definition # … has a structure (several parts) # … has a purpose # … performs functions # … is ofen complex • Latin word systema meaning a whole consisting of several parts or a complex whole • A system is a set of elements (components) that are connected to each other to form a whole • The components composition is called system structure • Mostly, systems perform a certain function and serve a particular purpose • e.g., an operating system • The structure of a system might be quite complex 4 # Cantor 2003, Rational Unified Process for System Engineering. Additional Definitions System Definition #1 … an integrated composite that consists of one or more of the processes, hardware, sofware, facilities and people, that provides a capability to satisfy a stated need or objective . – IEEE 12207 1995 System Definition #2 .. a set of resources that provide services that are used by an enterprise to carry out a business purpose or mission . System components typically consist of hardware, sofware, data and workers. – Cantor, 2003 5 Components interaction • To serve their purpose the system components interact with each other • e.g., CPU, memory, I/O devices • These complex interactions are called system behaviour 6 # These surroundings are already a good starting point for designing a sys- System boundaries tem, e.g. start with the user interactions. • Typically, there are boundaries between the system and its surroundings • E.g. computer, humans • The environment provide input to the system, and the system answers with output • E.g. a search query as input to Google, a list of search result as output • The dependencies of outputs on the system inputs are typically complex 7
Definition summary • Systems serve a purpose • Systems have a structure • Systems have behaviour • Systems take input(s) from their environment and produce output(s) • Systems and their properties are very ofen complex 8 # For example the solar system, the nervous system, … Types of systems • Natural systems, e.g., biological, astronomical, etc. • Man-made systems, e.g., engineering system • Hybrid systems, e.g., a mix between man-made and natural phenomena 9 Sofware systems Sofware … is collection of programs, related data, and related documentation. Sofware … is a conceptual entity, whereas hardware is a collection of physical entities (devices). A sofware system … is a system in which all of its components, their connections and interactions are sofware entities. A sofware system … runs on a specific hardware. 10 # The amount of components is just one aspect of complexity. Models of a system • Mostly, systems are complex , e.g., huge number of components • Sometimes, complex interactions, e.g., the Web • To study complex natural systems we create models of systems • Model is a simplified view of the system that focuses on a single aspect of a system • Typically, multiple (interdependent) views to study multiple aspects 11
Models of man-made systems • We create models of natural systems to understand them beter • We create models of engineering systems to be able to build them • e.g., planing model, requirements model, structural model, behaviour model, implementation model, etc. • More models specific for sofware: e.g., run-time model, sofware design model, usability model, etc. 12 Models Definition Models … provide a specific description, or content, of an architecture. For example, a structural view might consist of a set of models of the system structure. The elements of such models might include identifiable system components and their interfaces, and interconnections between those components. – IEEE 1471 2000 13 Model abstraction and granularity level • Models can be created at varying levels of abstraction and details • e.g., an object-oriented model of a car • At the lowest detail level: e.g., spark plug, brake disk, etc. • At the intermediate detail level: e.g., car has engine, wheels, brakes, etc. • At the highest detail level: e.g., car objects with variables, interacting with other objects • OO programming model abstracts assembly, operating system, hardware, … 14 # Just the main components of car, intermediate detail level. Model abstraction and granularity level Figure 1: Car Components, image source: http://www.bestcarsguide.com/ 15
# More detailed components of car, low detail level. Model abstraction and granularity level Figure 2: Car components at a very fine level of granularity, image source: http://www.flickr.com/photos/rizzato/2610112430/ 16 # Noteworthy disadvantage: Our model might be too simple (and does not Benefits of Models capture the relevant aspects). Advantages of using models • Detecting errors and omissions early in the life cycle • Examining the relative merits of different options (e.g., debate with colleagues) • Understanding the impact of change • Assisting with project planning 17 Definition A system architecture … is an integral collection of related system models at different levels of abstraction and granularity. An initial system architecture … is designed before the actual development of the system. This architecture governs the system development. Lifetime of system architecture Mostly, the initial system architecture is iteratively updated during the system development. 18 Definition A sofware architecture is a collection of models of a sofware system at various abstraction and detail levels. The models describe: • the system as a whole • system components • component connections • how component interact to fulfil the system purpose # Note: The first three points concern the structure, while the last point concerns the behaviour. 19
When do we need a sofware architecture? • Only complex systems • Complexity can be (sometimes) estimated • Large number of users, large amounts of data, large number of interacting components, complex functions, etc. • Sometimes you do not know this beforehand, e.g., system for a start-up company 20 Examples for complex systems Wikipedia • Example: Huge amount of documents • e.g., managing tens of millions of documents • How to store documents, how to search in documents? • How to create, edit documents? User access rights? • How to display documents? How to print documents? 21 Examples for complex systems Massively multiplayer online role-playing games (MMORPGs) • Example: Large number of users • Large amount of players interacting with each other (e.g. millions of users) • How to distribute the load? How to optimise the latency? • How to detect cheaters? • Are there banned users? Integrate billing (in game purchases), etc? 22 Examples for complex systems Amazon • Example: Complex interactions • Product recommendation system • Which users have similar interests to other users? • What should be tracked? Clicks? Purchases? Comments? • Are there privacy issues? 23
# Note: for enterprise applications the complexities are different, but not Examples for complex systems necessarily easier. Facebook, Google, Twiter • Combine all of the complexities discussed above • Large number of users, huge amount of data, complex interactions, quick updates • Complex connections: networks, social networks, etc. 24 When a sofware architecture is not needed? Simpler systems • e.g., less command line tool in Unix • When there are proven designs and we know about them, e.g., a frontend for a database • We need the experience in developing this particular kind of a system, i.e. we developed many such systems • We need experience to make the distinction 25 Analogy with classical architecture • Making buildings by G. Booch • Building a dog kennel: no architectural design is needed • Building a house: you might need an architectural design but if the builders are good it is not necessary • Building a skyscraper: you definitely need an architectural design 26 Development Process
Recommend
More recommend