<?xml version="1.0" encoding="UTF-8"?>
<TEI xml:space="preserve" xmlns="http://www.tei-c.org/ns/1.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.tei-c.org/ns/1.0 https://raw.githubusercontent.com/kermitt2/grobid/master/grobid-home/schemas/xsd/Grobid.xsd"
 xmlns:xlink="http://www.w3.org/1999/xlink">
	<teiHeader xml:lang="en">
		<fileDesc>
			<titleStmt>
				<title level="a" type="main">An Approach and a Software Tool for Automatic Source Code Generation driven by Business Rules</title>
			</titleStmt>
			<publicationStmt>
				<publisher/>
				<availability status="unknown"><licence/></availability>
			</publicationStmt>
			<sourceDesc>
				<biblStruct>
					<analytic>
						<author>
							<persName><forename type="first">Andrii</forename><surname>Kopp</surname></persName>
							<email>kopp93@gmail.com</email>
						</author>
						<author>
							<persName><forename type="first">Dmytro</forename><surname>Orlovskyi</surname></persName>
							<email>orlovskyi.dm@gmail.com</email>
						</author>
						<author>
							<affiliation key="aff0">
								<orgName type="institution">National Technical University &quot;Kharkiv Polytechnic Institute&quot;</orgName>
								<address>
									<addrLine>Kyrpychova str. 2</addrLine>
									<postCode>61002</postCode>
									<settlement>Kharkiv</settlement>
									<country key="UA">Ukraine</country>
								</address>
							</affiliation>
						</author>
						<author>
							<affiliation key="aff1">
								<orgName type="department">International Conference on Computational Linguistics and Intelligent Systems</orgName>
								<address>
									<addrLine>May 12-13</addrLine>
									<postCode>2022</postCode>
									<settlement>Gliwice</settlement>
									<country key="PL">Poland</country>
								</address>
							</affiliation>
						</author>
						<title level="a" type="main">An Approach and a Software Tool for Automatic Source Code Generation driven by Business Rules</title>
					</analytic>
					<monogr>
						<imprint>
							<date/>
						</imprint>
					</monogr>
					<idno type="MD5">56E281E8B884A544A0D2B848442083B6</idno>
				</biblStruct>
			</sourceDesc>
		</fileDesc>
		<encodingDesc>
			<appInfo>
				<application version="0.7.2" ident="GROBID" when="2023-03-24T12:57+0000">
					<desc>GROBID - A machine learning software for extracting information from scholarly documents</desc>
					<ref target="https://github.com/kermitt2/grobid"/>
				</application>
			</appInfo>
		</encodingDesc>
		<profileDesc>
			<textClass>
				<keywords>
					<term>Business Rules</term>
					<term>Low-Code</term>
					<term>Source Code Generation</term>
					<term>Data Model</term>
					<term>Software Development</term>
				</keywords>
			</textClass>
			<abstract>
<div xmlns="http://www.tei-c.org/ns/1.0"><p>This paper proposes an approach to automatic source code generation driven by business rules. This approach is inspired by low-code and automatic programming to improve the software development process and accelerate product delivery through the source code generation from natural language statements. The proposed approach considers business rules as input, uses the triplestore model for knowledge representation based on business rules, utilizes association rules to suggest attribute data types, and produces an abstract data model. This abstract data model is a framework for software components generation of various purposes and syntax, such as SQL scripts for database tables creation and Java Beans for server-side implementation. A software solution based on the proposed approach translates the data model into the source code of software components: MySQL database and Java classes. But it can be extended to generate various software components based on different syntax rules. Performed experiments demonstrate that generated software components are verified and valid since they were checked using static code analysis and dynamic testing. Conclusion formulates research outcomes, obtained results, and limitations. Future work outlines the next research steps in this field.</p></div>
			</abstract>
		</profileDesc>
	</teiHeader>
	<text xml:lang="en">
		<body>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="1.">Introduction: Related Work and Problem Statement</head><p>The time between specifications capturing and the product delivery is critical for the software development process and its stakeholders. The source code generation could significantly increase the software development process by shortening the time between requirements gathering and delivery using automatic programming and low-code solutions. The main idea of automatic programming is to "tell the computer what to do rather than how to do the task" <ref type="bibr" target="#b0">[1]</ref>. Hence, automatic programming should be supported by some definitive high-level language that is closer to a natural language than a programming language <ref type="bibr" target="#b0">[1]</ref>. Low-code platforms provide information technologies that automate the creation and deployment of business applications that encourage business transformations <ref type="bibr" target="#b1">[2]</ref>. We can say that low-code platforms encapsulate automatic programming tools since they usually provide user-friendly visual environments to create ready software solutions for business needs by users with minimal programming skills <ref type="bibr" target="#b1">[2]</ref>. The encapsulation mentioned above means that knowledge models that automatic programming toolkits use to generate the source code can be created in a drag-anddrop manner via low-code platforms. However, in this study, we address the "low-code" term as the general concept rather than some software development platform. However, in this study, we address the "low-code" term as a general concept rather than some software development platform and focus mostly on the automatic programming aspect of the low-code approach. This paper aims at automatic source code generation from natural language statements given as SBVR business rules to facilitate the software development process by bridging a gap between business analysis and engineering.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="1.1.">Related Work</head><p>In this study, we propose to use the Semantic of Business Vocabulary and Rules (SBVR) standard for specifications representation comprehensible by humans and computers <ref type="bibr" target="#b2">[3]</ref>. SBVR is an Object Management Group (OMG) standard that facilitates the software development process.</p><p>Extraction of SBVR-based business rules from natural language business rules for computer processing was recently proposed by authors of papers <ref type="bibr" target="#b2">[3]</ref> and <ref type="bibr" target="#b3">[4]</ref>. Moreover, authors of <ref type="bibr" target="#b4">[5]</ref> consider the RDF-based (Resource Description Framework) knowledge representation models generation from SBVR business rules to provide a formal description of natural language as a graph or set of subjectpredicate-object triples.</p><p>Authors of <ref type="bibr" target="#b5">[6]</ref> state that SBVR guarantees traceability between models and quick applications development. However, <ref type="bibr" target="#b5">[6]</ref> only proposes the transformation of SBVR statements to UML (Unified Modeling Language) use case diagrams. Earlier studies consider the generation of SQL queries from SBVR business rules. For example, papers <ref type="bibr" target="#b6">[7]</ref> and <ref type="bibr" target="#b7">[8]</ref> consider SELECT SQL statements generation from pre-defined business vocabularies and rules. A later study <ref type="bibr" target="#b8">[9]</ref> also considers translation from SBVR specifications into SQL queries to provide an interface for the database. Authors of one of the recent papers <ref type="bibr" target="#b9">[10]</ref> also consider the translation of natural language descriptions into SQL queries for data retrieval. Earlier we also proposed an approach and software prototype for the translation of natural language business rules into SQL database creation scripts <ref type="bibr" target="#b10">[11]</ref>.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="1.2.">Problem Statement</head><p>Our previous study is based on the translation of fact business rules (statements that define entities and relationships within data models <ref type="bibr" target="#b11">[12]</ref>) structured according to the Wiegers taxonomy <ref type="bibr" target="#b11">[12]</ref> into SQL DDL (Data Definition Language) scripts. Now we attempt to use the SBVR OMG standard to provide a unified solution that can be integrated with other software development utilities. Also, we want to improve the previously proposed approach by using the Model-Driven Development (MDD) paradigm when business rules are given as subject domain descriptions to build an abstract model with multiple possible implementations <ref type="bibr" target="#b12">[13]</ref>. In MDD, abstract models are major artifacts that serve as sources to generate the source code or other software engineering artifacts (see Fig. <ref type="figure" target="#fig_0">1 below)</ref>. Therefore, in this study we need to solve the following tasks. 1. Propose a procedure for translation of business rules given as SBVR statements into the RDFbased triplestore model that operates subject-predicate-object triples.</p><p>2. Propose a procedure for translation of the triplestore model that describes a subject domain on the conceptual level into the data model that describes an abstract software artifact.</p><p>3. Propose a procedure to suggest attribute data types that will be added to the abstract model, considering their translation into language-specific data types, e.g. primitive data types in Java or MySQL data types. 4. Develop a software solution based on previously mentioned procedures (1-3) to implement the proposed approach. 5. Perform experiments with a sample set of business rules by translating them into the software components. Verify and validate generated source code.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.">An Approach to Automatic Source Code Generation driven by Business Rules 2.1. Translation of Business Rules given as Structured English Statements into the Triplestore Model</head><p>According to <ref type="bibr" target="#b13">[14]</ref>, the SBVR Structured English (SSE) is a syntax that serves for textual mapping of SBVR concepts and rules. In general, SSE defines four formatting styles, including terms, names, verbs, and keywords <ref type="bibr" target="#b13">[14]</ref>. The verbs-based style seems most suitable for the representation of fact business rules. This SSE style defines relationships between concepts. For example, the business rule "order includes items" contains two nouns and a verb. These two nouns describe concepts "order" and "item", and the "includes" verb describes the relationship between these two concepts.</p><p>The Resource Description Framework (RDF) is a modern knowledge representation framework. It solves the problem of knowledge representation since irregularities and exceptions make it difficult to process natural languages. It statements contain three elements (triples): subject, predicate, and object. Such knowledge representation is easily processed by machines and readable for humans <ref type="bibr" target="#b14">[15]</ref>.</p><p>Considering the SSE syntax, we propose the following algorithm for translating fact business rules given as the SSE statements into the triplestore model as it is done in <ref type="bibr" target="#b4">[5]</ref> (see Fig. <ref type="figure" target="#fig_0">1 below</ref>).</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Figure 2:</head><p>The algorithm for translating fact business rules into the triplestore model Therefore, having the 𝑛 business rules, we can obtain a set 𝑇 of 𝑛 triples using the algorithm for translating fact business rules into the triplestore model (Fig. <ref type="figure" target="#fig_0">1</ref>): 𝑇 = {𝑡 𝑖 = 〈𝑠 𝑖 , 𝑝 𝑖 , 𝑜 𝑖 〉|𝑖 = 1, 𝑛},</p><p> 𝑡 𝑖 is the 𝑖-th triple, 𝑖 = 1, 𝑛;  𝑠 𝑖 is the subject within the 𝑖-th triple 𝑡 𝑖 , 𝑖 = 1, 𝑛;  𝑝 𝑖 is the predicate within the 𝑖-th triple 𝑡 𝑖 , 𝑖 = 1, 𝑛;  𝑜 𝑖 is the object within the 𝑖-th triple 𝑡 𝑖 , 𝑖 = 1, 𝑛;  𝑛 is the number of business rules and corresponding triples. Using the triplestore (1), now we can store triples, obtained using the input business rules, and retrieve triples to build object-oriented, entity-relationship, and other data models. Furthermore, we can use these data models to generate information system components, such as application classes and structures, database tables, etc.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.2.">Translation of the Triplestore Model into the Data Model</head><p>Now we can use the triplestore formulated in the previous sub-section to build a data model. First of all, it is necessary to identify entities and their attributes based on fact business rules given as SSE statements and then translated into triples.</p><p>At the data modeling step, we need to define which attributes can have null or missing values and which attributes cannot. In the future, these attributes will be implemented as class properties or database table columns. Therefore, certain business logic, even such primitive, should be already introduced.</p><p>Moreover, entities should be interrelated to achieve data consistency. Hence, we should treat business rules not only as sources of entities and the respective attributes but also as sources of relationships among entities.</p><p>Thus, to restrict the syntax of fact business rules, we propose to consider only several verbs according to their purpose:</p><p>6. "has" and "owns" verbs should be used to detect entities and their attributes (see Fig. <ref type="figure">2</ref>), e.g. "product has description" or "product owns title", where:  "has" means unnecessary attributes that can hold null or missing values;  "owns" means mandatory attributes that cannot hold null or missing values;   𝜃 is the mapping between attributes and entities these attributes belong to: 𝜃: 𝑎 𝑘 → 𝑒 𝑗 , 𝑘 = 1, 𝑝, 𝑗 = 1, 𝑚;  𝜑 is the mapping between relationships and entities they link: 𝜑: 𝑟 𝑙 → 〈𝑒 𝑐 , 𝑒 𝑝 〉, 𝑙 = 1, 𝑞;  𝑒 𝑐 ∈ 𝐸 is the so-called "child entity" that depends on the so-called "parent entity" 𝑒 𝑝 ∈ 𝐸;  𝜇 is the mapping between attributes and their status to define whether they are mandatory, 𝜇(𝑎 𝑘 ) = 1, or not, 𝜇(𝑎 𝑘 ) = 0: 𝜇: 𝑎 𝑘 → {0,1}, 𝑘 = 1, 𝑝. Now having the data model elements <ref type="bibr" target="#b1">(2)</ref> we can build different software implementations of these models. For example, we can use 𝐷𝑀 (2) to build SQL scripts for relational database creation. Or we can use 𝐷𝑀 (2) to create Java Beans for enterprise information system development. We can even use 𝐷𝑀 (2) to produce smart contract code for blockchain-driven decentralized applications development.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.3.">Suggestion of Attribute Data Types based on Association Rules</head><p>In this sub-section, we propose to use the approach based on association rules <ref type="bibr" target="#b15">[16]</ref> to suggest attribute data types. According to this approach, the sets of items are called antecedent or left-handside 𝐿𝐻𝑆 and consequent or right-hand-side or 𝑅𝐻𝑆 of the rule. Hence, the rule is formed as the implication 𝐿𝐻𝑆 ⇒ 𝑅𝐻𝑆, where 𝐿𝐻𝑆 ∩ 𝑅𝐻𝑆 = ∅.</p><p>According to our idea, as the left-hand side, we can use column names of existing databases and as the right-hand side, we can use data types of the respective columns. To implement the proof-ofconcept and conduct experiments, we propose to use the "Spider" dataset <ref type="bibr" target="#b16">[17]</ref> maintained by Yale students. This dataset includes 200 databases with multiple tables covering 138 different domains.</p><p>Each database in the "Spider" dataset is given as the set of SQL scripts and as the SQLite file. Hence, such databases could be easily processed table by table to build association rules 𝐿𝐻𝑆 ⇒ 𝑅𝐻𝑆, where 𝐿𝐻𝑆 is the column (attribute) name and 𝑅𝐻𝑆 is the data type respectively.</p><p>According to the approach based on association rules, we propose the following algorithm to obtain attribute data types suggestions based on the association rules (see Fig. <ref type="figure" target="#fig_3">5 below</ref>). Let us make the proposed idea clearer by introducing the following example. We assume that dealing with the dataset of multiple databases each of which contains an entity (table) with the "phone" attribute (column). Let us consider 8 cases of tables with the "phone" column (see Fig. <ref type="figure" target="#fig_4">6</ref> below). Data types used for the "phone" column vary from one to another database (see Fig. <ref type="figure" target="#fig_4">6 below</ref>). Nevertheless, after processing the dataset, we discover that the "phone" column has the following data types (see Fig. <ref type="figure" target="#fig_4">6 below):</ref>  "varchar( <ref type="formula">24</ref>)" in 4 out of 8 cases;  "varchar(30)" in 1 out of 8 cases;  "integer" in 1 out of 8 cases;  "varchar(20)" in 2 out of 8 cases. Since the maximum confidence (conf = 0.5) was reached for the first association rule "𝑝ℎ𝑜𝑛𝑒" ⇒ "𝑣𝑎𝑟𝑐ℎ𝑎𝑟(24)", the "varchar(24)" data type could be suggested for the "phone" attribute of the data model 𝐷𝐵 (2) created in the previous stage.</p><p>Therefore, having business rules of 𝑝 attributes each of which is associated with 𝑤 data types, we can use the following equation to calculate confidence values of the association rules:</p><formula xml:id="formula_1">conf 𝑘 𝑣 (𝐿𝐻𝑆 𝑘 ⇒ 𝑅𝐻𝑆 𝑘 𝑣 ) = supp(𝐿𝐻𝑆 𝑘 ∪ 𝑅𝐻𝑆 𝑘 𝑣 ) supp(𝐿𝐻𝑆 𝑘 ) , 𝑘 = 1, 𝑝, 𝑣 = 1, 𝑤,<label>(3)</label></formula><p>where:  𝐿𝐻𝑆 𝑘 is the 𝑘-th attribute placed as the left-hand-side of the rule;  𝑅𝐻𝑆 𝑘 𝑣 is the 𝑣-th data type associated with the 𝑘-th attribute placed as the right-hand-side of the rule;  supp is the number of rules that contain a given set of items. Let us introduce the set of data types 𝐷 = {𝑑 𝑘 |𝑘 = 1, 𝑝} as part of the data model 𝐷𝑀 (2) that correspond to each attribute 𝑎 𝑘 , 𝑘 = 1, 𝑝, so it will look like: 𝐷𝑀 = 〈𝐸, 𝐴, 𝑅, 𝜃, 𝜑, 𝐷〉.</p><p>The task includes a search of the most suitable data types 𝑑 𝑘 , 𝑘 = 1, 𝑝 for given attributes 𝑎 𝑘 , 𝑘 = 1, 𝑝 mentioned in the data model 𝐷𝑀 (2) created in the previous stage.</p><p>Therefore, using calculated confidence values (3) of considered association rules we can find the most suitable data types for data model 𝐷𝑀 (2) attributes:</p><formula xml:id="formula_2">𝑑 𝑘 = arg max 𝑅𝐻𝑆 𝑘 𝑣 {conf 𝑘 𝑣 (𝐿𝐻𝑆 𝑘 ⇒ 𝑅𝐻𝑆 𝑘 𝑣 )|𝑣 = 1, 𝑤} , 𝑘 = 1, 𝑝.<label>(4)</label></formula><p>Since we use the "Spider" dataset, the expected data types suggested for data model attributes will be specific for the SQLite databases this dataset includes.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.4.">Adjustment of Suggested Attribute Data Types for usage in Different Software Development Technologies</head><p>Therefore, we should introduce the bottom-up mapping from SQLite-specific to generic data types. Moreover, we also need to introduce a set of top-down mappings from the generic data types from generic data types to technology-specific ones used in chosen programming languages, platforms, database management systems, etc.</p><p>Hence, taking into account the generic data types, we can derive them from SQLite-specific data types <ref type="bibr" target="#b17">[18]</ref> 𝑑 𝑘 , 𝑘 = 1, 𝑝 suggested for corresponding attributes 𝑎 𝑘 , 𝑘 = 1, 𝑝 (see Fig. <ref type="figure" target="#fig_5">7 below</ref>). According to the PYPL (PopularitY of Programming Language) rating for February 2022 <ref type="bibr" target="#b18">[19]</ref>, the most popular statically-typed programming languages used in enterprise software development are Java and C#. As for the database management systems, the most popular for February 2022 are SQLbased relational database management systems Oracle, MySQL, and Microsoft SQL Server according to the DB-Engines Ranking <ref type="bibr" target="#b19">[20]</ref>. According to the "Top 5 Programming Languages To Build Smart Contracts" rating by 101 Blockchains research platform <ref type="bibr" target="#b20">[21]</ref>, Solidity is the first among popular smart contract programming languages.</p><p>Corresponding data types used in the most popular enterprise programming languages and SQLbased database management systems are demonstrated in Table <ref type="table" target="#tab_0">1</ref> below. Using the algorithm (Fig. <ref type="figure" target="#fig_5">7</ref>) and the mapping between languages and generic data types (Table <ref type="table" target="#tab_0">1</ref>), various software development components can be generated based on the data model 𝐷𝑀 (2): classes or structures, database scripts, smart contracts, or other source code that declare data structures.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.5.">Implementation of Software Components using Different Technologies based on the Data Model</head><p>The proposed approach assumes building the abstract data model 𝐷𝑀 (2) from the SSE business rules to define entities (or concepts), their attributes, and relationships among them. Also, the proposed approach assumes the extension of the data model 𝐷𝑀 (2) with the attribute data types based on the association rules build from the "Spider" dataset of SQLite databases of different industries. SQLite-based data types then generalized up to the generic data types, such as Integer, Floating-point, Boolean, and String. Then, we can use the data model 𝐷𝑀 (2) to generate software components having only the SSE business rules on input, according to the specific technology, platform, or language that has its syntax and data types.</p><p>Therefore, the object-oriented model of the proposed approach is represented in Fig. <ref type="figure" target="#fig_6">8</ref> below.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Figure 9: The object-oriented model of the proposed approach</head><p>As it is demonstrated in the model above (see Fig. <ref type="figure" target="#fig_6">8</ref>), the data model 𝐷𝑀 (2) should be extended with the syntax rules and specific data types to generate:  Java-based software components, such as POJO (Plain Old Java Objects, i.e. simple Java objects), Java Beans, Enterprise Java Beans (EJB), and others;  SQL-based software components, such as MySQL, Microsoft SQL Server, and other database creation scripts;  other software components, such as source code or configuration files according to the given syntactic rules. Therefore, the data model 𝐷𝑀 (2) based on the SSE business rules and data type association rules can be used to automatically generate almost any software component for which are only necessary:  rules on entity representation according to a given syntax;  rules on attribute representation, including mandatory ones, according to a given syntax;  rules on relationship representation according to a given syntax;  rules on attribute data type representation according to a given syntax. Such rules could be programmed when the object-oriented model (see Fig. <ref type="figure" target="#fig_6">8</ref>) is transformed into a software solution to implement the proposed approach and perform experiments.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.">Results and Discussion</head></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.1.">Software Implementation of the Proposed Approach</head><p>We have implemented the software solution using the Python programming language because of its relative simplicity, flexibility, and rich collection of packages, including the packages for natural language processing and database operations.</p><p>The software solution uses the following external dependencies demonstrated in Fig. <ref type="figure">9</ref> below.  the "Data Model Extractor" component is responsible for processing SSE business rules given as input by translating them into triples and then formulating entities, their attributes, and relationships from these triples;  the "Data Type Suggestion" component is responsible for utilizing association rules and suggesting the data types for entity attributes according to the selected programming language;  the "Association Rules Evaluation" component is responsible for processing the "Spider" dataset and building association rules that can be used then by the previously mentioned component to suggest the entity attribute data types;  the "Source Code Generation" component uses all of the previously mentioned components to produce the source code using the selected programming language (e.g., Java Beans, SQL scripts, etc.) according to the created data model and suggested data types. The source code generation scheme (see Fig. <ref type="figure" target="#fig_8">11 below</ref>) describes translation from the data model 𝐷𝑀 (2) (that includes entities, their attributes (mandatory or not-null and optional), and relationships) into the source code of software components described only by SSE business rules on input. The developed software tool can use the data model 𝐷𝐵 (2) to produce Java Beans, SQL scripts, or other software components according to pre-configured syntactic rules. In the following sub-section, we demonstrate sample business rules, corresponding data models with suggested attribute data types, and produced software components created using the Java and SQL languages syntax.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.2.">Demonstration of Source Code Generation from Business Rules</head><p>Let us consider the example of business rules that describe brands, products, and categories as part of the e-commerce platform. It is well known that nowadays online stores are large websites with complex frontend but even more complex backend software components used as their parts.</p><p>Development and maintenance of medium and large e-commerce websites require considerable software development and database design effort. However, this effort could be reduced using the proposed approach and developed software tool. Therefore, in this sub-section, we will demonstrate the automatic generation of Java Beans for the backend business logic and SQL scripts to create the database tables of an enterprise e-commerce platform.</p><p>According to the proposed approach, the business rules of intended software components should be given in the SSE format. Hence, sample business rules are following: brand owns origin country. Therefore, we can pass these business rules as the input data of developed software and obtain the following triplestore model (see Fig. <ref type="figure" target="#fig_9">12 below</ref>).  The data model then was extended by attribute data types (see Table <ref type="table" target="#tab_2">2</ref>) based on association rules built using the "Spider" dataset that contains 200 databases of 138 different domains. Obtained results (see Table <ref type="table" target="#tab_2">2</ref>) show the highest confidence of suggested data types for "title" (0.60) and "votes" (0.50) attributes, intermediate confidence for "rating" (0.38) and "amount" (0.33) attributes, and low confidence for "price" (0.29) and "description" (0.25) attributes.</p><formula xml:id="formula_3"></formula><p>Finally, SQL scripts and Java Beans were generated based on the data model (see Fig. <ref type="figure" target="#fig_11">14 below</ref>). The data model also demonstrates specific data types of database table columns in SQL scripts and class fields in Java Beans respectively. The source code of generated software components, including SQL database tables creation scripts and Java Beans, is available in the project's GitHub repository <ref type="bibr" target="#b21">[22]</ref>.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.3.">Verification and Validation of the Generated Source Code</head><p>Now we need to verify and validate generated software components. Whereas verification answers the question "are we building the product right?" and corresponds to the static code checking, validation answers the question "are we building the right product?" and corresponds to the dynamic code testing <ref type="bibr" target="#b22">[23]</ref>.</p><p>We used the following tools to verify and validate generated SQL database creation scripts and Java Beans:  MySQLone of the most popular free relational databases;  phpMyAdmina free web software tool for handling the administration of MySQL;  JDK (Java Development Kit) and Eclipse IDE (Integrated Development Environment);  SonarLintan IDE extension for identification of quality and security issues in the code;  JUnita unit testing framework for the Java programming language. Using the SonarLint extension for Eclipse IDE we completed the static analysis of SQL database creation scripts. Verification results show no issues identified in the code.</p><p>However, the static analysis of Java Beans code shows four types of identified issues. These issues include invalid class names, field names, and method names, as well as usage of generic exceptions instead of dedicated ones (see Fig. <ref type="figure" target="#fig_12">15 below</ref>).       As for the limitations, static code analysis of created Java Beans (see Fig. <ref type="figure" target="#fig_12">15</ref>) shows that generated classes, fields, and methods do not match Java naming conventions. Therefore, we should elaborate on the proposed approach and software solution in future work to prevent such issues and introduce an automatic generation of dedicated exceptions.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.4.">Contribution to Intelligent Source Code Generation Systems</head><p>Despite the detected limitations (missing dedicated exceptions and naming violations in Java code) of the proposed approach and the software tools, the generated SQL database creation scripts and the Java Bean classes are valid and correspond to the given business rules (see Section 3.3). Generated artifacts can be used in an information system software development project after minor tuningto customize data types and meet coding conventions. Therefore, this study encourages projects to move toward Intelligent Software Engineering practices that assume the usage of intelligent techniques in Software Engineering <ref type="bibr" target="#b23">[24]</ref>. The proposed approach and the software tool based on Natural Language Processing techniques assume the implementation of an intelligent source code generation system that is supposed to bridge the gap between software requirements (given as business rules) and the design of the information system's data layer. Furthermore, the elaborated intelligent system will result in an automatic source code generation environment that can augment traditional IDEs.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.">Conclusion and Future Work</head><p>In this paper, we proposed the approach to automatic source code generation driven by business rules. This approach includes several steps: translation of business rules given as SBVR Structured English statements into the triplestore model, translation of the triplestore model into the data model, suggestion of attribute data types based on association rules, adjustment of suggested attribute data types for usage in different software development technologies. The object-oriented model of the proposed approach describes its general idea and area of usage.</p><p>The Python-based software solution uses the "Spider" dataset of about two hundred databases with multiple tables covering different domains to suggest attribute data types. The software tool uses the Natural Language Toolkit package for business rules tokenization and part of speech tagging.</p><p>Currently, the software tool has a command-line user interface and allows to generate software components using SQL and Java syntax to produce SQL tables creation scripts for database layer implementation and Java Beans for backend layer implementation.</p><p>We used the developed software solution to perform experiments with the sample set of business rules given in the SSE format. These business rules were translated into triples to build the conceptual model of the subject domain. The conceptual model based on the triplestore model was built, attribute data types were suggested and adjusted according to SQL and Java syntax rules. Finally, generated software components were verified using the static code analysis performed by SonarLint for Eclipse IDE and validated using the dynamic code testing performed by SQL data manipulation statements and JUnit test cases.</p><p>Produced SQL scripts and Java classes are completely operable, tables with foreign key constraints were created and Java Beans were compiled. However, obtained verification and validation results show naming issues and generic exceptions misuse in generated Java Beans.</p><p>Future work in this field includes the elaboration of the proposed approach and created software solution to avoid current limitations and extend types of software components that can be generated based on business rules.</p></div><figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_0"><head>Figure 1 :</head><label>1</label><figDesc>Figure 1: Abstract models serving as sources to generate the source code or other artifacts</figDesc><graphic coords="2,72.24,477.00,450.60,88.20" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_1"><head>Figure 3 :</head><label>3</label><figDesc>Figure 3: Sample business rules and the expected entity with attributes</figDesc><graphic coords="4,194.52,510.84,206.04,56.04" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_2"><head>Figure 4 :</head><label>4</label><figDesc>Figure 4: Sample business rules and the expected related entities</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_3"><head>Figure 5 :</head><label>5</label><figDesc>Figure 5: The algorithm for data model design based on the triplestore model Therefore, having the set 𝑇 we can obtain data model elements 𝐷𝑀, such as entities 𝐸, attributes 𝐴, and relationships 𝑅 using the algorithm (Fig. 4) for data model design based on the triplestore model: 𝐷𝑀 = 〈𝐸, 𝐴, 𝑅, 𝜃, 𝜑, 𝜇〉, (2) where:  𝐸 is the set of entities, 𝐸 = {𝑒 𝑗 |𝑗 = 1, 𝑚};  𝐴 is the set of attributes, 𝐴 = {𝑎 𝑘 |𝑘 = 1, 𝑝};  𝑅 is the set of relationships, 𝑅 = {𝑟 𝑙 |𝑙 = 1, 𝑞}; 𝜃 is the mapping between attributes and entities these attributes belong to: 𝜃: 𝑎 𝑘 → 𝑒 𝑗 , 𝑘 = 1, 𝑝, 𝑗 = 1, 𝑚;  𝜑 is the mapping between relationships and entities they link: 𝜑: 𝑟 𝑙 → 〈𝑒 𝑐 , 𝑒 𝑝 〉, 𝑙 = 1, 𝑞;  𝑒 𝑐 ∈ 𝐸 is the so-called "child entity" that depends on the so-called "parent entity" 𝑒 𝑝 ∈ 𝐸;  𝜇 is the mapping between attributes and their status to define whether they are mandatory, 𝜇(𝑎 𝑘 ) = 1, or not, 𝜇(𝑎 𝑘 ) = 0: 𝜇: 𝑎 𝑘 → {0,1}, 𝑘 = 1, 𝑝. Now having the data model elements (2) we can build different software implementations of these models. For example, we can use 𝐷𝑀 (2) to build SQL scripts for relational database creation. Or we</figDesc><graphic coords="5,77.04,72.00,440.64,445.32" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_4"><head>Figure 6 :</head><label>6</label><figDesc>Figure 6: The algorithm to obtain attribute data types suggestions based on the association rules</figDesc><graphic coords="6,121.80,321.00,351.36,420.00" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_5"><head>Figure 7 :</head><label>7</label><figDesc>Figure 7: Sample dataset for association rules calculation and data types suggestion</figDesc><graphic coords="7,72.12,214.32,450.72,165.96" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_6"><head>Figure 8 :</head><label>8</label><figDesc>Figure 8: The algorithm to obtain generic data types based on the SQLite-specific data types</figDesc><graphic coords="8,129.48,210.84,335.40,238.68" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_7"><head>Figure 10 :</head><label>10</label><figDesc>Figure 10: External dependencies of the software tool</figDesc><graphic coords="10,167.04,183.48,261.00,108.60" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_8"><head>Figure 11 :</head><label>11</label><figDesc>Figure 11: The detailed structure of implemented software tool</figDesc><graphic coords="10,72.24,422.40,450.60,314.40" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_9"><head>Figure 12 :</head><label>12</label><figDesc>Figure 12: The source code generation procedure</figDesc><graphic coords="11,72.24,277.80,450.60,204.60" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_10"><head>Figure 13 :</head><label>13</label><figDesc>Figure 13: The triplestore model based on business rules</figDesc><graphic coords="12,108.48,298.08,378.00,217.80" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_11"><head>Figure 14 :</head><label>14</label><figDesc>Figure 14: The data model based on triplestore model</figDesc><graphic coords="12,168.48,579.96,258.00,114.60" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_12"><head>Figure 15 :</head><label>15</label><figDesc>Figure 15: The source code of Java and SQL software components generated from business rules</figDesc><graphic coords="13,253.55,274.45,269.40,341.85" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_13"><head>Figure 16 :</head><label>16</label><figDesc>Figure 16: Types of identified issues in generated Java Beans</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_14"><head>Figure 17 :</head><label>17</label><figDesc>Figure 17: Scripts that demonstrate integrity and consistency of created database tables</figDesc><graphic coords="14,72.48,385.08,450.00,138.00" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_15"><head>17</head><label>17</label><figDesc></figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_16"><head></head><label></label><figDesc>below) demonstrate successfully passed cases that check setters for mandatory class fields.</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_17"><head>Figure 18 :</head><label>18</label><figDesc>Figure 18: Successfully passed JUnit test cases</figDesc><graphic coords="14,72.72,587.04,141.72,93.84" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_18"><head>17</head><label>17</label><figDesc></figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_19"><head></head><label></label><figDesc>) show the validness of created Java Beans that contain setters throwing exceptions if null values are passed as input parameters.</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0"><head></head><label></label><figDesc></figDesc><graphic coords="3,81.48,318.84,431.40,424.56" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0"><head></head><label></label><figDesc></figDesc><graphic coords="9,101.76,247.44,391.20,285.60" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_0"><head>Table 1</head><label>1</label><figDesc>Data types used in the most popular software development technologies</figDesc><table><row><cell>Generic type</cell><cell>Integer</cell><cell>Floating-point</cell><cell>Boolean</cell><cell>String</cell></row><row><cell>Technology</cell><cell></cell><cell></cell><cell></cell><cell></cell></row><row><cell>Java</cell><cell>int</cell><cell>double</cell><cell>boolean</cell><cell>String</cell></row><row><cell>C#</cell><cell>int</cell><cell>double</cell><cell>bool</cell><cell>string</cell></row><row><cell>SQL</cell><cell>int</cell><cell>real</cell><cell>smallint(1)</cell><cell>varchar(255)</cell></row><row><cell>Solidity</cell><cell>int</cell><cell>int</cell><cell>bool</cell><cell>string</cell></row></table></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_2"><head>Table 2</head><label>2</label><figDesc>The suggested data types based on association rules</figDesc><table><row><cell>Attribute</cell><cell>Data</cell><cell cols="3">Confidence Attribute Data</cell><cell cols="3">Confidence Attribute Data</cell><cell>Confidence</cell></row><row><cell></cell><cell>type</cell><cell></cell><cell></cell><cell>type</cell><cell></cell><cell></cell><cell>type</cell><cell></cell></row><row><cell>title</cell><cell>String</cell><cell>0.60</cell><cell>price</cell><cell>String</cell><cell>0.29</cell><cell>rating</cell><cell>String</cell><cell>0.38</cell></row><row><cell cols="2">description String</cell><cell>0.25</cell><cell>amount</cell><cell>Float</cell><cell>0.33</cell><cell>origin</cell><cell>String</cell><cell>-</cell></row><row><cell>image</cell><cell>String</cell><cell>-</cell><cell>votes</cell><cell>Integer</cell><cell>0.50</cell><cell>country</cell><cell></cell><cell></cell></row></table></figure>
		</body>
		<back>
			<div type="references">

				<listBibl>

<biblStruct xml:id="b0">
	<analytic>
		<title level="a" type="main">Automatic programming: The open issue?</title>
		<author>
			<persName><forename type="first">M</forename><surname>O'neill</surname></persName>
		</author>
		<author>
			<persName><forename type="first">L</forename><surname>Spector</surname></persName>
		</author>
		<idno type="DOI">10.1007/s10710-019-09364-2</idno>
	</analytic>
	<monogr>
		<title level="j">Genetic Programming and Evolvable Machines</title>
		<imprint>
			<biblScope unit="volume">21</biblScope>
			<biblScope unit="page" from="251" to="262" />
			<date type="published" when="2020">2020</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b1">
	<analytic>
		<title level="a" type="main">Low-Code Platform for Application Development</title>
		<author>
			<persName><forename type="first">K</forename><surname>Talesra</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><forename type="middle">S</forename><surname>Nagaraja</surname></persName>
		</author>
		<idno type="DOI">10.37622/IJAER/16.5.2021.346-351</idno>
	</analytic>
	<monogr>
		<title level="j">International Journal of Applied Engineering Research</title>
		<imprint>
			<biblScope unit="volume">16</biblScope>
			<biblScope unit="issue">5</biblScope>
			<biblScope unit="page" from="346" to="351" />
			<date type="published" when="2021">2021</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b2">
	<analytic>
		<title level="a" type="main">The semantic of business vocabulary and business rules: an automatic generation from textual statements</title>
		<author>
			<persName><forename type="first">A</forename><surname>Haj</surname></persName>
		</author>
		<idno type="DOI">10.1109/ACCESS.2021.3071623</idno>
	</analytic>
	<monogr>
		<title level="j">IEEE Access</title>
		<imprint>
			<biblScope unit="volume">9</biblScope>
			<biblScope unit="page" from="56506" to="56522" />
			<date type="published" when="2021">2021</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b3">
	<analytic>
		<title level="a" type="main">Automatic extraction of SBVR based business vocabulary from natural language business rules</title>
		<author>
			<persName><forename type="first">A</forename><surname>Haj</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Y</forename><surname>Balouki</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Gadi</surname></persName>
		</author>
		<idno type="DOI">10.1007/978-3-030-11914-0_19</idno>
	</analytic>
	<monogr>
		<title level="m">International Conference on Advanced Information Technology, Services and Systems</title>
				<meeting><address><addrLine>Cham</addrLine></address></meeting>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2018">2018</date>
			<biblScope unit="page" from="170" to="182" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b4">
	<analytic>
		<title level="a" type="main">Generating RDFS Based Knowledge Graph from SBVR</title>
		<author>
			<persName><forename type="first">B</forename><surname>Akhtar</surname></persName>
		</author>
		<idno type="DOI">10.1007/978-981-13-6052-7_53</idno>
	</analytic>
	<monogr>
		<title level="m">International Conference on Intelligent Technologies and Applications</title>
				<meeting><address><addrLine>Singapore</addrLine></address></meeting>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2018">2018</date>
			<biblScope unit="page" from="618" to="629" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b5">
	<analytic>
		<title level="a" type="main">Tool Support to Automate Transformations from SBVR to UML Use Case Diagram</title>
		<author>
			<persName><forename type="first">I</forename><surname>Essebaa</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Chantit</surname></persName>
		</author>
		<idno type="DOI">10.5220/0006817705250532</idno>
	</analytic>
	<monogr>
		<title level="j">ENASE</title>
		<imprint>
			<biblScope unit="page" from="525" to="532" />
			<date type="published" when="2018">2018</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b6">
	<analytic>
		<title level="a" type="main">Generating SQL queries from SBVR rules</title>
		<author>
			<persName><forename type="first">S</forename><surname>Moschoyiannis</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Marinos</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Krause</surname></persName>
		</author>
		<idno type="DOI">10.1007/978-3-642-16289-3_12</idno>
	</analytic>
	<monogr>
		<title level="m">International Workshop on Rules and Rule Markup Languages for the Semantic Web</title>
				<meeting><address><addrLine>Berlin, Heidelberg</addrLine></address></meeting>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2010">2010</date>
			<biblScope unit="page" from="128" to="143" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b7">
	<analytic>
		<title level="a" type="main">An SBVR to SQL Compiler</title>
		<author>
			<persName><forename type="first">A</forename><surname>Marinos</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Moschoyiannis</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><forename type="middle">J</forename><surname>Krause</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">RuleML Challenge</title>
		<imprint>
			<biblScope unit="volume">649</biblScope>
			<date type="published" when="2010">2010</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b8">
	<monogr>
		<title level="m" type="main">Automated translation of SBVR to SQL queries</title>
		<author>
			<persName><forename type="first">T</forename><surname>Nadeem</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2013">2013</date>
		</imprint>
		<respStmt>
			<orgName>The Islamia University of Bahawalpur</orgName>
		</respStmt>
	</monogr>
	<note type="report_type">Master in Science Thesis</note>
</biblStruct>

<biblStruct xml:id="b9">
	<analytic>
		<title level="a" type="main">Conversion of Natural Language Query to SQL Query</title>
		<author>
			<persName><forename type="first">A</forename><surname>Kate</surname></persName>
		</author>
		<idno type="DOI">10.1109/ICECA.2018.8474639</idno>
	</analytic>
	<monogr>
		<title level="m">Second International Conference on Electronics, Communication and Aerospace Technology (ICECA)</title>
				<imprint>
			<publisher>IEEE</publisher>
			<date type="published" when="2018">2018. 2018</date>
			<biblScope unit="page" from="488" to="491" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b10">
	<analytic>
		<title level="a" type="main">An approach and software prototype for translation of natural language business rules into database structure</title>
		<author>
			<persName><forename type="first">A</forename><surname>Kopp</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Orlovskyi</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Orekhov</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 5th International Conference on Computational Linguistics and Intelligent Systems</title>
				<meeting>the 5th International Conference on Computational Linguistics and Intelligent Systems<address><addrLine>COLINS</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2021">2021. 2021</date>
			<biblScope unit="page" from="1274" to="1291" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b11">
	<monogr>
		<author>
			<persName><forename type="first">K</forename><forename type="middle">E</forename><surname>Wiegers</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Beatty</surname></persName>
		</author>
		<title level="m">Software Requirements. Best practices. Developer Best Practices</title>
				<imprint>
			<publisher>Microsoft Press</publisher>
			<date type="published" when="2013">2013</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b12">
	<analytic>
		<title level="a" type="main">More Automation in Model Driven Development</title>
		<author>
			<persName><forename type="first">P</forename><surname>André</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><forename type="middle">E</forename><surname>Amin Tebib</surname></persName>
		</author>
		<idno type="DOI">10.1007/978-3-030-78428-7_7</idno>
	</analytic>
	<monogr>
		<title level="m">International Conference on Model and Data Engineering</title>
				<meeting><address><addrLine>Cham</addrLine></address></meeting>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2021">2021</date>
			<biblScope unit="page" from="75" to="83" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b13">
	<monogr>
		<author>
			<persName><forename type="first">W</forename><surname>El Abed</surname></persName>
		</author>
		<ptr target="https://tdan.com/semantic-business-vocabulary-and-rules-sbvr" />
		<title level="m">Semantic Business Vocabulary and Rules (SBVR)</title>
				<imprint>
			<date type="published" when="2017">2017</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b14">
	<analytic>
		<title level="a" type="main">RDF 1.1: Knowledge representation and data integration language for the Web</title>
		<author>
			<persName><forename type="first">D</forename><surname>Tomaszuk</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Hyland-Wood</surname></persName>
		</author>
		<idno type="DOI">10.3390/sym12010084</idno>
	</analytic>
	<monogr>
		<title level="j">Symmetry</title>
		<imprint>
			<biblScope unit="volume">12</biblScope>
			<biblScope unit="page">84</biblScope>
			<date type="published" when="2020">2020</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b15">
	<analytic>
		<title level="a" type="main">Big data analytics using association rules in eLearning</title>
		<author>
			<persName><forename type="first">K</forename><surname>Poonsirivong</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Jittawiriaynukoon</surname></persName>
		</author>
		<idno type="DOI">10.1109/ICBDA.2018.8367643</idno>
	</analytic>
	<monogr>
		<title level="m">IEEE 3rd International Conference on Big Data Analysis (ICBDA), IEEE</title>
				<imprint>
			<date type="published" when="2018">2018. 2018</date>
			<biblScope unit="page" from="14" to="18" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b16">
	<monogr>
		<title level="m" type="main">&apos;s Spider 1.0 NLP Dataset</title>
		<ptr target="https://www.kaggle.com/jeromeblanchet/yale-universitys-spider-10-nlp-dataset" />
		<imprint>
			<date type="published" when="2020">2020</date>
		</imprint>
		<respStmt>
			<orgName>Yale University</orgName>
		</respStmt>
	</monogr>
</biblStruct>

<biblStruct xml:id="b17">
	<monogr>
		<ptr target="https://www.sqlite.org/datatype3.html" />
		<title level="m">Datatypes In SQLite</title>
				<imprint>
			<date type="published" when="2021">2021</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b18">
	<monogr>
		<title level="m" type="main">PYPL PopularitY of Programming Language</title>
		<ptr target="https://pypl.github.io/PYPL.html" />
		<imprint>
			<date type="published" when="2022">2022</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b19">
	<monogr>
		<ptr target="https://db-engines.com/en/ranking" />
		<title level="m">DB-Engines Ranking</title>
				<imprint>
			<date type="published" when="2022">2022</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b20">
	<monogr>
		<author>
			<persName><forename type="first">G</forename><surname>Iredale</surname></persName>
		</author>
		<ptr target="https://101blockchains.com/smart-contract-programming-languages/" />
		<title level="m">Top 5 Programming Languages To Build Smart Contracts</title>
				<imprint>
			<date type="published" when="2021">2021</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b21">
	<monogr>
		<ptr target="https://github.com/andriikopp/SBVR-to-source-code-generation-study" />
		<title level="m">The project&apos;s GitHub repository</title>
				<imprint>
			<date type="published" when="2022">2022</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b22">
	<monogr>
		<title level="m" type="main">Static Testing vs Dynamic Testing: What&apos;s the Difference?</title>
		<author>
			<persName><forename type="first">T</forename><surname>Hamilton</surname></persName>
		</author>
		<ptr target="https://www.guru99.com/static-dynamic-testing.html" />
		<imprint>
			<date type="published" when="2022">2022</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b23">
	<analytic>
		<title level="a" type="main">Intelligent software engineering in the context of agile software development: A systematic literature review</title>
		<author>
			<persName><forename type="first">M</forename><surname>Perkusich</surname></persName>
		</author>
		<idno type="DOI">10.1016/j.infsof.2019.106241</idno>
	</analytic>
	<monogr>
		<title level="j">Information and Software Technology</title>
		<imprint>
			<biblScope unit="volume">119</biblScope>
			<biblScope unit="page">106241</biblScope>
			<date type="published" when="2020">2020</date>
		</imprint>
	</monogr>
</biblStruct>

				</listBibl>
			</div>
		</back>
	</text>
</TEI>
