Overview > Best Practices > Use Component Architectures
Best Practice: Use Component ArchitecturesComponent-based architecture with layers TopicsWhat Does Component Architecture Mean?Components are cohesive groups of code, in source or executable form, with well-defined interfaces and behaviors that provide strong encapsulation of their contents, and are, therefore, replaceable. Architectures based around components tend to reduce the effective size and complexity of the solution, and so are more robust and resilient. Architectural EmphasisUse cases drive the Rational Unified Process (RUP) end-to-end over the whole lifecycle, but the design activities are centered around the notion of system architecture and, for software-intensive systems, software architecture. The main focus of the early iterations of the process—mostly in the elaboration phase—is to produce and validate a software architecture, which in the initial development cycle takes the form of an executable architectural prototype that gradually evolves to become the final system in later iterations. By executable architecture, we mean a partial implementation of the system built to demonstrate selected system functions and properties, in particular those satisfying non-functional requirements. The purpose of executable architecture is to mitigate risks related to performance, throughput, capacity, reliability, and other "ilities", so that the complete functional capability of the system may be added in the construction phase on a solid foundation, without fear of breakage. For an introduction to the notion of architecture—most specifically software architecture—and an explanation of why this notion is crucial, see Concepts: Software Architecture. The RUP provides a methodical, systematic way to design, develop, and validate an architecture. We offer templates for architectural description around the concepts of multiple architectural views, and for the capture of architectural style, design rules, and constraints. The Analysis and Design discipline contains specific activities aimed at identifying architectural constraints and architecturally significant elements, as well as guidelines on how to make architectural choices. The management process shows how the planning of the early iterations takes into account the design of an architecture and the resolution of the major technical risks. See the Project Management discipline and all activities associated with the Role: Software Architect for further information. Architecture is important for several reasons:
Component-based DevelopmentA software component can be defined as a nontrivial piece of software, a module, a package, or a subsystem, all of which fulfill a clear function, have a clear boundary, and can be integrated in a well-defined architecture. It's the physical realization of an abstraction in your design. Components come from different places:
The first point in the preceding list exploits the old concepts of modularity and encapsulation, bringing those concepts underlying object-oriented technology a step further. The last two points in the list shift software development from programming software a line at time, to composing software by assembling components. The RUP supports component-based development in these ways:
|
|
Rational Unified Process |