Software Reuse

 

Slide 1:

 

Title

 

Slide 2:

 

What is software reuse? : Development of reliable software using previously constructed and tested components.  Software reuse can cut costs, time, and effort if used properly.

 

Slide 3:

 

What can be reused? : List of 10 things that can be reused.  Virtually everything!

 

Slide 4:

 

What is the process of creating reusable components?

 

Domain Engineering:  The creation of and maintaining of a set of software artifacts that can be applied to existing or future application domains.  Made up of three activities :

1.      Analysis

2.      Construction

3.      Dissemination

 

Slide 5:

 

Analysis : What kind of domain are we working in (banking, aviation)?

               Steps :

1.      Define the domain to be investigated.

2.      Categorize the items extracted from the domain.

3.      Collect a representative sample of applications in the domain.

4.      Analyze each application in the sample.

5.      Develop an analysis model for the objects.

Also includes deciding what components are able to be reused.  This is done by creating domain characteristics for each component.

 

Slide 6:

 

Construction :  Actual development of the reusable components.

               Rules :

1.      Always follow standard software development practices (implementation hiding, functional independence).

2.      Standard Data : Identify filesystems, databases that are used.

3.      Standard Interface Protocols : Communication between modules, persons, etc.

4.      Program Templates : Architectual design of the program.

All of these rules create a strong framework that can be used.  Other components with similar frameworks are more likely to be subject to reuse by this component.

 

Slide 7:

 

Since these components are going to be communicating with each other, there are compatibility issues.  To prevent any mis-communication, some component standards have been created :

1.      OpenDoc – Developed by companies like IBM, Apple, and Novell.

2.      OMG./CORBA – Developed by the Object Management Group.  Uses an Object Request Broker to distribute the necessary component when needed.  Works like a client/server setup.

3.      OLE 2.0 – Developed by Microsoft.  COM objects, which use OLE, are the backbone of the windows operating systems and are quickly taking over areas of web development.  Collegeclub.com example.

 

Slide 8:

 

There is a set of four characteristics that these standards must have:

1.      Data Exchange Model – The most important part.  Allows for data to be exchanged either between component to component or human to component or resource to resource.

2.      Automation – Scripts or macros that can be used within the component.  Prepare the information to be sent to another component.

3.      Structured Storage – A file format (w/ index) that allows for data to be stored in a standard way.

4.      Underlying Object Model – Allows components developed in different programming languages or on different platforms to communicate over a network by providing an interface. 

 

Slide 9:

 

Need a way to describe what these components do so we can find them.  Classifications of reusable components :

1.      Enumerated Classification

2.      Faceted Classification

3.      Attribute-Value Classification

 

Slide 10:

 

Sample enumerated classification :   Uses a tree to classify by characterisitcs.   Suppose we have 2 open window calls, openWindow and sysWindow.   These are the leafs of the tree so we can traverse down the path we need to see if a component exists.  We can also see how resize would work with functions shrinkWindow, pullWindow, and stretchWindow to be reused.  Closing windows as of right no has no reusable components.

 

Slide 11:

 

Facet Classification :

Facets (or features) are identified and then prioritized.  Facets can be the component’s main function, data manipulated, or any of it’s other features.   Keywords are then assigned to the facets and they are entered into a database where they can be retrieved by a search.  Important thing to remember is that keywords are based on the priority of the characteristic.  This is much easier to add facets to previously constructed components than the enumerated classification.

 

Slide 12:

 

Attribute-Value classification is basically the same as facet classification without the priorities.   Generally provides for a broader search than facet classification.

 

Slide 13:

 

Why isn’t reuse more popular?

1.      No software reuse plan – Software reuse is not seen as a top priority in large companies.

2.      Tools for software reuse are not used – There are tools to help maintain libraries of reusable components and develop reusable components but they are not being used.

3.      Little training available – Most software engineering training only mentions the topic of reuse and does not treat it with much importance.

4.      Many believe reuse is not worth the trouble – To follow the guidelines of creating reusable components requires a little more time and effort.   In the long run however, it could save time and money!

5.      Model of development does not encourage reuse – Software companies with a development model rarely include a plan for reuse.

6.      Few incentives or rewards for reuse – Extra funding and time may be needed to produce reusable components leaving managers to request a component that is specific to the current application.  Managers don’t see the big picture.

 

Slide 14:

 

How should a company implement software reuse?

1.      Create a software reuse plan.  Very important to have this available to all the developers in the company.

2.      Require training in software reuse.  Not only previous training but on the job training should focus on reuse.  The developers must be caught up in the latest methods and tools.

3.      Purchase tools to help reuse.  Sniff+, by TakeFive software, is a tool that can help understand complex relationships within your code helping to make it more reusable.

4.      Encourage software reuse with incentives.  Managers have to motivate developers to use these techniques.  Perhaps an increased bonus on projects that have reusable components.

5.      Understand that more than just code can be reused.  Previous list.

 

Slide 15:

 

Is software reuse successful?  According to a survey conducted at Purdue University, small projects used reused components for 1 – 10% of their projects with a success rate of 71%.   Big projects used reused components for 10 – 25% of their projects with a success rate of 64%.  You be the judge.