170 likes | 319 Views
REUSE-Re-Engineering The Software Process. By Venkat Praveen Medikonda. Software Reuse. Software Reuse is the process of creating software systems from predefined software components. This practice enables us to assemble new programs from existing components.
E N D
REUSE-Re-Engineering The Software Process By Venkat Praveen Medikonda
Software Reuse Software Reuse is the process of creating software systems from predefined software components. This practice enables us to assemble new programs from existing components. Two basic process of software reuse are: • The systematic development of reusable components and • The systematic reuse of these components as building blocks to create new systems. The positive features of software reuse are: • Increase software productivity • Shorten development time • Develop software with fewer people • Reduce software development and maintenance costs • Produce more standardized and better quality software
Rethinking Software Development • Traditional methods of software development, cannot meet the ever-growing demand for more software systems delivered in shorter span with low cost. • Software development needs to be re-engineered with software reuse approach • Here software is developed from predefined, standardized, interchangeable software components. . • Software reuse is the best answer to the software crisis
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.
Commonality • Commonability means that the same software components recur across systems or within one system • Commonalty occurs at all levels of system abstraction ,code components,design,requirements etc Common component: is a component which is used repeatedly within one system or in multiple systems or in multiple versions/implementations of the same system. Commonality analysis: Commonality analysis is a process of identifying common components across a set of existing or future systems. purpose: is it advantageous to develop reusable components and in particular which reusable components to be used in creation and maintenance of systems. commonality analysis is a combination of top-down process and bottom-up process
Top-Down Process Studies future systems for the domain its objective is to determine the percentages of future system components that are common. Potential commonalities in future systems can be identified by comparing: • System requirements and priorities of system requirements • System behavior/functions • Software architectures • Technology (supporting hardware and software) Bottom-Up Process Studies examples of existing systems in the domain to identify common components. To identify common components in existing systems, compare systems in term of • If 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 similar. • If components have same data structures, they are likely to be similar.
Domain Analysis • Domain analysis is the process of identifying reusable components that have best reuse potential . • It is a form of system analysis for a class of systems . • Domain analysis defines and organizes reusable components to enable their effective reuse in a domain . • 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 strategic system requirements with opportunities to practice reuse in the most optimum manner. • Domain analysis is performed to gather model information for the better understanding of the domain and to develop future systems from reusable components . • Examples of domain analysis are airline reservation or customer inquiry.
The Reuse Techniques Commonality Analysis: Commonality analysis is the process of identifying common components across a set of existing and /or future systems. Domain Analysis: 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 for developing future systems for the domain from highly reusable components . Redundancy Checking: Setof techniques that identify software components that have been implemented multiple times in one software system or across multiple systems. Reuse Planning: Reuseplanning is the process of creating a reuse implementation plan for a reuse program. Reuse Library: The development of software reuse library is an essential part of practicing reuse
Reuse Engineering 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. Goals: • Ensure that an optimal supply of high-quality reusable work products are available within the development organization • Ensure that these reusable work products are available to all project teams for reuse. Objectives: • Ensure that the supply of reusable work products is optimal in size, scope, and applicability. • 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. Examples: • Typical examples of reuse engineering include: • Project-internal reuse engineering • Organizational-internal reuse engineering
Stages Of Reuse Engineering Reuse-Based Planning • Create enterprise models reusing available models when possible • Develop strategic Plan • Identify domains and opportunities for practicing reuse • Create the corporate reuse plan Domain Analysis Stage • Select domain to analyze • Define what kind of components to 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 • Define reuse catalogs, classification schemes and library architecture • Create and populate reuse library Reuse-Based Business Area Analysis • Create business area models from existing models when available • 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
Stages Of Reuse Engineering Reuse-Based Design • Create system prototypes from reusable prototype skeletons and system designs from templates • Create system Implementation and test plan from reusable plan skeletons and reusable test cases • Look for design components that can be reused in the future Reuse-Based Construction • Support generative reuse with the use of GUI generators, code generators, DBMS generators, application generators, etc. Final Reuse Review • 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 development effort • Produce a System reuse review report capturing reuse experiences, lessons learned, advise and suggestions for improving the practice of software reuse
Reuse Roles 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 program. Reuse Champion 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 initiating the reuse implementation program for an organization and promoting the concept and practice of reuse on a day-to-day basis. Domain Expert 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 the domain and also understands the future directions and requirements for the domain may serve as a domain expert. Reuse Expert 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 management of software reuse libraries.
References [1]. Ted J.Biggerstaff,Alan j.Perlis “Software Reusability”, volume 1 concepts and models [2]. Tracz, Will, Software Reuse: Engineering Technology Tutorial. IEEE Computer Society Press, Washington DC, 1988 [3]. Dr. Carma McClure “ MODEL-DRIVEN SOFTWARE REUSE PRACTING REUSE INFORMATION ENGINEERING STYLE” & “Reuse-Re Engineering the software process” papers on reusablity [4] M.Morisio, M.Egran, C.Tully “Success and Failure factors in software Reuse” IEEE Transaction on software Engineering. [5]. Banker, R. D., Kauffman, R. J., Wright, C. and Zweig, D., "Automating Output Size and Reuse Metrics in a Repository-Based Computer-Aided Software Engineering (CASE) Environment," IEEE Transactions on Software Engineering, Vol. 20, No. 3, (March l994), pp. 169-187