# Presentation: 496674

## SEEDS Reuse Enablement Initiative:

**Process Definition**

## Roadmap of Deliverables

** Item is a deliverable in the FY03 Task Order*

## Contents of this Process Definition

**Includes:**
- Process guidelines defined by ESE community
- Process scope stated as high-level reuse activities
- Roles & responsibilities of participants
- Example scenario of reuse enablement
**Excludes:**
- Program goals, strategies, or specific reuse initiatives
- These are contained in the reuse strategic plan
- System/software development methodology
- These are too diverse to codify
- Each organization will have their own
- Leverage existing organizational processes as much as possible
- Specific policies
- ESE generally does not have authority to impose reuse related policies
- Each organization will have their own
- SEEDS will provide useful guidance that can be adopted

## Process Guidelines

**Start with a simple process and engage all stakeholders in refining and evolving it**
**Ensure that process is community-owned, non-prescriptive, scalable and practical**
**Emphasize directly enabling reuse over infrastructure activities**
**Leverage existing resources and infrastructure as well as lessons learned from other initiatives**
**Use competition and peer review rather than blanket policies to help ensure that reuse always serves the  ESE goals and does not become an end in itself**
**Ensure that process can be tailored to different environments**
**Remove barriers such as funding constraints, licensing issues, support concerns, security concerns, cultural issues, communication issues**
**Establish incentives to encourage reuse and writing for reuse**
**Facilitate sharing of knowledge and expertise**
***Refer to study report for more details on process guidelines proposed by the community***

## Reuse Process: Program Management View

## Process Scope: High-Level Reuse Activities

**Reuse Implementation Projects**
- Efforts that directly result in the publication or use of a reusable component
- Examples:
- Component generalization and documentation
- Reusable component integration pilots
**Reuse Incentive Activities**
- Awards and structural changes that directly & indirectly encourage reuse
- Examples:
- Small competitive or lottery-type monetary awards for submitting components to a repository, authoring a popular component, etc.
- Clauses in technology program grants/contracts that permit using funds saved through reuse for further R&D
**Outreach and Education Activities**
- Efforts that increase community awareness and understanding of benefits, best practices, tools, available components, etc.
- Examples:
- Conference workshops
- Informational Web sites and newsletters
**Support/Enablement Activities**
- Efforts that provide tools and mechanisms to enable reuse
- Examples:
- Develop a reference architecture to facilitate communication
- Implement (not develop) asset catalogs and open source community Websites
- Disseminate license templates that promote reuse
**Policy Change Activities**
- Efforts to reduce policy barriers to reuse
- Examples:
- Revise open source software policies

## Roles & Responsibilities

**ESE Program Office**
- Define and coordinate ESE initiatives
- Solicit, review, approve and fund proposals for ESE initiatives
- Fund SEEDS Program Office
- Approve policy changes
**SEEDS Program Office**
- Provide funding requirements and approaches for reuse initiatives to the ESE
- Review, rank, and approve initiatives proposed by reuse working groups
- Review and rank reuse implementation project proposals, and provide post-award guidance and performance reviews
- Implement program-level reuse incentives and conduct some outreach and education activities
**Reuse Integration Team**
- Support the SEEDS Program Office in the area of reuse
- Support review of initiatives proposed by reuse working groups
- Support outreach and education activities
**Reuse Working Groups**
- Recommend initiatives and activities to the SEEDS Program Office based on assessment of upcoming mission needs, available assets and external reuse initiates
- Recommend evaluation criteria for selection of reuse implementation projects
- Support incentive definition
- Develop and conduct education and outreach activities
- Assess policy change-related issues and support subsequent activities
- Contribute to support/enablement activities
**Community Reuse Implementers**
- Participate in ESE Reuse Initiatives
- Propose and perform reuse implementation projects
- Propose new code, generalize existing code, reuse and enhance existing code, etc
- Participate in outreach and education activities
- Publish papers, participate in workshops and seminars, advertise success stories, etc
- Contribute to support/enablement activities
- Provide tools, setup and customize infrastructure, etc
**Institutional Support Organizations**
- Support their own institutions in furthering a reuse initiative (Sample organizations: Software Engineering Lab, Human Resources, Legal Department)
- Contribute and institutionalize best practices
- Support outreach and education activities
- Assist with technology transfer and commercialization of software
- Define/provide supporting tools and processes
- Implement and enforce policy change

## Roles and Responsibilities Summary 

| Area
Role | General | Reuse Implemen-tation Projects | Reuse Incentives | Outreach & Education | Support / Enablement | Policy Change |
| --- | --- | --- | --- | --- | --- | --- |
| ESE Program Office | Approve, fund & coordinate initiatives | Fund projects | Fund SEEDS Program Office | Fund SEEDS Program Office | Fund SEEDS Program Office | Review and advocate policy changes |
| SEEDS Program Office | Approve & fund reuse initiatives and Working Groups | Evaluate proposals | Establish & fund incentives | Approve & fund activities | Approve & fund activities | Recommend and advocate  changes |
| Reuse Integration Team | Support SEEDS Program Office in the area of reuse | Guide & evaluate projects | Evaluate performance | Recommend & assist in activities | Recommend & assist in activities | Assess issues & recommend changes |
| Reuse Working Group | Propose initiatives | Recommend evaluation criteria | Recommend incentives | Recommend & perform activities | Recommend & perform activities | Assess issues & recommend changes |
| Community Reuse Implementers | Participate in initiatives | Propose & conduct projects | Receive incentives | Participate in activities | Use tools & methods | Benefit from policy change |
| Institutional Support Organizations | Contribute & institutionalize best practices | Provide guidance | Administer incentives | Support activities | Provide support tools | Approve / implement / enforce policy changes |

## Reuse Process: Operational Project View

**Software Assets**

**Tutorials/FAQs**

**Web Page**

**Incentive Funds**

**License Templates**

**Software Assets**

- Develop

**SEEDS Workshops**
**Online Forums**
**Newsletters**
**Conferences**

**Reference Architecture**

**Asset Directory**

**Collaboration Area (Foundry)**

**Suggestions/ Requests for additional components**

**Asset Repository **
**(Code + Artifacts)**
**(OSS only)**

- Participate

- Reference

- Register

- Submit/Re-release

- Lead/Participate

- Submit

- Categorize

- Participate

- Reference

- Search/Assess

- Reuse/Enhance/ Submit

- Participate

- Submit

- Support (along with other users)

- Solicit based on suggestions/requests

- Assess

- Evaluate/Summarize

**Value Added Services**
**Packaging**
**Distribution**
**Quality Assurance**
**Support**

**Evaluation Criteria for component selection**
**Documentation**
**Maturity **
**POC**
**Performance**
**Standards**

- Request Assets (IC&O only)

## Process Scenario: Lifecycle of a Reuse Initiative

***Assess Initiative***

***Perform Activities***

***Approve Activities***

***Rank Initiatives***

***Recommend Initiatives***

***Assess Context***

**Working group assesses reuse context**
- E.g., “Missions are not reusing software because there is no incentive to incur the risks of unsupported code.”
**Working group recommends initiatives**
- E.g., “Reduce risk of reusing unsupported code” and “Offset reuse risks with reuse incentives”
**SEEDS PMO prioritizes initiatives and approves related activities**
- E.g., “Fund cross-project support for key reusable assets” and “Assess the reusability of key assets”.
**ESE PMO incorporates initiatives into ESE initiatives and funding opportunities**
- E.g., Identify NRAs and CANs where proposals to assess reusability of ESE software assets could be solicited.
**SEEDS PMO approves activities**
- Directly or via proposal reviews depending on how funded
**Working group performs activities**
- E.g., Maintain list of assets with reusability ratings
**SEEDS PMO reviews performance metrics**
- E.g., “Perceived risk of using existing assets dropped 50%”.

## Background

## Definitions

**Reuse Initiative**
- Process aimed at achieving a specific reuse goal (such as making reusable assets available or better publicizing existing assets)
- Can be accomplished through a variety of activities
**Reuse Project/Activity**
- Effort aimed at supporting the execution of a reuse initiative
- Project/Activity categories
- Reuse implementation projects
- Reuse incentive activity
- Outreach and education activity
- support/enablement activity
- Policy change activity

## Why a SEEDS Reuse Process? 

**Reuse is important to realizing the goals of SEEDS**
- Reuse can reduce system development costs
- The existing large base of ESE software, system assets and expertise can be leveraged
- Reused artifacts and components require less development and testing
- Reference architectures can increase competition, improve development efficiency and enable an efficient market of components and services
- Reuse can improve flexibility and responsiveness to new missions, science and applications
- Smaller development efforts can be effectively coordinated & integrated through the reference architecture
- Assembly of new systems from reusable and tested commodity components shortens schedule
- Smaller efforts are able to respond more quickly
- Reuse can increase effective and accountable community participation in system development and operations
- Reuse enables development to be performed wherever expert resources are available
- Reuse facilitates leveraging ESE as well as larger community expertise to develop needed system or technology enhancements
- Reuse contributes to interoperability of independently development components and systems
**A process is needed to enable and incentivize reuse**
- Reuse across projects rarely happens by itself.
- A small amount of additional effort of funding may be needed to make software available outside the group that developed it
- Significant barriers (e.g. intellectual property  policies) may have to be removed or circumvented
- A customized process is needed to
- Account for ESE’s unique needs, culture, organizational structure and funding approaches
- Engage and support the community
- Avoid the common causes of failure in reuse initiatives
- Leverage existing resources, infrastructure as well as lessons learned from other initiatives
- Expert opinion of stakeholders in ESE community and assessment of potential benefits and costs indicate
- A process should be initiated to facilitate software reuse through improved clone & own and open source approaches
- A process should be initiated to develop a coarse-grained, notional reference architecture with concrete details in a limited set of functional areas

## References

**SEEDS Formulation Team Draft Recommendations Report, August 2002. Section 6 “Reuse and Reference Architectures” contains the motivation and community guidance for a reuse enablement process.  **
**Kavanaugh, D. "Improving Software Reuse with the Reuse Maturity Model," Object Expo, 1997.  Basis for BofA’s reuse-friendly development process, which includes a “Harvest-Refine-Publish cycle and a reuse analyst involved in development.  **
**Jacobson, I., M. Griss, and P. Jonsson. *****Software Reuse: Architecture, Process, and Organization for Business Success,***** Addison-Wesley, Harlow, England, 1997. Classic reuse text.  **
**IEEE P1517/D5, Draft Standard for Information Technology - Software Life Cycle Processes - Reuse Processes**