Pragmatic Architecture


Published on

Friday, March 19 - 1:00 p.m.
Presented By: Ted Neward

Ted Neward, delivers brass-tacks advice on how to make decisions regarding programming languages to use (Java, .NET, even FoxPro); architectural approaches to take (n-tier, client/server); user interface approaches to take (Smart/rich client, thin client, Ajax); and even how to communicate between processes (Web services, distributed objects, REST). Ted understands the goals of an application architecture
and why developers should concern themselves with architecture in the first place. In this session, he dives into the meat of the various architectural considerations available; the pros and cons of JavaWebStart, ClickOnce, Windows Presentation Foundation, SWT, Swing,
WinForms, Struts, WebForms, Ajax, RMI, .NET Remoting, JAX-WS, ASMX, Windows Communication Foundation, Windows Workflow Foundation, JMS, MSMQ, transactional processing, and more. The basic architectural discussion from the first part is, with the aid of audience
interaction, applied to a real-world problem, discussing the performance and scalability ramifications of the various communication
options, user interface options, and more.

Published in: Technology
  • Be the first to comment

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

Pragmatic Architecture

  1. 1. Neward & Associates Credentials Who is this guy? – Independent consultant, architect, mentor – Instructor, PluralSight ( – BEA Technical Director, Microsoft MVP Architect Pragmatic Architecture – JSR 175, 250, 277 EG member – Founding Editor-in-Chief, TheServerSide.NET – Author • Effective Enterprise Java (Addison-Wesley, 2004) • Effective .NET (Forthcoming) Ted Neward • Pragmatic XML Services (Forthcoming) • Pragmatic .NET Project Automation (Forthcoming) Neward & Associates • Server-Based Java Programming (Manning, 2000) • C# in a Nutshell (OReilly, 2003) • SSCLI Essentials (w/Stutz, Shilling; OReilly, 2003) – Papers at – Weblog at Objectives Agenda So you wanna be an architect… High-level ruminations … but you’re not sure what architecture means what is architecture? what is a software architect? … but you’re not sure what an architect does why does anyone care? … but you don’t want to lose the respect of your Architectural catalog developer friends & teammates (who are convinced a look at a collection of architectural elements that “architect” is Latin for “cannot code anymore”) intended as a “starting point” for concrete architectural discussions Architecture does have a purpose Pragmatic approach (and it’s not to provide retirement for cut through the bull, talk shop: how do we architect? programmers!) what are we producing? what does it do for us? Architecture Architecture The Dark Side of the Architecture ar—chi—tec—ture [áarki tèkchәr] noun 1. building design: the art and science of designing “Why I Hate Frameworks” and constructing buildings 2. building style: a style or fashion of building, especially one that is typical of a period of history or “Architecture Astronauts” of a particular place 3. structure of computer system: the design, structure, and behavior of a computer system, microprocessor, or system program, including the characteristics of individual components and how they Source: “Joel on Software” , Joel Spolsky interact © 2006 Neward & Associates. All rights reserved. This presentation is for informational purposes only. 1
  2. 2. Neward & Associates Architecture Architecture What defines the difference Pragmatic Architecture? between these two buildings? – goals – scope – complexity “Pragmatism urges us to look to the – materials consequences of what we do, which the – process discipline of architecture, infused with an – … more idealistic focus on intentions, frequently More importantly, how do we know when one resists.” “style” of building is more appropriate than another? Architecture Architects What do we expect of a “good” architecture? So then… what is an architect? – the “ities”: Integrity, Simplicity, Reliability, Extensibility, Maintainability, Modularity, Recoverability, Composability, Parsimony, Scalability, Security, Performability1, Longevity, and so on… and so on… and so on… – make it easy for developers to make “right” decisions (where “right” => “right for this project or system”) in other words, enable “correctness by default” or, rather, have developers using our architecture "fall naturally into the pit of success" 1 I know “Performability” isn’t a word; unfortunately for us, the word “Performance” doesn’t end in “ity”. Architects Architects An architect is someone who … Architects … – … defines architecture – understand – … gets paid more than “real” developers do – reassess – … focuses on issues that have nothing to do with real- – explore world problems – … thinks in terms of clouds, not code – … speaks with big words and Powerpoint slides – … has no real idea what they’re doing and has management completely fooled to that fact © 2006 Neward & Associates. All rights reserved. This presentation is for informational purposes only. 2
  3. 3. Neward & Associates Architects Architects Architects understand … Architects reassess … – goals – goals (go back to the “ities”) changing business climate changes goals – constraints – constraints Money changing business climate changes constraints Time – project’s progress against those goals Resources (developers, machines, etc) – project’s impact on the business Domain Abilities of the team members competitive advantage, users’ reactions, productivity, costs/benefits/ROI “A journey of a thousand miles always begins with a single step” --Ancient Chinese proverb “No plan ever survives first contact with the enemy” –Napoleon Bonaparte “A journey of a thousand miles doesn’t begin with a single step; it starts with the damn map” --Ted Neward Architects Architects Architects need to explore … The Three Kinds of Architects – new technologies – Infrastructure Architect “[responsible] for the design of the datacenter, – new methodologies deployment and maintenance of – new “isms” applications/services across the organization” – in short, determine the viability of new technologies – Enterprise Architect to fit the needs of current system(s) “concerned about the strategic vision of application and services within the organization” what changes would be necessary – Solution Architect prototype new technologies “responsible for the design of one or more analyze their impact within existing architecture applications or services within an organization, – NOTE: be careful of “The Coolness Trap” usually within the scope of a division” “cool” doesn’t mean “appropriate”… – (We’re talking mostly to the Solution Architect role) Source: “Three Kinds of Architects” , Simon Guest Architecture Catalog Patterns & architecture Technology-architectural decisions – isn’t architecture just judicious application of patterns? – is the jar full? – how about now? No—as it turns out, even in Alexander’s case directly, trying to use the patterns naïvely led to failure, not once, but twice – aren’t patterns in of themselves architecture? No—patterns help describe architectural elements, but they aren’t architecture in of themselves – so what do patterns do for us? Give us a lexicon, a glossary, by which to discuss systems at a higher-level of abstraction, so we can "Big" decisions will be about architecture constraints talk without getting bogged down in irrelevant Remaining decisions will create the tools your team uses details; that is, keep an appropriate level of scope for the forseeable future Source: © 2006 Neward & Associates. All rights reserved. This presentation is for informational purposes only. 3
  4. 4. Neward & Associates Catalog Catalog Architectural Elements Communication/Distribution – Communication/Distribution – Transport – Presentation/Interaction Over what medium does the communication travel? Examples: TCP, UDP, ICMP, HTTP, named pipes, – State Management filesystem, queues, and more … – Processing – Exchange – Resource Management How do we interact? – Tools Examples: request/response, solicit-notify, async, fire-and-forget, and more … – Format In what format does the data travel? Examples: XML, code, text, JSON, raw binary, serialized objects, and more … Catalog Catalog Presentation/Interaction State Management – style – Durable vs. Transient State Graphical state held across processing steps vs Console state held during processing None – Relational vs. Object vs. Hierarchical – implementation what is the “shape” of the data? Markup (HTML, Acrobat) – Context-based vs. Process-based state Code (WinForms, Flash) where is the transient state held? – perspectives User, Administrative, Reported, … – composite Aggregates multiple applications into one Based around a single style Catalog Catalog Processing Resource Management – Implementation – Locator/Registry Procedural/Imperative – Discovery Classes/Objects Declarative – Injected Rules – Concurrent/Parallel (SISD, SIMD, MISD, MIMD) – A priori Knowledge Divide and Conquer Recursive Data Pipeline/Pipes-and-Filters Event-based Coordination Master/Slave, Fork/Join Shared Data Shared Queue – Transactional © 2006 Neward & Associates. All rights reserved. This presentation is for informational purposes only. 4
  5. 5. Neward & Associates Catalog Application Tools Now that we’ve identified these elements… – General-purpose Languages Strongly-typed: C#, Java, C++, C, Pascal, … … how do we use them? Weakly-typed: Smalltalk, Jscript, Ruby, … – as elements to tease out during requirements analysis – Problem-specific Languages SQL, XQuery, XPath, XSLT, sed, awk, grep, VBA, games, – as elements to refer to during design Workflow, … – as elements to think about during refactoring – Code manipulation tools IDEs, instrumentation, static analysis, debugger, … – Software Factories & DSLs – Code generators – Libraries/Frameworks – Data formats XAML, XUL, HTML, resource files, … – Documentation Summary Questions Architecture is important: if it’s not defined explicitly, it will be defined implicitly – … and may not be something you’d like Architecture represents a “higher level” perspective than implementers typically think at, and therefore keeps an eye on different issues Architecture defines a “style” for the system, and as such answers some questions even before they’re asked Architecture, therefore, by its nature, is the definition of the high-level picture of software that’s difficult to refactor, and requires a bit more up-front thinking – even in agile projects that want to embrace YAGNI ? – note it’s not impossible to refactor architecture… just hard Resources Blogs – Simon Guest, “Three Kinds of Architects” – Joel on Software, by Joel Spolsky Web – SoftwareArchitectureIntro.PDF REST – Architectural Styles and the Design of Network-based Software Architectures (Roy Fielding, 2000, UC Irvine) – RESTWiki: © 2006 Neward & Associates. All rights reserved. This presentation is for informational purposes only. 5