Software Architecture: the Next Step for Object Technology (PANEL)
Total Page:16
File Type:pdf, Size:1020Kb
Software 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 Software architecture 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 software design. 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