260 likes | 450 Views
Software Architecture – An Overview. The software architecture of a system is the composition of software components, the structures that interconnect them, and the rules by which they interact and integrate
E N D
Software Architecture – An Overview • The software architecture of a system is the composition of software components, the structures that interconnect them, and the rules by which they interact and integrate • Software architecture as a style and method of design or strategic policies and patterns that shape a system • Separation of architecture from application design
Where Do Architectures Come From? • Architectures are influenced by system stakeholders • Influenced by technical and organizational factors • Customers and end users (cost, performance, platform compatibility, security, modifiability, interoperability with other systems, etc.) • Developing organization. (immediate business, long term business, and organizational structure.) • Background and experience of the architects. • Technical environment (industry standard practices, prevalent SE techniques at the time of development.) • Architecture issues are orthogonal to system functionality or functional requirements.
Why is Software Architecture Important • Communication among stakeholders • Represents common high-level abstraction of a system • Early design decisions • Earliest point at which the system to be built can be analyzed • Carry weight that is essential to the cost and success of project • Transferable abstraction of a system • Key to extension, migration and evolution • Basis for large-scale reuse
Early Design Decisions • Defines constraints on an implementation • Implementation must be divided into prescribed components, which interact with each other in the prescribed fashion, and each component must fulfill its responsibility to the other components as dictated by the architecture • Dictates organizational structure • As the basis for work-breakdown structure • WBS in turn dictates unit planning, budget, scheduling, inter-team communication channels, configuration control, integration/testing procedures, etc.
Early Design Decisions - continued • Inhabits a system’s quality attributes • For large systems, quality attributes are increasingly satisfied in system structure and division of functionality, rather than in its algorithms and data structures • E.g., modifiability depends heavily on modularization, performance on volume and nature of communication between components, reusability on nature of coupling • Architecture alone cannot guarantee the functionality and quality required of the system
Early Design Decisions - continued • Predicting system qualities by studying its architecture • Makes it easier to reason about and manage change • Helps in evolutionary prototyping • Potential performance problems can be identified early in the product’s life cycle • The system is executable early on • Helps to reduce potential risk in the project early on
Elements of Good Architecture • Manage change and complexity • Adapt to system extensions • Minimize interdependencies among complex modules • Allow reasonable cost estimation
CORBA Architectural Advantage • Set clear distinction and coupling between enterprise architecture and application design (next slide) • Helps to separate application software from the underlying infrastructure • Location transparency • Dynamic binding • Abstraction of distributed computing environment • Separates interface from implementation, which allows architecture to be defined independent of how it is implemented • Together, the above allow developers to focus on architecture and business logic, and maintain separation of concerns
Still A Long Way To Go … • Current middleware products are becoming too huge, monolithic systems that are themselves almost the antithesis of a component-based system • To date, ORB implementations are not robust and performance is poor above 10K objects • When middleware products have a lifecycle of 6 months to a few years, how does one build applications with fifteen year lifecycle? How do you even migrate an application to new releases of the same middleware product?
More Roadblocks • Service as components? Cross vendor portability and cross ORB service are not solved • System developers and runtime administrators find it very difficult to resolve faults that originate with “black-box” components. • How to ensure system-wide reliability, performance, security, etc beyond single vendor ORB
Software Architecture and Composition • CORBA only addresses components, but does not have a standard way to specify connections, constraints, or patterns of interactions • How to insert system-wide non-functional properties into component software architecture • How do we go from the customer’s high-level description of property to specifications that can be mapped to code? • Can we support hard real-time Quality of Service?
Less Control In Development • “Buying” means less control on every aspect of a system’s development. • How can this loss of control be reconciled with our desire for quality? • Part of answer lies in the assertion that, for larger systems, quality lives primarily in the architecture • The other part of answer: One must take care to integrate components so that they don’t compromise the architecture and the qualities it helps to manifest
Architecture Mismatch • Not all components work together - even if they claim to • Components are often “almost” compatible, where “almost” is a euphemism for not • Components appear to work together - the assembled code compiles and even executes - but the system produces the wrong answer because the components don’t work together as expected • Components that were not developed specifically for your system may not meet all of your requirements • Worse, you may not know if they are suitable or not until your buy them and try them, because component interfaces are notoriously poor at specifying their quality attributes
What Should Be In Interface • Interface - assumptions that the components can make about each other • Interface = Provides + Requires (+ side affects) , or Syntax + Semantics • Unfortunately, this definition goes beyond what has become the normal concept of interface in current practice.
What Can You Do About Interface Mismatch • Avoid it by carefully specifying and inspecting the components for your system • Detect those cases you have not avoided by carefully qualification of the components • Repair those cases you’ve detected by adapting the components
Techniques for Repairing Interface Mismatch • Change the code: often not possible and desirable • Wrappers. • A form of encapsulation whereby some component is encased within an alternative abstraction • Clients access wrapped component services only through an alternative interface provided by the wrapper • Interface translation include: • Translating an element of a component interface into an alternative element • Hiding an element of a component interface • Preserving without change of an element of a component’s interface • CORBA IDL can be used to specify the new interface
Techniques for Repairing Interface Mismatch • Bridges • Will translate between some requires assumptions of an arbitrary component to some provides assumptions of some other arbitrary component • Key difference with wrapper: the repair code is independent of any particular component, must be explicitly invoked by some external agent, and is typically a transient process • Typically focus on narrower range of translation than wrappers do • E.g. bridge from postscript generator to PDF display
Techniques to Avoid Interface Mismatch • Disciplined approach to specifying as many assumptions about a component’s interface as is feasible • Assertions about the sufficiency of services • Assumptions about environment behavior • Assertions about implementability or resource requirements
Software Architecture in the Future • 1960s. Assembly languages, subroutines, semicolon as connectors • 1970s. Structuring of programs to achieve qualities beyond correct function. Data flow analysis, ER diagrams, info hiding. Modules as building blocks • 1980s. Module-based languages, information hiding, and associated methodologies crystallized into concept of objects. • 1990s. Object matures. Standard object-based architectures in terms of frameworks. Give standard vocabulary for components leading to new infrastructures, e.g. CORBA. Interchangeable components based on OLE. • What’s next?
Architecture and Legacy Systems • Goal. Making intelligent changes to a system in which an organization has a large investment • Determining the existing architecture of a legacy system • Determine the goal state of a re-engineered architecture • Developing a strategy to migrate the system to the new architecture • Migration may involves • re-engineering of parts of the system • wrapping of existing parts to work within a new infrastructure • completely replacing the existing system
Architecture Archaeology and Conformance • Many systems have no documented architecture at all • Architecture is represented in such a way that the relationship between the documentation and the actual system, particularly its source code, is unclear • Architectural representations are frequently out of phase with the actual system due to maintenance of the system without a similar effort to maintain the architectural representation • Serious problem in assessing architectural conformance - how do we what was designed is what was built?
Architectural Conformance Problem • Maintenance activities may alter architecture • How do we know maintenance operations are not eroding the architecture, breaking down abstractions, bridging layers, compromising information hiding, and so forth? • Underlying causes: • System has too many runtime relationships (data flow, control flow, code structure, etc) need to be maintained • Architecture represented in a system’s documentation may not coincide with any of these structures. It frequently describes some ad hoc combination of runtime structures • Tools for architectural extraction and conformance
Achieving an Architecture • Plan for quality attributes • Having meaningful and quantifiable definitions of various qualities • Creating or selecting an architecture based on a set of functional and quality requirements • Understanding and measuring tradeoffs involved in any architectural decision
Understanding Quality Attributes • What does “modifiability” mean? • Fundamental problem is lack of suitable models for discussing them. • Exception: performance can be discussed, analyzed and measured based on resource availability and resource consumption
Creating and Selecting an Architecture • Major research area: quantitative architecture evaluation • Understanding relationship between requirements and architecture - how a system is “driven” into a certain architectural style family. • Expected results: • Taxonomy of systems’ problem spaces • Taxonomy of systems’ context spaces • Taxonomy of systems’ solution spaces