Task: Search Asset
This task describes searching, discovering, browsing, and evaluating assets.
Disciplines: Asset-Based Development
Purpose

To find a Reusable Asset that fits specific criteria (e.g., context, features, platform, performance, etc.).

This task locates the asset and determines its applicability in the desired context, the application of the asset occurs in Task: Use Asset.

Relationships
RolesPrimary Performer: Additional Performers:
InputsMandatory:
    Optional:
      Outputs
        Main Description

        There are several styles of searching, some more structured than others.

        One structured approach to searching is to use values from category schemas. This approach implies that the assets in the repository have been classified according to the category schema. And then these values are available as filters that can be selected and combined with other filters to create a search query. This approach is useful if the category schema is well understood by the Asset Consumer.

        Searching with keywords is a little less structured and it does imply the keyword or something similar to it is found in the assets. When searching with keywords the matches may be found in the asset metadata or it may be found in the asset artifacts. Some Repositories provide fuzzy searching, taking into consideration misspelled words or similar words.

        A less structured style of searching is to use tags. With this approach the Asset Consumer associates their own word(s) with the asset; this allows the Asset Consumer to view one or more assets in the repository using their own words.

        One of the challenges for Asset Consumers conducting searches is to browse result lists as the number of assets in the repository grows. Reducing the number of clicks to arrive at a useful, not-overwhelming result list becomes a challenge.

        It is possible to combine multiple search techniques into a single search query. For example, an Asset Consumer may use some keywords, combined with several filters to create a search query, such as "claims" with the filters "Type: service" and "State: Approved". This means the Repository could search for assets of type Service, in the state of Approved, containing the term "claims" somewhere in the metadata or the asset artifacts.

        Another helpful technique to minimize search efforts is to leverage asset relationships. Creating coarse-grained assets which "contain" other assets, either by-value or by-reference, can dramatically cut down on the search time and effort. See Concept: Composing Solutions: Recipes to read more about coarse-grained assets.

        Steps
        Search for Asset

        Purpose: To search for an asset that fits specific criteria (e.g., context, features, platform, performance, etc.).

        The Asset Repository is searched for assets that match specific search criteria, both functional and non-functional.

        You may have a broad range of intentions when conducting a search. You may be looking for a specific asset to be used immediately, or may be looking for a class of capabilities as part of some discovery (i.e., determining what resources are available).  

        The challenge of searching through a large number of assets is that the hit rate is so high that the number of returned items is unmanageable. As humans we tend to be discouraged when we see a large number of hit results and therefore will not browse them.  Therefore, it is recommended that the search criteria be as specific as possible, thereby narrowing the range of possible assets. This can be managed through partitioned repositories wherein the search can be scoped to a particular repository or to section within the repository.

        Some examples of search criteria include:

        • Asset name, asset type, version, and so on:  Searching by asset name is a directed search.
        • Asset relationships (all assets related to a specific asset):  Supports the searching and retrieval of component systems that Jacobson, et. al., discusses.
        • Asset classification (asset context, descriptors, etc.):  Specify that you are looking for assets with a specific development context, including specific tools and versions of libraries, and so on.
        • Asset solution: Specify that you are looking for assets that contain asset artifacts of a specific type.

        Searching for assets can be highly dependent on subjective data. As such, a search engine that can go beyond actual word matching and look for synonyms, or can use semantic nets, or similar features will improve the hit rate. Also, the elements which are actually examined as part of the search is dependent on the implementation of the Asset Repository.  In some cases, only the external asset documentation is examined.  In other cases more advanced searching is performed, which includes searching the internal asset documentation, as well as the documentation for each of the Artifact: Asset Artifacts.

        After reviewing the list of assets that match the specific search criteria you may be able to do the following:

        • Decide that one of the assets will work, and this task ends.
        • Decide that none of the assets will work, stops searching, and this task ends.
        • Decide that none of the assets will work, but decides to re-execute the search with different criteria.
        • Decide that one of the assets may work but requires further investigation, and perform the step: Browse Asset.
        Browse Asset

        Purpose: To review an asset's description and proposed solution.

        Generally browsing an asset implies a less formal style of assessing the applicability of the asset. In most cases this means the Asset Consumer is navigating the asset overview and other introductory information. The Asset Consumer may browse the assets artifacts for general understanding.

        In this step, you take the search for the desired asset one step further by taking a look at the asset's metadata and contents.

        There are several purposes for browsing an asset.  One purpose may be largely informative -- to gain a general understanding of the asset and its capabilities.  Another purpose may be more specific -- to perform a fit analysis between the asset and a specific context.  The latter is discussed in the next step: Evaluate Asset.

        After reviewing the asset details, you may do one of the following:

        • Decide that the asset will work, and this task ends
        • Decide that the asset will not work, stops searching, and this task ends
        • Decide that the asset will not work, but want to re-execute the search with different criteria, so step: Search for Asset is re-executed correctly
        • Decide that the asset may work, but requires further investigation. Confirm the following: step: Evaluate Asset
        Evaluate Asset

        Purpose: To take a much more detailed look at the asset to determine if it meets specific criteria.

        In this step, you perform a fit analysis to see if the asset will work in the required context.  This analysis may involve applying the asset into a temporary location and validating its compliance with your requirements, including testing out variability point binding and customization ideas. For information on applying an asset, see Task: Use Asset. For more information on assessing the applicability of an asset, see Guideline: Assessing Asset Applicability.

        This step generally implies a more formal style of assessing the applicability of an asset. There are several key perspectives to evaluate, as listed below:

        • Evaluate Asset's Business Fit
        • Evaluate Asset's Organizational Fit
        • Evaluate Asset's Process Fit
        • Evaluate Asset's Engineering Fit
        Accept Asset

        Purpose: To "officially" accept the asset and capture usage recommendations.

        This acceptance defines a technical acceptance and does not override the necessary managerial acceptance needed, if any. You may take notes on recommendations for customizing the asset for the required context. This ensures that what was learned while performing the fit analysis is not forgotten and reduces duplicate effort between determining if the asset will work and making it work.

        The  Search Asset task produces largely intangible work products such as an understanding of an asset. It may also produce feedback, testimonials, and such (see Task: Provide Asset Feedback).

        More Information