Modeling Component-Based Software Architectures in Software Drawer 3 of 9 barcode in Software Modeling Component-Based Software Architectures

19.5.1 Modeling Component-Based Software Architectures using barcode printer for software control to generate, create code39 image in software applications. Visual Studio Development Language A software compo Code 39 Full ASCII for None nent s interface is speci ed separately from its implementation, and, unlike a class, the component s required interface is designed explicitly in addition to the provided interface. This is particularly important for architecture-centric evolution, because it is necessary to know the impact of the change to a component on all components that interface to it. This capability for modeling component-based software architectures is particularly valuable in product line engineering, to allow the development of kernel, optional and variant components, plug-compatible components, and component interface inheritance.

There are various ways to design components. It is highly desirable, where possible, to design components that are plug-compatible, so that the required port of one component is compatible with the provided ports of other components to which it needs to connect (Gomaa 2005a). Consider the case in which a producer component needs to be able to connect to different alternative consumer components in different product line members, as shown in Figure 19.

7. The most desirable approach, if possible, is to design all the consumer components with the same provided interface, so that the producer can be connected to any consumer without changing its required interface. In Figure 19.

7, Customer Interaction can be connected to any variant version of the Display Prompts component, such as English Display Prompts and French Display Prompts (which correspond, respectively, to the default English and alternative French features in Figure 19.3). The component interface is shown in Figure 19.

7, which speci es three operations, to initialize the component, read prompt text given the prompt Id, and add new prompt.. Architectural Design interface IDis Software 3 of 9 barcode playPrompt initialize (in language) read (in promptId, out promptText) addPrompt (in promptId, in promptText). variant output device interface CustomerInteraction RDisplayPrompt IDisplayPrompt variant output device interface CustomerInteraction RDisplayPrompt PDisplayPrompt I DisplayPrompt PDisplayPrompt variant entity FrenchDisplayPrompts IDisplayPrompt PDisplayPrompt default entity EnglishDisplayPrompts variant entity DisplayPrompts. Figure 19.7. Design of plug-compatible variant components Each default or variant component, such as English Display Prompts or French Display Prompts, that realizes the interface inherits the component interface from the abstract Display Prompts component and provides the language speci c implementation. It is possible for a component to connect to different components and have different interconnections such that in one case it communicates with one component and in a different case it communicates with two different components. This exibility helps in evolving the software architecture.

When plug-compatible components are not practical, an alternative component design approach is component interface inheritance. Consider a component architecture that evolves in such a way that the interface through which the two components communicate needs to be specialized to allow for additional functionality. In this case, both the component that provides the interface and the component that requires the interface have to be modi ed the former to realize the new functionality, and the latter to request it.

The above approaches can be used to complement compositional approaches for developing component-based software architectures.. 19.5.2 Software Architectural Patterns Software archite ctural patterns (see 12) provide the skeleton or template for the overall software architecture or high-level design of an application. These include such widely used architectures as client/server and layered architectures. Basing the software architecture of a product line on one or more software architectural patterns helps in designing the original architecture as well as evolving the architecture.

Most software systems and product lines can be based on well-understood overall software architectures; for example, the client/server software architecture is prevalent in many software applications. There is the basic client/service architectural pattern (see 15), with one service and many clients, but there are also many variations on this theme, such as the Multiple Client/Multiple Service architectural patterns and Broker patterns (see 16). Furthermore, with a client/service pattern, services can evolve with the addition of new services that are.

Copyright © . All rights reserved.