Architectural Styles Acknowledgement: some slides from: Software Architecture: Foundations, Theory, and Practice; R. Taylor, N. Medvidovic, E.Dashofy.

Slides:



Advertisements
Similar presentations
Problem solving skills
Advertisements

Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
Executional Architecture
Copyright © Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved. Styles and Greenfield Design Software Architecture Lecture 6.
INTRODUCTION TO MODELING
SEP1 - 1 Introduction to Software Engineering Processes SWENET SEP1 Module Developed with support from the National Science Foundation.
1 Software Design Introduction  The chapter will address the following questions:  How do you factor a program into manageable program modules that can.
Copyright © Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved. Designing Architectures Software Architecture Lecture 4.
© 2005 Prentice Hall6-1 Stumpf and Teague Object-Oriented Systems Analysis and Design with UML.
Gu & Maher University of Sydney, October 2004 DECO2005 Monitoring Team Process.
Lecturer: Sebastian Coope Ashton Building, Room G.18 COMP 201 web-page: Lecture.
Copyright © Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved. Designing Architectures Software Architecture Lecture 4.
Algorithms and Problem Solving-1 Algorithms and Problem Solving.
Software Architecture Design Instructor: Dr. Jerry Gao.
Silicon Prairie Initiative on Robotics in Information Technology
Silicon Prairie Initiative on Robotics in Information Technology
Establishing the overall structure of a software system
Arriving at an Architecture
1 SPIRIT Silicon Prairie Initiative on Robotics in Information Technology Engineering Design Tools.
Course Instructor: Aisha Azeem
Architectural Design Establishing the overall structure of a software system Objectives To introduce architectural design and to discuss its importance.
System Design & Software Architecture
Engineering Design Process ETP 2005 – Brian Vance This material is based upon work supported by the National Science Foundation under Grant No
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 11 Slide 1 Architectural Design.
Architectural Design.
What is Software Architecture?
Chapter : Software Process
On Roles of Models in Information Systems (Arne Sølvberg) Gustavo Carvalho 26 de Agosto de 2010.
Introduction to Parallel Programming MapReduce Except where otherwise noted all portions of this work are Copyright (c) 2007 Google and are licensed under.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 1 Software Reuse.
Chapter 7: Architecture Design Omar Meqdadi SE 273 Lecture 7 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
Unit 2: Engineering Design Process
Chapter 2 The process Process, Methods, and Tools
Lecture 1 What is Modeling? What is Modeling? Creating a simplified version of reality Working with this version to understand or control some.
Designing and implementing of the NQF Tempus Project N° TEMPUS-2008-SE-SMHES ( )
Designing Architectures. Designing Different Views – Designing is an art – You cant learn – You can learn from watching it Designing is: – a methodological.
Research in Computing สมชาย ประสิทธิ์จูตระกูล. Success Factors in Computing Research Research Computing Knowledge Scientific MethodAnalytical Skill Funding.
Architectural Design portions ©Ian Sommerville 1995 Establishing the overall structure of a software system.
1 5/18/2007ã 2007, Spencer Rugaber Software Architecture (Informal Definition) The organization of a system into component subsystems or modules Box and.
COMP 354 Software Engineering I Section BB Summer 2009 Dr Greg Butler
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 10Slide 1 Architectural Design l Establishing the overall structure of a software system.
Chapter 13 Architectural Design
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 10Slide 1 Architectural Design l Establishing the overall structure of a software system.
Architectural Design Yonsei University 2 nd Semester, 2014 Sanghyun Park.
Science Fair How To Get Started… (
1 Introduction to Software Engineering Lecture 1.
 Repository Model  Client-Server Model  Layered Model  Modular decomposition styles  Object Models  Function Oriented Pipelining  Control Styles.
CSC480 Software Engineering Lecture 10 September 25, 2002.
Data Structures and Algorithms Dr. Tehseen Zia Assistant Professor Dept. Computer Science and IT University of Sargodha Lecture 1.
Architecture View Models A model is a complete, simplified description of a system from a particular perspective or viewpoint. There is no single view.
ANU comp2110 Software Design lecture 8 COMP2110 Software Design in 2004 lecture 8 Software Architecture 1 of 2 (design, lecture 3 of 6) Goal of this small.
“Architecture” The outcome of top-level design, reflecting principal design decisions Can (and should) be modified and updated Analogous to architecture.
Copyright © Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved. Styles and Greenfield Design Software Architecture Lecture 6.
Process Asad Ur Rehman Chief Technology Officer Feditec Enterprise.
Lecture VIII: Software Architecture
ANU comp2110 Software Design lecture 10 COMP2110 Software Design in 2004 lecture 10 Software Architecture 2 of 2 design lecture 5 of 6 Goal of this small.
Chapter : 9 Architectural Design
Step One: Research Problem, Question & Hypothesis.
+ Informatics 122 Software Design II Lecture 13 Emily Navarro Duplication of course material for any commercial purpose without the explicit written permission.
Slide 1 Chapter 8 Architectural Design. Slide 2 Topics covered l System structuring l Control models l Modular decomposition l Domain-specific architectures.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 10Slide 1 Chapter 5:Architectural Design l Establishing the overall structure of a software.
Software Architecture
Software Architecture
Algorithms and Problem Solving
Software Design and Architecture
Designing Architectures
Designing Architectures
Styles and Greenfield Design
Designing Architectures
Designing Architectures
Presentation transcript:

Architectural Styles Acknowledgement: some slides from: Software Architecture: Foundations, Theory, and Practice; R. Taylor, N. Medvidovic, E.Dashofy

Common styles Traditional, language- influenced u Main program and subroutines u Object-oriented Layered u Virtual machines u Client-server Data-flow styles u Batch sequential u Pipe and filter Shared-state u Blackboard u Rule based Interpreter u Interpreter u Mobile code Implicit invocation u Event-based u Publish-subscribe Peer-to-peer

How Do You Design? 3 Where do architectures come from? Method 1)Efficient in familiar terrain 2)Not always successful 3)Predictable outcome (+ & - ) 4)Quality of methods varies Creativity 1)Fun! 2)Fraught with peril 3)May be unnecessary 4)May yield the best

Creativity u Enhance your skillset u Provide new tools Method u Focus on highly effective techniques (architectural patterns, styles) Develop judgment: when to develop novel solutions, and when to follow established method 4

Typical Engineering Design Process Feasibility stage: identifying a set of feasible concepts for the design as a whole Preliminary design stage: selection and development of the best concept. Detailed design stage: development of engineering descriptions of the concept. Planning stage: evaluating and altering the concept to suit the requirements of production, distribution, consumption and product retirement. 5

Potential Problems If the designer is unable to produce a set of feasible concepts, progress stops. As problems and products increase in size and complexity, the probability that any one individual can successfully perform the first steps decreases.  As complexity increases or the experience of the designer is not sufficient, alternative approaches to the design process must be adopted.  Parallel, incremental,.. 6

The beast you fight: Complexity A complex system can no longer be made by a single person A very complex system can no longer be comprehended by a single person How to tackle complexity?

The Tools of “Software Engineering 101” Abstraction u Abstraction(1): look at details, and abstract “up” to concepts u Abstraction(2): choose concepts, then add detailed substructure, and move “down” Example: design of a stack class Separation of concerns 8

Abstraction and the Simple Machines What concepts should be chosen at the outset of a design task? One technique: Search for a “simple machine” u that serves as an abstraction of a potential system that will perform the required task u a plausible first concept of how an application might be built. u Most application domains have their common simple machines. 9

Simple Machines 10 DomainSimple Machines GraphicsPixel arrays Transformation matrices Widgets Abstract depiction graphs Word processingStructured documents Layouts Process controlFinite state machines Income Tax Software Hypertext Spreadsheets Form templates Web pagesHypertext Composite documents Scientific computing Matrices Mathematical functions BankingSpreadsheets Databases Transactions

Choosing the Level and Terms of Discourse Any attempt to use abstraction as a tool must choose a level of discourse, and once that is chosen, must choose the terms of discourse. Alternative 1: initial level of discourse is one of the application as a whole (step-wise refinement). Alternative 2: work, initially, at a level lower than that of the whole application. u Once several such sub-problems are solved they can be composed together to form an overall solution Alternative 3: work, initially, at a level above that of the desired application. u E.g. handling simple application input with a general parser. 11

Separation of Concerns Subdivision of a problem into (hopefully) independent parts. u Enforce one responsibility per module difficulties arise when the issues are either actually or apparently intertwined. u Separations of concerns frequently involves many tradeoffs u Total independence of concepts may not be possible. Key example from software architecture: separation of components (computation) from connectors (communication) 12

At a higher level Treat individual aspects of a problem separately --- the aim, again, master complexity Separation in time / space u eg do requirements analysis before design u creative design in the morning, meetings in afternoon u do necessary learning and study during the week, explore personal interests on weekends Separation by concerns u eg deal with correctness, then deal with efficiency Separation by views u eg data flow through a system, control/decision making within system concurrency and synchronization, timing restrictions of a real time system

Google-like problem: process a huge collection of documents (Web-pages) [Distributed] Grep: Produce a list of documents that contain a certain word. Count of URL Access Frequency: Process logs of web page requests and output the number of times each of them has been accessed. Reversed Web-Link Graph: For a list of web pages produce the set of links that point to these pages. Term-Vector per Host: A N-term vector summarizes the most N frequent words that occur in a document or a set of documents as a list of pairs. The goal is to produce the term vector for all domain hosts. Inverted Index: For each word, produce the list of documents where it appears. Common styles Traditional, language- influenced u Main program and subroutines u Object-oriented Layered u Virtual machines u Client-server Data-flow styles u Batch sequential u Pipe and filter Shared-state u Blackboard u Rule based Interpreter u Interpreter u Mobile code Implicit invocation u Event-based u Publish-subscribe Peer-to-peer

Google’s MapReduce

When There’s No Experience to Go On… The first effort you should make in addressing a novel design challenge is to attempt to determine that it is genuinely a novel problem. Basic Strategy u Divergence – shake off inadequate prior approaches and discover/admit a variety of new ideas that offer a potentially workable solution u Transformation – combine analysis and selection of these potential ides. New understanding and changes to the problem statement u Convergence – select and further refine ideas Repeatedly cycling through the basic steps until a feasible solution emerges. 16

Analogy Search Examine other fields and disciplines unrelated to the target problem for approaches and ideas that are analogous to the problem. Formulate a solution strategy based upon that analogy. A common “unrelated domain” that has yielded a variety of solutions is nature, especially the biological sciences. u E.g., neural networks 17

Brainstorming Technique of rapidly generating a wide set of ideas and thoughts pertaining to a design problem u without (initially) devoting effort to assessing the feasibility. Brainstorming can be done by an individual or, more commonly, by a group. Problem: A brainstorming session can generate a large number of ideas… all of which might be low-quality. Chief value: identifying categories of possible designs, not any specific design solution suggested during a session. 18

“Literature” Search Examining published information to identify material that can be used to guide or inspire designers Digital library collections make searching much faster and more effective u IEEE Xplore u ACM Digital Library u Google Scholar The availability of free and open-source software adds special value to this technique. 19

Morphological Charts The essential idea: u identify all the primary functions to be performed by the desired system u for each function identify a means of performing that function u attempt to choose one means for each function such that the collection of means performs all the required functions in a compatible manner. The technique does not demand that the functions be shown to be independent when starting out. Sub-solutions to a given problem do not need to be compatible with all the sub-solutions to other functions in the beginning. 20

Removing Mental Blocks If you can’t solve the problem, change the problem to one you can solve. u If the new problem is “close enough” to what is needed, then closure is reached. u If it is not close enough, the solution to the revised problem may suggest new venues for attacking the original. 21

Controlling the Design Strategy Exploring diverse approaches u Potentially chaotic u  care in managing the activity Identify and review *critical* decisions Relate the costs of research and design to the penalty for taking wrong decisions Insulate uncertain decisions Continually re-evaluate system “requirements” in light of what the design exploration yields 22