Software Engineering Using Artificial Intelligence Techniques: Current State and Open Problems
The software systems that are developed these days have many complexities in supporting functional and nonfunctional requirements and the low quality of these systems results in catastrophic impact on the areas where they are used for mission critical applications. Another issue is the cost of the software is much high as compared to the total cost of the entire systems.Despite of large amount of research performed on the AI techniques and their applications to software engineering, there has been a little impact of these techniques on the tools and processes used by the software engineers . The AI techniques has been developed to improve the quality and reduce the marketing time of the software systems and yet they are only largely driven by research community. The paper surveys how artificial intelligence approaches are applied in the processes of software engineering. It has been proven that the AI approaches significantly improves the quality and reduces the marketing time of the software systems on which they are applied. In this paper the author relates AI techniques and software engineering processes as given in the IEEE 12207 standard of software engineering. The paper explains the tasks and activities for each software engineering processes as specified in the standard.
Our academic experts are ready and waiting to assist with any writing project you may have. From simple essay plans, through to full dissertations, you can guarantee we have a service perfectly matched to your needs.View our services
The purpose of the report: The paper that has been chosen to critique maps the current AI techniques described within various literature to the specific activities and tasks of software processes specified in the IEEE standard. These techniques are proposed mainly to automate or semi-automate the tasks and in low time provide optimal solutions. Through this paper we would discuss some of the state of art techniques of AI and how they can be used to automate software engineering process. Also we would discuss some of open problems and issue in the application of these techniques to the processes described in the paper.
1. IEEE standard
The IEEE standard defines the terminology that can be used during the entire life cycle processes of software by all the stakeholders. It covers all the tasks processes and activities applied during the acquisition phase followed by supply, development, operation and maintenance phases of software products. The paper describes the processes of the standard in a layered architecture and further explains the dependencies between the processes. The idea behind the description of these standard is to map AI technique with each of the tasks and activities in the processes and survey the importance of these techniques and the degree at which they are applied on each of them.
However, the paper only explains the activities and tasks during the development process of the system. The paper does not takes into consideration the maintenance, supply and operational processes and application of AI techniques on to them. The software development process mainly constitutes of four tasks namely, requirements elicitation, architecture design, coding and testing. The management activities for the software system development and maintenance are mainly driven by the software and system architecture . The flow of activities during the development process and related documents are described in the standard. The software and hardware requirements of the system is defined by the system architecture design activity which also makes the top-level architecture of the system. The main application of the AI techniques is in the software architecture design activity which includes design description, coding and testing.
The paper explains the issues and problems that arises during the software development activities and then suggest AI techniques that can be applied to them to simplify the tasks. The authors have performed survey on different paper on AI to suggest these solutions. The development activities have been divided into three subtasks in the paper where the issues and problems during these activities have been discussed alongside with the application of AI techniques to each of them. These subtasks are software requirement analysis, Software architecture design and software coding and testing.
2. Software requirement Analysis:
The first activity is of Requirement Engineering where the requirements are taken from the stakeholders and other sources which is in the form of set of documents in natural language. Some of the problems that arises during this phase are that the requirements are ambiguous, vague, imprecise, conflicting, volatile and incomplete. The paper explains following AI techniques used in requirement engineering process.
Processing Natural Language Requirements NLR:
This technique calls for transforming NLR automatically into specification and design. The paper draws references from different papers that explains how those papers defines different frameworks to transform the NL of the requirements into technical language. Some of the frameworks are NL2ACTL in which the NL sentences that define the properties of reactive system were translated into action based temporal logic statements. Another mentioned system was FORSEN where the NL requirements were translated into VDM which is a Formal specification language. The system also detect the NL requirements for ambiguities. These frameworks worked on the analogy between the noun phrases in the NL sentences and the data types of programming language. Similarly some of them worked on the analogy that the verb and adjectives describes the relationships between the operations, entities and functions of the system. Some of the systems have also attempted to translate NL requirements into OO oriented models. These are done through linguistic instruments. The researchers in this field have developed an approach that uses linguistic patterns to link the conceptual and linguistic world.
Knowledge Based Systems (KBS):
When the requirements were developed, the design families and inputs and outputs of the functionality of system were stored in KBS. The system then would search for the KB to advice a design schema which is further refined by the user to complete all their requirements. The READS tool support the front end activities like discovery of requirement, requirement traceability, analysis and decomposition, testing, documentation and allocation.
Another technique explained is called Ontologies. These are developed in order to integrate, reuse and merge knowledge and data to achieve communication and interoperability among the software system. The paper reference researchers who use ontological techniques and semantic web to gather, represent, analyze, model and reason about information and knowledge that is involved in the requirement engineering processes.
Intelligence Computing for Requirements Engineering:
The authors in this paper discusses some systems that are developed using the techniques of Computational Intelligence CI to simplify requirement engineering. The SPECIFIER system is chosen by the authors as the best system to explain the CI operations where the input are fed into the systems as informal specification in English sentences.
3. Software architecture design
The activity in the process of development is Software architecture design. It is a challenge for the software engineers to effectively develop a high quality architecture out of the requirement model . The authors describe recent development in the AI techniques application on software architecture. For the development of the architecture firstly the hierarchy of components and subsystems are defined along with the responsibilities allocated as per the information gathered from the requirements analysis model. Here AI techniques are utilized to gain goodness function over some possible architectures utilizing quality attributes. Some of these quality attributes are complexity, modularity, modifiability, reusability and understandability. Genetic algorithms and Product Line Architectures are the techniques that are developed in the recent years for software architecture development.
4. Software coding and testing
The paper explains how the techniques from AI makes the advanced program easy, particularly information flow and control due to progression in knowledge representation. In task of coding the AI techniques can be used by software engineers to assist and automate programming process. A remarkable system developed to assist the software programmer in this field is Programmer’s Apprentice that have the capability to interact with the human programmers that can possibly increase the productivity of the software programmers. In order to automate the programming process, the human specialists requires to write the complete specification of the software and then the AI technique can generate the data structures, functions or entire program from those specification. Many AI technologies that can be applied include Analogical reasoning, Case based reasoning (CBR), PTIDEJ and Search Based Software Engineering (SBSE). SBSE focuses on meta-heuristic for solving the software engineering problem with the use search algorithms developed in AI. Software testing is another complex and expensive task in the development process where automation is a possible challenge. AI can play an important role in this task. A significant research in this area is on constraint-based testing .
5. Open Problems
There are many problems as discussed in the paper where Artificial Intelligence can help during the development of the software requirements engineering such as Disambiguating NLRs, developing ontologies and knowledge based system for managing requirements and problem domains, using Computational Intelligence for solving problem of prioritization and incompleteness of requirements. Although the paper has emphasized little on the problem of translating the complex functional and non-functional requirements into architectures. There has been research and development in the area of fully automated test case design. Search-Based software testing has some problems such as it cannot handle the execution environment where resides the software under test and secondly it cannot handle the interactions with the file system, operating system, databases and network access . Similarly Constraint Based Testing has a challenge of scalability in the programs that have thousands lines in coding with dynamic data structures and complex statements.
The authors has surveyed many research papers on AI techniques to help the software engineers tackle problem they face during the development of the software system. The survey was focused on the requirements engineering, software architecture design, coding and testing activities, where the authors well defined these processes and highlight the issues and problems that software engineers face during these phases and surveyed different paper for possible AI techniques that can be applied to tackle the problems and issues.
From this overview it is obvious that Artificial Intelligence has strong potential to revolutionize software engineering processes. With many new applications and techniques it would be possible to develop knowledge-based systems to empower software development. There is much scope for evaluating and exploring the utilization of various AI techniques in the automation of Software engineering processes.
- B. W. Sorte, P. Joshi and V. Vandana, (2015), “Use of Artificial Intelligence in Software Development Life Cycle: A state of the Art Review”, International Journal of Technology Management, 03, 2309-4893, [Online], Available, https://www.researchgate.net/publication/274254538_Use_of_Artificial_Intelligence_in_Software_Development_Life_Cycle_A_state_of_the_Art_Review [Accessed on 5 January 2019]
- M. Harman, (2012), “The Role of Artificial Intelligence in Software Engineering”, Zurich, Switzerland, RAISE, [Online], Available, https://www.computer.org/csdl/proceedings/raise/2012/1753/00/06227961.pdf [Accessed on 5 January 2019]
- R. Feldt, F. G. de Oliveira Neto, and R. Torkar, (2018), “Ways of Applying Artificial Intelligence in Software Engineering”, Gothenburg, Sweden, ) RAISE’18, [Online], Available, https://arxiv.org/pdf/1802.02033.pdf[Accessed on 5 January 2019]
Cite This Work
To export a reference to this article please select a referencing stye below:
Related ServicesView all
DMCA / Removal Request
If you are the original writer of this essay and no longer wish to have your work published on UKEssays.com then please: