Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

\"When to Recommend and Not to Recommend Software Reuse\" Please respond to the

ID: 639829 • Letter: #

Question

"When to Recommend and Not to Recommend Software Reuse" Please respond to the following:

From the e-Activity, we understand that the reuse of software components are designed to optimize software development and reduce development costs. Describe how SPLs promote reuse and how they can be disadvantageous to certain development environments.

From the e-Activity, provide at least two unique examples that illustrate how SPLs can be used in an organization of your choice to improve software development efforts.

Explanation / Answer

A Software Product Lines are defined as a family of different products which shares same set of core assets or it can be said, a product line consists of multiple systems, which have same architecture and share common core assets with variability among systems. A core asset includes shared components, framework or infrastructure, tools, process, documentation, test cases as these are reused. Basically, SPL is a family of products designed to take advantage of their common aspects and predicted variability in order to improve quality, delivery time and reduction in cost. Product line engineering (PLE) helps to design, develop, deliver, and evolve a portfolio of common products, with feature variations and functions, through which each stage of the systems and the software development lifecycle from requirements to design, development and testing.

PLE is basically delivering efficiencies in design, development and deployment in products.To produce a product from a product line, and it should be instantiated through the following two steps:

a) Selection: unneeded functionality (i.e., assets) is stripped, assets which are needed are selected, variation is also solved

b) Extension: additional assets are added for the remaining variation points (possibly created from scratch)

Each core asset is designed to create systems to match the quality criteria of product line. Core asset development is its designing and management in the product line. A product line is a collection of products addressing a particular objective. It builds different models of a product using common assets. Using this technique to build a product is economic and efficient. Basically, the idea is integration instead of creation. From time to time, organization will add new member in product line based on the products that has been developed.

Product evolution comes from 2 sources:

a) External Source: New element from produce/ manufacturer to be included in the product line and new product will be produce from it.

b) Internal Source: For product function in the scope of product line will going use the function which already exits. If it is not present, then a new function will be generated, and it will be analyzed as whether it is to be added in the product line or not.

Product Line Development: The Product Line Development three phases to work with the products:

a) Core Asset Development: Core assets or artifacts are created and maintained in product line in order to create systems or products for matching quality criteria.

b) Product Development: It is mainly development or the creation of products or systems out of the core assets from product line. If an asset which is required by the system is not in the core assets, then that core asset need to be created in order to satisfy the needs.

c) Management: It is involved in order to make sure that the two parties are interacting correctly. Assets are also identified to know from which part of the product line it belongs and which are part of development of the individual product system. Also the management involves management of individual projects in the product line, and the universal product line managers.

Various Software Product Line Development methods are:

a) FAST (Family-Oriented Abstraction, Specification and Translation)

b) FODA ( Feature-Oriented Domain Analysis)

c) FORM (Feature-Oriented Reuse Method)

d) RSEB (Reuse-Driven Software Engineering Business)

e) FeatuRSEB

f) ConIPF (Configuration of Industrial Product Families)

g) PuLSE (Product Line Software Engineering)

h) KobrA(KomponentbasierteAnwendungsentwicklung or Component-based Application Development)

Advantages of software product line:

a) Productivity gains (the core assets and architecture are reused)

b) Quality gains (those reused are verified)

c) Decrease time-to-market

d) Decreased product risk

e) Increased market agility

f) Increased customer satisfaction

g) More efficient use of human resources

h) Ability to maintain market presence

i) Decreases number of Defects

j) Decrease development cost

k) Large scale reuse

Disadvantages of software product lines:

a) Investors are reluctant to invest because product line as a software development technique is still under development phase.

b) Only targeted to big industry (aerospace, automobile, military, mobile phone) , need some case studies from small industry.

c) Open source community should be involved in the development of product line tools and techniques except few bigger organizations

d) There are some management and organizational risks involved which needs to mitigate.

e) The area need equal attention from both academics and industry

f) Lack of availability of tools, a PhD student in Linkoping University recently presented his thesis which shows a proof of the unavailability of the tools in the software product line.

g) The problem has also been identified in