Software Architecture in Practice

Slides:



Advertisements
Similar presentations
Computer Systems & Architecture Lesson 2 4. Achieving Qualities.
Advertisements

Lecture 13 Enterprise Systems Development ( CSC447 ) COMSATS Islamabad Muhammad Usman, Assistant Professor.
CS 501: Software Engineering Fall 2000 Lecture 16 System Architecture III Distributed Objects.
DAIMIHenrik Bærbak Christensen1 What is Software Quality?
Instructor: Tasneem Darwish1 University of Palestine Faculty of Applied Engineering and Urban Planning Software Engineering Department Software Systems.
Achieving Qualities 1 Võ Đình Hiếu. Contents Architecture tactics Availability tactics Security tactics Modifiability tactics 2.
An Introduction to Software Architecture
Eric Keller, Evan Green Princeton University PRESTO /22/08 Virtualizing the Data Plane Through Source Code Merging.
SOFTWARE SYSTEMS DEVELOPMENT 4: System Design. Simplified view on software product development process 2 Product Planning System Design Project Planning.
OHTO -99 SOFTWARE ENGINEERING “SOFTWARE PRODUCT QUALITY” Today: - Software quality - Quality Components - ”Good” software properties.
CE Operating Systems Lecture 3 Overview of OS functions and structure.
Software System Architecture Software System Architecture Chapter 6:Air Traffic Control: A Case Study in Designing for High Availability. Chapter 6:Air.
ECE450 - Software Engineering II1 ECE450 – Software Engineering II Today: Design Patterns VIII Chain of Responsibility, Strategy, State.
RELIABILITY ENGINEERING 28 March 2013 William W. McMillan.
Fault Tolerance Benchmarking. 2 Owerview What is Benchmarking? What is Dependability? What is Dependability Benchmarking? What is the relation between.
Behavioral Patterns CSE301 University of Sunderland Harry R Erwin, PhD.
Java EE Patterns Dan Bugariu.  What is Java EE ?  What is a Pattern ?
Test Stubs... getting the world under control. TDD of State Pattern To implement GammaTown requirements I CS, AUHenrik Bærbak Christensen2.
1 Software Architecture in Practice Quality attributes (The amputated version)
CSPC 464 Fall 2014 Son Nguyen.  Attendance/Roster  Introduction ◦ Instructor ◦ Students  Syllabus  Q & A.
Cloud Computing and Architecture Architectural Tactics (Tonight’s guest star: Availability)
Replication Store it in multiple places.... Literature Colouris, Dollimore, Kindberg, 2000 –Gets deep into the details of reliable communication, byzantine.
Java Programming: Advanced Topics 1 Enterprise JavaBeans Chapter 14.
Multi Dimensional Variance: How to make ultra flexible software!
Software Architecture Quality Attributes. Good or Bad? Measurable criterions required...
1 Software Architecture in Practice Architectural Design (Again, the amputated version)
CLOUD ARCHITECTURE Many organizations and researchers have defined the architecture for cloud computing. Basically the whole system can be divided into.
Cloud Computing and Architecuture
Modularity Most useful abstractions an OS wants to offer can’t be directly realized by hardware Modularity is one technique the OS uses to provide better.
Design Patterns: MORE Examples
Abstract Factory Pattern
Software Architecture in Practice
Classifications of Software Requirements
Non Functional Requirements (NFRs)
Scalability: Load Balancing
Chapter 2 Database System Concepts and Architecture
Chapter 10 Design Patterns.
Fault Tolerance & Reliability CDA 5140 Spring 2006
Chapter 11: Usability © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License.
Software Architecture Quality Attributes
Operating System Structure
Part 3 Design What does design mean in different fields?
Hierarchical Architecture
Abstract Factory Pattern
Software Architecture in Practice
Intent (Thanks to Jim Fawcett for the slides)
Replication Middleware for Cloud Based Storage Service
Quality Attributes Or, what’s wrong with this:
Chapter 2: System Structures
Software Architecture
Quality Attributes Or, what’s wrong with this:
Architectures of distributed systems Fundamental Models
Architecture Competency Group
Architectures of distributed systems Fundamental Models
An Introduction to Software Architecture
SAMANVITHA RAMAYANAM 18TH FEBRUARY 2010 CPE 691
CSE451 Virtual Memory Paging Autumn 2002
Architectures of distributed systems
Architectures of distributed systems Fundamental Models
Object-Oriented PHP (1)
Software Engineering and Architecture
Software Engineering and Architecture
Software Engineering and Architecture
Container technology, Microservices, and DevOps
Software Engineering and Architecture
Software Engineering and Architecture
Quality Attributes Or, what’s wrong with this:
Software Engineering and Architecture
Database management systems
Presentation transcript:

Software Architecture in Practice Tactics

Henrik Bærbak Christensen Context CS@AU Henrik Bærbak Christensen

Henrik Bærbak Christensen Introduction Tactics: Architectural techniques to achieve required quality attributes i.e. control the response measure in a positive direction The following presentation is selected picks from the book Representing my interests or central tactics … and representing areas of my missing expertise  CS@AU Henrik Bærbak Christensen

Henrik Bærbak Christensen Availability Availability: Property of software that it is ready to carry out its task when you need it to be. Lots of metrics… MTBF: Mean Time Between Failures MTTR: Mean Time To Repair MTBF / (MTBF+MTTR) CS@AU Henrik Bærbak Christensen

Henrik Bærbak Christensen CS@AU Henrik Bærbak Christensen

Henrik Bærbak Christensen Tactics Categories Detect Faults Our system needs to know that something has failed! Examples Heartbeat MongoDB’s replica set emit heart beats to fellow instances Exception Detection MongoDB’s Java driver will throw an exception in case a write request cannot be fulfilled CS@AU Henrik Bærbak Christensen

Henrik Bærbak Christensen Tactics Categories Recover from Faults / Prep and repair Once detected, how do we get back on track? Examples Active Redundancy: millisecond take over Passive Redundancy: second-minute take over Spare: hour-days take over Exception handling Degradation Run with cached data (off-line) CS@AU Henrik Bærbak Christensen

Henrik Bærbak Christensen Tactics Categories Recover from Faults / Reintroduction How to get failed components working again Examples: State resynchronization MongoDB slave 1 needed two days to get back CS@AU Henrik Bærbak Christensen

Henrik Bærbak Christensen Tactics Categories Prevent Faults Can we avoid it in the first place Examples: Transactions: ACID in RDB Increase competence set: Read Nygards book and employ the techniques  - Safe failure modes CS@AU Henrik Bærbak Christensen

Henrik Bærbak Christensen Summary Availability: Property of software that it is ready to carry out its task when you need it to be. There are lots of tactics Some are simple, directly in programming language Like exceptions Some are wildly complex Passive redundancy Look for the complex ones in external libraries CS@AU Henrik Bærbak Christensen

Henrik Bærbak Christensen Interoperability Interoperability: Concerned with the degree to which two or more systems can usefully exchange meaningful information via interfaces in a particular context CS@AU Henrik Bærbak Christensen

Henrik Bærbak Christensen Tactics Locate: e.g. DNS lookup Manage interface: Orchestrate ~ Mediator pattern; Tailor ~ Decorator CS@AU Henrik Bærbak Christensen

Henrik Bærbak Christensen Hm Bit thin, isn’t it? Extensible interface Add version number in message JSON and XML are pretty flexible, you can always add stuff, and older clients may then ignore additional attributes CS@AU Henrik Bærbak Christensen

Henrik Bærbak Christensen Modifiability Modifiability: Concerned with the ease with which the system supports change CS@AU Henrik Bærbak Christensen

Henrik Bærbak Christensen Tactics CS@AU Henrik Bærbak Christensen

Henrik Bærbak Christensen Tactics Cohesion and Coupling: Old friends… Defer binding = Dependency injection Constructor injection, Abstract Factory, DI frameworks Program to an Interface Favor object composition CS@AU Henrik Bærbak Christensen

Henrik Bærbak Christensen Performance Performance: Concerned with ability to meet timing requirements CS@AU Henrik Bærbak Christensen

Henrik Bærbak Christensen Tactics CS@AU Henrik Bærbak Christensen

Henrik Bærbak Christensen Tactics Either lower demand or increase muscles  Make the wagon lighter or add more horses in front… Demand examples Increase ressource efficiency: better algorithms Reduce overhead: avoid too much network traffic Manage resources Increase: Vertical scale (up) Multiple copies data: cache Multiple copies comp: Horizontal scale (out) CS@AU Henrik Bærbak Christensen

Security Security: Concerned with ability to protect data and information from unauthorized access while still providing access to people/systems that are authorized One of the major flaws in my knowledge base  CS@AU Henrik Bærbak Christensen

Henrik Bærbak Christensen Tactics CS@AU Henrik Bærbak Christensen

Henrik Bærbak Christensen  Change default settings How many of you have changed the default admin password on your Wireless Router at home ? CS@AU Henrik Bærbak Christensen

Henrik Bærbak Christensen Testability Testability: Concerned with the ease with which the software can be made to demonstrate its faults CS@AU Henrik Bærbak Christensen

Henrik Bærbak Christensen Tactics CS@AU Henrik Bærbak Christensen

Henrik Bærbak Christensen Tactics Specialized interfaces Tests often deliberately breaks encapsulation! Allow it, but only through dedicated test interfaces! Sandboxing Program to an interface and allow test doubles to be injected instead of DBs, external hardware, etc. Use virtual machines Staging environments Docker-compose  Limit complexity Program to interface, favor object composition  CS@AU Henrik Bærbak Christensen

Henrik Bærbak Christensen Usability Usability: Concerned with how easy it is for the user to accomplish a desired task and the kind of user support the system provides CS@AU Henrik Bærbak Christensen

Henrik Bærbak Christensen Tactics CS@AU Henrik Bærbak Christensen

Henrik Bærbak Christensen Tactics Undo and cancel ! Record macros CS@AU Henrik Bærbak Christensen

Henrik Bærbak Christensen Summary Some are high level architectural decisions Passive redundancy, … Some are low level programming decisions with strong architectural influence Reduce module size, introduce concurrency, … Definition: Tactic is a design decision that influences the achievement of a quality attribute response CS@AU Henrik Bærbak Christensen

My Architecture Perception Some say ”Architecture is the ability to draw 7 boxes with lines between them” I say ”Architecture is any decision that influence QAs” Which leads to the corollary Architectural work span the entire spectrum of decisions from the highest level all the way down to programming statement level! Klaus Marius Hansen, Architect at Microsoft ”I spent quite a lot of time programming architectural prototypes…” CS@AU Henrik Bærbak Christensen