Copyright © Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved. Designing Architectures Software Architecture Lecture 4.

Slides:



Advertisements
Similar presentations
Software Architecture Lecture 3
Advertisements

Copyright © Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved. Styles and Greenfield Design Software Architecture Lecture 6.
Copyright © Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved. Basic Concepts Software Architecture Lecture 3.
Copyright © Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved. Designing for NFPs Software Architecture Lecture 19.
Copyright © Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved. Domain-Specific Software Architecture and Product Lines Software.
Software Architecture Lecture 2
Software Connectors Software Architecture. Importance of Connectors Complex, distributed, multilingual, modern software system functionality and managing.
Copyright © Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved. Software Connectors.
Applying Architectural Styles and Patterns. Outline  Defining Architectural Patterns and Style The activation model Styles and Quality Attributes  Common.
Copyright © Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved. Designing Architectures Software Architecture Lecture 4.
Architectural Styles. Definitions of Architectural Style  Definition. An architectural style is a named collection of architectural design decisions.
Domain-Specific Software Engineering (DSSE). Software Engineering Concerns  There are many of them  “Classical” software architecture research has focused.
Domain-Specific Software Architecture and Product Lines
Copyright © Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved. Software Connectors Software Architecture Lecture 7.
Software Architecture Lecture 5
Copyright © Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved. Designing for NFPs Software Architecture Lecture 19.
Arriving at an Architecture
Demystifying Architectural Styles Nikunj Mehta 3/11/02Demystifying Architectural Styles2 Architectural Styles Characterize –Structure, i.e. external.
Copyright © Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved. Architectural Styles Software Architecture Lecture 5.
Course Instructor: Aisha Azeem
Architectural Design Establishing the overall structure of a software system Objectives To introduce architectural design and to discuss its importance.
Software Architecture Lecture 3
Domain-Specific Software Engineering Alex Adamec.
Copyright © Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved. Software Connectors Software Architecture Lecture 7.
Architectural Design.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 1 Software Reuse.
Designing Architectures
Architectural Styles Acknowledgement: some slides from: Software Architecture: Foundations, Theory, and Practice; R. Taylor, N. Medvidovic, E.Dashofy.
Designing Architectures. Designing Different Views – Designing is an art – You cant learn – You can learn from watching it Designing is: – a methodological.
Copyright © Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved. Implementing Architectures Software Architecture.
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 07. Review Architectural Representation – Using UML – Using ADL.
An Introduction to Design Patterns. Introduction Promote reuse. Use the experiences of software developers. A shared library/lingo used by developers.
Copyright © Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved. Architectural Styles Part I Software Architecture Lecture 5.
Basic Concepts Software Architecture. What is Software Architecture? Definition: – A software architecture is the set of principal design decisions about.
GRASP: Designing Objects with Responsibilities
Unit 2 Architectural Styles and Case Studies | Website for Students | VTU NOTES | QUESTION PAPERS | NEWS | RESULTS 1.
Copyright © Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved. NFP Design Techniques Software Architecture Lecture 20.
Copyright © Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved. NFP Design Techniques Software Architecture Lecture 20.
Software Architecture & Object Oriented Analysis
CSCI 578 Software Architectures Exam #1 Review. Materials you are responsible for Chapters 1-8 in the text book All lecture material up to but not including.
University of Southern California Center for Systems and Software Engineering Architecture and Design Patterns CSCI577A Fall2015 Kan Qi, Bo Wang.
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.
Copyright © Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved. Styles and Greenfield Design Software Architecture Lecture 6.
Copyright © Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved. Software Connectors in Practice Software Architecture.
Foundations, Theory, and Practice Software Architecture Copyright © Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved. Basic.
CSCI 578 Software Architectures Exam #1 Review. Materials you are responsible for Chapters 1-7 in the text book All lecture material through intro to.
Software Architecture
Software Architecture
CS310 – Software Engineering
Software Architecture Lecture 3
Software Architecture
Algorithms and Problem Solving
CSCI 578 Software Architectures
CS310 – Software Engineering
Software Connectors.
Software Architecture Lecture 3
Software Architecture Lecture 2
Software Architecture Lecture 3
Designing Architectures
Software Architecture Lecture 3
Designing Architectures
Software Architecture Lecture 3
Software Architecture Lecture 7
Software Architecture Lecture 7
Designing Architectures
Software Architecture Lecture 3
Software Architecture Lecture 7
Designing Architectures
Software Architecture Lecture 6
Presentation transcript:

Copyright © Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved. Designing Architectures Software Architecture Lecture 4

Software Architecture: Foundations, Theory, and Practice How Do You Design? 2 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

Software Architecture: Foundations, Theory, and Practice Objectives Creativity u Enhance your skillset u Provide new tools Method u Focus on highly effective techniques Develop judgment: when to develop novel solutions, and when to follow established method 3

Software Architecture: Foundations, Theory, and Practice 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. 4

Software Architecture: Foundations, Theory, and Practice 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. The standard approach does not directly address the situation where system design is at stake, i.e. when relationship between a set of products is at issue.  As complexity increases or the experience of the designer is not sufficient, alternative approaches to the design process must be adopted. 5

Software Architecture: Foundations, Theory, and Practice Alternative Design Strategies Standard u Linear model described above Cyclic u Process can revert to an earlier stage Parallel u Independent alternatives are explored in parallel Adaptive (“lay tracks as you go”) u The next design strategy of the design activity is decided at the end of a given stage Incremental u Each stage of development is treated as a task of incrementally improving the existing design 6

Software Architecture: Foundations, Theory, and Practice Identifying a Viable Strategy Use fundamental design tools: abstraction and modularity. u But how? Inspiration, where inspiration is needed. Predictable techniques elsewhere. u But where is creativity required? Applying own experience or experience of others. 7

Software Architecture: Foundations, Theory, and Practice 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

Software Architecture: Foundations, Theory, and Practice A Few Definitions… from the Oxford English Dictionary Abstraction: “The act or process of separating in thought, of considering a thing independently of its associations; or a substance independently of its attributes; or an attribute or quality independently of the substance to which it belongs.” Reification: “The mental conversion of … [an] abstract concept into a thing.” Deduction: “The process of drawing a conclusion from a principle already known or assumed; spec. in Logic, inference by reasoning from generals to particulars; opposed to INDUCTION.” Induction: “The process of inferring a general law or principle from the observation of particular instances (opposed to DEDUCTION, q.v.).” 9

Software Architecture: Foundations, Theory, and Practice Abstraction and the Simple Machines What concepts should be chosen at the outset of a design task? u One technique: Search for a “simple machine” that serves as an abstraction of a potential system that will perform the required task u For instance, what kind of simple machine makes a software system embedded in a fax machine? At core, it is basically just a little state machine. Simple machines provide a plausible first conception of how an application might be built. Every application domain has its common simple machines. 10

Software Architecture: Foundations, Theory, and Practice Simple Machines 11

Software Architecture: Foundations, Theory, and Practice 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. 12

Software Architecture: Foundations, Theory, and Practice Separation of Concerns Separation of concerns is the subdivision of a problem into (hopefully) independent parts. The difficulties arise when the issues are either actually or apparently intertwined. Separations of concerns frequently involves many tradeoffs Total independence of concepts may not be possible. Key example from software architecture: separation of components (computation) from connectors (communication) 13

Software Architecture: Foundations, Theory, and Practice The Grand Tool: Refined Experience Experience must be reflected upon and refined. The lessons from prior work include not only the lessons of successes, but also the lessons arising from failure. Learn from success and failure of other engineers u Literature u Conferences Experience can provide that initial feasible set of “alternative arrangements for the design as a whole”. 14

Software Architecture: Foundations, Theory, and Practice Patterns, Styles, and DSSAs 15 Software Architecture: Foundations, Theory, and Practice; Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy; © 2008 John Wiley & Sons, Inc. Reprinted with permission.

Software Architecture: Foundations, Theory, and Practice Domain-Specific Software Architectures A DSSA is an assemblage of software components u specialized for a particular type of task (domain), u generalized for effective use across that domain, and u composed in a standardized structure (topology) effective for building successful applications. Since DSSAs are specialized for a particular domain they are only of value if one exists for the domain wherein the engineer is tasked with building a new application. DSSAs are the pre-eminent means for maximal reuse of knowledge and prior development and hence for developing a new architectural design. 16

Software Architecture: Foundations, Theory, and Practice Architectural Patterns An architectural pattern is a set of architectural design decisions that are applicable to a recurring design problem, and parameterized to account for different software development contexts in which that problem appears. Architectural patterns are similar to DSSAs but applied “at a lower level” and within a much narrower scope. 17

Software Architecture: Foundations, Theory, and Practice State-Logic-Display: AKA Three-Tiered Pattern Application Examples u Business applications u Multi-player games u Web-based applications 18 Software Architecture: Foundations, Theory, and Practice; Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy; © 2008 John Wiley & Sons, Inc. Reprinted with permission.

Software Architecture: Foundations, Theory, and Practice Model-View-Controller (MVC) Objective: Separation between information, presentation and user interaction. When a model object value changes, a notification is sent to the view and to the controller. So that the view can update itself and the controller can modify the view if its logic so requires. When handling input from the user the windowing system sends the user event to the controller; If a change is required, the controller updates the model object. 19

Software Architecture: Foundations, Theory, and Practice Model-View-Controller 20 Software Architecture: Foundations, Theory, and Practice; Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy; © 2008 John Wiley & Sons, Inc. Reprinted with permission.

Software Architecture: Foundations, Theory, and Practice Sense-Compute-Control 21 Objective: Structuring embedded control applications Software Architecture: Foundations, Theory, and Practice; Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy; © 2008 John Wiley & Sons, Inc. Reprinted with permission.

Software Architecture: Foundations, Theory, and Practice The Lunar Lander: A Long-Running Example A simple computer game that first appeared in the 1960’s Simple concept: u You (the pilot) control the descent rate of the Apollo-era Lunar Lander Throttle setting controls descent engine Limited fuel Initial altitude and speed preset If you land with a descent rate of < 5 fps: you win (whether there’s fuel left or not) u “Advanced” version: joystick controls attitude & horizontal motion 22

Software Architecture: Foundations, Theory, and Practice Sense-Compute-Control LL 23 Software Architecture: Foundations, Theory, and Practice; Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy; © 2008 John Wiley & Sons, Inc. Reprinted with permission.

Software Architecture: Foundations, Theory, and Practice Architectural Styles An architectural style is a named collection of architectural design decisions that are applicable in a given development context constrain architectural design decisions that are specific to a particular system within that context elicit beneficial qualities in each resulting system A primary way of characterizing lessons from experience in software system design Reflect less domain specificity than architectural patterns Useful in determining everything from subroutine structure to top-level application structure Many styles exist and we will discuss them in detail in the next lecture 24

Software Architecture: Foundations, Theory, and Practice Definitions of Architectural Style Definition. An architectural style is a named collection of architectural design decisions that u are applicable in a given development context u constrain architectural design decisions that are specific to a particular system within that context u elicit beneficial qualities in each resulting system. Recurring organizational patterns & idioms u Established, shared understanding of common design forms u Mark of mature engineering field. Shaw & Garlan Abstraction of recurring composition & interaction characteristics in a set of architectures Taylor 25

Software Architecture: Foundations, Theory, and Practice Basic Properties of Styles A vocabulary of design elements u Component and connector types; data elements u e.g., pipes, filters, objects, servers A set of configuration rules u Topological constraints that determine allowed compositions of elements u e.g., a component may be connected to at most two other components A semantic interpretation u Compositions of design elements have well-defined meanings Possible analyses of systems built in a style 26

Software Architecture: Foundations, Theory, and Practice Benefits of Using Styles Design reuse u Well-understood solutions applied to new problems Code reuse u Shared implementations of invariant aspects of a style Understandability of system organization u A phrase such as “client-server” conveys a lot of information Interoperability u Supported by style standardization Style-specific analyses u Enabled by the constrained design space Visualizations u Style-specific depictions matching engineers’ mental models 27

Software Architecture: Foundations, Theory, and Practice Style Analysis Dimensions What is the design vocabulary? u Component and connector types What are the allowable structural patterns? What is the underlying computational model? What are the essential invariants of the style? What are common examples of its use? What are the (dis)advantages of using the style? What are the style’s specializations? 28

Software Architecture: Foundations, Theory, and Practice Some Common Styles Traditional, language- influenced styles 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 memory u Blackboard u Rule based Interpreter u Interpreter u Mobile code Implicit invocation u Event-based u Publish-subscribe Peer-to-peer “Derived” styles u C2 u CORBA 29