Term paper on “Software Product Lines”
Abstract: The emerging concept known as “Software Product Lines” is mainly described in this paper. The product lines impact on the market of the software industry is also discussed. The product line patterns and practices are focused on how to improve the development of the product. The method in which the product attains high flexibility, product line analysis is described in this paper.
Introduction:
A product line is defined as a set of products that addresses a particular market segment or fulfill a particular mission. Various companies explore their common functionalities in many different ways. This is an emerging concept which is helpful in the development of the software product. The main baseline of the product lines is to provide flexibility to the product in the software industry. As the common functionalities exist between software products, there is a high chance of success when these functionalities are exploited [2].
The impact of the product line is that practicing of related systems which are from the common functionalities of the product can make great improvements in the productivity, the release time of the product in the market, the quality of the product and ultimately the satisfaction of the customer. The product lines concept can be applied for satisfying customization. The organizations are trying to find the commonalities which are required to achieve profits in terms of cost, training and streamlined acquisitions [4].
As the risks grow along with the development or profits, the product line approaches using a technical strategy for the company. The implementation of the product lines needs skillful engineering in terms of both technical and organizational management in order to exploit the commonalities of the products. The skillful engineering is necessary in order to achieve a successful organization.
Acquiring a software product line also requires this same blend of skills to position the using organizations, so they can effectively exploit the commonality of the incoming products, as well as lend sound technical oversight and monitoring to the development effort. These skills are necessary to overcome the pitfalls that may bring failure to an unsophisticated organization.
The adopting of the product lines includes developing of the software-intensive systems with a commonality in order to develop product lines. The software product lines are a set of software intensive systems, which share some common features. The main objectives of the adoption are to provide supportive processes, structures of organization, improve the software product lines till it gives considerable results [6] .
The adoption is carried out in three phases of work for successful software product line. They are essential activities and practice areas, goals of framework, practices and patterns, adoption factory pattern. The detailed description of these phases is given below:
The essential activities and practice areas form a conceptual framework for the practice of software product line. In general, the practice area is considered to be the collection of activities, functionalities that an organization would skillfully implement inorder to attain successful outcomes.
The goals of framework identify the fundamental concepts underlying the software product lines which provide guidance for the organization to approach a product line to software. Example of a practice area specific is to adopting software product lines is launching and institutionalizing [6] . The new patterns are introduced to describe the practice areas. These patterns give the common product line problem and solution pairs by which the problems are more explicitly described to carry out the work.
The adoption factory pattern introduces a specific pattern called the adoption factory pattern, which provides a generic pattern to guide a phased product line adoption strategy. This pattern also can be used to develop a roadmap for any organization which is attempting to implement the product line for the first time.
Product Line Analysis:
The product line analysis identifies the stakeholders and collects requirements information. This analysis initializes the requirements of the product line model. It adds the extracted information to the work products and refines the work products. The important premises of the product line analysis are the product quality features, system responsibilities which are the basis for commonality within the requirements. All requirements are not necessary to be considered but the functional features and the attributes of the quality in the product line are considered. The initial requirements modeling include the analysis of detailed requirements of the product line [5].
The product qualities such as attributes which constitute for the quality of the product are performance, scalability and security. The importance of the product line analysis is these qualities are modeled as features. The quality features are modeled within the feature model as these are the characteristics which are not restricted to any functional features [6].
The product line analysis determines the commonality of system responsibilities which are important. This analysis does not provide sufficient information about the responsibilities of a product line but captures commonalities and variability in the perception of customers and the end users. The system responsibilities capture commonality and variability in the perception of the developer.
Product Line Development:
In general, the product line development can be treated as a system which produces products. The requirements sources can be derived from business cases and the market analysis. The analysis of market specifies the customizable products which can be profitable to the organization. The requirements for the product line development are associated with the product line analysis to derive the production strategy. The production strategy for a product line describes in what way the products are developed and in which manner [7].
Functionalities of product line development:
The product line development functionalities refer to the development tools, documented processes, a production strategy and the production plan. These functionalities specify the requirements of the product line development [1].
Production plans for the Software Product Lines:
In general the production plan describes the products production from core assets. The core assets have a process that describes the importance of the product in the product development. The products in the product line differ consistent with the predefined variation points. Also, each product in the product line will vary consistent with the other product lines. The production plan is important because it stands as the baseline for the product builder to link among the core assets and also provides information of how to use them effectively in the plan.
In order to develop the production plan, the users of the production plan are to be considered. This makes the production plan express a clear idea. The production plan ranges from a detailed process model to a guidebook. The specificity degree which is required in the production plan is attained by the understanding the background of the builders of the product, structure and culture of the organization. It is important to get the product line before the development of the production plan. The production plan also describes the tools which are used in order to evolve the core assets. The production plan also needs to incorporate any metrics to measure the improvement of the product line practices and plans for the collection of the data for the metrics.
Software Mass Customization:
The software mass customization is one of the development methodologies which focus on domain engineering of reusable assets. This customization considers the parts which are capable of being automatically composed and configured in the product line. The products in the product line are developed by configuring parts of feature models [3].
The software product line configurators:
In the software mass customization methodology, there are certain negative effects observed using the manual application engineering. These are avoided using the software product line configurators. In general, the configurators take two inputs. First one is the core software assets such as requirements, source code, test cases, product documentation etc. The concise abstractions which are the product models characterize the instances in the product line and these are expressed in a feature model [3].
The first step is the domain engineering of the core assets. The software mass customization gives the efficient solution and more scalable solution than any manual engineering. The software product is considered as the collection of core assets which can be reused. The evolution of the core assets and the products is done synonymously. In this process, there is no need of manual merging and reintegration required [3].
Using the software mass customization methodology, the products become tangible after the automated production step as there are no more tangible teams which are organized around the tangible products. The product releases lies in synchronizing the release of features in core assets according to the schedule of the product release. The long term benefits of the early generation software product line methods would be to justify the adoption of software product line approach [3].
Conclusion:
The approaches which are made in identifying the requirements are integrated in the modeling process. Here the product line requirements are stated and analyzed by the process of goal discovery. Thus the modeling process helps in creating the product lines by elicitation of the requirements. The dynamic software product lines are also tried to reconfigure a particular approach to the software product line. The product should be newly developed and the changes are going on in the technology and in the market place [8]. The aim of the dynamic software product line is to develop a product line which can produce new systems even at the time of execution but not stopping the executing systems. The dynamic reconfiguration techniques can reconfigure a product in the product lines while the product is executing. These are also considered as the future developing techniques in the feature modeling [4].
References:
[1] J. Zhang, X. Cai, G. Liu, "The Role of Aspects in Software Product Lines", International Conference on Computer Science and Information Technology, P. 588-592, 2008.
[2] P. Donohoe, "Introduction to Software Product Lines", 12th International Software Product Line Conference, P.370 - 370, 2008.
[3]C. W. K. Krueger, “New methods in Software Product Line Development”, 10th International Software Product Line conference, 2006.
[4] M. Kim, S. Park, “Goal and Scenario Driven Product Line Development”, IEEE Computer Society, 2004.
[5] http://www.sei.cmu.edu/productlines/about_pl.html
[6] http://www.sei.cmu.edu/productlines/adopting_spl.html
[7] http://www.sei.cmu.edu/pub/documents/03.reports/pdf/03tr008.pdf
[8] http://www.sei.cmu.edu/productlines/pl_analysis.html