A Computational Intelligence Approach to Software Component Repository Management

Software productivity has been steadily increasing but not enough to close the gap between the demands placed on the software industry and what the state of the practice can deliver. With the increasing dependence of systems on software with increasing complexity and challenging quality requirements, software architectural design to support reuse has become an important development activity and this research domain is rapidly evolving. In the last decades, software architecture optimization methods, which aim to automate the search for an optimal architecture design with respect to a set of quality attributes, have proliferated in literature with the major paradigms of development being as Design for Reuse and Design with Reuse. Classification, storing, and selection of components from a reuse library are considered as a key success factors for software reuse projects, especially when reuse involves also software artifacts, besides code. Correct component classification helps address several problems, besides reuse, such as code comprehension for reverse engineering, dynamic domain modeling, evaluation of programming language dependencies, and usage patterns. In this chapter, we propose a computational intelligence approach using Rough-Fuzzy hybridization techniques to retrieve software components stored as a case-base. The integration of Case-based Reasoning and Decision theory based on Computational Intelligence techniques has shown its usefulness in the retrieval and selection of reusable software components from a software components repository. Software components are denoted by cases with a set of features, attributes, and relations of a given situation and its associated outcomes. These are taken as inputs to a Decision Support tool that classifies the components as adaptable to the given situation with membership values for the decisions. In this novel approach, CBR and DSS (based on Rough-Fuzzy sets) have been applied successfully to the software engineering domain to address the problem of retrieving suitable components for reuse from the case data repository. The use of rough-fuzzy sets increase the likelihood of finding the suitable components for reuse when exact matches are not available or are very few in number. This classification is based on Rough-Fuzzy set theory and the methodology is explained with illustrations.

[1]  Didier Dubois,et al.  Putting Rough Sets and Fuzzy Sets Together , 1992, Intelligent Decision Support.

[2]  J. R. Tirso,et al.  Technical forum: management of reuse at IBM , 1993 .

[3]  Andrew P. Sage,et al.  Systems Engineering for Software Productivity , 1987, IEEE Transactions on Systems, Man, and Cybernetics.

[4]  Thomas A. Standish An Essay on Software Reuse , 1984, IEEE Transactions on Software Engineering.

[5]  Jerzy W. Grzymala-Busse,et al.  Rough Sets , 1995, Commun. ACM.

[6]  Jim Q. Ning A Component-Based Software Development Model , 1996, Proceedings of 20th International Computer Software and Applications Conference: COMPSAC '96.

[7]  Lars Grunske,et al.  Software Architecture Optimization Methods: A Systematic Literature Review , 2013, IEEE Transactions on Software Engineering.

[8]  Lotfi A. Zadeh,et al.  Fuzzy Sets , 1996, Inf. Control..

[9]  Ali Mili,et al.  Reusing Software: Issues and Research Directions , 1995, IEEE Trans. Software Eng..

[10]  Ivar Jacobson,et al.  Software Reuse: Architecture, Process And Organization For Business Success , 1998, Proceedings. Technology of Object-Oriented Languages. TOOLS 26 (Cat. No.98EX176).

[11]  Sadahiro Isoda,et al.  Success factors of systematic reuse , 1994, IEEE Software.

[12]  Even-André Karlsson,et al.  Software reuse: a holistic approach , 1995 .

[13]  Hassan Gomaa,et al.  A reuse-oriented approach for structuring and configuring distributed applications , 1993, Softw. Eng. J..

[14]  Werner Staringer,et al.  Constructing applications from reusable components , 1994, IEEE Software.

[15]  Trucy Levine Reusable software components , 1997, ALET.

[16]  Donald J. Reifer,et al.  Practical software reuse , 1997 .

[17]  Michael Wasmund,et al.  Implementing Critical Success Factors in Software Reuse , 1993, IBM Syst. J..

[18]  J. R. Tirso,et al.  Management of Reuse at IBM , 1993, IBM Systems Journal.

[19]  L. Zadeh Fuzzy sets as a basis for a theory of possibility , 1999 .

[20]  Roy Rada,et al.  Software reuse: from text to hypertext , 1992, Softw. Eng. J..

[21]  Richard W. Selby,et al.  Enabling reuse-based software development of large-scale systems , 2005, IEEE Transactions on Software Engineering.

[22]  Charles W. Krueger,et al.  Software reuse , 1992, CSUR.

[23]  William B. Frakes,et al.  Software reuse research: status and future , 2005, IEEE Transactions on Software Engineering.

[24]  Roland Mittermeir,et al.  Storing and retrieving software components: a refinement based system , 1994, ICSE '94.

[25]  Ernesto Damiani,et al.  A hierarchy-aware approach to faceted classification of objected-oriented components , 1999, TSEM.

[26]  D. Dubois,et al.  ROUGH FUZZY SETS AND FUZZY ROUGH SETS , 1990 .

[27]  Kung-Kiu Lau,et al.  Software Component Models , 2007, IEEE Trans. Software Eng..

[28]  Victor R. Basili,et al.  Support for comprehensive reuse , 1991, Softw. Eng. J..

[29]  Heinz Züllighoven,et al.  Large Scale Object-Oriented Software-Development in a Banking Environment: An Experience Report , 1996, ECOOP.

[30]  Giuseppe Visaggio Process improvement through data reuse , 1994, IEEE Software.

[31]  Bertrand Meyer,et al.  Reusability: The Case for Object-Oriented Design , 1987, IEEE Software.

[32]  Bertrand Meyer,et al.  Reusable Software: The Base Object-Oriented Component Libraries , 1994 .

[33]  Rubén Prieto-Díaz,et al.  Status report: software reusability , 1993, IEEE Software.

[34]  Jeffrey S. Poulin,et al.  The Business Case for Software Reuse , 1993, IBM Syst. J..

[35]  John Mariani,et al.  Scrapheap Software Development: Lessons from an Experiment on Opportunistic Reuse , 2011, IEEE Software.

[36]  Manish Sarkar,et al.  UNCERTAINTY-BASED PATTERN CLASSIFICATION BY MODULAR NEURAL NETWORKS , 1998 .

[37]  Walt Scacchi,et al.  A Knowledge-Based Environment for Modeling and Simulating Software Engineering Processes , 1990, IEEE Trans. Knowl. Data Eng..

[38]  R. Słowiński Intelligent Decision Support: Handbook of Applications and Advances of the Rough Sets Theory , 1992 .

[39]  Roland Mittermeir,et al.  A survey of software reuse libraries , 1998, Ann. Softw. Eng..

[40]  Johannes Sametinger,et al.  Software Engineering with Reusable Components , 1997, Springer Berlin Heidelberg.

[41]  Jerzy W. Grzymala-Busse,et al.  Rough sets : New horizons in commercial and industrial AI , 1995 .

[42]  Arun Sen,et al.  The Role of Opportunism in the Software Design Reuse Process , 1997, IEEE Trans. Software Eng..

[43]  Shari Lawrence Pfleeger Measuring Reuse: A Cautionary Tale , 1996, IEEE Softw..

[44]  Heiko Koziolek,et al.  Performance evaluation of component-based software systems: A survey , 2010, Perform. Evaluation.

[45]  George J. Klir,et al.  Fuzzy sets, uncertainty and information , 1988 .