Architecture: The Next Step for Object Technology (PANEL)

Bruce Anderson, University of ESSPX (moderator) Mary Shaw, Carnegie-Mellon University Larry Best, American Management Systems Kent Beck, First Class Software

What is the next step for you? Progress comes Abstract from taking aware steps, but what steps are those? Architectures are the structuring paradigms, styles They could be in attempting to discover and and patterns that make up our software systems. catalogue architectures; creating awareness of this They are important in many ways: they allow us to level of product envisioning; doing design more talk usefully about systems without talking about consciously; finding ways of describing systems; their detail; a knowledge of them gives us design consolidating legacy code; abandoning legacy code; choices; attention to this level can make systems and making new software lifecycles. families of systems have the non-functional What is the next step for the community? Are there properties we want, especially changeability. ways to work that go beyond projects and Each panelist will address the following issues: companies? Will there be focus on the community,

l What is architecture? which suggests cooperation, learning, divergence

l What is the value you have had so far from and empowerment; or on the marketplace, which this concept? suggests competition, confidentiality, convergence

l What is the next step for you? and dependence?

l What is the next step for the community? 2 Mary Shaw 1 Background is concerned with the What is architecture? We all have experience of organization of software systems: the selection of systems of great conceptual clarity and integrity. components from which they are composed, the Such systems are, relative to their functionality, more interactions among these components, the easily understood and modified than others. We composition of interacting components into take this simplicity to be an expression of a powerful progressively larger subsystems, and the overall architecture. But note that we do not have to have a patterns that guide these compositions. It is definition of architecture. Like health or quality, we concerned not only with the system structure, but can reach a productive shared understanding for the also with functionality, performance, design, purpose at hand without making an all- selection among alternatives, and comprehensibility. encompassing definition. What such understandings have been useful? The word “architecture” is used in a number of different ways. For example, we may speak of the What is the value you have had so for from this architecture of a particular system, by which we concept? Any value ought to include the more cost- mean the details of the design of that particular effective creation of software-based artefacts, but system. We may speak of an architecture, or an what are the cost drivers? Is the value in having architectural style, by which we mean the pattern that more design choices? greater valuing of knowledge? guides the selection and composition of components longer-term design processes? faster learning? better and interactions for a class of similar systems, such communication between projects? reusable as pipe-and-filter systems or object-oriented components? constraint and configuration systems. Or we may speak simply of architecture, by languages? more predictable development paths? something else.7 ail of the above?

356 which we mean the systematic study of system-level The community needs most to become more . ecumenical - to acknowledge that different architectures match different problems. This will The concept of software architecture, or rather its allow codification of existing folklore about detailed elaboration, is allowing us to move from architectural design strategies. It will also provide a folklore toward organized models and theories for way to understand, perhaps even to define, the system organization. Software designers have used domain-specific architectures that are the subject of box-and-line diagrams for many years to describe considerable current attention. the overall organization of their systems. These diagrams evidently communicate useful information, 3 Larry Best because they are commonly used. However, their notation and labeling are idiosyncratic, informal, Architecture has multiple aspects, including: and imprecise. People regularly tell me anecdotes - Components and frameworks. Things that are about how our explicit (but still informal) architected (buildings and networks, for example) description of common architectural patterns help seem to consist of component alternatives with them understand past events that were previously standard interactions that are defined within mysterious. conceptual frameworks. For about five years I have been concentrating on - Focus on product versus process. Architects identifying, classifying, and interpreting the range of seem to spend much more time understanding architectural patterns in common use. The theme of product possibilities than the actual process of this work has been diversity: widespread claims to creation. This is in contrast to the traditional focus the contrary, no single architecture serves all needs; of software developers on tools, language, and conversely, different applications are best served by methodology - process rather than product issues. different architectures. - Systematic accumulation of product The development of a good theory of software experience. Brownowski describes how the Masons architecture will: originated as a group of cathedral architects who - provide software developers with the pooled their hard-won expertise on what designs intellectual building blocks for designing new worked. This pooling eventually evolved into the systems in principled ways using well-understood extremely systematic body of product knowledge we architectural paradigms. see today. Perhaps a mechanism for accumulating and organizing software product experience is - show how formal notations and models can similarly important, especially as software be used to characterize and reason about a system applications become larger, more complex, and design. technologically diverse. - familiarize software developers with concrete - Architectural methodology. Assembling examples of actual system architectures that can applications from established components as serve as models for new designs. opposed to crafting unique applications from My immediate plans include developing a taxonomy scratch has some profound methodological of architectural styles, devising a model to explain implications extending to the most basic paradigms the abstractions that govern inter-module for software development. interactions, designing and constructing a notation I have both experienced and witnessed profound and tool that will support software designed in benefits to an architectural approach to application different architectural styles, and codifying design software development, primarily the benefits one strategies for selecting appropriate architectures. would expect from large-scale architectural (as

357 opposed to archaeological) reuse. Architectural - Circular; what architects do. understanding gives developers a common That last one has a ring of truth in it for me. Give a terminology when discussing their product, enables problem to a programmer and they will solve it, and the distillation of generic design issues from should be able to explain the benefits of their application specifics, and eventually leads to solution. Give the same problem to an architect, and availability of reusable components to support you will receive not just a solution and its benefits, generic application requirements. The bottom-line but the costs as well - it’s impact on the rest of the benefits I have personally seen include greatly system, resource availability, and the schedule. Given reduced cycle times and user problems and greatly this, I can define architecture as a fit of problem to increased productivity and user satisfaction. resources satisfying functional, financial, and As Director of the Application Architecture Lab for aesthetic constraints. the AMS Center for Advanced Technologies, I am I passionately believe in the micro-architectures participating in a significant extension of our fifteen called patterns and their ability to evolve what I am years background with architectural approaches to calling architectures from problems in a multitude application development. My part of this effort is of small steps. prototyping how to present to users the interactions among a number of key generic software The one place I consistently use architecture is in components, components that include managers for my consulting practice. The first test I apply is workflow, data interchange, consultation, search, whether the staff can explain me system to me in 3-5 representation, etc., as well as various generic objects, If they can’t, there is no explicit architecture. business domain objects. I am also exploring the More often than not these projects are in trouble. importance of conceptual frameworks and When I facilitate group designs, I look for the systematically accumulated software product emergence of an architecture as an important step in knowledge to architectural reuse. the maturation of the design. Before the architecture The 00 community is starting to recognize mat appears, everyone is edgy, trying to hold too many objects and components are not the same thing. This details in their minds at one time. At some point, is an essential step towards widespread recognition someone says, “Oh, I see! The whole system boils of the importance of architectural approaches to down to one of these talking to any one of those, application software development under the object using any one of these things over here for storage paradigm. or communication.” At that moment, the tension \ goes out of the room. Everyone has been able to 4 Kent Beck discard a host of details elaborating the workings of the subsystems. They can afford to only understand I can’t any more think of a single definition for the details of the parts they will be responsible for, architecture. How about: I need to get better at writing patterns, making them - Post hoc; how you explain a working system wider and more active, and I need to articulate the - Academic; a characteristic relationship relationship I see between patterns and architectures. between entities in a system. I also need to explain why architecture can safely be - Cynical; a word coopted by programmers to allowed to grow from a design, rather than being justify outrageous salaries by putting it on their forced on it in the beginning. business cards. We need to understand patterns better. It is only - Reductionist; what remains when you can’t when a pattern comes alive, becomes generative, take away any more objects and still understand the when it both describes a valuable situation and system.

358 creates it in context, that it is a compelling shared Researchers can never produce the required results “word” in the “vocabulary” of designers. while their work is separated from practice. Practitioners can never reap the full potential of We need to catalog and communicate architectures. change if they leave things to researchers. In a If the emergence of an architecture is as important design-based domain like there as I have stated, recognizing them or recognizing is a large quantity of experiential knowledge, of when there isn’t one is a critical part of design. which artistry is part, and this is itself subject to 5 Arthur N. Other research, to development and to increased understanding. The key activity here is to reflect on Architecture is to be understood in terms of the practice as it is going on, to “do” and to “look at the experience of being an architect, because making doing” and to “see the done”. This requires architectures is a uniquely human activity. Greater awareness and maturity on the part of practitioners technical understanding of paradigms, increased and researchers, and cooperation between them. knowledge of components and computational Despite me sober language, these are revolutionary mechanisms, improved design processes - all these provide a sounder platform for the exercise of ideas. We are proposing to conflate training, researching and doing; to move from “technology creative artistry, not a replacement for it. transfer” to “research integration” and to talking not “Architecture” is a word mat legitimises a certain about “harnessing” but “making”. kind of talk in the software system business: “wasting extra time on design” moves to “clarifying 6 Biographies the architecture”; “boondoggling with that young Bruce Anderson, University of Essex. Bruce is a guy from the other division” becomes “mentoring an researcher, teacher and consultant. He led the apprentice architect”; “fooling about with Architecture Handbook workshops at OOPSLA in PageMaker” is now seen as “augmenting our 1991 and 1992, and has worked in industry on the divisional Architecture Notebook”. The value (and role of architecture in me software process. the danger) is in the emphasis on this more powerful Mary Shaw is a professor at Carnegie-Mellon level of thinking, working and discussing. University. Mary is well-known in the academic A handbook is an expression of the knowledge, community, and more widely via her involvement at understanding and agreement of a professional the SEI, for her work on software engineering community. There is currently no handbook of education, and on software architecture. software architecture available, because at the Larry Best is director of American Management moment there is no universal, or even large, Systems’ Application Architecture Lab. Larry has community of software architects. By attempting to been involved in large-scale information processing write a handbook before it is time we can for more than 15 years, and is the author of experiment with both exploring technical ideas, and “Application Architecture” (Wiley 1990). with community-building. The Architecture Kent Beck, First-Class Software. Kent is a happy Handbook project does just this. hacker, promoter of design excellence, and Our community is still split: practitioners often think innocent-looking killer of naive ideas about software mat researchers have all the answers, and become systems, architecture and patterns. angry and disappointed when ideas don’t work out Arthur N. Other, Alternative Ideas Inc Arthur is quickly; but also practitioners often think that a placeholder for the as-yet unknown fourth researchers have no answers at all, and become member of me panel. Arthur may or may not angry and disappointed when me research present the views given above. community cannot help them with, or even appreciate, their very real concerns.

359