<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>COSMIC Functional Size of ARM Assembly Programs</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Ahmed Darwish</string-name>
          <email>ahmed.ahmeddarwish@student.guc.edu.eg</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Hassan Soubra</string-name>
          <email>hassan.soubra@guc.edu.eg</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>The German University in Cairo (GUC)</institution>
          ,
          <addr-line>New Cairo</addr-line>
          ,
          <country country="EG">Egypt</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>The COSMIC functional size measurement (FSM) method can be applied in di erent phases of software projects: early in the design phase or after the implementation has been delivered. Di erent software artifacts can be used to produce the COSMIC functional size of a piece of software: speci cation requirements, implemented code, etc. COSMIC has been used in di erent domains (e.g. Management Information Systems (MIS), Real-time Embedded Systems-RTES, etc.), and has been applied to di erent conceptual frameworks and programming paradigms. Assembly language is the lowest-level programming language designed for a speci c type of processor executing machine code. Assembly can be compiled or interpreted from di erent high-level languages. ARM® processors account for 90% of those used in the mobile industry and controllers of IoT devices. In addition, 75% of the processors used in invehicle infotainment Advanced Driver-Assistance Systems (ADAS) are made by ARM. As a whole, they address 33% of the total addressable market. In this paper, we propose an FSM procedure based on COSMIC ISO 19761 to measure software artifacts expressed in ARM's base 32-bit Assembly code. An FSM automation prototype tool is also introduced.</p>
      </abstract>
      <kwd-group>
        <kwd>COSMIC FSM</kwd>
        <kwd>ARM</kwd>
        <kwd>Assembly Language</kwd>
        <kwd>IoT</kwd>
        <kwd>Compilers</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>The world of technology is going through a new phase, and the work ow of
software development is starting to take on a newer more e cient form. Due to
the always changing requirements of the industry, newer programming languages
with features more suited to the market keep springing up. In addition, older
languages are often updated or used as a basis for newer languages with better
speci cations, lest they get ignored by a programming team.</p>
      <p>
        Software Engineering is both a technical and a managerial process, where the
best-suited programming language and style are picked by experts for building
either a simple or a complex component of a project [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. And to be able to
Copyright ©2020 for this paper by its authors. Use permitted under Creative
Commons License Attribution 4.0 International (CC BY 4.0).
plan these projects, it is necessary to be aware of the required e ort and the
estimated complexity of the system. This is where COSMIC software functional
measurement [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] comes in. Functional size measurement (FSM) is a powerful tool
for managing software projects and it provides an objective and quantitative
base for management decisions. It can be applied either during the design or
the implementation phase of a project. FSM also has the upper hand due to
their language-agnostic rules and de nitions, as well as their robustness against
the di erence in programming experience. They can even be applied to user
requirements written in natural languages. This deems this type of measurement
more objective.
      </p>
      <p>
        The genericness of COSMIC's rules allows them to be easily adapted to
different use cases. However, applying COSMIC to assembly languages, which has
been largely ignored in literature, can be very useful. Any language, whether
compiled or interpreted, or a hybrid of both, is bound to be represented in
binary streams of 1s and 0s for a processing unit to execute [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. Assembly Language
is one layer of abstraction above this stream. That is why we argue that it is
important to have measurement rules for assembly languages since having such
rules would allow FSM measurement done in the implementation phase to be
language-agnostic. Having an automated, generic measurement tool for
implemented work would also provide a chance to detect any discrepancies between the
expected software size and the actual one, in a smooth work ow. The increased
demand of developing software at the lower levels of programming, which is a
result of the recent IoT (Internet of Things) boom, is also a very strong incentive
for automating low-level software measurement.
      </p>
      <p>
        There are numerous microprocessor manufacturers in the market, many of
which adhere to a speci c base architecture and assembly language. ARM [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]
provides a simplistic language due to its reduced instruction set computing (RISC)
nature and it has a very high penetration ratio in the embedded systems
industry. This paper presents the de nition and design of a COSMIC FSM procedure
for ARM-based devices. We are going to de ne the mappings of ARM's assembly
to COSMIC's guidelines and rules, as well as reasons for chosen measurement
granularity. We are also going to show an example of compiled machine code
being measured using our method, dealing with di erent parts of a system. We
believe that our approach can be generally applied to other architectures, with
minor modi cations.
      </p>
      <p>The rest of the paper is organized in the following manner: Section 2 provides
an exhaustive literature survey of di erent COSMIC FSM procedures using
different programming and modelling languages, including attempts to implement
tools which automate the measurement procedures. Section 3 contains overviews
of the COSMIC method and the ARM microprocessor family. Section 4 presents
our proposed measurement procedure, as well as an illustrative example using
two di erent ARM instructions. Finally, sections 5 and 6 respectively present an
automated measurement prototype and conclude the paper with a statement of
our planned future work.</p>
    </sec>
    <sec id="sec-2">
      <title>Related Work</title>
      <p>
        Many approaches have been proposed in the literature to automate
COSMICbased measurements, for di erent types of input and in di erent domains. One
of the most notable inputs are conceptual models, which have taken many
different forms, and evolved throughout the years. One of the earliest attempts was
undertaken by Jenner [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ], who implemented a tool that measures the CFPs of a
UML 1.0 model. Habela et al. [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] and Levesque et al. [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] then proposed manual
procedures for the newer 1.5 and 2.0 versions of UML, respectively. Meiliana et
al. [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] then went on to implement a tool that automates the measurement for
models represented in XML. The previous works were concerned mainly with
Management Information systems. Lind and Heldal [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ] developed a tool using
Java that estimates the functional points of embedded software represented in
UML models. In the eld of web development, Ceke and Milanisovic [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]
developed a tool that takes web-oriented UML models as input. Similarly, Haoues
et al. [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ] proposed a procedure that could be applied to both Mobile and web
applications. The latest work, done by De Vito et al. [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ], consists of a generic
automated estimation tool that is claimed to work accurately for any domain.
More UML-related approaches are found in [13{15].
      </p>
      <p>
        A lot of e ort has also been made for other conceptual models. Diab et al.
formalised the rules of applying to ROOM framework for real-time applications,
and implemented a tool that works with RRRT models [
        <xref ref-type="bibr" rid="ref16 ref17">16, 17</xref>
        ]. Grau et al. [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ]
implemented a tool for the PRiM method. Abrah~ao et al.[
        <xref ref-type="bibr" rid="ref16">16</xref>
        ] implemented an
automated measurement plug-in for VisualWADE, a popular tool for developing
web applications using the Object-Oriented Hypermedia (OO-H) method.
      </p>
      <p>
        Another kind of input that has been explored in literature is plain text. Ishrar
et al. [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ] were the rst to carry out a statistical study, looking for correlations
between the textual representation of the functionalities of an application and
its COSMIC measurement. Their study encouraged further research in the area.
Having a list of the use cases of an application, Ungan et al. [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ] has been
able to extract COSMIC measurements, by implementing an extension to the
ScopeMaster® tool. In a very identical manner, Ecar et al. [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ] estimated the
measurements using User Stories (US).
      </p>
      <p>
        Tools have also been developed for actual programming environments. Soubra
et al. [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ] implemented a tool that computes the CFP count of SimuLink les.
Later on, the same authors [
        <xref ref-type="bibr" rid="ref24">24</xref>
        ] (with the exception of Sophie Stern) re ned
the procedure of the tool to account for variance in the account when the same
functional requirement is implemented using di erent approaches. In the
automotive industry, Soubra et al. [
        <xref ref-type="bibr" rid="ref25">25</xref>
        ] proposed a veri cation protocol for an
FSMautomation tool for AUTOSAR-based software. In [
        <xref ref-type="bibr" rid="ref26">26</xref>
        ], an automated tool was
developed by ESTACA for the LUSTRE-based SCADE development tool, and
it was veri ed that its measurements match those done manually. For
Management Information systems, Tarhan and Sag [
        <xref ref-type="bibr" rid="ref27">27</xref>
        ] used execution traces from Java
Business Apps to generate tagged representations of sequence diagrams, which
were in turn used to automatically measure the functional size.
      </p>
      <p>
        To the best of our knowledge, no attempts have been made to de ne rules and
guidelines based on the COSMIC method, for any low-level assembly language.
The closest thing to our approach was a work by Soubra and Abran who applied
COSMIC rules to Arduino C, mapping COSMIC to the di erent components of
an Arduino board [
        <xref ref-type="bibr" rid="ref28">28</xref>
        ].
3
      </p>
    </sec>
    <sec id="sec-3">
      <title>Overviews of COSMIC and ARM</title>
    </sec>
    <sec id="sec-4">
      <title>Architecture</title>
      <p>This section presents overviews of COSMIC and ARM architecture.
3.1</p>
      <sec id="sec-4-1">
        <title>COSMIC Overview</title>
        <p>COSMIC is an ISO-standardised method of quantifying FURs. It de nes how to
decompose the system into layers and how to di erentiate between the various
movements of data in a system according to what is called the boundaries of a
Functional Process. It also dictates the guidelines of de ning the granularity of
the measurement. The measurement unit is coined a COSMIC Functional Point
(CFP), and each data movement has the size of 1 CFP.</p>
        <p>The four kinds of data movements according to COSMIC are as
follows:1. Entry (E): This corresponds to a data group passing a boundary from a
functional user into a functional process, as a reaction to some trigger.
2. Exit (X): This corresponds to a data group crossing a boundary and moving
outside the functional process.
3. Read (R): Data is read from some persistent storage into the currently
running functional process that requires it.
4. Write (W): Data is written to some persistent storage within the reach of
the currently running functional process.</p>
        <p>Persistent storage is de ned as storage with means of storing data after a
functional process terminates and/or of allowing a process to retrieve data that
has been manipulated by some other functional process or another occurrence
of the same process.</p>
        <p>COSMIC rules can not be applied directly to measure the size of FURs; two
other stages need to be carried out
rst:1. Measurement Strategy Phase, in which the scope and the purpose of the
measurement is de ned. This is done by applying the COSMIC Software
Context Model.
2. Mapping phase, where the measurement rules of COSMIC are mapped and
de ned for the domain being measured.</p>
        <p>After the measurement takes place, the nal size of software is calculated by
summing up the sizes of all the functional processes present within the de ned
scope. The FSM procedure proposed in this paper is based on version 4.0.2 of
COSMIC.</p>
      </sec>
      <sec id="sec-4-2">
        <title>ARM Overview</title>
        <p>ARM is a family of RISC architectures for computer processors, based on the
A32 Instruction Set Architecture -ISA, and its variations, the A64 and the T32
ISAs. The A64 ISA, the most recent addition, was introduced in tandem with
the new ARMv8-A microarchitecture which supports 64-bit memory addressing.
To maximise code density, T32 ISA have variable instruction lengths. To meet
the typical need for oating point operations, an extension ISA exists. Other
than that, additional ISA extensions are available for domains such as Machine
Learning, which provide increased parallelism.</p>
        <p>
          As of 2019, ARM processors account for 90% of those used in the mobile
industry and controllers of IoT devices. In addition, 75% of the processors used in
in-vehicle infotainment Advanced Driver-Assistance Systems (ADAS) are made
by ARM. As a whole, they address 33% of the total addressable market [
          <xref ref-type="bibr" rid="ref29">29</xref>
          ].
        </p>
        <p>
          At the time of writing, three di erent families of chips are in production: the
(A)pplication family which is targeted at high-performance general applications,
the (R)eal-time family which is optimised for time-critical and real-time domains,
and nally the (M)icrocontroller family [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ].
        </p>
        <p>
          The register le in an ARM core consists of 31 registers, whose sizes are either
32- or 64-bits according to the version of the processor. Of those registers, 16 are
always visible to the user, while the remaining are used to store program states,
such as the program counter, and the stack pointer, and handle exceptions. As
for memory, di erent processors have di erent levels of caching, and some have
none at all, while providing a standard interface to an external memory [
          <xref ref-type="bibr" rid="ref30">30</xref>
          ].
        </p>
        <p>One de ning feature of ARM instructions is the ability to conditionally
execute commands by setting a speci c eld to the required the status of the system
that the instruction must run in. If the condition is not met, an instruction is
treated as a No Operation (NOP) instruction. This is more e cient than relying
on branch instructions.
4</p>
        <p>An FSM
ARM</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>Procedure for COSMIC</title>
    </sec>
    <sec id="sec-6">
      <title>Measurement on</title>
      <p>To correctly measure the functional size of a program represented in ARM
instructions, we have to de ne the scope and the purpose of our measurement,
and then we have to map COSMIC terms to ARM components.
4.1</p>
      <sec id="sec-6-1">
        <title>The Measurement Strategy Phase</title>
        <p>The purpose of this procedure is to apply the COSMIC method to the compiled
ARM assembly code. As to the scope, it is at the hardware level of a computing
entity, be it a stand-alone processor, or a separate core in a multi-core system.
Since we are working at such a low level, the granularity here would be at
the processor instruction level, since each instruction carries out a distinctive
operation that a ects the state of the system.</p>
        <p>We consider the decoding circuitry (DC) to be our sole functional user. We
say the decoding circuitry is the hardware unit responsible for extracting the
di erent parameters from the fetched instruction, and analysing it so that the
proper hardware signals, required for executing the instruction correctly, may
be red.</p>
        <p>
          As for the persistent storage, we consider the register le, any caches present,
and any existing co-processor register les/memories to be common persistent
storage units for any ARM processor. In addition, if a processor is complying
with the Harvard architecture, then the Data Memory is also a part of the
persistent storage. However, if the processor is based on von Neumann's, such
as pre-ARM9 processors [
          <xref ref-type="bibr" rid="ref31">31</xref>
          ], then we consider only the physical spaces storing
data to be part of it.
4.2
        </p>
      </sec>
      <sec id="sec-6-2">
        <title>The Mapping Phase</title>
        <p>Our mapping is based on our abstract view of instructions, which was inspired
from the o cial documentation of ARM's ISA. In our model, we view each
instruction simply as a subroutine carrying out a speci c operation, see gure
1. It must be stressed that this is not to be confused with the commonly known
idea of an assembly subroutine which usually involves a branch and ending in a
return. In our representation, every single instruction (including the branch and
the return instructions) is a subroutine, carrying out a certain set of operations
to achieve an intended change in the state of the system.
void i n s t r u c t i o n ( h a l f b y t e c o n d i t i o n F i e l d , f b oo l ea n S g , param1 , param2 ,
. . . ) f
// Optional s t a t u s r e g i s t e r check
i f ( s t a t u s R e g i s t e r [ c o n d i t i o n B i t s ] != c o n d i t i o n F i e l d )</p>
        <p>return ;
// D e t a i l s o f t h e i n s t r u c t i o n go here
// Optional s t a t u s r e g i s t e r update
// ( f o r a r i t h m e t i c i n s t r u c t i o n s only )
i f ( S == t r u e )</p>
        <p>u p d a t e S t a t u s R e g s i t e r ( )
g
return ;</p>
        <p>Moreover, for an instruction to be executed, the hardware needs to determine
certain operands from the decoded instruction. The operands would naturally
di er according to the nature of the instruction, and they can include
information about the speci c index or label of the needed data in the persistent storage.
Therefore, we perceive the operands as entries coming from the instruction
decoder to the subroutine, which is then later used to carry out the intended job,
by using the operands to read a register, write to memory, or carry out an
arithmetic operation, etc. It should be noted that due to the instruction format of
ARM instructions, a Read can take place at the beginning of the execution of
an instruction, where the condition eld is compared to the status register bits
that correspond to the needed comparison.</p>
        <p>So based on the aforementioned idea, each instruction stored in the
instruction memory is considered a separate independent functional process, which is
triggered by fetching the instruction from the instruction memory according to
the Program Counter, and passing it to the DC. This would be the Triggering
Event. Of the extracted parameters, the condition eld, shown in gure 1, is
the Triggering Entry, since it is common for all instructions. This Entry will be
followed by others carrying the operands and signals as explained before.</p>
        <p>We de ne the start of the functional boundary for incoming data groups to be
the circuitry connecting the instruction decoding mechanism (i.e. the DC) and
the execution circuitry, which can, but need not, contain a mixture of ALUs,
shifters, and/or sign extenders. Naturally, the boundary will contain the register
le where register contents will be fetched according to the instruction operands
and other persistent storage. The boundary also encapsulates the circuitry
required for reading and writing from the other persistent storage members. This
de nition is arbitrary enough for and can be applied to any processor having a
decoding and an execution stage in its pipeline.</p>
        <p>The mappings of the COSMIC rules regarding data group movements into
ARM terms are summarized in table 1.
4.3</p>
      </sec>
      <sec id="sec-6-3">
        <title>The Measurement Phase</title>
        <p>Using the rules de ned in Section 4.2 to measure the size in CFP of every
instruction, we aggregate the results coming from all instructions at the end of
the execution of our program. For some instructions, such as the ADC (Add with
Carry) instruction, the CFP count of the actions carrying out the instruction's
objective will always be the same for any instance of the instruction, no matter
the value of the operands. In other words, apart from the optional condition eld
check, the CFP will be the same. On the other hand, other instructions, such as
the PUSH instruction, would have di erent counts for di erent instances. The
reason for this would be the nature of the parameters of the instruction, which
can lead to di erent amounts of data movements based on their values. This is
elaborated in the example below. Hence, we segregate ARM instructions into
two types: xed size and variable size instructions, from a COSMIC FSM point
of view.</p>
        <p>To show how an instruction is broken down to be measured, gures 2 and
3 shows examples of breaking down an instruction into measureable form. Both
examples borrow the parameter names from the syntax de nition of the
corresponding instructions in ARM's ISA documentation. The CFP count of ADC
instruction, where Operand2 is an immediate, not an optionally-shifted register
value, is always 8 CFP, while the CFP count of PUSH instruction varies
according to the reglist parameter. reglist is a mask that determines which registers
will be pushed to the stack, as shown in the pseudo-code in the gure. Therefore,
the CFP would vary based on the cardinality of reglist.</p>
        <p>The status ags corresponding to the results of arithmetic operations are not
automatically updated after each instruction in ARM. Instead, an optional
identi er, S, has to be included in the instruction for this to happen. Therefore, an
additional Write (1 CFP) updating the status register may take place depending
on the presence of that identi er.
5</p>
      </sec>
    </sec>
    <sec id="sec-7">
      <title>Prototype of an Automated Measurement Tool</title>
      <p>In this section, we present a prototype tool for a program expressed in ARM
assembly language.
5.1</p>
      <sec id="sec-7-1">
        <title>Data Preparation</title>
        <p>To retrieve a sample of machine code that can easily be analyzed and processed
to carry out the proposed FSM procedure, we wrote a simple program in C as
shown in gure 4. The C program contains two functions: square() and
factorial(), of which the latter is recursive. The C le was compiled using GCC on a
Raspberry Pi® 1 B+ board. The board runs on a Broadcom BCM2835
processor running an ARM ARM1176JZF-S™ core. This allowed us to have a binary
void ADC( h a l f b y t e c o n d i t i o n F i e l d , boolean S , int rd , int rn , int
Operand2 ) f 5 E n t r i e s
i f ( s t a t u s R e g i s t e r [ c o n d i t i o n B i t s ] != c o n d i t i o n F i e l d )
return ;
return ;</p>
        <p>1 Write ( o p t i o n a l )
executable in ARM machine language. The next step was to translate the
binary le to a human-readable le that can be used to analyze the instructions
more easily. This is where GNU's objdump tool came in. We used this tool to
disassemble the binary le, separating the ARM instructions according to the
subroutines, see gure 5. The objdump returns an instruction in the form of
fhexadecimal representation, the natural language name of the instruction, list
of needed operandsg. This form adheres to ARM's assembly syntax.
#include &lt;s t d i o . h&gt;
int square ( int x ) f return x ∗ x ; g
int f a c t o r i a l ( int x ) f
i f ( x == 0) f return 1 ; g
return x ∗ f a c t o r i a l ( x 1) ;
g
int main ( ) f
int x = 5 ;
x = x + 9 ;
int y = square ( x ) ;
y = f a c t o r i a l ( y ) ;
p r i n t f ( "%dnn" , y ) ;
return 0 ;
g
We used Python2 to implement our automated measurement tool, and gure 6
shows the UI of the tool. The tool accepts as input a text containing objdump's
disassembly, object, or C le. The tool also gives the user the option to exclude
C's standard headers from the measurement. For an accurate measurement of
the CFP count of the input program, we comply with the syntax and the
pseudocode de ned in ARM's o cial speci cations of their 32-bit ISA, A323. The ARM
Quick Reference Card4 was also used as a guide.
2 https://www.python.org/
3 https://developer.arm.com/docs/ddi0597/h
4 https://www.ee.ryerson.ca/ courses/coe718/Data-Sheets/ARM/IS-arm.pdf</p>
        <p>We start by using a regular expression to preprocess and lter out
noninstruction elements of the le, mainly assembly labels of di erent sections in
the code. After retrieving the list of instructions, we carry out the following
steps:
1. For each xed-size instruction, that always has the same functional size, we
count its number of occurrences. We then multiply the occurrences by its
size in CFP.
2. For variable size instructions, we further analyze the operands of each
occurrence of such instructions to determine its exact COSMIC functional size.
3. For pseudo-instructions and aliases, we translate the instruction to an
equivalent list of ARM instructions and use these resulting instructions for the
measurement.</p>
        <p>For our prototype, we only consider a subset of instructions, which are the
ones present in our sample le. We plan to include all the instructions in the
nal version of our prototype tool.</p>
        <p>Our prototype tool returns the total CFP count of the input le with its
breakdown into the di erent types of data movements, as shown in gure 7. It
also returns the count of each unique instruction in the program. The user can
save the output as two di erent. The rst of them is the functional size in CFP
of the whole program, as well as the count of each unique instruction in the
examined program. This is depicted in gure 8.</p>
        <p>The second output is a Comma-Separated Values (CSV) le, containing a
list of the hexadecimal codes, the instruction names, the operands, as well as
the individual CFP count of each instruction. gure 9. shows the CSV output
le.
6</p>
      </sec>
    </sec>
    <sec id="sec-8">
      <title>Conclusion</title>
      <p>FSM is used to estimate development e ort, manage project scope changes,
measure productivity, benchmark, and normalize quality and maintenance ratios.
COSMIC ISO 19761 is considered a second-generation FSM method that is
designed to be independent of any implementation decisions embedded in the
operational artifacts of the software to be measured.</p>
      <p>In this paper, we proposed an application of the COSMIC method to an
assembly language. We explained how the COSMIC measurement methods could
be used to measure the functionality of compiled ARM programs, with an
illustrative example and we introduced an automated measurement tool prototype
that can easily produce the functional size in CFP of an ARM program.</p>
      <p>We believe that our work would in uence the embedded systems industry,
especially with the present boom in the domain of IoT and portable devices. In
addition, we believe that our work would be useful to the compiler construction
eld, as the CFP count can provide insight into the di erence of the e ciencies
of two similar compilers.</p>
      <p>In the future, we hope to apply our technique to a Complex Instruction Set
Computer (CISC) language, and carry out a study to compare sizes in CFP as
code is compiled into another.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Sommerville</surname>
          </string-name>
          , Ian.,
          <string-name>
            <surname>Software</surname>
            <given-names>Engineering</given-names>
          </string-name>
          , Addison Wesley;
          <year>2006</year>
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>2. https://cosmic-sizing.org/</mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3. Compilers: Principles, Techniques, and
          <string-name>
            <surname>Tools by Alfred V. Aho</surname>
            , Ravi Sethi, Je rey
            <given-names>D.</given-names>
          </string-name>
          <string-name>
            <surname>Ullman - Second Edition</surname>
          </string-name>
          ,
          <year>2007</year>
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>4. https://www.arm.com/</mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Jenner</surname>
            ,
            <given-names>M.S.:</given-names>
          </string-name>
          <article-title>COSMIC-FFP and UML: Estimation of the Size of a System Specied in UML { Problems of Granularity</article-title>
          .
          <source>In: 4th European Conference on Software Measurement and ICT Control</source>
          , Heidelberg, pp.
          <volume>173</volume>
          {
          <issue>184</issue>
          (
          <year>2001</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Habela</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Glowacki</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          , Sera nski, T.,
          <string-name>
            <surname>Subieta</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          :
          <article-title>Adapting Use Case Model for COSMIC-FFP Based Measurement</article-title>
          .
          <source>In: 15th International Workshop on Software Measurement { IWSM</source>
          <year>2005</year>
          , Montreal, pp.
          <volume>195</volume>
          {
          <issue>207</issue>
          (
          <year>2005</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Levesque</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bevo</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Cao</surname>
          </string-name>
          , D.T.:
          <article-title>Estimating software size with UML models</article-title>
          .
          <source>In: Proceedings of the 2008 C3S2E Conference</source>
          , Montreal, pp.
          <volume>81</volume>
          {
          <issue>87</issue>
          (
          <year>2008</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Meiliana</surname>
          </string-name>
          , et al. \
          <source>Automating Functional and Structural Software Size Measurement Based on XML Structure of UML Sequence Diagram." 2017 IEEE International Conference on Cybernetics and Computational Intelligence (CyberneticsCom)</source>
          ,
          <year>2017</year>
          , pp.
          <volume>24</volume>
          {
          <fpage>28</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Lind</surname>
          </string-name>
          ,
          <string-name>
            <surname>Kenneth</surname>
          </string-name>
          , et al. \
          <source>CompSize: Automated Size Estimation of Embedded Software Components." 2011 Joint Conference of the 21st International Workshop on Software Measurement and the 6th International Conference on Software Process and Product Measurement</source>
          ,
          <year>2011</year>
          , doi:10.1109/iwsm-mensura.
          <year>2011</year>
          .
          <volume>49</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Ceke</surname>
          </string-name>
          , Denis, and Boris Milasinovic. \
          <source>Automated Web Application Functional Size Estimation Based on a Conceptual Model." 2015 23rd International Conference on Software, Telecommunications and Computer Networks (SoftCOM)</source>
          ,
          <year>2015</year>
          , pp.
          <volume>234</volume>
          {
          <fpage>241</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Haoues</surname>
          </string-name>
          ,
          <string-name>
            <surname>Mariem</surname>
          </string-name>
          , et al. \
          <article-title>A Rapid Measurement Procedure for Sizing Web and Mobile Applications Based on COSMIC FSM Method."</article-title>
          <source>Proceedings of the 27th International Workshop on Software Measurement and 12th International Conference on Software Process and Product Measurement On</source>
          ,
          <year>2017</year>
          , pp.
          <volume>129</volume>
          {
          <fpage>137</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Vito</surname>
          </string-name>
          ,
          <string-name>
            <surname>Gabriele De</surname>
          </string-name>
          , et al. \
          <source>Design and Automation of a COSMIC Measurement Procedure Based on UML Models." Software and Systems Modeling</source>
          , vol.
          <volume>19</volume>
          , no.
          <issue>1</issue>
          ,
          <issue>2020</issue>
          , pp.
          <volume>171</volume>
          {
          <fpage>198</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Barkallah</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gherbi</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          , &amp;
          <string-name>
            <surname>Abran</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          (
          <year>2011</year>
          ).
          <article-title>COSMIC Functional Size Measurement Using UML Models</article-title>
          .
          <article-title>FGIT-ASEA/DRBC/EL.</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Lavazza</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          , &amp;
          <string-name>
            <surname>Robiolo</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          (
          <year>2010</year>
          ).
          <article-title>Introducing the evaluation of complexity in functional size measurement: a UML-based approach</article-title>
          . ESEM '
          <volume>10</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>Lavazza</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          , &amp;
          <string-name>
            <surname>Bianco</surname>
            ,
            <given-names>V.D.</given-names>
          </string-name>
          (
          <year>2009</year>
          ).
          <article-title>A Case Study in COSMIC Functional Size Measurement: The Rice Cooker Revisited</article-title>
          . IWSM/Mensura.
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>Diab</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Frappier</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>St-Denis</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          :
          <article-title>Formalizing COSMIC-FFP Using ROOM</article-title>
          . In: ACS/IEEE International Conference on Computer Systems and Applications,
          <string-name>
            <surname>Beirut</surname>
          </string-name>
          (
          <year>2001</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <surname>Diab</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Koukane</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Frappier</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>St-Denis</surname>
          </string-name>
          , R.:
          <source>cROSE: Automated Measurement of COSMIC-FFP for Rational Rose Real Time. Information and Software Technology</source>
          <volume>47</volume>
          (
          <issue>3</issue>
          ),
          <volume>151</volume>
          {
          <fpage>166</fpage>
          (
          <year>2005</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18.
          <string-name>
            <surname>Grau</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Franch</surname>
            ,
            <given-names>X.</given-names>
          </string-name>
          :
          <article-title>Using the PRiM method to Evaluate Requirements Model with COSMIC-FFP</article-title>
          .
          <source>In: Proceedings of the IWSM-MENSURA</source>
          <year>2007</year>
          , Mallorca, pp.
          <volume>110</volume>
          {
          <issue>120</issue>
          (
          <year>2007</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19. Abraha~o,
          <string-name>
            <surname>Silvia</surname>
          </string-name>
          , et al. \
          <article-title>De nition and Evaluation of a COSMIC Measurement Procedure for Sizing Web Applications in a Model-Driven Development Environment."</article-title>
          <source>Information &amp; Software Technology</source>
          , vol.
          <volume>104</volume>
          , no.
          <issue>104</issue>
          ,
          <year>2018</year>
          , pp.
          <volume>144</volume>
          {
          <fpage>161</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          20.
          <string-name>
            <surname>Hussain</surname>
          </string-name>
          ,
          <string-name>
            <surname>Ishrar</surname>
          </string-name>
          , et al. \
          <article-title>Approximation of COSMIC Functional Size to Support Early E ort Estimation in Agile." Data and Knowledge Engineering</article-title>
          , vol.
          <volume>85</volume>
          ,
          <year>2013</year>
          , pp.
          <volume>2</volume>
          {
          <fpage>14</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          21.
          <string-name>
            <surname>Ungan</surname>
          </string-name>
          ,
          <string-name>
            <surname>Erdir</surname>
          </string-name>
          , et al. \
          <source>Automated COSMIC Measurement and Requirement Quality Improvement Through ScopeMaster® Tool." IWSM-Mensura</source>
          ,
          <year>2018</year>
          , pp.
          <volume>1</volume>
          {
          <fpage>13</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          22.
          <string-name>
            <surname>Ecar</surname>
          </string-name>
          ,
          <string-name>
            <surname>Miguel</surname>
          </string-name>
          , et al. \
          <source>AutoCosmic: COSMIC Automated Estimation and Management Tool." Proceedings of the XIV Brazilian Symposium on Information Systems</source>
          ,
          <year>2018</year>
          , p.
          <fpage>61</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          23.
          <string-name>
            <surname>Soubra</surname>
          </string-name>
          ,
          <string-name>
            <surname>Hassan</surname>
          </string-name>
          , et al. \
          <article-title>Design of a Functional Size Measurement Procedure for Real-Time Embedded Software Requirements Expressed Using the Simulink Model</article-title>
          .
          <article-title>"</article-title>
          <source>2012 Joint Conference of the 22nd International Workshop on Software Measurement and the 2012 Seventh International Conference on Software Process and Product Measurement</source>
          ,
          <year>2011</year>
          , pp.
          <volume>76</volume>
          {
          <fpage>85</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          24.
          <string-name>
            <surname>Soubra</surname>
          </string-name>
          , Hassan et al. \
          <article-title>A Re ned Functional Size Measurement Procedure for RealTime Embedded Software Requirements Expressed Using the Simulink Model</article-title>
          .
          <article-title>"</article-title>
          <source>2012 Joint Conference of the 22nd International Workshop on Software Measurement and the 2012 Seventh International Conference on Software Process and Product Measurement</source>
          (
          <year>2012</year>
          ):
          <fpage>70</fpage>
          -
          <lpage>77</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          25.
          <string-name>
            <surname>Soubra</surname>
          </string-name>
          ,
          <string-name>
            <surname>Hassan</surname>
          </string-name>
          , et al. \
          <article-title>Verifying the Accuracy of Automation Tools for the Measurement of Software with COSMIC { ISO 19761 Including an AUTOSAR-Based Example and</article-title>
          a
          <source>Case Study." 2014 Joint Conference of the International Workshop on Software Measurement and the International Conference on Software Process and Product Measurement</source>
          ,
          <year>2014</year>
          , pp.
          <volume>23</volume>
          {
          <fpage>31</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          26.
          <string-name>
            <surname>Soubra</surname>
          </string-name>
          ,
          <string-name>
            <surname>Hassan</surname>
          </string-name>
          , et al.
          <source>Manual and Automated Functional Size Measurement of an Aerospace Realtime Embedded System: a case study based on SCADE and on COSMIC ISO 19761</source>
          .
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          27.
          <string-name>
            <surname>Tarhan</surname>
          </string-name>
          , Ayca, and Muhammet Ali Sag. \COSMIC Solver:
          <article-title>A Tool for Functional Sizing of Java Business Applications."</article-title>
          <source>Balkan Journal of Electrical and Computer Engineering</source>
          , vol.
          <volume>6</volume>
          , no.
          <issue>1</issue>
          ,
          <issue>2018</issue>
          , pp.
          <volume>1</volume>
          {
          <fpage>8</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref28">
        <mixed-citation>
          28.
          <string-name>
            <surname>Soubra</surname>
            , Hassan and
            <given-names>Alain</given-names>
          </string-name>
          <string-name>
            <surname>Abran</surname>
          </string-name>
          . \
          <article-title>Functional size measurement for the internet of things (IoT): an example using COSMIC and the arduino open-source platform</article-title>
          .
          <source>" IWSM Mensura</source>
          '
          <volume>17</volume>
          (
          <year>2017</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref29">
        <mixed-citation>
          29.
          <string-name>
            <surname>ARM</surname>
          </string-name>
          <article-title>'s Q1 2019 Roadshow Presentation</article-title>
          : https://www.arm.com/-/media/global/ company/investors/PDFs/Arm SBG Q1
          <year>2019</year>
          <article-title>Roadshow Slides FINAL</article-title>
          .pdf
        </mixed-citation>
      </ref>
      <ref id="ref30">
        <mixed-citation>30. https://developer.arm.com/</mixed-citation>
      </ref>
      <ref id="ref31">
        <mixed-citation>
          31.
          <string-name>
            <surname>Furber</surname>
          </string-name>
          , Steve.
          <source>ARM System-on-Chip Architecture</source>
          . p.
          <fpage>344</fpage>
          . ISBN 0201675196.
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>