Software cultivation using the artificial intelligence design framework

All along the history of software engineering, traditional software development process has always been a labor intensive process. This is perhaps because we are still in the preliminary evolutionary stage of software production where the software has to be built by a group of software developers either from scratch or by combining and/or reusing the components that have already been developed. In this paper we propose a unique method of building software in a way that is analogous to the growth of any organism to the stage of an adult. In this process of software cultivation, the initial framework of the software system is built by a group of developers and then the system enhances its functionality by gathering domain knowledge from various regions of the Internet by using the Artificial Intelligence Design Framework (AIDF). The internal development of the system is guided by various design theories and methods such as Axiomatic design Theory (ADT) and Design Structure Matrix (DSM). The concept of AIDF was first presented to build a domain expert system in the field of Optical Backplane Engineering, but it was later found that it could be used to solve a wide range of problems including software development. In order to build a system that would design another system various methodologies and theories which have been proved and tested had to be utilized to build the framework for designing a system.Software development has been a process where lot of time and money has to be spent not only on the development process but also on a never-ending process of software maintenance. Sometimes this development process could face obstacles such as the creeping requirements problem where the requirements may change while the software development is still in process. Many software development processes may end in failure owing to the moving target problem due to the rapid change in the domain knowledge. Another way of looking at this problem would be that the domain expert will have to add changes to the domain expert system whenever the domain knowledge undergoes change in some form.The solution to this problem would be a migration from the process of software development to a process of software cultivation. This cultivation would be analogous to the cultivation of a plant in a pot, where we sow the seed and keep adding water and fertilizer to it. In this methodology, we create software and allow the software development framework to handle the process of software maintenance. Here, the process of software maintenance gets transformed into a process of software cultivation where the system consumes networked domain knowledge from the Internet and updates the software to meet the most recent requirements for a given problem domain. For instance, if we have developed a computer based system that helps in the design of optical fiber networks, a recent invention in that field could be used to update the system behavior.As part of the overall artificial intelligence approach, knowledge based engineering (KBE) plays an important role in the AIDF. There are many benefits of using KBE over traditional methods. The time to produce an engineering artifact can be substantially reduced by eliminating tedious engineering duties through automated reasoning. The wisdom of the organization and key people can be retained and accessed by future generations of workers. Concurrent engineering can be accomplished when disparate departments can meld their work together by working in parallel, as opposed to sequentially, enabled by a KBE system intelligently updating files in the background according to its programmed logic. The entire design process will become fully documented, pulling together scattered annotations, designs, suggestions, and established heuristics. Using new technologies, such as the Semantic Web, the KBE engineering system would enable designers to search repositories of parts globally, based on a sophisticated pre-recorded rule-base.One of the key recommendations made by the 2001 report Improving Engineering Design by the National Academy of Sciences was that "decision-making tools and decision theory" should be emphasized. In order to prevent problems occurring during the crucial conceptual stage of the design process, a framework needs to be created that enables the systematic collection, storage, and application of expert knowledge and state-of-the-art practices through machine intelligence. Addressing Suh's future projection of a "Thinking Design Machine" using software to assist engineers at the concept design stage, an Artificial Intelligence Design Framework (AIDF) is introduced. In order to help engineers get their design right the first time, this theory was shown to methodically create a valid design at the concept stage based on a set of axioms, corollaries, and theorems. In order to provide expert advice based on valid design theory, an AIDF is advanced using KBE techniques that capture expert domain knowledge and couple it to the Internet through the use of search agents and ontologies on the Semantic Web. An automated approach intended to get the design right the first time is accomplished by applying machine intelligence to sound axiomatic design theory. This validated approach is structured to prevent costly remedial work done at the end of the design cycle to correct for errors made in the conceptual design phase.The AIDF creates an efficient framework for design and redesign of a system. When a system is built from scratch and the domain knowledge is available on the Internet, sufficient initial design information should be made available to the AIDF. The AIDF will store this knowledge in the form of ontologies and RDF in the knowledge base and the database. The AIDF draws this information from the web agents and domain experts. It is the responsibility of the web agent to extract reliable information from the web, which can be greatly enhanced with Web Services and Semantic Web Technology. Once the information is stored in the AIDF, the AIDF starts rebuilding the software. First it redesigns the software and verifies the correctness of the design according to its rule-base and risk-mitigation algorithms. This verification is carried out in two stages. First the AIDF carries out the required analysis on the design and then if it finds that the design is fault free, it requests the user to verify the design. Once the design has been verified the code generator will generate the required code. If the designer considers that the design was inadequate or faulty, then the designer who also happens to be the user of the system makes recommendations into the system by considering the design as invalid. We need to bear in mind that the AIDF connects itself to the available domain knowledge available on the Internet and supplied directly by the domain expert. Of course, the AIDF does not intend to blindly pull a piece of code available to it and add it to the existing software without filtering through its rule-base and risk-mitigation algorithms. The idea of software cultivation using the AIDF is still in its embryonic stage and therefore, software quality assurance and other aspects associated with the process of software development could be dealt with as our research on software cultivation progresses.The knowledge base in Jena is represented in terms of RDF and ontologies. The ontologies provide a basis for the representation of domain knowledge. The RDF acts as a container for specifications and an excellent way of storing structured metadata. The domain knowledge of a particular system is very much subject to change and any change in the domain knowledge should be recorded and represented in a universally accepted way. Resource Description Framework (RDF) appears to be an excellent way of storing metadata. Jena, the Java technology tool for the Semantic Web, plays an integral role in this process. Jena identifies resources using the Uniform Resource Identifier (URI). The difference between the URI and the URL is that the URI can only identify a resource on the Web and is used predominantly in Web Services, whereas a URL not only identifies a resource on the Web but also locates it. This URI concept is used extensively in Jena. Jena contains library functions to build an RDF model. The complexity analysis for risk-mitigation and internal verification process is carried out using a combination of various analytical methodologies such as Conant theory, Axiomatic Design Theory, and Design Structure Matrix, in addition to risk analysis using methods such as Fault Tree Analysis (FTA) and Failure Mode and Effects Analysis (FMEA).This concept of building an AIDF requires some challenges to be met, most of which emanates from the reliability of the information available on the Internet. An immediate answer to that question would be that the AIDF accepts information that will fit into the system similar to that of a jigsaw puzzle. Sufficient amount of mathematical analysis will be applied on the incoming information content. On top of this, the web agents will derive domain information only from known sources. The AIDF is still in a conceptual phase and we are still looking at the technologies that will be used in building the AIDF.