REUSE-Re-Engineering The Software Process By Venkat Praveen Medikonda.

14
REUSE-Re- REUSE-Re- Engineering The Engineering The Software Process Software Process By By Venkat Praveen Medikonda Venkat Praveen Medikonda

Transcript of REUSE-Re-Engineering The Software Process By Venkat Praveen Medikonda.

Page 1: REUSE-Re-Engineering The Software Process By Venkat Praveen Medikonda.

REUSE-Re-Engineering REUSE-Re-Engineering The Software ProcessThe Software Process

ByByVenkat Praveen MedikondaVenkat Praveen Medikonda

Page 2: REUSE-Re-Engineering The Software Process By Venkat Praveen Medikonda.

Software ReuseSoftware Reuse

Software Reuse is the process of creating software systems from predefined Software Reuse is the process of creating software systems from predefined softwaresoftware

components. This practice enables us to assemble new programs from components. This practice enables us to assemble new programs from existing existing

components. components.

Two basic process of software reuse are: Two basic process of software reuse are: The systematic development of reusable components and The systematic development of reusable components and The systematic reuse of these components as building blocks to create new The systematic reuse of these components as building blocks to create new

systems. systems.

The positive features of software reuse are: The positive features of software reuse are: Increase software productivity Increase software productivity Shorten development time Shorten development time Develop software with fewer people Develop software with fewer people Reduce software development and maintenance costs Reduce software development and maintenance costs Produce more standardized and better quality software Produce more standardized and better quality software

Page 3: REUSE-Re-Engineering The Software Process By Venkat Praveen Medikonda.

Rethinking Software DevelopmentRethinking Software Development

Traditional methods of software development, cannot meet the ever-growing demand Traditional methods of software development, cannot meet the ever-growing demand for more software systems delivered in shorter span with low cost.for more software systems delivered in shorter span with low cost.

Software development needs to be re-engineered with software reuse approachSoftware development needs to be re-engineered with software reuse approach

Here software is developed from predefined, standardized, interchangeable software Here software is developed from predefined, standardized, interchangeable software components. .components. .

Software reuse is the best answer to the software crisisSoftware reuse is the best answer to the software crisis

Page 4: REUSE-Re-Engineering The Software Process By Venkat Praveen Medikonda.

Software Reuse Paradigms:

The reasons why software reuse often fails to work in practice are

There is no management commitment or support Cost of reuse is too high Code reuse is more trouble then it is worth Current tools do not support reuse Management is not convinced of the business value of reuse Reward and recognition programs are counter to reuse

Similarity of Software Systems:

Systems within the same work or application area have great deal of similarity. Comparative analysis show 60% to70 % similarity across software systems. This includes code, design, functional and architectural similarities. Majority of each new application built could be assembled from predefined

reusable components.

Page 5: REUSE-Re-Engineering The Software Process By Venkat Praveen Medikonda.

CommonalityCommonality

Commonability means that the same software components recur across systems or within one Commonability means that the same software components recur across systems or within one systemsystem

Commonalty occurs at all levels of system abstraction ,code components,design,requirements etcCommonalty occurs at all levels of system abstraction ,code components,design,requirements etc

Common componentCommon component: is a component which is used repeatedly within one system or in multiple : is a component which is used repeatedly within one system or in multiple systems or in multiple versions/implementations of the same system.systems or in multiple versions/implementations of the same system.

Commonality analysis:Commonality analysis: Commonality analysis is a process of identifying common components across a Commonality analysis is a process of identifying common components across a

set of existing or future systems. set of existing or future systems.

purpose:purpose: is it advantageous to develop reusable components and in particular which is it advantageous to develop reusable components and in particular which reusable components to be used in creation and maintenance of systems. reusable components to be used in creation and maintenance of systems.

commonality analysis is a combination ofcommonality analysis is a combination of

top-down process top-down process andand bottom-up processbottom-up process

Page 6: REUSE-Re-Engineering The Software Process By Venkat Praveen Medikonda.

Top-Down ProcessTop-Down Process

Studies future systems for the domain its objective is to determine the percentages of future Studies future systems for the domain its objective is to determine the percentages of future system components that are common. system components that are common.

Potential commonalities in future systems can be identified by comparing:Potential commonalities in future systems can be identified by comparing: System requirements and priorities of system requirements System requirements and priorities of system requirements System behavior/functions System behavior/functions Software architectures Software architectures Technology (supporting hardware and software)Technology (supporting hardware and software)

Bottom-Up ProcessBottom-Up Process

Studies examples of existing systems in the domain to identify common components.Studies examples of existing systems in the domain to identify common components.

To identify common components in existing systems, compare systems in term of To identify common components in existing systems, compare systems in term of If components have similar names, they are likely to be similarIf components have similar names, they are likely to be similar . .

If components use similar input and produce the same output, they are likely to be If components use similar input and produce the same output, they are likely to be similar. similar.

If components have same data structures, they are likely to be similar. If components have same data structures, they are likely to be similar.

Page 7: REUSE-Re-Engineering The Software Process By Venkat Praveen Medikonda.

Domain AnalysisDomain Analysis

Domain analysis is the process of identifying reusable components that have best reuse Domain analysis is the process of identifying reusable components that have best reuse potential .potential .

It is a form of system analysis for a class of systems .It is a form of system analysis for a class of systems . Domain analysis defines and organizes reusable components to enable their effective Domain analysis defines and organizes reusable components to enable their effective

reuse in a domain .reuse in a domain . Domain analysis occurs before the systems analysis stage in the life cycle process .Domain analysis occurs before the systems analysis stage in the life cycle process . Domain analysis provides a means to link corporate goals, critical success factors and Domain analysis provides a means to link corporate goals, critical success factors and

strategic system requirements with opportunities to practice reuse in the most optimum strategic system requirements with opportunities to practice reuse in the most optimum manner. manner.

Domain analysis is performed to gather model information for the better understanding Domain analysis is performed to gather model information for the better understanding of the domain and to develop future systems from reusable components .of the domain and to develop future systems from reusable components .

Examples of domain analysis are airline reservation or customer inquiry. Examples of domain analysis are airline reservation or customer inquiry.

Page 8: REUSE-Re-Engineering The Software Process By Venkat Praveen Medikonda.

The Reuse TechniquesThe Reuse Techniques Commonality Analysis: Commonality Analysis: Commonality analysis is the process of identifying commonCommonality analysis is the process of identifying common components across a set of existing and /or future systems.components across a set of existing and /or future systems.

Domain Analysis: Domain Analysis: Domain analysis is the process of capturing and modeling information in the Domain analysis is the process of capturing and modeling information in the domain for the purpose of gaining a better understanding of the domain and domain for the purpose of gaining a better understanding of the domain and

for developing future systems for the domain from highly reusable for developing future systems for the domain from highly reusable

componentscomponents . .

Redundancy Checking: Redundancy Checking: SetSet of techniques that identify software components that have been of techniques that identify software components that have been implemented multiple times in one software system or across multiple implemented multiple times in one software system or across multiple

systems. systems. Reuse Planning: Reuse Planning: ReuseReuse planning is the process of creating a reuse implementation plan for a planning is the process of creating a reuse implementation plan for a

reuse program. reuse program.

Reuse Library: Reuse Library: The development of software reuse library is an essential part of practicing The development of software reuse library is an essential part of practicing

reusereuse

Page 9: REUSE-Re-Engineering The Software Process By Venkat Praveen Medikonda.

Reuse EngineeringReuse Engineering

Is the activity consisting of cohesive collection of all tasks that are primarily Is the activity consisting of cohesive collection of all tasks that are primarily performed to increase the reuse on endeavors of certified reusable work products.performed to increase the reuse on endeavors of certified reusable work products.

Goals:Goals: Ensure that an optimal supply of high-quality reusable work products are available within Ensure that an optimal supply of high-quality reusable work products are available within

the development organization the development organization Ensure that these reusable work products are available to all project teams for reuse. Ensure that these reusable work products are available to all project teams for reuse.

Objectives:Objectives:

Ensure that the supply of reusable work products is optimal in size, scope, and Ensure that the supply of reusable work products is optimal in size, scope, and applicability. applicability.

Ensure the quality of the reusable work products is high enough to justify reuse. Ensure the quality of the reusable work products is high enough to justify reuse. Ensure that the reusable work products are available to all endeavor teams for reuse. Ensure that the reusable work products are available to all endeavor teams for reuse.

Examples:Examples: Typical examples of reuse engineering include: Typical examples of reuse engineering include: Project-internal reuse engineering Project-internal reuse engineering Organizational-internal reuse engineeringOrganizational-internal reuse engineering

Page 10: REUSE-Re-Engineering The Software Process By Venkat Praveen Medikonda.

Stages Of Reuse EngineeringStages Of Reuse Engineering

Page 11: REUSE-Re-Engineering The Software Process By Venkat Praveen Medikonda.

Stages Of Reuse EngineeringStages Of Reuse Engineering

Reuse-Based Planning Reuse-Based Planning Create enterprise models reusing available models when possible Create enterprise models reusing available models when possible Develop strategic Plan Develop strategic Plan Identify domains and opportunities for practicing reuse Identify domains and opportunities for practicing reuse Create the corporate reuse plan Create the corporate reuse plan

Domain Analysis StageDomain Analysis Stage Select domain to analyze Select domain to analyze Define what kind of components to reuse Define what kind of components to reuse Identify what currently exists and can be reused and package it for reuse Identify what currently exists and can be reused and package it for reuse Identify what is common and should be created for future reuse Identify what is common and should be created for future reuse Define reuse catalogs, classification schemes and library architecture Define reuse catalogs, classification schemes and library architecture Create and populate reuse library Create and populate reuse library

Reuse-Based Business Area AnalysisReuse-Based Business Area Analysis Create business area models from existing models when available Create business area models from existing models when available Determine where to practice reuse in the business area Determine where to practice reuse in the business area Create a design plan and reuse plan for each system to be developed in the business area Create a design plan and reuse plan for each system to be developed in the business area

Page 12: REUSE-Re-Engineering The Software Process By Venkat Praveen Medikonda.

Stages Of Reuse EngineeringStages Of Reuse EngineeringReuse-Based DesignReuse-Based Design

Create system prototypes from reusable prototype skeletons and system Create system prototypes from reusable prototype skeletons and system designs from templates designs from templates

Create system Implementation and test plan from reusable plan skeletons and reusable Create system Implementation and test plan from reusable plan skeletons and reusable test cases test cases

Look for design components that can be reused in the future Look for design components that can be reused in the future

Reuse-Based ConstructionReuse-Based Construction Support generative reuse with the use of GUI generators, code generators, DBMS generators, Support generative reuse with the use of GUI generators, code generators, DBMS generators,

application generators, etc. application generators, etc.

Final Reuse ReviewFinal Reuse Review Evaluate the system produced and the project in terms of how well they meet reuse goals Evaluate the system produced and the project in terms of how well they meet reuse goals Identify any new reusable components and products that could be developed based on this system Identify any new reusable components and products that could be developed based on this system

development effort development effort Produce a System reuse review report capturing reuse experiences, lessons learned, advise and Produce a System reuse review report capturing reuse experiences, lessons learned, advise and

suggestions for improving the practice of software reuse suggestions for improving the practice of software reuse

Page 13: REUSE-Re-Engineering The Software Process By Venkat Praveen Medikonda.

Reuse RolesReuse Roles

Reuse SponsorReuse Sponsor Member of management appointed to sponsor the reuse program. The reuse sponsor Member of management appointed to sponsor the reuse program. The reuse sponsor

authorizes, approves, promotes, and provides funding and other resources for the reuse authorizes, approves, promotes, and provides funding and other resources for the reuse program.program.

Reuse ChampionReuse Champion An individual or group, who is respected by both management and software professionals, An individual or group, who is respected by both management and software professionals,

is a good communicator and is excited about reuse. The reuse champion is responsible for is a good communicator and is excited about reuse. The reuse champion is responsible for initiating the reuse implementation program for an organization and promoting the initiating the reuse implementation program for an organization and promoting the concept and practice of reuse on a day-to-day basis.concept and practice of reuse on a day-to-day basis.

Domain ExpertDomain Expert A domain expert is knowledgeable in the domain. A knowledgeable end user, software A domain expert is knowledgeable in the domain. A knowledgeable end user, software

developer or software maintainer who has experience with systems previously created for developer or software maintainer who has experience with systems previously created for the domain and also understands the future directions and requirements for the domain the domain and also understands the future directions and requirements for the domain may serve as a domain expert.may serve as a domain expert.

Reuse ExpertReuse Expert The reuse expert is an expert in the practice of software reuse and the application of reuse The reuse expert is an expert in the practice of software reuse and the application of reuse

techniques such as commonality analysis, domain analysis and the creation and techniques such as commonality analysis, domain analysis and the creation and management of software reuse libraries. management of software reuse libraries.

Page 14: REUSE-Re-Engineering The Software Process By Venkat Praveen Medikonda.

ReferencesReferences

[1]. [1]. Ted J.Biggerstaff,Alan j.Perlis Ted J.Biggerstaff,Alan j.Perlis “Software Reusability”, volume 1“Software Reusability”, volume 1 concepts and modelsconcepts and models

[2]. [2]. Tracz, Will, Software Reuse: Engineering Technology Tutorial. IEEE Computer Society Tracz, Will, Software Reuse: Engineering Technology Tutorial. IEEE Computer Society Press, Washington DC, 1988Press, Washington DC, 1988

[3][3]. Dr. Carma McClure . Dr. Carma McClure “ MODEL-DRIVEN SOFTWARE REUSE “ MODEL-DRIVEN SOFTWARE REUSE PRACTING REUSE INFORMATION ENGINEERING STYLE”PRACTING REUSE INFORMATION ENGINEERING STYLE” & &

““Reuse-Re Engineering the software process” papers on reusablityReuse-Re Engineering the software process” papers on reusablity

[4][4] M.Morisio, M.Egran, C.Tully M.Morisio, M.Egran, C.Tully “Success and Failure factors in software Reuse”“Success and Failure factors in software Reuse” IEEE Transaction on software Engineering.IEEE Transaction on software Engineering.

[5][5]. Banker, R. D., Kauffman, R. J., Wright, C. and Zweig, D., ". Banker, R. D., Kauffman, R. J., Wright, C. and Zweig, D., "Automating Output Size and Automating Output Size and Reuse Metrics in a Repository-Based Computer-Aided Software Engineering (CASE) Reuse Metrics in a Repository-Based Computer-Aided Software Engineering (CASE) EnvironmentEnvironment," IEEE Transactions on Software Engineering, Vol. 20, No. 3, (March l994), ," IEEE Transactions on Software Engineering, Vol. 20, No. 3, (March l994), pp. 169-187pp. 169-187