| <?xml version="1.0" encoding="UTF-8"?> |
| <!DOCTYPE html PUBLIC "-//W3C/DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd"> |
| <!-- VERSION rmc:7.1.0 --> |
| <html xmlns="http://www.w3.org/1999/xhtml"> |
| <head> |
| <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> |
| <!-- START NON-TRANSLATABLE --> |
| <title>\openup_basic\guidances\concepts\component.xmi</title> |
| </head> |
| <!-- WARNING: do not modify the generated comments in this file below this line. They are used as markers for the import process. --> |
| <body> |
| Element Name: component.xmi<br/><br/> |
| <!-- END NON-TRANSLATABLE --> |
| <br/><br/><br/> |
| <!-- START NON-TRANSLATABLE --> |
| Attribute: presentationName<br/><br/> |
| <!-- END NON-TRANSLATABLE --> |
| <!-- START:presentationName,_0YP18MlgEdmt3adZL5Dmdw CRC: 3406767092 -->Component<!-- END:presentationName,_0YP18MlgEdmt3adZL5Dmdw --> |
| <br/><br/><br/> |
| <!-- START NON-TRANSLATABLE --> |
| Attribute: briefDescription<br/><br/> |
| <!-- END NON-TRANSLATABLE --> |
| <!-- START:briefDescription,_0YP18MlgEdmt3adZL5Dmdw CRC: 4006056148 -->An encapsulated part of a system that is, ideally, a nontrivial, nearly independent, and replaceable part of a system that fulfills a clear function in the context of well-defined architecture.<!-- END:briefDescription,_0YP18MlgEdmt3adZL5Dmdw --> |
| <br/><br/><br/> |
| <!-- START NON-TRANSLATABLE --> |
| Attribute: mainDescription<br/><br/> |
| <!-- END NON-TRANSLATABLE --> |
| <!-- START:mainDescription,_TZiasMM1EdmSIPI87WLu3g CRC: 3970348652 --><p align="left"> |
| The software industry and literature use the term <strong>componen</strong>t to refer to many different things. It is |
| often used in the broad sense to mean a constituent part. It is also frequently used in a narrow sense to denote |
| specific characteristics that enable replacement and assembly in larger systems. |
| </p> |
| <p align="left"> |
| Here. we use <em>component</em> to mean <strong>an encapsulated part of a system</strong> that is, ideally, a |
| nontrivial, nearly independent, and replaceable part of a system that fulfils a clear function in the context of |
| well-defined architecture. This includes two types of components: |
| </p> |
| <ul> |
| <li> |
| <div align="left"> |
| <p> |
| <strong>Design component.</strong> A significant encapsulated part of the design that includes design |
| subsystems and, sometimes, significant design classes and design packages. |
| </p> |
| </div> |
| </li> |
| <li> |
| <div align="left"> |
| <p> |
| <strong>Implementation component.</strong> A significant encapsulated part of the implementation, generally |
| code that implements a design component. |
| </p> |
| </div> |
| </li> |
| </ul> |
| <p align="left"> |
| Ideally, the design reflects the implementation; therefore, you can simply refer to <em>components</em>, with each |
| component having a design and an implementation. |
| </p> |
| <h4 align="left"> |
| Component replaceability |
| </h4> |
| <p align="left"> |
| In UML terminology, components should be replaceable. However, this may mean only that the component exposes a set of |
| interfaces that hide an underlying implementation. |
| </p> |
| <p align="left"> |
| There are other, stronger, kinds of replaceability: . |
| </p> |
| <div align="left"> |
| <ul> |
| <li> |
| <p> |
| <strong>Source file replaceability:</strong> If two classes are implemented in a single source code file, |
| then those classes cannot usually be separately versioned and controlled. However, if a set of files fully |
| implements a single component (and no other component), then the component source files are replaceable. |
| This characteristic makes it easier to use version control, to use the file as a baseline, and to reuse the |
| source file. |
| </p> |
| </li> |
| <li> |
| <p> |
| <strong>Deployment replaceability:</strong> If two classes are deployed in a single executable file, then |
| each class is not independently replaceable in a deployed system. It is desirable for larger-granularity |
| components to be replaceable during deployment, which allows new versions of the component to be deployed |
| without having to rebuild the other components. This usually means that there is one file or one set of |
| files that deploy the component, and no other component. |
| </p> |
| </li> |
| <li> |
| <p> |
| <strong>Run-time replaceability:</strong> If a component can be redeployed into a running system, then it |
| is referred to as <em>run-time replaceable</em>. This enables you to upgrade software without loss of |
| availability. |
| </p> |
| </li> |
| <li> |
| <p> |
| <strong>Location transparency:</strong> Components with network-addressable interfaces are referred to as |
| having <em>location transparency</em>. This allows components to be relocated to other servers or to be |
| replicated on multiple servers to support fault tolerance, load balancing, and so on. These kinds of |
| components are often referred to as <em>distributed</em> or <em>distributable</em> components. |
| </p> |
| </li> |
| </ul> |
| </div> |
| <h4 align="left"> |
| Component instantiation |
| </h4> |
| <p align="left"> |
| A component may or may not be directly instantiated at run time. |
| </p> |
| <p align="left"> |
| An indirectly instantiated component is implemented, or realized, by a set of classes, subcomponents, or parts. The |
| component itself does not appear in the implementation; it merely serves as a design that an implementation must |
| follow. The set of realizing classes, subcomponents, or parts must cover the entire set of operations specified in the |
| provided interface of the component. The manner of implementing the component is the responsibility of the implementer. |
| </p> |
| <p align="left"> |
| A directly instantiated component specifies its own encapsulated implementation. It is instantiated as an addressable |
| object, which means that a design component has a corresponding construct in the implementation language; therefore, it |
| can be referenced explicitly. |
| </p><!-- END:mainDescription,_TZiasMM1EdmSIPI87WLu3g --> |
| </body> |
| </html> |