![Page 1: 15-313 Foundations of Software Engineeringckaestne/15313/2016/10-29... · 6 15-313 Software Engineering Architecture as structures and relations (the actual system) Architecture as](https://reader035.vdocuments.site/reader035/viewer/2022070907/5f83b111da6e13397a138069/html5/thumbnails/1.jpg)
Foundations of Software Engineering
Lecture 8: Software Architecture II
Christian Kästner
(with slides by Ivan Ruchkin)
![Page 2: 15-313 Foundations of Software Engineeringckaestne/15313/2016/10-29... · 6 15-313 Software Engineering Architecture as structures and relations (the actual system) Architecture as](https://reader035.vdocuments.site/reader035/viewer/2022070907/5f83b111da6e13397a138069/html5/thumbnails/2.jpg)
15-313 Software Engineering2
![Page 3: 15-313 Foundations of Software Engineeringckaestne/15313/2016/10-29... · 6 15-313 Software Engineering Architecture as structures and relations (the actual system) Architecture as](https://reader035.vdocuments.site/reader035/viewer/2022070907/5f83b111da6e13397a138069/html5/thumbnails/3.jpg)
Learning Goals
• Understand key parts of architectural process
• Use architectural styles and tactics for design decisions
• Make justified architectural decisions for new systems and within existing systems
• Review a proposed architecture
15-313 Software Engineering3
![Page 4: 15-313 Foundations of Software Engineeringckaestne/15313/2016/10-29... · 6 15-313 Software Engineering Architecture as structures and relations (the actual system) Architecture as](https://reader035.vdocuments.site/reader035/viewer/2022070907/5f83b111da6e13397a138069/html5/thumbnails/4.jpg)
15-313 Software Engineering4
So far in course
Requirements
Architecture
Implementation
![Page 5: 15-313 Foundations of Software Engineeringckaestne/15313/2016/10-29... · 6 15-313 Software Engineering Architecture as structures and relations (the actual system) Architecture as](https://reader035.vdocuments.site/reader035/viewer/2022070907/5f83b111da6e13397a138069/html5/thumbnails/5.jpg)
Levels of abstraction
• Requirements– high-level “what” needs to be done
• Architecture (High-level design)
– high-level “how”, mid-level “what”
• OO-Design (Low-level design, e.g. design patterns)
– mid-level “how”, low-level “what”
• Code– low-level “how”
5 15-313 Software Engineering
![Page 6: 15-313 Foundations of Software Engineeringckaestne/15313/2016/10-29... · 6 15-313 Software Engineering Architecture as structures and relations (the actual system) Architecture as](https://reader035.vdocuments.site/reader035/viewer/2022070907/5f83b111da6e13397a138069/html5/thumbnails/6.jpg)
What is architecture?
15-313 Software Engineering6
Architecture as structures and relations(the actual system)
Architecture as documentation(representations of the system)
Architecture as process (activities around the other two)
![Page 7: 15-313 Foundations of Software Engineeringckaestne/15313/2016/10-29... · 6 15-313 Software Engineering Architecture as structures and relations (the actual system) Architecture as](https://reader035.vdocuments.site/reader035/viewer/2022070907/5f83b111da6e13397a138069/html5/thumbnails/7.jpg)
Architectural Styles and Tactics
15-313 Software Engineering7
![Page 8: 15-313 Foundations of Software Engineeringckaestne/15313/2016/10-29... · 6 15-313 Software Engineering Architecture as structures and relations (the actual system) Architecture as](https://reader035.vdocuments.site/reader035/viewer/2022070907/5f83b111da6e13397a138069/html5/thumbnails/8.jpg)
Architectural style (pattern)
• Broad principle of system organization
• Describes computational model
– E.g., pipe and filter, call-return, or publish-subscribe
• Related to one of common view types
– Static, dynamic, physical
15-313 Software Engineering8
![Page 9: 15-313 Foundations of Software Engineeringckaestne/15313/2016/10-29... · 6 15-313 Software Engineering Architecture as structures and relations (the actual system) Architecture as](https://reader035.vdocuments.site/reader035/viewer/2022070907/5f83b111da6e13397a138069/html5/thumbnails/9.jpg)
Architectural style (pattern)
15-313 Software Engineering9
Source: codeproject.org
• Broad principle of system organization
• See reading
![Page 10: 15-313 Foundations of Software Engineeringckaestne/15313/2016/10-29... · 6 15-313 Software Engineering Architecture as structures and relations (the actual system) Architecture as](https://reader035.vdocuments.site/reader035/viewer/2022070907/5f83b111da6e13397a138069/html5/thumbnails/10.jpg)
Architectural style (pattern)
15-313 Software Engineering10
Source: codeproject.org
![Page 11: 15-313 Foundations of Software Engineeringckaestne/15313/2016/10-29... · 6 15-313 Software Engineering Architecture as structures and relations (the actual system) Architecture as](https://reader035.vdocuments.site/reader035/viewer/2022070907/5f83b111da6e13397a138069/html5/thumbnails/11.jpg)
Client-server pattern
• Separation of clients and servers– Servers provide services; known and
“stable”
–Clients request services; come and go
• Varieties: synchronous/asynchronous
• Impact on security, performance, scalability
• Examples: TCP, HTTP, X11
15-313 Software Engineering11
![Page 12: 15-313 Foundations of Software Engineeringckaestne/15313/2016/10-29... · 6 15-313 Software Engineering Architecture as structures and relations (the actual system) Architecture as](https://reader035.vdocuments.site/reader035/viewer/2022070907/5f83b111da6e13397a138069/html5/thumbnails/12.jpg)
Layered system
15-313 Software Engineering12
Source: eclipse.org
![Page 13: 15-313 Foundations of Software Engineeringckaestne/15313/2016/10-29... · 6 15-313 Software Engineering Architecture as structures and relations (the actual system) Architecture as](https://reader035.vdocuments.site/reader035/viewer/2022070907/5f83b111da6e13397a138069/html5/thumbnails/13.jpg)
Client-server style
15-313 Software Engineering13
Source: wikimedia commons
![Page 14: 15-313 Foundations of Software Engineeringckaestne/15313/2016/10-29... · 6 15-313 Software Engineering Architecture as structures and relations (the actual system) Architecture as](https://reader035.vdocuments.site/reader035/viewer/2022070907/5f83b111da6e13397a138069/html5/thumbnails/14.jpg)
Tiered architecture
15-313 Software Engineering14
![Page 15: 15-313 Foundations of Software Engineeringckaestne/15313/2016/10-29... · 6 15-313 Software Engineering Architecture as structures and relations (the actual system) Architecture as](https://reader035.vdocuments.site/reader035/viewer/2022070907/5f83b111da6e13397a138069/html5/thumbnails/15.jpg)
15-313 Software Engineering15
Client
Server
Database
Where to validate userinput?
Example: Yelp App
![Page 16: 15-313 Foundations of Software Engineeringckaestne/15313/2016/10-29... · 6 15-313 Software Engineering Architecture as structures and relations (the actual system) Architecture as](https://reader035.vdocuments.site/reader035/viewer/2022070907/5f83b111da6e13397a138069/html5/thumbnails/16.jpg)
Services?
15-313 Software Engineering16
![Page 17: 15-313 Foundations of Software Engineeringckaestne/15313/2016/10-29... · 6 15-313 Software Engineering Architecture as structures and relations (the actual system) Architecture as](https://reader035.vdocuments.site/reader035/viewer/2022070907/5f83b111da6e13397a138069/html5/thumbnails/17.jpg)
Architectural Styles
• Pipes and Filters
• Object-Oriented Organization, Services
• Event-Based, Implicit Invocation
• Layered System
• Repositories
• …
15-313 Software Engineering17
![Page 18: 15-313 Foundations of Software Engineeringckaestne/15313/2016/10-29... · 6 15-313 Software Engineering Architecture as structures and relations (the actual system) Architecture as](https://reader035.vdocuments.site/reader035/viewer/2022070907/5f83b111da6e13397a138069/html5/thumbnails/18.jpg)
Architectural Style
15-313 Software Engineering18
Ghemawat, Sanjay, Howard Gobioff, and Shun-Tak Leung. "The Google file system." ACM SIGOPS operating systems review. Vol. 37. No. 5. ACM, 2003.
![Page 19: 15-313 Foundations of Software Engineeringckaestne/15313/2016/10-29... · 6 15-313 Software Engineering Architecture as structures and relations (the actual system) Architecture as](https://reader035.vdocuments.site/reader035/viewer/2022070907/5f83b111da6e13397a138069/html5/thumbnails/19.jpg)
Tactics
• Architectural techniques to achieve qualities
• Smaller scope than architectural patterns
– Problem solved by patterns: “How do I structure my (sub)system?”
– Problem solved by tactics: “How do I get better at quality X?”
• Collection of common strategies and known solutions
15-313 Software Engineering19
![Page 20: 15-313 Foundations of Software Engineeringckaestne/15313/2016/10-29... · 6 15-313 Software Engineering Architecture as structures and relations (the actual system) Architecture as](https://reader035.vdocuments.site/reader035/viewer/2022070907/5f83b111da6e13397a138069/html5/thumbnails/20.jpg)
15-313 Software Engineering20
![Page 21: 15-313 Foundations of Software Engineeringckaestne/15313/2016/10-29... · 6 15-313 Software Engineering Architecture as structures and relations (the actual system) Architecture as](https://reader035.vdocuments.site/reader035/viewer/2022070907/5f83b111da6e13397a138069/html5/thumbnails/21.jpg)
15-313 Software Engineering21
![Page 22: 15-313 Foundations of Software Engineeringckaestne/15313/2016/10-29... · 6 15-313 Software Engineering Architecture as structures and relations (the actual system) Architecture as](https://reader035.vdocuments.site/reader035/viewer/2022070907/5f83b111da6e13397a138069/html5/thumbnails/22.jpg)
15-313 Software Engineering22
Second and more detailed third edition available as ebookthrough CMU library.
Many tactics described in Chapter 5
Brief high-level descriptions (about 1 paragraph per tactic)
![Page 23: 15-313 Foundations of Software Engineeringckaestne/15313/2016/10-29... · 6 15-313 Software Engineering Architecture as structures and relations (the actual system) Architecture as](https://reader035.vdocuments.site/reader035/viewer/2022070907/5f83b111da6e13397a138069/html5/thumbnails/23.jpg)
Case Study: ROS
15-313 Software Engineering23
![Page 24: 15-313 Foundations of Software Engineeringckaestne/15313/2016/10-29... · 6 15-313 Software Engineering Architecture as structures and relations (the actual system) Architecture as](https://reader035.vdocuments.site/reader035/viewer/2022070907/5f83b111da6e13397a138069/html5/thumbnails/24.jpg)
ROS
• "Robot Operating System", open source
• The philosophical goals of ROS can be summarized as:–Peer-to-peer
– Tools-based
–Multi-lingual
– Thin
– Free and Open-Source
15-313 Software Engineering24
![Page 25: 15-313 Foundations of Software Engineeringckaestne/15313/2016/10-29... · 6 15-313 Software Engineering Architecture as structures and relations (the actual system) Architecture as](https://reader035.vdocuments.site/reader035/viewer/2022070907/5f83b111da6e13397a138069/html5/thumbnails/25.jpg)
15-313 Software Engineering25
Quigley, Morgan, et al. "ROS: an open-source Robot Operating System." ICRA workshop on open source software. Vol. 3. No. 3.2. 2009.
![Page 26: 15-313 Foundations of Software Engineeringckaestne/15313/2016/10-29... · 6 15-313 Software Engineering Architecture as structures and relations (the actual system) Architecture as](https://reader035.vdocuments.site/reader035/viewer/2022070907/5f83b111da6e13397a138069/html5/thumbnails/26.jpg)
Quality Goals?
15-313 Software Engineering26
![Page 27: 15-313 Foundations of Software Engineeringckaestne/15313/2016/10-29... · 6 15-313 Software Engineering Architecture as structures and relations (the actual system) Architecture as](https://reader035.vdocuments.site/reader035/viewer/2022070907/5f83b111da6e13397a138069/html5/thumbnails/27.jpg)
" A Distributed, Modular Design"
• users can use as much or as little of ROS as they desire
• modularity of ROS allows you to pick and choose which parts are useful for you and which parts you'd rather implement yourself
• large community of user-contributed packages (3000 packages)
15-313 Software Engineering27
![Page 28: 15-313 Foundations of Software Engineeringckaestne/15313/2016/10-29... · 6 15-313 Software Engineering Architecture as structures and relations (the actual system) Architecture as](https://reader035.vdocuments.site/reader035/viewer/2022070907/5f83b111da6e13397a138069/html5/thumbnails/28.jpg)
Architectural Style?
• Pipes and Filters
• Object-Oriented Organization, Services
• Event-Based, Implicit Invocation
• Layered System
• Repositories
• …
15-313 Software Engineering28
![Page 29: 15-313 Foundations of Software Engineeringckaestne/15313/2016/10-29... · 6 15-313 Software Engineering Architecture as structures and relations (the actual system) Architecture as](https://reader035.vdocuments.site/reader035/viewer/2022070907/5f83b111da6e13397a138069/html5/thumbnails/29.jpg)
ROS Communication Infrastructure
• Message Passing–Publish/subscribe for channels
–Messages interfaces through IDL (cross-language)
• Recording and Playback of Messages
• Remote procedure calls
• Share configuration through global key-value store
15-313 Software Engineering29
![Page 30: 15-313 Foundations of Software Engineeringckaestne/15313/2016/10-29... · 6 15-313 Software Engineering Architecture as structures and relations (the actual system) Architecture as](https://reader035.vdocuments.site/reader035/viewer/2022070907/5f83b111da6e13397a138069/html5/thumbnails/30.jpg)
15-313 Software Engineering30
![Page 31: 15-313 Foundations of Software Engineeringckaestne/15313/2016/10-29... · 6 15-313 Software Engineering Architecture as structures and relations (the actual system) Architecture as](https://reader035.vdocuments.site/reader035/viewer/2022070907/5f83b111da6e13397a138069/html5/thumbnails/31.jpg)
Tradeoff discussion
• Decoupling
• Reuse, Extensibility
• Reliability
• Understandability
• Performance
• Community contributions
15-313 Software Engineering31
![Page 32: 15-313 Foundations of Software Engineeringckaestne/15313/2016/10-29... · 6 15-313 Software Engineering Architecture as structures and relations (the actual system) Architecture as](https://reader035.vdocuments.site/reader035/viewer/2022070907/5f83b111da6e13397a138069/html5/thumbnails/32.jpg)
Architecture Design Process
15-313 Software Engineering32
![Page 33: 15-313 Foundations of Software Engineeringckaestne/15313/2016/10-29... · 6 15-313 Software Engineering Architecture as structures and relations (the actual system) Architecture as](https://reader035.vdocuments.site/reader035/viewer/2022070907/5f83b111da6e13397a138069/html5/thumbnails/33.jpg)
What is architecture?
15-313 Software Engineering33
Architecture as structures and relations(the actual system)
Architecture as documentation(representations of the system)
Architecture as process (activities around the other two)
![Page 34: 15-313 Foundations of Software Engineeringckaestne/15313/2016/10-29... · 6 15-313 Software Engineering Architecture as structures and relations (the actual system) Architecture as](https://reader035.vdocuments.site/reader035/viewer/2022070907/5f83b111da6e13397a138069/html5/thumbnails/34.jpg)
Architecture design process
• Choose part or whole system to focus on• Understand relevant requirements• Choose a notation
– Type of view, vocabulary of elements
• Create a design – Patterns, tactics
• Evaluate• Go vs no-go
– Issues feed back into process
15-313 Software Engineering34
![Page 35: 15-313 Foundations of Software Engineeringckaestne/15313/2016/10-29... · 6 15-313 Software Engineering Architecture as structures and relations (the actual system) Architecture as](https://reader035.vdocuments.site/reader035/viewer/2022070907/5f83b111da6e13397a138069/html5/thumbnails/35.jpg)
Architecture design process
35
Choose scopeUnderstand relevant requirements
Choose a notation
Create/refine a designEvaluate
Source: ACDM, ADD
“Go”
![Page 36: 15-313 Foundations of Software Engineeringckaestne/15313/2016/10-29... · 6 15-313 Software Engineering Architecture as structures and relations (the actual system) Architecture as](https://reader035.vdocuments.site/reader035/viewer/2022070907/5f83b111da6e13397a138069/html5/thumbnails/36.jpg)
Architectural decisions
• Heart of architecture – deciding which path to go
• Involve tradeoff analysis
• Representing the alternatives clearly –half of work
15-313 Software Engineering36
![Page 37: 15-313 Foundations of Software Engineeringckaestne/15313/2016/10-29... · 6 15-313 Software Engineering Architecture as structures and relations (the actual system) Architecture as](https://reader035.vdocuments.site/reader035/viewer/2022070907/5f83b111da6e13397a138069/html5/thumbnails/37.jpg)
Architectural decisions
• Software architecture is design
• A decision is a step in the process
–Record rationale! (not just diagrams)
– Tradeoffs
–Backtracking
15-313 Software Engineering37
“Engineering design is […] a decision-making process (often iterative), in which the basic sciences, mathematics, and engineering sciences are applied to convert resources optimally to meet a stated objective” – ABET
![Page 38: 15-313 Foundations of Software Engineeringckaestne/15313/2016/10-29... · 6 15-313 Software Engineering Architecture as structures and relations (the actual system) Architecture as](https://reader035.vdocuments.site/reader035/viewer/2022070907/5f83b111da6e13397a138069/html5/thumbnails/38.jpg)
Architecture evaluation
• Goal: does the architecture satisfy requirements?
• ATAM – Architecture Tradeoff Analysis Method– Present requirements
– Present architecture
– Analyze architecture
– Present results – risks and non-risks
15-313 Software Engineering38
![Page 39: 15-313 Foundations of Software Engineeringckaestne/15313/2016/10-29... · 6 15-313 Software Engineering Architecture as structures and relations (the actual system) Architecture as](https://reader035.vdocuments.site/reader035/viewer/2022070907/5f83b111da6e13397a138069/html5/thumbnails/39.jpg)
15-313 Software Engineering39
Source:sei.cmu.edu
![Page 40: 15-313 Foundations of Software Engineeringckaestne/15313/2016/10-29... · 6 15-313 Software Engineering Architecture as structures and relations (the actual system) Architecture as](https://reader035.vdocuments.site/reader035/viewer/2022070907/5f83b111da6e13397a138069/html5/thumbnails/40.jpg)
Utility tree
15-313 Software Engineering40
Source:arnon.me
![Page 41: 15-313 Foundations of Software Engineeringckaestne/15313/2016/10-29... · 6 15-313 Software Engineering Architecture as structures and relations (the actual system) Architecture as](https://reader035.vdocuments.site/reader035/viewer/2022070907/5f83b111da6e13397a138069/html5/thumbnails/41.jpg)
Athena – code review system(original design)
15-313 Software Engineering41
![Page 42: 15-313 Foundations of Software Engineeringckaestne/15313/2016/10-29... · 6 15-313 Software Engineering Architecture as structures and relations (the actual system) Architecture as](https://reader035.vdocuments.site/reader035/viewer/2022070907/5f83b111da6e13397a138069/html5/thumbnails/42.jpg)
Athena – code review system
15-313 Software Engineering42
Source: Jansen and Bosch 2005
![Page 43: 15-313 Foundations of Software Engineeringckaestne/15313/2016/10-29... · 6 15-313 Software Engineering Architecture as structures and relations (the actual system) Architecture as](https://reader035.vdocuments.site/reader035/viewer/2022070907/5f83b111da6e13397a138069/html5/thumbnails/43.jpg)
15-313 Software Engineering43
Source: Jansen and Bosch 2005
![Page 44: 15-313 Foundations of Software Engineeringckaestne/15313/2016/10-29... · 6 15-313 Software Engineering Architecture as structures and relations (the actual system) Architecture as](https://reader035.vdocuments.site/reader035/viewer/2022070907/5f83b111da6e13397a138069/html5/thumbnails/44.jpg)
Architecture design process
44
Choose scopeUnderstand relevant requirements
Choose a notation
Create/refine a designEvaluate
Source: ACDM, ADD
![Page 45: 15-313 Foundations of Software Engineeringckaestne/15313/2016/10-29... · 6 15-313 Software Engineering Architecture as structures and relations (the actual system) Architecture as](https://reader035.vdocuments.site/reader035/viewer/2022070907/5f83b111da6e13397a138069/html5/thumbnails/45.jpg)
Challenges of architecting
• Describe the system that is not built yet
• Domain knowledge is essential
• Huge space of options
• Heavily reliant on judgment
15-313 Software Engineering45
![Page 46: 15-313 Foundations of Software Engineeringckaestne/15313/2016/10-29... · 6 15-313 Software Engineering Architecture as structures and relations (the actual system) Architecture as](https://reader035.vdocuments.site/reader035/viewer/2022070907/5f83b111da6e13397a138069/html5/thumbnails/46.jpg)
Learning Goals
• Architectural patterns provide common abstractions of system structures with known tradeoffs
• Tactics provide common strategies to achieve quality goals, often useful during design to explicitly discuss alternatives
• Architecture evaluation provides early quality assurance
15-313 Software Engineering46
![Page 47: 15-313 Foundations of Software Engineeringckaestne/15313/2016/10-29... · 6 15-313 Software Engineering Architecture as structures and relations (the actual system) Architecture as](https://reader035.vdocuments.site/reader035/viewer/2022070907/5f83b111da6e13397a138069/html5/thumbnails/47.jpg)
Further Readings
• Bass, Clements, Kazman. Software Architecture in Practice, 2013.
• Lattanze. Architecting Software Intensive Systems: a Practitioner’s Guide, 2009.
• Clements, Bachmann, Bass, Garlan, Ivers, Little, Merson, Nord, Stafford. Documenting Software Architectures: Views and Beyond, 2010.
• Boehm and Turner. Balancing Agility and Discipline: A Guide for the Perplexed, 2003.
• Jansen and Bosch. Software Architecture as a Set of Architectural Design Decisions, WICSA 2005.
15-313 Software Engineering47