Professional Documents
Culture Documents
DNAP Dynamic Nuchwezi Architecture Platform A New Software Extension and Construction Technology
DNAP Dynamic Nuchwezi Architecture Platform A New Software Extension and Construction Technology
Abstract—The need to improve or build new software systems to solve new and old business challenges is a persistent challenge in
the software consumer and development industry, yet costly. To minimize these costs, the construction method should be designed
with the following qualities in mind; software portability, extensibility, and simplicity. To achieve these qualities, this paper proposes the
Dynamic Nuchwezi Architecture Platform (DNAP), which is a new software construction and extension technology. DNAP offers a
visual programming paradigm with a capability of generating production-ready business automation software for both mobile and web.
It also offers a simple mechanism for the extension of existing softwares using embeddable components. To evaluate and justify DNAP,
eight Software Operating Environment (SOE) metrics have been developed and together with the SOE model, are used to contrast
DNAP against four alternative software construction technologies namely; Android Platform, .NET Framework, Java SE Platform and
Python. The performance evaluation results show that DNAP offers an average of 33% reduction in software construction complexity
and an 11% enhancement in language efficiency when compared to alternative technologies.
Index Terms—Software Construction Optimization, Visual Programming, Cross-Platform Development, Platform Engineering,
Mini-Programs, Software Metrics
1 I NTRODUCTION
}, ...
]
}
lines of code (LOC) required to write the MBOP, and source is similar to the concept of “program minification” as
that puts terseness ahead of simplicity. employed in the optimization, compression and sometimes
8) Lines of Code for the Minimum Complex In- obfuscation of scripts as found in web development [32] –
put Program (LOCMCIP): the minimum number typically motivated by a desire to save space or bandwidth,
of LOC required to write the MBIP, and that puts and also secure the code. In our case though, obfuscation is
terseness ahead of simplicity. not a goal, but the other ideas apply.
To put the above philosophy into perspective, consider
that when comparing two programming languages, P1 and
4.2 Concerning the LOC Metric and an intepretation of
P2 using the LOCMBOP metric, then if language P2 sup-
the LOC* metrics used in the SOE model.
ports the use of whitespace statement delimiters in any
Before we proceed with our analysis of the set Ψ, it is im- programming scenario, such as for Perl, Python and Bash,
portant that we have a clear understanding of what some of then the basic case supposes that each distinct statement
the employed metrics mean. For example, one justification in the program’s source code be delimited from the others
for using the LOC* metrics in the comparison of software by whitespace – typically a new line character or carriage
operating environments is because they capture an impor- return or combination of both. The effect is increased legibil-
tant fact about a programming language; the simplicity of ity of the program source, and elimination of or reduction in
its programming interface and its expressive power at the manual parsing complexity. This implies that in expressing
source code level. the MB*P for example, the following predicates hold:
In Table 2, are shown links to the Minimum Basic Predicate 1.
Input-Output Program (MBIOP) for several programming LOCM BOP ≥ 1 (2)
languages including those spanned by our analysis set Ψ.
Further, the LOC metrics associated with the MBIOP and Predicate 2.
the Minimum Complex Input Output Program (MCIOP) LOCM BIP ≥ 1 (3)
also discussed later in this section, are shared, so as to help
illustrate some key points about the SOE model and the Further, note that the definition of the LOCMBIP metric
metrics used in our analysis. implies that the Minimum Basic Input Program (MBIP)
spans both an input and output operation at minimum.
TABLE 2: Languages and their LOCM*IOP metrics By this line of thought then, the MBIP is equivalent to or
is a subset of the Minimum Basic Input Output Program
Language MBIOP LOCMBIOP LOCMCIOP
(MBIOP), and it is not hard to show that
Android (Java) Appendix H.2 27 1
Predicate 3.
Cwa Script Appendix H.3 13 1
Bash Appendix H.4 2 1 M BOP ⊂ M BIP ⊂ M BIOP (4)
Python Appendix H.5 2 1
C# Appendix H.1 18 1 And that
Java SE (Java) Appendix H.6 10 1 Predicate 4.
LOCM BIOP ≥ 1. (5)
It shall be noticed that for languages such as Bash, C
and Cwa Script, the use of whitespace to delimit statements In compressing the above ideas, we have the following
in the source of a program is optional. Further, concerning result:
the LOCMC*P and LOCMB*P metrics, it can be argued that Predicate 5.
whereas in implying that a program is “basic”, the simplic-
LOCM BIOP ≥ LOCM BIP ≥ LOCM BOP ≥ 1
ity of the programming interface includes the elimination
(6)
or limiting of parsing difficulties for both the human –
programmer or reviewer for example, and machine – parser On the other hand, if we consider the “complex” case,
or executor, in the “complex” case however, we assume and if we suppose that P1 supports only non-whitespace
that a programming interface need only eliminate parsing delimiters; such as the traditional “;” used in languages
complexity for the machine – the implication being, in such a such as Java, C and C#; then simplicity and legibility can be
case, the programs thus expressed are not necessarily meant sacrificed, and the MBOP can be expressed in P1, in such a
for humans to parse or interpret readily at the source level. way that all, and any distinct executable statements required
In the “complex” case then, brevity and succinctness are to express the program lie on a single line in the source file.
favored over simplicity and legibility, and the reverse hap- It can then be shown that the following results are true and
pens in the “basic” case. This idea of the complex program equivalent for P1 in the complex case:
THIS WORK HAS BEEN SUBMITTED TO THE IEEE FOR POSSIBLE PUBLICATION. COPYRIGHT MAY BE TRANSFERRED WITHOUT NOTICE, AFTER WHICH 13
THIS VERSION MAY NO LONGER BE ACCESSIBLE.
Predicate 6. case of MBOP. In the simplest case, K = 1. Then, from the
definition of MBOPBR, we know that
LOCM COP = LOCM CIP = LOCM CIOP = 1
(7)
Or equivalently. . .
M BOP BR = |HW | : N OCM BOP ≡ α : (αK + C) (11)
Predicate 7.
α = 1 | ∀α ∈ {LOCM COP, LOCM CIP, LOCM CIOP }
In interpreting the MBOPBR metric then, the following
(8)
summarizes the important inferences one can make:
Further, in the complex case, for language P2:
Predicate 8. 1) MBOPBR = 1: means the language allows to print
α ≥ 1 | ∀α ∈ {LOCM COP, LOCM CIP, LOCM CIOP } to standard output the constant HW without any
(9) other boilerplate or overhead information in the
program’s source file. Put another way, the language
will print to standard output the message “Hello
4.3 Concerning the MBOPBR Metric and measuring World” as long as that string, and nothing else, is
programs by their number of characters (NOC) instead written in the source file (implies C = 0 and K = 1).
of LOC in the SOE model. Subtle, but very important – from a programming
It shall be noticed that in the definition of the MBOPBR language design perspective. One such language is
metric, reference is made to two strings – the HW constant, HTML.
whose length is 11 in almost all languages, and the MBOP, 2) MBOPBR = 0: means the language being used to
whose length depends on the programming language being express MBOP is overly verbose or rather bloated.
analyzed. Using the model in Equation 10, it means that
Note that unlike the very traditional, popular metric either of the two numeric parameters, K and C,
used to compare the size of software expressed as source are much larger than α. Expressed mathematically:
code – the Lines of Code (LOC) metric, the Number of |K| |α| ∨ |C| |α| → |α| |αK + C| →
Characters (NOC) metric ignores the expression of the pro- M BOP BR ≈ 0
gram as a sequence of lines, and focuses on the expression 3) 0 < MBOPBR < 1: simply means printing HW
of the program as a sequence of any supported symbols – to standard output in the language involves some
or rather elements from the character set ω of the language explicit commands or directives other than merely
– with unnecessary characters and commented-out sections writing the HW constant in the program’s source
being ignored as was explained in the NOC definition (see file. Most, if not all major programming languages
SOE metric #4). Both measure length, however, the NOC in use today fall under this category, including the
metric, especially as used in the brevity metric MBOPBR, newly proposed Cwa Script used in DNAP. Also,
better expresses how verbose a given language is relative to this scenario often means reading the program’s
another, with respect to a given, fixed, reference operation source code makes it unambiguous how the lan-
– the printing of the constant HW to standard output in guage expresses the standard output mechanism
the case of MBOPBR. Other brevity ratio metrics could be under analysis.
thought of, that deal with other operations such as the mul-
tiplication of two constants, the input and output operation
as in MBIOP etc.
To appreciate the power of these proposed brevity ratio 4.4 Concerning the CPCLB Metric and Software Devel-
metrics, and especially the MBOPBR, let us build a simple opment Processes
mathematical model to help relate the size of a program’s
source file to the size of task the program needs to accom- In this section we shall bring our attention to the matter of
plish. In the case of the MBOPBR, assume there is a linear how software operating environments relate with respect
relationship between the number of characters one needs to to their software development processes. A method for
output in MBOP, denoted α, and the actual total number quantitatively ranking SOEs is required, and it should be
of characters in the entire source file for the MBOP, already language agnostic. In the SOE metrics introduced in this
defined as NOCMBOP. Then we can mathematically say that section, is the CPCLB metric, and it has the qualities we
need.
To illustrate how analysis of SOEs proceed using the
N OCM BOP = αK + C f or K, C ∈ <, α ∈ N (10) CPCLB metric, consider the Minimal Software Development
Note that C would represent any unavoidable code Process (MSDP) supported on each of the SOEs in our anal-
required in the program’s source file irrespective of what ysis set Ψ. The following state-transition diagrams illustrate
is being done - for example the mandatory declaration of the minimal software development process across all five
the main() function in C-family languages at minimum - technologies in Ψ, and we then compute the CPCLB metric
required of any program that is. K would represent how for each SOE based on its MSDP graph.
much the program’s source file needs to grow relative to In Figs. 6, 7, 8, 9 and 10 are illustrated the MSDP graphs
what is being done - say size of text being printed in the for each of the SOEs in Ψ, one after the other.
THIS WORK HAS BEEN SUBMITTED TO THE IEEE FOR POSSIBLE PUBLICATION. COPYRIGHT MAY BE TRANSFERRED WITHOUT NOTICE, AFTER WHICH 14
THIS VERSION MAY NO LONGER BE ACCESSIBLE.
T ∈Ψ
T1 T2 T3 T4 T5 Average
SOE Metric
CPCLB 4 3 2 4 2 3
SDTP 4 3 5 3 5 3.6
LOCMBOP 3 6 6 5 1 4.2
|HW | 11 11 11 11 11 11
NOCMBOP 134 76 40 74 19 68.6
MBOPBR .082 .145 .275 .149 .579 0.246
LOCMBIOP 27 18 13 10 2 14
LOCMCIOP 1 1 1 1 1 1
A PPENDIX B
EXAMPLE OF A PERSONA RUNNING ON THE
DNAP WEB HISTRION: NJURA
A PPENDIX D
EXAMPLE OF AN ANNOTATED ACT ON THE
DNAP WEB HISTRION’S ACT CACHE
1. https://chwezi.tech/persona/c6e47f79-afd9-4ebc-8753-
3da5aa5f4cd7/histrion/ Fig. 13: Web Persona Acts: Njura
THIS WORK HAS BEEN SUBMITTED TO THE IEEE FOR POSSIBLE PUBLICATION. COPYRIGHT MAY BE TRANSFERRED WITHOUT NOTICE, AFTER WHICH 19
THIS VERSION MAY NO LONGER BE ACCESSIBLE.
A PPENDIX E
EXAMPLE OF AN ANNOTATED ACT ON THE
DNAP MOBILE HISTRION’S ACT CACHE
A PPENDIX G
EXAMPLES OF AN EDA DASHBOARD SES-
SION ON DNAP’S DATA DIVINER
A PPENDIX F
EXAMPLES OF AN EDA SESSION ON DNAP’S
DATA DIVINER
A PPENDIX H
M OST BASIC I NPUT O UTPUT P ROGRAM (MBIOP)
H.1 .NET Framework (C#)
using System ; // MBIOP i n C#
namespace MBIP___Most_Basic_Input_Output_Program
{
c l a s s Program
Fig. 15: Diviner Applet: Njura {
s t a t i c void Main ( s t r i n g [ ] a r g s )
data table {
Console . Out . WriteLine ( " What i s your name p l e a s e ? " ) ;
THIS WORK HAS BEEN SUBMITTED TO THE IEEE FOR POSSIBLE PUBLICATION. COPYRIGHT MAY BE TRANSFERRED WITHOUT NOTICE, AFTER WHICH 20
THIS VERSION MAY NO LONGER BE ACCESSIBLE.
S t r i n g name ; A PPENDIX I
name = Console . In . ReadLine ( ) ;
}
Console . Out . WriteLine ( s t r i n g . Format ( " Hello { 0 } " , name ) ) ; M OST BASIC O UTPUT P ROGRAM (MBOP)
}
} I.1 Android Platform (XML)
< m a n i f e s t xmlns : android =" h t t p :// schemas . android . com/apk/ r e s /android " package =" a . b . c
">
< a p p l i c a t i o n android : l a b e l =" Hello World " />
H.2 Android Platform (Java) </manifest >
H.4 Bash
read −p " What i s your name ? " x
echo " Hello $x "
H.5 Python
a = input ( " What i s your name p l e a s e ? " )
p r i n t ( " Hello %s " % a )