The Definition of Intelligent Computer Aided Software Engineering (I-CASE) Tools

The growing complexity of the software systems being developed and the use of different methodologies indicate the need for more computer support for automating software development process and evolution activity. Currently, Computer-Aided Software Engineering (CASE), which is a set of software systems aimed to support set of software process activities, does this automation. While CASE tools prove its importance to develop high quality software, unfortunately CASE tools doesn’t cover all software development activities. This is because some activities need intellectual human skills, which are not currently available as computer software. To solve this shortcoming, Artificial Intelligence (AI) approaches are the ones that can be used to develop software tools imitating these intellectual skills. This paper presents the definition of Intelligent Computer Aided Software Engineering (I-CASE). The definition encompasses two steps. The first step is a clear decomposition of each basic software development activity to sub activities, and classify each one of them whether it is an intellectual or procedural job. The second step is the addressing of each intellectual (un-automated) one to proper AI-based approach. These tools may be integrated into a package as an Integrated Development Environment (IDE) or could be used individually. The discussion and the next implementation step are reported. Keywords : Software Engineering, CASE tools, Artificial Intelligence

[1]  Roger S. Pressman,et al.  Software Engineering: A Practitionerʼs Approach, 7/e , 2009 .

[2]  Xin Yao,et al.  A novel co-evolutionary approach to automatic software bug fixing , 2008, 2008 IEEE Congress on Evolutionary Computation (IEEE World Congress on Computational Intelligence).

[3]  Mark Harman,et al.  Highly Scalable Multi Objective Test Suite Minimisation Using Graphics Cards , 2011, SSBSE.

[4]  Claudia Eckert,et al.  Design process improvement : a review of current practice , 2005 .

[5]  Carlo Ghezzi,et al.  A formal approach to adaptive software: continuous assurance of non-functional requirements , 2011, Formal Aspects of Computing.

[6]  Shadi Aljawarneh,et al.  An expert code generator using rule-based and frames knowledge representation techniques , 2014, 2014 5th International Conference on Information and Communication Systems (ICICS).

[7]  Muthu Ramachandran Software Components: Guidelines and Applications , 2008 .

[8]  Mark Harman,et al.  The role of Artificial Intelligence in Software Engineering , 2012, 2012 First International Workshop on Realizing AI Synergies in Software Engineering (RAISE).

[9]  Shin Yoo,et al.  Search based data sensitivity analysis applied to requirement engineering , 2009, GECCO.

[10]  Hany H. Ammar,et al.  Software Engineering Using Artificial Intelligence Techniques: Current State and Open Problems , 2012 .

[11]  Giuliano Antoniol,et al.  Software project planning for robustness and completion time in the presence of uncertainty using multi objective search based software engineering , 2009, GECCO.

[12]  Sunil Vadera,et al.  Artificial Intelligence in Software Engineering: Current Developments and Future Prospects , 2012 .

[13]  Giuliano Antoniol,et al.  Concept Location with Genetic Algorithms: A Comparison of Four Distributed Architectures , 2010, 2nd International Symposium on Search Based Software Engineering.

[14]  José Hernández-Orallo,et al.  Approaches and Applications of Inductive Programming, Third International Workshop, AAIP 2009, Edinburgh, UK, September 4, 2009. Revised Papers , 2010, AAIP.

[15]  Rachel Harrison,et al.  Subgroup Discovery for Defect Prediction , 2011, SSBSE.

[16]  David C Brown Artificial intelligence for design process improvement , 2005 .

[17]  Mark Harman,et al.  Search Based Software Engineering for Program Comprehension , 2007, 15th IEEE International Conference on Program Comprehension (ICPC '07).

[18]  Richard Fox,et al.  Automated Code Generation Using Case-Based Reasoning, Routine Design and Template-Based Programming , 2012, MAICS.

[19]  Markus Gebhardt,et al.  Tools and Methods for Validation and Verification as requested by ISO26262 , 2011, Softwaretechnik-Trends.

[20]  John A. Clark,et al.  Efficient Software Verification: Statistical Testing Using Automated Search , 2010, IEEE Transactions on Software Engineering.

[21]  Roger S. Pressman,et al.  Software Engineering: A Practitioner's Approach , 1982 .

[22]  Emanuel Kitzelmann,et al.  Inductive Programming: A Survey of Program Synthesis Techniques , 2009, AAIP.

[23]  Teresa H. Y. Meng,et al.  Merge: a programming model for heterogeneous multi-core systems , 2008, ASPLOS.

[24]  V. D.,et al.  Prof , 1973 .

[25]  Imran Sarwar Bajwa,et al.  NL-Based Automated Software Requirements Elicitation and Specification , 2011, ACC.

[26]  Mark Harman,et al.  Evolving a CUDA kernel from an nVidia template , 2010, IEEE Congress on Evolutionary Computation.

[27]  Ralf H. Reussner,et al.  Using Genetic Search for Reverse Engineering of Parametric Behavior Models for Performance Prediction , 2010, IEEE Transactions on Software Engineering.

[28]  Olga Ormandjieva,et al.  Toward a text classification system for the quality assessment of software requirements written in natural language , 2007, SOQUA '07.

[29]  John A. Clark,et al.  Finding short counterexamples in promela models using estimation of distribution algorithms , 2011, GECCO '11.

[30]  Claire Le Goues,et al.  Automatically finding patches using genetic programming , 2009, 2009 IEEE 31st International Conference on Software Engineering.