Product line term often evokes a car factory image with a specialized set of mechanical arms to individually assembly pieces, or do some specific tasks such as screwing, welding, etc. to be able to get as a final product, a car as soon as possible, spending the minimum amount of resources, among them time and money. This methodology has been applied in entirely different contexts, from cars manufacture to textile fabrics among others [32]. In recent years, inside the software development field it has been investigated how to apply the principles of this methodology, for high quality software development, optimizing the implementation time as well as the amount of money required to fulfill clients requirements. Product line methodology in the context of computer science, significantly differs from the other examples mentioned. If we use this approach, people might think that the problem may be solved easily by getting n different copies from some particular software. The main problem is not the creation of multiple copies of the same software into different locations. The problem that we face is this. Suppose that we have a company E which is developing a management software for two different companies X and Y . Both developments have common and uncommon parts between each other. Company E wants to reduce costs and take advantage of reusing resources to build software products for X and Y . A possible alternative would be the implementation of a product for company X, and then build the product for Y separately. The proposed alternative by the application of a production line methodology for this case, should be based on the following points. First, define all the common and uncommon features between X and Y . In this way, determine the variation points and variants that may exist between the components that will compose the set of final products among the products for companies X and Y . Next, implement and test exhaustively a platform that represents the set of functionalities required by both companies. A common platform design, for a diverse set of components is not a trivial task. It involves preparation for mass customization, focusing first on what is common to all products, and then in what is different [28]. Components must be created for being reused by all, or most of the possible configurations (functional variant of a software product). These components can be developed from scratch or derived from other platforms. This flexible design allows to reuse these components with different configurations for a particular solution; in this way, mass customization of a set of well defined products is provided. This customization requires effort, but flexibility is the key for mass customization success and it is a must for it. A reorganization process for the mass customization initiative may require additional organizational units to guide towards standardization of procedures and workflows. It may also require to adopt new technologies within the company. Software is flexible and easily customizable, but wrong decisions in terms of defining the production engineering process can be expensive, therefore, it is required to have a perfect knowledge of the business logic within the organization and of the solution to be implemented. On one hand, a lot of software products are derived from a common base, and they represent essentially the same context, because they are variations or successive variations of a single product. For instance, if we strip down a car we can see that the main parts are the same (engine, transmission, chassis, among others), between the luxury and standard version. On the other hand, SPL 2 engineering aims to support a wide range of products. These products may be for the same client, for different clients or even for entirely different markets. As a result, variability management is a very important concept in SPL approach. Variability design is about incorporating components that represents the range of possible configurations for a product in the SPL. This variability, is defined during the domain engineering process [18]. When we use the term variability, we are referencing to the ability that something has to change in time. This variability is defined in purpose. A graphic example of this type of development can be found in software developments for mobile phones. Consider two different models of phones from the same company. Surely the platform to run all applications (calls, messages, IM) is the same in both models. However, the possibility of using WIFI or Bluetooth for each phone may vary. The basic unit of a production line is called feature. A feature can be a particular module, the use of a specific technology, and, in general, any reusable functional component. The relationships between features in a SPL builds products configurations, the relationships and features set is called feature model. Since in the SPL frameworks software is made of reusable components it is very important to have tools that allow the correct development. Not only within any component, but also in the whole framework. The use of formal methods aims to automate this task. This raises the need to define formal models related to massive software production. The main contribution of this Master Thesis work focuses on defining a formal framework for a widely used feature model in software development. It has been done under the Facultad de Informática of Universidad Complutense de Madrid. We have defined a formal syntax to express the features and their relationships. And also we have defined three different formal semantics: an operational semantics, a denotational semantics and an axiomatic semantic. We have proved that all three semantics are equivalent. Here is the structure of this work. • First, in Chapter 1, we give an introduction to Software Product Lines and Feature Modeling. We describe the systematic software development process, and we show some different approaches to model the functional parts of software products. In this way, the reader can get into the context of the central line of this research project. We overview a state of art over SPLs, detailing several methodologies to specify software systems. Among them are: – Feature Oriented Domain Analysis (FODA). – Product Line Use case modeling for Systems and Software engineering (PLUSS) – Reuse-Driven Software Engineering Business (RSEB) Software Product Line (SPL) Feature Oriented Domain Analysis (FODA) The Spanish MEC project TESIS (TIN 2009-14312-C02-01)
[1]
Mikolás Janota,et al.
Formal Approach to Integrating Feature and Architecture Models
,
2008,
FASE.
[2]
Pierre-Yves Schobbens,et al.
Evaluating formal properties of feature diagram languages
,
2008,
IET Softw..
[3]
Antonio Ruiz Cortés,et al.
Automated analysis of feature models: challenges ahead
,
2006,
CACM.
[4]
Mike Mannion.
Using First-Order Logic for Product Line Model Validation
,
2002,
SPLC.
[5]
Martin Leucker,et al.
Modeling and Model Checking Software Product Lines
,
2008,
FMOODS.
[6]
Pierre-Yves Schobbens,et al.
Semantics of FODA Feature Diagrams
,
2004
.
[7]
Stefania Gnesi,et al.
A behavioural model for product families
,
2007,
ESEC-FSE '07.
[8]
C. A. R. Hoare,et al.
Communicating sequential processes
,
1978,
CACM.
[9]
Martin L. Griss,et al.
Integrating feature modeling with the RSEB
,
1998,
Proceedings. Fifth International Conference on Software Reuse (Cat. No.98TB100203).
[10]
Maurice H. ter Beek,et al.
A Deontic Logical Framework for Modelling Product Families
,
2010,
VaMoS.
[11]
Jan Friso Groote,et al.
Transition System Specifications with Negative Premises
,
1993,
Theor. Comput. Sci..
[12]
Klaus Pohl,et al.
Software Product Line Engineering - Foundations, Principles, and Techniques
,
2005
.
[13]
Kyo Chul Kang,et al.
Feature-Oriented Domain Analysis (FODA) Feasibility Study
,
1990
.
[14]
Timo Käkölä,et al.
Software Product Lines - Research Issues in Engineering and Management
,
2006
.
[15]
Rohit Gheyi,et al.
A Theory for Feature Models in Alloy
,
2006
.
[16]
Krzysztof Czarnecki,et al.
Feature Diagrams and Logics: There and Back Again
,
2007
.
[17]
M. Harsu.
A survey on domain engineering
,
2002
.
[18]
Ilka Philippow,et al.
Feature-Oriented Development of Software Product Lines: Mapping Feature Models to the Architecture
,
2004,
Net.ObjectDays.
[19]
Jaejoon Lee,et al.
FORM: A feature-;oriented reuse method with domain-;specific reference architectures
,
1998,
Ann. Softw. Eng..
[20]
Ridha Khédri,et al.
An algebra of product families
,
2009,
Software & Systems Modeling.
[21]
Jan Bosch,et al.
Design and use of software architectures - adopting and evolving a product-line approach
,
2000
.
[22]
Sergio Segura,et al.
Automated metamorphic testing on the analyses of feature models
,
2011,
Inf. Softw. Technol..
[23]
Kim G. Larsen,et al.
Modal I/O Automata for Interface and Product Line Theories
,
2007,
ESOP.
[24]
Don S. Batory,et al.
Feature Models, Grammars, and Propositional Formulas
,
2005,
SPLC.
[25]
Ridha Khédri,et al.
Feature Algebra
,
2006,
FM.
[26]
Matthew Hennessy,et al.
Algebraic theory of processes
,
1988,
MIT Press series in the foundations of computing.
[27]
Maurice H. ter Beek,et al.
Design and validation of variability in product lines
,
2011,
PLEASE '11.
[28]
Sebastián Uchitel,et al.
A foundation for behavioural conformance in software product line architectures
,
2006,
ROSATEA '06.
[29]
Jürgen Börstler,et al.
The PLUSS Approach - Domain Modeling with Features, Use Cases and Use Case Realizations
,
2005,
SPLC.
[30]
Alexander L. Wolf,et al.
Acm Sigsoft Software Engineering Notes Vol 17 No 4 Foundations for the Study of Software Architecture
,
2022
.
[31]
Krzysztof Czarnecki,et al.
Feature-based survey of model transformation approaches
,
2006,
IBM Syst. J..
[32]
Stefania Gnesi,et al.
Formal Modeling for Product Families Engineering
,
2008,
2008 12th International Software Product Line Conference.
[33]
Sergio Segura,et al.
Automated analysis of feature models 20 years later: A literature review
,
2010,
Inf. Syst..