Copyright © Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved. Software Architecture is Bogus Eric M. Dashofy February 8, 2011.

Slides:



Advertisements
Similar presentations
Copyright 2001, ActiveState. XSLT and Scripting Languages or…XSLT: what is everyone so hot and bothered about?
Advertisements

REST Introduction 吴海生 博克软件(杭州)有限公司.
Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
Architecture Representation
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.
Software Architecture Lecture 2
June 28 th – July 1 st 2006 Implementing Usability: Insights to improve your chances  CFUnited 2007.
Web Applications Development Using Coldbox Platform Eddie Johnston.
Building Enterprise Applications Using Visual Studio ®.NET Enterprise Architect.
Cloud Computing Lecture #7 Introduction to Ajax Jimmy Lin The iSchool University of Maryland Wednesday, October 15, 2008 This work is licensed under a.
CS 290C: Formal Models for Web Software Lecture 1: Introduction Instructor: Tevfik Bultan.
1 Computer Systems & Architecture Lesson 1 1. The Architecture Business Cycle.
The Software Product Life Cycle. Views of the Software Product Life Cycle  Management  Software engineering  Engineering design  Architectural design.
Computer Science 101 Web Access to Databases Overview of Web Access to Databases.
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.
By Bob Bunson  Simulation of software development project  Fictitious system from Concept to Code  Oriented around the.
Web Application Architecture: multi-tier (2-tier, 3-tier) & mvc
UNIT-V The MVC architecture and Struts Framework.
Computer Programming My Home Page My Paper Job Description Computer programmers write, test, and maintain the detailed instructions, called programs,
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 4 Web technologies: HTTP, CGI, PHP,Java applets)
Architecture Of ASP.NET. What is ASP?  Server-side scripting technology.  Files containing HTML and scripting code.  Access via HTTP requests.  Scripting.
AJAX Chat Analysis and Design Rui Zhao CS SPG UCCS.
UML Unified Markup Language Ziya Karakaya Atılım University, Computer Engineering
An Introduction to Software Architecture
Wyatt Pearsall November  HyperText Transfer Protocol.
Architecture-Based Runtime Software Evolution Peyman Oreizy, Nenad Medvidovic & Richard N. Taylor.
Lecture 19 Web Application Frameworks Boriana Koleva Room: C54
SOFTWARE DESIGN.
Basic Concepts Software Architecture. What is Software Architecture? Definition: – A software architecture is the set of principal design decisions about.
Scalable Web Server on Heterogeneous Cluster CHEN Ge.
Design engineering Vilnius The goal of design engineering is to produce a model that exhibits: firmness – a program should not have bugs that inhibit.
Software Architecture and Design Dr. Aldo Dagnino ABB, Inc. US Corporate Research Center October 23 rd, 2003.
Database Design and Management CPTG /23/2015Chapter 12 of 38 Functions of a Database Store data Store data School: student records, class schedules,
Chapter 10 Analysis and Design Discipline. 2 Purpose The purpose is to translate the requirements into a specification that describes how to implement.
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 05. Review Software design methods Design Paradigms Typical Design Trade-offs.
World Wide Web “WWW”, "Web" or "W3". World Wide Web “WWW”, "Web" or "W3"
Chapter 6 – Architectural Design Lecture 1 1Chapter 6 Architectural design.
Advanced Web Technologies Lecture #4 By: Faraz Ahmed.
Architecture View Models A model is a complete, simplified description of a system from a particular perspective or viewpoint. There is no single view.
Design Reuse Earlier we have covered the re-usable Architectural Styles as design patterns for High-Level Design. At mid-level and low-level, design patterns.
CSCE 315 – Programming Studio Spring Goal: Reuse and Sharing Many times we would like to reuse the same process or data for different purpose Want.
REST By: Vishwanath Vineet.
AJAX and REST. Slide 2 What is AJAX? It’s an acronym for Asynchronous JavaScript and XML Although requests need not be asynchronous It’s not really a.
Basic Concepts and Definitions
CS223: Software Engineering Lecture 13: Software Architecture.
Foundations, Theory, and Practice Software Architecture Copyright © Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved. Basic.
From Use Cases to Implementation 1. Structural and Behavioral Aspects of Collaborations  Two aspects of Collaborations Structural – specifies the static.
+ Informatics 122 Software Design II Lecture 13 Emily Navarro Duplication of course material for any commercial purpose without the explicit written permission.
Basic Concepts of Software Architecture. What is Software Architecture? Definition: – A software system’s architecture is the set of principal design.
From Use Cases to Implementation 1. Mapping Requirements Directly to Design and Code  For many, if not most, of our requirements it is relatively easy.
Presented by Alexey Vedishchev Developing Web-applications with Grails framework American University of Nigeria, 2016 Intro To MVC Architecture.
Software Architecture Lecture 3
Software Architecture
AJAX and REST.
Web Engineering.
Software Architecture Lecture 3
Software Architecture Lecture 3
Lecture 1: Multi-tier Architecture Overview
Design and Implementation
Software Architecture Lecture 3
Middleware, Services, etc.
Software Architecture Lecture 3
Chapter 5 Architectural Design.
Software Architecture Lecture 3
Web Application Development Using PHP
Presentation transcript:

Copyright © Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved. Software Architecture is Bogus Eric M. Dashofy February 8, 2011

Software Architecture: Foundations, Theory, and Practice is Bogus On Bogosity bogus adj. u 1. Non-functional. "Your patches are bogus." 2. Useless. "OPCON is a bogus program." 3. False. "Your arguments are bogus." 4. Incorrect. "That algorithm is bogus." 5. Unbelievable. "You claim to have solved the halting problem for Turing Machines? That's totally bogus." 6. Silly. "Stop writing those bogus sagas." bogosity boh-go's*-tee; n. u 1. The degree to which something is bogus. bogon boh'gon n. u 1. The elementary particle of bogosity (see quantum bogodynamics). from the Jargon File 1 1

Software Architecture: Foundations, Theory, and Practice is Bogus On Bogosity bogus adj. u 1. Non-functional. "Your patches are bogus." 2. Useless. "OPCON is a bogus program." 3. False. "Your arguments are bogus." 4. Incorrect. "That algorithm is bogus." 5. Unbelievable. "You claim to have solved the halting problem for Turing Machines? That's totally bogus." 6. Silly. "Stop writing those bogus sagas." bogosity boh-go's*-tee; n. u 1. The degree to which something is bogus. bogon boh'gon n. u 1. The elementary particle of bogosity (see quantum bogodynamics). from the Jargon File Special no-prize to anyone who can name the units with which bogosity is measured.

Software Architecture: Foundations, Theory, and Practice is Bogus Scope Not (completely) bogus: u The concept of software architecture u Good software design Bogus: u The “how things should be” perspective that has been developed and promulgated by those in the field of software architecture Strong model-based designs, visualization, analysis, architecture-based implementation…

Software Architecture: Foundations, Theory, and Practice is Bogus Questions to Explore Why is software architecture bogus? Is the bogosity of software architecture essential or accidental? Are there any parts of software architecture that are not bogus? Should you drop this class now?

Software Architecture: Foundations, Theory, and Practice is Bogus Discussion How many of you have built software? How many of you build models beforehand? u Sophisticated models? u Models that let you predict or prove properties of the software? u Models that can be automatically analyzed with tools? How many of you use architectural tools that makes the architecture explicit? How many projects have an explicit, verifiable architectural style?

Software Architecture: Foundations, Theory, and Practice is Bogus Why is software architecture bogus? Key thesis: we cannot do it fast enough to be useful Lack of practical benefits u Our most celebrated computer systems credit other things for their success u Extraordinarily successful systems seem to have terrible architectures u Nobody knows how to evaluate an architecture to learn anything useful Encourages navel-gazing u Spolsky’s “architecture astronauts” and the Hammer- Factory-Factory

Software Architecture: Foundations, Theory, and Practice is Bogus Why is software architecture bogus? (2) Middleware is all you need u Packages all the patterns and connectors you need in one convenient piece of software All software architecture tools are crap u Seriously, I’m not kidding

Software Architecture: Foundations, Theory, and Practice is Bogus Why is software architecture bogus? Key thesis: we cannot do it fast enough to be useful Lack of practical benefits u Our most celebrated computer systems credit other things for their success u Extraordinarily successful systems seem to have terrible architectures u Nobody knows how to evaluate an architecture to learn anything useful Encourages navel-gazing u Spolsky’s “architecture astronauts” and the Hammer- Factory-Factory

Software Architecture: Foundations, Theory, and Practice is Bogus Defining Software Architecture “The set of principal design decisions about a system.” u Why this, and why so broad? Comports with the assumption that every system has an architecture. Acknowledges the reality that architecture is more about what is important in a system and less about structure and abstract notions of “elements and form.” Provides a “quantum” of architecture in the form of a “design decision”  Slightly bogus: “design decision” left somewhat nebulous Lets us reason about architectures in terms of sets of these quanta  Lets us define architectural concepts and their relationships more rigorously than before

Software Architecture: Foundations, Theory, and Practice is Bogus Software Architecture and Set Theory An architecture composed of design decisions: some big, some small, some specific, some generic. Some connected through instantiation or consistency relationships.

Software Architecture: Foundations, Theory, and Practice is Bogus Software Architecture and Set Theory Extract a reusable set of more generic design decisions: an architectural style.

Software Architecture: Foundations, Theory, and Practice is Bogus Software Architecture and Set Theory “Stamp out” a related set of design decisions many times, parameterized, to solve a recurring problem: an architectural pattern.

Software Architecture: Foundations, Theory, and Practice is Bogus Software Architecture and Set Theory Select a subset of decisions organized around a concern: an architectural view (the concern becomes the architectural viewpoint). Concurrency-Related

Software Architecture: Foundations, Theory, and Practice is Bogus Software Architecture and Set Theory Write down (a subset of) design decisions: an architectural model. The language you write them down in is an architectural modeling notation.

Software Architecture: Foundations, Theory, and Practice is Bogus Software Architecture and Set Theory Provide read/write “user interfaces” to depict and interact with the model? Those are architectural visualizations.

Software Architecture: Foundations, Theory, and Practice is Bogus The Devil of Bogosity™ is in the Details There is tremendous variation in the content of the design decisions u Across projects within domains, across domains themselves So while I can talk rigorously about the concepts… u What can I do for architects facing the problem of design in the face of such variation?

Software Architecture: Foundations, Theory, and Practice is Bogus Beware Architectural Langoliers! Technology is moving faster than ever u This is not likely to change, and is actually likely to get worse: hyper-exponential change Building tools and methods and notations that make construction more efficient takes time and effort u From the definition, we know they are of limited horizontal use By the time we build even the most basic tools, will they even be relevant? u Are we building tools or software?

Software Architecture: Foundations, Theory, and Practice is Bogus Why is software architecture bogus? Key thesis: we cannot do it fast enough to be useful Lack of practical benefits u Our most celebrated computer systems credit other things for their success u Extraordinarily successful systems seem to have terrible architectures u Nobody knows how to evaluate an architecture to learn anything useful Encourages navel-gazing u Spolsky’s “architecture astronauts” and the Hammer- Factory-Factory

Software Architecture: Foundations, Theory, and Practice is Bogus It is a Mystery What is this? Where is it?

Software Architecture: Foundations, Theory, and Practice is Bogus Inside a Google Data Center Is this architecture? Is it software architecture? What is the software architecture of the sophisticated monitoring system? u Is there one?

Software Architecture: Foundations, Theory, and Practice is Bogus What is Google’s Software Architecture? Step 1: MapReduce, BigTable Step 2: Glue code Step 3: MASSIVE PROFIT “Google’s software architecture arises from two basic insights. First, we provide reliability in software rather than in server-class hardware, so we can use commodity PCs to build a high-end computing cluster at a low-end price. Second, we tailor the design for best aggregate request throughput, not peak server response time, since we can manage response times by parallelizing individual requests.” u --Barroso et al. Web Search for a Planet: The Google Cluster Architecture

Software Architecture: Foundations, Theory, and Practice is Bogus What about the Web? REST makes the Web successful! u Right? right? hello? Guiding principle: separation of resources from representation u How many Web developers keep this in mind while developing? u How often do we really see the same URL serving different representations of the same resource?

Software Architecture: Foundations, Theory, and Practice is Bogus What about the Web? (2) Five key REST constraints u 1. Client-server Servers do not store user state, right? u 2. Stateless communication Try browsing without cookies or iframes or AJAX u 3. Cacheable Straightforward optimization of HTTP/1.0 u 4. Layered system How many intermediate HTTP proxies do you use that are not your company’s mandated firewall? u (cont.)

Software Architecture: Foundations, Theory, and Practice is Bogus What about the Web? (3) Five key REST constraints (cont). u 5. Uniform Interface Identification of resources  What resource does identify? Manipulation of resources through these representations  Or, you know, completely separate web forms that hit a MySQL database… Self-descriptive messages  Syntactic, not semantic. Semantic descriptions required for… Hypermedia as the engine of application state  All the best Web applications are built as giant finite-state automata with hyperlinks representing explicit transitions from one state to the other, right?  How’s that back button working for ya?

Software Architecture: Foundations, Theory, and Practice is Bogus Why is software architecture bogus? Key thesis: we cannot do it fast enough to be useful Lack of practical benefits u Our most celebrated computer systems credit other things for their success u Extraordinarily successful systems seem to have terrible architectures u Nobody knows how to evaluate an architecture to learn anything useful Encourages navel-gazing u Spolsky’s “architecture astronauts” and the Hammer- Factory-Factory

Software Architecture: Foundations, Theory, and Practice is Bogus Let’s do a quick design exercise! Let’s design the architecture of a simple modern database-driven Web application!

Software Architecture: Foundations, Theory, and Practice is Bogus I’m guessing it looks like this… Server Browser RDBMS Some non-standard SQL variant that may or may not have triggers and stored procedures as part of the app code. No REST here at all. Crazy ORM layer that hides the fact that you have an RDBMS. Base language (maybe Java). Completely separate Web dialect of base language (JSP/EL/JSTL). “Framework” with novel configuration file languages (JSF/Spring). REST-breaking session manager to keep you from going crazy. HTML that doesn’t render right in all your browsers. CSS that definitely doesn’t render right in all your browsers. JavaScript that is only partially supported in some browsers. JQuery or DOJO or Prototype to keep you from going crazy. REST-breaking cookies, iframes, AJAX. URL-encoded or XML or JSON or custom types or any MIME type you can think of, really.

Software Architecture: Foundations, Theory, and Practice is Bogus Heroic Architects of the Web Dude making a phone book app at CERN Brendan Eich and whoever at Netscape decided that the best programming language to make every browser use was one that nobody had ever heard of. 1 u “I know only one programming language worse than C and that is Javascript.” –Robert Cailliau, the “fifth Beatle” of the WWW Lou Montulli, who invented Cookies u But did not even write a standard for 3 years… u And invented browser tracking, cross-site scripting hacks, cross-site request forgery hacks… 1 He did, however, make OOPSLA relevant for at least a dozen years as people tried to figure out how to optimize his monstrosity.

Software Architecture: Foundations, Theory, and Practice is Bogus Eclipse IDE

Software Architecture: Foundations, Theory, and Practice is Bogus Eclipse IDE (cont.) Uses the OSGI plug-in architecture u Each plug-in specifies explicit dependencies Each plug-in is a set of Java classes u The interface to a plug-in is usually all those classes u Pointers and objects are allowed to be passed across plug-ins creating an architectural style called “object soup” u Behavioral extensions implemented through an XML-based extension mechanism u Lazy loading constraint means plugin’s initial UI must be defined in XML But since this is inadequate, let’s invent a new language of conditionals, variables, boolean logic in XML

Software Architecture: Foundations, Theory, and Practice is Bogus What is driving modern software? Is it architecture or marketecture? u Increasingly, the market, not sound technical reasoning, influences the design of our systems There are consequences for this!  Spam  XSS attacks  XSRF attacks  Platform fragmentation  Purposeful integration difficulties  Ridiculously complex middleware systems

Software Architecture: Foundations, Theory, and Practice is Bogus Why is software architecture bogus? Key thesis: we cannot do it fast enough to be useful Lack of practical benefits u Our most celebrated computer systems credit other things for their success u Extraordinarily successful systems seem to have terrible architectures u Nobody knows how to evaluate an architecture to learn anything useful Encourages navel-gazing u Spolsky’s “architecture astronauts” and the Hammer- Factory-Factory

Software Architecture: Foundations, Theory, and Practice is Bogus Why do we make blueprints for buildings? To capture design decisions To communicate about them among stakeholders To determine if the building will be satisfactory to the new owners To determine if the building will meet code To determine if there are any problems that will derail construction To estimate the amount of materials and construction that are needed, which translates to cost

Software Architecture: Foundations, Theory, and Practice is Bogus Why do we make blueprints for software? To capture design decisions To communicate about them among stakeholders To determine if the software will be satisfactory to the new owners To determine if the software will satisfy constraints To determine if there are any problems that will derail construction To estimate the amount of effort and construction that are needed, which translates to cost

Software Architecture: Foundations, Theory, and Practice is Bogus Why is software architecture bogus? Key thesis: we cannot do it fast enough to be useful Lack of practical benefits u Our most celebrated computer systems credit other things for their success u Extraordinarily successful systems seem to have terrible architectures u Nobody knows how to evaluate an architecture to learn anything useful Encourages navel-gazing u Spolsky’s “architecture astronauts” and the Hammer- Factory-Factory

Software Architecture: Foundations, Theory, and Practice is Bogus Architecture Astronauts “When you go too far up, abstraction-wise, you run out of oxygen. Sometimes smart thinkers just don't know when to stop, and they create these absurd, all- encompassing, high-level pictures of the universe that are all good and fine, but don't actually mean anything at all.” -- Joel on Software

Software Architecture: Foundations, Theory, and Practice is Bogus Hammer Factory Factories “Yup. So we stopped selling those schematics and started selling hammer-factory-building factories. Each hammer factory factory is built for you by the top experts in the hammer factory factory business, so you don't need to worry about all the details that go into building a factory. Yet you still get all the benefits of having your own customized hammer factory, churning out your own customized hammers, according to your own specific hammer designs.” -- Joel on Software

Software Architecture: Foundations, Theory, and Practice is Bogus (Consider the source) Designer of Excel VBA Runs a company whose software is written in a proprietary language (Wasabi) that is run through a proprietary generator to generate ASP and PHP to target multiple platforms

Software Architecture: Foundations, Theory, and Practice is Bogus But he has a point… “All problems in computer science can be solved with another layer of abstraction…except too many layers of abstraction.” u How much abstraction is too much? u The architecture discipline rarely says “stop” u Intense investment and marketing in frameworks that don’t pan out Jini, JXTA, Microsoft Hailstorm… u “Not invented here” means many frameworks that have only superficial differences

Software Architecture: Foundations, Theory, and Practice is Bogus Why is software architecture bogus? (2) Middleware is all you need u Packages all the patterns and connectors you need in one convenient piece of software All software architecture tools are crap u Seriously, I’m not kidding

Software Architecture: Foundations, Theory, and Practice is Bogus Discussion Enumerate some middleware/frameworks you know!

Software Architecture: Foundations, Theory, and Practice is Bogus The Rise of Middleware Middleware and frameworks in general, rather than “software architecture,” increasingly dominate high-level software design u RPC: DCE, Courier, CORBA, COM/DCOM/COM+, RMI, XML-RPC, SOAP u Messaging: MQSeries, MSMQ, JMS, ESBs u Orchestration/Choreography: various ESBs u Web backend: Perl, Python, JSP+EL+JSTL, Genshi, Django, ClearSilver, Velocity, Struts, Seam, Pylons, ColdFusion, ASP, PHP, various CMSes, Spring, JSF, Ruby with and without Rails, Groovy + Grails… u Web frontend: JQuery, DOJO, GWT, YUI, Prototype

Software Architecture: Foundations, Theory, and Practice is Bogus Middleware and Architecture Middleware and frameworks induce architectural styles (Di Nitto and Rosenblum, 1999) u But not necessarily the style you want Middleware locks you in u Other accidental constraints limit the frameworks you can choose Cost, developer market, language support, availability of libraries… u Putting your own style on top of these systems is subtle and difficult The development of new middleware nearly paces our development of new software systems u How many times will one organization reuse a specific fw?

Software Architecture: Foundations, Theory, and Practice is Bogus Why is software architecture bogus? (2) Middleware is all you need u Packages all the patterns and connectors you need in one convenient piece of software All software architecture tools are crap u Seriously, I’m not kidding

Software Architecture: Foundations, Theory, and Practice is Bogus What tools do people actually use to capture architectures? Word, Excel, PowerPoint, Visio (Lots) Rational Rose, Rhapsody, other UML (Some) Others (System Architect, Enterprise Architect…) (A few) What value do these add?

Software Architecture: Foundations, Theory, and Practice is Bogus What tools should people use? Model checkers u Spin, Alloy, SMV But these are just abstract problem solvers now u High-fidelity simulators Which we still have to build as one-offs u Performance and comms analysis (Rapide-esque) But the models are more complicated than the code…

Software Architecture: Foundations, Theory, and Practice is Bogus What isn’t bogus? “First, great designs have conceptual integrity—unity, economy, clarity. They not only work, they delight, as Vitruvius first articulated.” –Fred Brooks, The Design of Design

Software Architecture: Foundations, Theory, and Practice is Bogus Conceptual Integrity The least-bogus concepts from software architecture are those that directly support conceptual integrity u Styles u Patterns u Parsimony u An appropriate level of abstraction These also require very little tooling, few start-up costs, and can be adapted most easily through refactoring

Software Architecture: Foundations, Theory, and Practice is Bogus Concluding Thoughts Software architecture needs a stronger focus on conceptual integrity: establishing, gauging, maintaining The other stuff has potential value but the cost:benefit ratio is out of whack Tools have high potential value but are expensive to implement and of limited use with low shelf-life u Doomed by hyper-exponential change? u Really adaptable tools would be awesome, but are rare Some bogosity essential, some accidental

Software Architecture: Foundations, Theory, and Practice is Bogus Should you drop this class? Only if you have already bought the book (new, not used) Arguments for: u We still don’t know how to teach software design But I have a feeling it’s all about conceptual integrity Arguments against: u You will learn about fundamentals of conceptual integrity u You may help drive us toward architecture instead of marketecture in the future