Abstract
Delta-oriented programming (DOP) is a flexible approach for implementing software product lines (SPLs). DOP SPLs are implemented by a set of delta modules encapsulating changes to class-based object-oriented programs. A particular product in a DOP SPL is generated by applying to the empty program the modifications contained in the delta modules associated to the selected product features. Traits are pure units of behavior, designed to support flexible fine-grained reuse and to provide an effective means to counter the limitations of class-based inheritance. A trait is a set of methods which is independent from any class hierarchy and can be flexibly used to build other traits or classes by means of a suite of composition operations. In this paper, we present an approach for programming SPLs of trait-based programs where the program modifications expressed by delta modules are formulated by exploiting the trait composition mechanism. This smooth integration of the modularity mechanisms provided by delta modules and traits results in a new approach for programming SPLs, delta-trait programming (DTP), which is particularly well suited for evolving SPLs.
Work partially supported by MIUR (proj. CINA), Ateneo/CSP (proj. SALT), Deutsche Forschungsgemeinschaft (grant SCHA1635/2-1), and ICT COST Action IC1201 BETTY.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
Apel, S., Kästner, C., Grösslinger, A., Lengauer, C.: Type safety for feature-oriented product lines. Automated Software Engineering 17(3), 251–300 (2010)
Apel, S., Kästner, C., Lengauer, C.: Feature Featherweight Java: A Calculus for Feature-Oriented Programming and Stepwise Refinement. In: Proc. of GPCE 2008, pp. 101–112. ACM (2008)
Bassett, P.G.: Framing software reuse: lessons from the real world. Prentice-Hall, Inc., Upper Saddle River (1997)
Batory, D.: Feature Models, Grammars, and Propositional Formulas. In: Obbink, H., Pohl, K. (eds.) SPLC 2005. LNCS, vol. 3714, pp. 7–20. Springer, Heidelberg (2005)
Batory, D., Sarvela, J.N., Rauschmayer, A.: Scaling step-wise refinement. In: Proc. of ICSE 2003, pp. 187–197. IEEE (2003)
Bettini, L., Bono, V., Naddeo, M.: A trait based re-engineering technique for Java hierarchies. In: Proc. of PPPJ, pp. 149–158. ACM (2008)
Bettini, L., Damiani, F.: Pure trait-based programming on the java platform. In: Proc. of PPPJ 2013, pp. 67–78. ACM, New York (2013)
Bettini, L., Damiani, F., Geilmann, K., Schäfer, J.: Combining traits with boxes and ownership types in a Java-like setting. Science of Computer Programming 78(2), 218–247 (2013)
Bettini, L., Damiani, F., Schaefer, I.: Compositional type checking of delta-oriented software product lines. Acta Informatica 50(2), 77–122 (2013)
Bettini, L., Damiani, F., Schaefer, I.: Implementing type-safe software product lines using parametric traits. Science of Computer Programming (2013), http://dx.doi.org/10.1016/j.scico.2013.07.016
Bettini, L., Damiani, F., Schaefer, I., Strocco, F.: TraitRecordJ: A programming language with traits and records. Science of Computer Programming 78(5), 521–541 (2013)
Bono, V., Damiani, F., Giachino, E.: On Traits and Types in a Java-like setting. In: Ausiello, G., Karhumäki, J., Mauri, G., Ong, L. (eds.) TCS 2008. IFIP, vol. 273, pp. 367–382. Springer, Heidelberg (2008)
Clements, P., Northrop, L.: Software Product Lines: Practices and Patterns. Addison Wesley Longman (2001)
Damiani, F., Dovland, J., Johnsen, E.B., Schaefer, I.: Verifying traits: An incremental proof system for fine-grained reuse. Formal Aspects of Computing 26(4), 761–793 (2014)
Damiani, F., Owe, O., Dovland, J., Schaefer, I., Johnsen, E.B., Yu, I.C.: A transformational proof system for delta-oriented programming. In: Proc. of SPLC, vol. 2, pp. 53–60. ACM (2012)
Delaware, B., Cook, W.R., Batory, D.: A Machine-Checked Model of Safe Composition. In: Proc. of FOAL, pp. 31–35. ACM (2009)
Ducasse, S., Nierstrasz, O., Schärli, N., Wuyts, R., Black, A.: Traits: A mechanism for fine-grained reuse. ACM TOPLAS 28(2), 331–388 (2006)
Hähnle, R., Schaefer, I.: A Liskov Principle for Delta-Oriented Programming. In: Margaria, T., Steffen, B. (eds.) ISoLA 2012, Part I. LNCS, vol. 7609, pp. 32–46. Springer, Heidelberg (2012)
Igarashi, A., Pierce, B., Wadler, P.: Featherweight Java: A minimal core calculus for Java and GJ. ACM TOPLAS 23(3), 396–450 (2001)
Kang, K.C., Cohen, S.G., Hess, J.A., Novak, W.E., Peterson, A.S.: Feature-Oriented Domain Analysis (FODA) Feasibility Study. Technical report, Carnegie Mellon Software Engineering Institute (1990)
Kastner, C., Apel, S.: Type-checking software product lines - a formal approach. In: Proc. of ASE 2008, pp. 258–267. IEEE (2008)
Kiczales, G., Hilsdale, E., Hugunin, J., Kersten, M., Palm, J., Griswold, W.G.: An Overview of AspectJ. In: Lindskov Knudsen, J. (ed.) ECOOP 2001. LNCS, vol. 2072, pp. 327–354. Springer, Heidelberg (2001)
Krueger, C.: Eliminating the Adoption Barrier. IEEE Software 19(4), 29–31 (2002)
Lienhard, A., Ducasse, S., Arévalo, G.: Identifying traits with formal concept analysis. In: Proc. ASE 2005, pp. 66–75. IEEE Computer Society (2005)
Liquori, L., Spiwack, A.: Extending feathertrait java with interfaces. Theor. Comput. Sci. 398(1-3), 243–260 (2008)
Lopez-Herrejon, R.E., Batory, D., Cook, W.: Evaluating support for features in advanced modularization technologies. In: Gao, X.-X. (ed.) ECOOP 2005. LNCS, vol. 3586, pp. 169–194. Springer, Heidelberg (2005)
Mikhajlov, L., Sekerinski, E.: A Study of the Fragile Base Class Problem. In: Jul, E. (ed.) ECOOP 1998. LNCS, vol. 1445, pp. 355–382. Springer, Heidelberg (1998)
Nierstrasz, O., Ducasse, S., Schärli, N.: Flattening traits. JOT 5(4), 129–148 (2006) www.jot.fm
Pohl, K., Böckle, G., van der Linden, F.: Software Product Line Engineering - Foundations, Principles, and Techniques. Springer (2005)
Reppy, J., Turon, A.: Metaprogramming with traits. In: Ernst, E. (ed.) ECOOP 2007. LNCS, vol. 4609, pp. 373–398. Springer, Heidelberg (2007)
Schaefer, I., Bettini, L., Bono, V., Damiani, F., Tanzarella, N.: Delta-oriented programming of software product lines. In: Bosch, J., Lee, J. (eds.) SPLC 2010. LNCS, vol. 6287, pp. 77–91. Springer, Heidelberg (2010)
Schaefer, I., Bettini, L., Damiani, F.: Compositional type-checking of delta-oriented programming. In: Proc. of AOSD 2011, pp. 43–56. ACM (2011)
Schaefer, I., Damiani, F.: Pure Delta-oriented Programming. In: Proc. of FOSD 2010, pp. 49–56. ACM (2010)
Schaefer, I., Rabiser, R., Clarke, D., Bettini, L., Benavides, D., Botterweck, G., Pathak, A., Trujillo, S., Villela, K.: Software diversity: state of the art and perspectives. International Journal on Software Tools for Technology Transfer 14(5), 477–495 (2012)
Schärli, N., Ducasse, S., Nierstrasz, O., Black, A.P.: Traits: Composable units of behavior. In: Cardelli, L. (ed.) ECOOP 2003. LNCS, vol. 2743, pp. 248–274. Springer, Heidelberg (2003)
Schuster, S.: Design Patterns in Feature-Oriented Programming. Bachelor’s thesis, TU Braunschweig (2012)
Schuster, S., Schulze, S.: Object-oriented design in feature-oriented programming. In: Proc. of FOSD 2012, pp. 25–28. ACM (2012)
Smith, C., Drossopoulou, S.: Chai: Traits for Java-like languages. In: Gao, X.-X. (ed.) ECOOP 2005. LNCS, vol. 3586, pp. 453–478. Springer, Heidelberg (2005)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2014 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Damiani, F., Schaefer, I., Schuster, S., Winkelmann, T. (2014). Delta-Trait Programming of Software Product Lines. In: Margaria, T., Steffen, B. (eds) Leveraging Applications of Formal Methods, Verification and Validation. Technologies for Mastering Change. ISoLA 2014. Lecture Notes in Computer Science, vol 8802. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-662-45234-9_21
Download citation
DOI: https://doi.org/10.1007/978-3-662-45234-9_21
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-662-45233-2
Online ISBN: 978-3-662-45234-9
eBook Packages: Computer ScienceComputer Science (R0)