=Paper= {{Paper |id=Vol-3272/paper4 |storemode=property |title=Automated COSMIC Function Points Measurement for C Program Using Regular Expressions |pdfUrl=https://ceur-ws.org/Vol-3272/IWSM-MENSURA22_paper4.pdf |volume=Vol-3272 |authors=Donatien Koulla Moulla,Oumate,Ernest Mnkandla,Hassan Soubra,Alain Abran |dblpUrl=https://dblp.org/rec/conf/iwsm/MoullaOMSA22 }} ==Automated COSMIC Function Points Measurement for C Program Using Regular Expressions== https://ceur-ws.org/Vol-3272/IWSM-MENSURA22_paper4.pdf
Automated COSMIC Function Points Measurement for C
Program Using Regular Expressions
Donatien Koulla Moulla 1,2, Oumate 2, Ernest Mnkandla 1, Hassan Soubra3 and Alain Abran 4
1
  University of South Africa, The Science Campus, Florida, 1710, South Africa
2
  University of Maroua, Maroua, P.O. Box 46, Cameroun
3
  The German University in Cairo, New Cairo, Egypt
4
  École de Technologie Supérieure, 1100, rue Notre-Dame Ouest, Montréal, Québec, H3C 1K3, Canada


                Abstract
                Functional size measurement (FSM) is an important basis for measuring productivity and
                estimating the effort required for software activities. Automating FSM can be very valuable
                for organizations with a large number of projects to measure in a very short time, and there
                are several issues related to manual FSM, including measurement errors due to human
                measurers, the cost of measurement, measurers’ subjective interpretations, and assumptions
                regarding the project scope. This paper presents an automated FSM for the C programming
                language, selected for being the most popular programming language from 1965 to 2020 and,
                as of January 1, 2022, in the second position after Python language. The FSM procedure is
                based on COSMIC ISO 19761, which is an FSM method designed based on metrology and
                software engineering principles. An automated measurement prototype tool was also
                introduced. The automated measurement tool can be useful for organizations and
                practitioners.

                Keywords 1
                Functional Size Measurement, COSMIC – ISO 19761, C Programming Language, Sizing
                Software Automation, Automation Tool

1. Introduction and background
   In software engineering, as in other engineering disciplines, mastering and evaluating software
development is a concern for both practitioners and industry, and through effective measurement,
organizations can estimate, control, plan, and learn to perform software work more effectively [1, 2].
As Tom DeMarco said in [3]: “You cannot control what you cannot measure”. Measurement is a
fundamental engineering concept that helps managers to find effective strategies for improving
software management. According to the principles of metrology defined in [4], the term of
measurement is used in the context of “measurement method”, “application of a measurement
method”, and “measurement results”. There are several options for sizing software: lines of code, Use
case Points, Object Points, Story Points, and functional size with Function Points.
   Huijgens et al. [5] conducted a structured survey of 336 Functional size measurement (FSM)
specialists who concurred that automated FSM from source code is important, but challenging. Most
respondents think that automated FSM will help measurement specialists and decision-makers. In this
survey, COSMIC was the preferred FSM method for automation, followed by IFPUG and NESMA.
The respondents considered automated FSM to be most suitable for baseline, benchmarking,
maintenance, and legacy purposes.
   Compared with other options, the COSMIC functional size measurement (FSM) method is
designed according to basic software engineering and metrology principles and is technology-

IWSM-Mensura, September 28–30, 2022, Izmir, Turkey
EMAIL: moulldk@unisa.ac.za; oumateb@gmail.com; mnkane@unisa.ac.za; hassan.soubra@guc.edu.eg; alain.abran@etsmtl.ca
ORCID: [orcid.org/0000-0001-6594-8378]
             2020 Copyright for this paper by its authors.
           Use permitted under Creative Commons License Attribution 4.0 International (CC BY 4.0).
           CEUR Workshop Proceedings (CEUR-WS.org)
independent. Two main software artifacts are generally used to measure the functional size of a piece
of software [6, 7]: requirement documents in the early development stages and lines of code once the
code has been developed.
   Applying FSM procedures manually is time-consuming, which is problematic for organizations
with a large number of projects to measure in a very short time, either for project estimation purposes
or productivity studies [8]. In addition, the manual application of FSM to a very large set of source
code inputs requires specialized expertise when there are a variety of languages in which the source
code has been implemented.
   There are main ways to automate functional size measurement [7]:
   1. Automate requirements analysis – with measurement based on key words and grammar
   patterns.
       Input is a set of textual or modeled requirements ;
       Output is the functional size measured ;
       An example is the automated COSMIC function points (CFP) size measurement from UML
   models in [9, 10, 11].
   2. Automated code analysis:
       Input is source code;
       Output is the functional size measured;
       Here, lines of code measurement are usually automated against the standards and best
   practices in any specific language, rather than on the quality of a specific piece of code. An
   example is the automated COSMIC CFP size measurement from Java source code [12, 13, 14, 15].
   In practice, there is a number of challenges to automated FSM:
       The requirements are almost always partial, incomplete, and ambiguous. The requirements do
   not describe the full scope of the functionality of the software with all the necessary functional
   details [16]. As a project progresses, the requirements will be detailed and changed as the project
   moves through the life cycle.
       While FSM methods are technology-independent, an automation design is required to handle
   the specifics of each programming language.
   The most common reason for measuring the functional size of software from the source code is to
develop a baseline of the relationship between size and effort in the form of an estimation model
based on functional size [17]. Moreover, the size measured from the source code reflects what has
been delivered with more accuracy than the incomplete and ambiguous requirements.
   The C programming language was created by Dennis Ritchie at the former Bell Laboratories in
1972 [18]. The C programming language was the most popular programming language from 1965 to
2020 [19], and as of January 1, 2022, it is in second position after the Python language [20]. For
example, Linux and Windows kernels are largely developed in the C programming language. In this
study, we focused on the automated measurement of the COSMIC CFP from C programs using regular
expressions.
   This study provides the first automated FSM from the source code using regular expressions. The
current study focuses on the design and implementation of an automated FSM for C programs based on
COSMIC ISO 19761 method. The automated measurement tool can be useful for organizations and
practitioners.
   The remainder of this paper is organized as follows. Section 2 presents an overview of related work
on the COSMIC FSM method and its measurement automation to date. Section 3 presents the proposed
automated measurement procedure for sizing C programs using the COSMIC rules and regular
expressions. Section 4 presents the automated measurement prototype. Section 5 concludes the paper
with directions for future research.

2. Related work
2.1. Benefits for sizing software with COSMIC – ISO 19761
    Over the past few decades, several FSM methods have been proposed, such as FPA [21], MkII
[22], NESMA [23], FisMA [24], and COSMIC [25]. The most common reason for measuring
software size is to estimate the effort or cost of development. Measuring software sizes can be
valuable for many purposes other than project estimation, as discussed in Sneed [26] and Symons
[27].
    Several studies have shown the quality of COSMIC as an FSM method. For instance, it has been
shown to perform better than Story Points when it comes to building effort estimation models and
productivity within an agile context [28, 29]. Di Martino et al. [30] empirically investigated the
performance of COSMIC and FPA methods for effort estimation of web applications: based on two
empirical studies using 25 web applications, they found that COSMIC outperformed FPA for effort
estimation. Symons et al. [31] demonstrated that these challenges for software project control and
estimating upcoming activities have been achieved through the advances made by the COSMIC
community over the years. The flexibility of the COSMIC method makes it possible to measure any
type of software and is used around the world.
    This motivated the current choice of COSMIC as a measurement method to design automated
functional size measurements for C programs. The COSMIC method defines four types of data
movement as follows:
    1. ENTRY: A data movement that moves a data group from a functional user across the
    boundary into the functional process where it is required.
    2. EXIT: A data movement that moves a data group from a functional process across the
    boundary to the functional user that requires it.
    3. READ: A data movement that moves a data group from persistent storage to the functional
    process that requires it.
    4. WRITE: Data movement that moves a data group from inside a functional process to
    persistent storage.

2.2.    Functional size measurement automation in the literature
    To address FSM automation issues, several papers have been published on COSMIC-based
measurement automation, both from requirement and source code analyses. An example of the latter
is the study by Soubra et al. [8] on an approach for a theoretical ‘universal’ tool based on COSMIC
ISO 19761 for the automated measurement of software written in different programming languages.
Their work included a prototype tool based on COSMIC and MIPS, with a small-scale validation, and
was limited to a specific release of the MIPS architecture and a specific instruction set.
    Ahmed et al. [6] proposed an FSM procedure based on COSMIC ISO 19761 to measure software
artifacts expressed in the ARM's base 32-bit assembly code. They introduced an automated
measurement tool prototype that can produce the functional size in the CFP of an ARM program, but
did not include all ARM instructions.
    From a comparison and lessons learned from their previous studies [12, 13, 14], Tarhan et al. [32]
derived an operational scenario for automated FSM from software code and proposed a set of
requirements that must be considered in automation. The authors replicated the study in [33] by
developing a tool called “COSMIC Solver” for Java Business Applications (JBA), and their results
indicated that CFPs measured manually and automatically converged at 77%.
    Chamkha et al. [15] proposed a “JavaCFP” plugin tool for measuring the COSMIC functional size
of Java source code being developed. Their measurement tool can be used to control the completeness
of the implemented functionality against specified requirements, to identify deviations, and to
generate progress reports on the implementation of new functions. Sahab et al. [17] developed a
CFP4J library to automate COSMIC functional size measurements from Java web applications using
the Spring Web MVC framework. Their contribution lies in defining mapping rules from code and a
publicly available software library to automate the COSMIC functional size of Java web applications
that use the Spring MVC framework.
    Ungan et al. [34] presented ScopeMaster®, the first commercial tool to perform COSMIC
measurement on a set of free-form textual requirements in English. ScopeMaster performs several
successive steps of analysis, individually and collectively, on the textual requirements to detect
candidate COSMIC Objects of Interest, potential functional users, potential data movements, and
potential defects. The details of how ScopeMaster® performs these techniques are proprietary and are
protected by a pending patent application; however, the measurement results are fully transparent.
   Bagriyanik et al. [35] proposed an ontology model for transforming requirements into COSMIC
function point method concepts, and a method was developed to automatically measure the functional
size of software using the designed ontology. To validate their method, they implemented a software
application using requirement data from several real projects. Their findings indicated that manual
and automated measurement results were in agreement.
   Meiliana et al. [11] used the XML structure of the UML sequence diagram to automate software
size measurements. Functional size was measured using the COSMIC method, while structural size
was calculated based on the control structures in sequence diagrams.
   Zaw et al. [36] proposed an automated software size measurement tool, including a generation
model based on UML, SysML, and Petri nets. General mapping rules between the COSMIC FSM and
a generation model to measure the size of the software have been proposed.
   Sellami et al. [37] designed an extended sizing method by considering the structural aspects of a
sequence diagram to quantify its size. These functional and structural sizes can then be used as
distinct independent variables to improve the effort estimation models. Their findings showed that the
size of sequence diagrams can be measured from two perspectives, both functional and structural, and
at different levels of granularity with distinct measurement units. The authors refined their previous
study through the assessment of the nested (multi-level) control structures in the sequence diagram
and a web site case study “Digital-Training Center” were used to depict and apply the proposed
measurement algorithms [38].
   Abrahão et al. [39] defined a measurement procedure (OO-HCFP) for Object-Oriented
Hypermedia method (OO-H) web applications based on COSMIC. They argued that the results
obtained using their proposed approach were more accurate than those obtained using other
measurement approaches based on function points and design measures.
   De Vito et al. [40] provided a measurement procedure to derive the COSMIC functional size from
UML software artifacts, and developed a prototype tool (J-UML COSMIC). To assess the
measurement procedure, they carried out two case studies and compared the measurement results
provided by the tool with those obtained by experts by applying the standard COSMIC method. They
concluded that the tool allowed incremental accurate measurements to be obtained when new or
existing models were considered.
   In summary, a number of studies have proposed COSMIC FSM automation, but none yet have
proposed, to the best of our knowledge, an automated measurement solution for C programs. This
motivated the present study.

3. COSMIC FSM procedure for sizing C programs
   This section presents an overview of C program structure and the proposed measurement
approach.

3.1.      Overview of C program structure
      The general structure of the C program can be represented in a simplified form as follows (Figure
1):
      [Preprocessor directives]
      [Secondary functions]
      int main(void){
      Declaration of internal variables
      Instructions
      return 0;}

Figure 1: A simplified form of a C program
    The preprocessor directives are used to include libraries, and the secondary functions represent
subprograms, either procedures or functions. A subprogram is defined as a block of code that has a
name and consists of a sequence of instructions that perform a specific task. The main program is a
procedure that governs the operation of the program.
    In this study, a C program was represented as a function. These functions consist of two main
elements:
        Function header, where the name, type of input parameters, and type of output value are
    defined;
        The body of the function where variables are defined, and all instructions are executed.
    These information will serve as guidelines for the mapping of COSMIC to C programs. The
structure of the C function is represented in a simplified form as follows (Figure 2):
   type function_name(arguments){
   declarations of internal variables
   instructions
   }
Figure 2: A simplified form of a function

3.2.    The proposed approach: mapping COSMIC to C program
    The purpose of this procedure is to apply the COSMIC method to the source code of programs
written in C, for either effort estimation or productivity studies. We considered the whole set of
functional user requirements (FUR) expressed within a C program; therefore, the measurement scope
is the whole program written in C. We used a detailed functional process at the granularity level.
    Our COSMIC mapping process can be summarized by the identification of:
        Functional process: a C function is considered as a functional process.
        Data group: A data group consists of a unique set of data attributes that describe a single
    object of interest. We assumed that each variable could be considered as a data group.
        Data movements: There were four data movement types: ENTRY, EXIT, READ, and
    WRITE.
    Table 1 lists the proposed mapping rules between the COSMIC concepts and the elements of a
function. Any input parameter of a function should be mapped to COSMIC ENTRY (E) data
movements and the output of a function should be mapped to COSMIC EXIT(X) data movements.
For READ (R) and WRITE (W) COSMIC data movements, any assignment to a variable
(respectively from a variable) should be mapped to WRITE (W), ), (respectively a READ (R) and
WRITE (W)) WRITE (R) COSMIC data movements can also be linked to the initializations of
variables during their declaration.

Table 1
Rules for identifying data movements in a C program
            COSMICS Concepts                              Elements of C program
          ENTRY data movement              Identify an ENTRY (E) for each input parameter of a
                                          function. The number of parameters of a function
                                       corresponds to the number of ENTRY data movements.
           EXIT data movement               An EXIT (X) corresponds to the value returned by a
                                     function. If there are several functions in a program, each
                                            output of a function is an EXIT data movement.
           READ data movement           Identify a READ (R) during operations. Each variable read
                                     to carry out a processing corresponds to the READ (R) data
                                                              movement.
           READ data movement            When the scanf function is called, it also corresponds to
                                                              a READ (R).
          WRITE data movement               Each printf function corresponds to a WRITE (W).
         WRITE data movement           Identify a WRITE (W) during assignment operations. Each
                                                     assignment is a WRITE (W).
         WRITE data movement             The initialization of a variable is also considered as a
                                      WRITE (W) data movement. Therefore, each initialization
                                                    corresponds to a WRITE (W).

   As described in Section 3.1, a function consists of two main elements: the function header and the
body of a function. Table 2 presents the mapping of COSMIC to the C program instructions and their
corresponding regular expressions.

Table 2
Mapping COSMIC Data movements to C program instructions using regular expressions

          Instructions                Data movements                      Regular expressions
   Definition of the function      ENTRY data movements                           (([a-
           header                                             z]+)\s+(\w+)\s*(\(((\s*\w*\s+\w*(\s*
                                                                    \,| \s*))*| \s*(\w*)\s*)\)))
        Assignment with                One WRITE (1W)            ((\w*)\s*\(=)\s*([0-9.]+|[’\”][a-zA-
       constant values                                                     Z]+[’\”])\s* \;)
    Assignment with variable         One READ (1R), one           ((\w*)\s*\(=)\s*([a-zA-Z]+)\s* \;)
           values                      WRITE (W)
     Arithmetic instruction          Two READ (2R), one                  ((\w*)\s*\(=)\s*(([a-zA-
                                       WRITE (W)                  Z]+)\s*(\+|\-|\*|\/|\%)\s*([a-
                                                                             zAZ]+))\s* \;)
           Increment                 One READ (1R), one            ((\w+)\s*(=)\s*(((\w+)\s*(\+|\-
                                       WRITE (W)                            |\*|\/)\s*([0-
                                                              9.]+))|(([09.]+)\s*(\+|\|\*|\/)\s*(\w+
                                                                      )))\s*\;)|((\w+)\s*((\+|\-
                                                                   |\*|\/)\s*=)\s*([0-9.]+)\s* )
   Logical expressions Type             One READ (1R)                (([a-zA-Z]+\s*(\<|\> |\6| \> |
  1 (between variable and                                             \==|\!=)\s*[0-9.]+)| ([0-
         constant)                                            9.]+\s*(\<|\>|\6| \> | \==|\!=)\s*[a-
                                                                                zA-Z]+))
   Logical expressions Type            Two READ (2R)                (([a-zA-Z]+)\s*(\<|\> |\6| \> |
  2 (between variable and                                              \==|\!=)\s*([a-zA-Z]+))
         variable)
             Read                       One READ (1R)                 ((scanf)\s*\([”\’][a-zA-Z0-
                                                                 9.%]+[”\’]\s*\,\s*(.*?)+\)\s*\;)
             write                     one WRITE (W)             ((printf)\s*\([”\’](.*?)*[”\’](.*?)*\)
                                                                               \s*\;)

4. Automated measurement tool prototype
  This section presents the approach used to build the measurement tool prototype based on the
COSMIC C-mapping rules defined in Section 3.

4.1.    Tool architecture and description of the algorithm
   The tool prototype is aimed at automating the COSMIC FSM from a C program file, visualizing it,
and saving the measurement results. The general architecture of the tool comprises three modules
(Figure 3).
   1. Graphical user interface (GUI) module: This module allows a user to select a C program file
   to measure, visualize, and save the measurement results.
   2. Filtering and data extraction module: This module is organized into two parts. The first part
   extracts all the function headers defined in the program to identify the ENTRY and EXIT data
   movements. The second part groups instructions per category. Persistent storage exists in this
   module.
   3. Measurement module: This module contains a list of the identified data movements. In
   addition, the numerical values are assigned to each data movement (one CFP per COSMIC data
   movement), and then the aggregation of all the identified CFP is made.




Figure 3: A simplified architecture of the COSMIC-C tool prototype

   The algorithm describing the tool functions is shown in Figure 4.

              Algorithm: Measurement process
               Input: C program file
               Outputs: size in CFP
               Begin
               {
                 1. Read file
                 2. Identify all functional processes
                 3. For Each functional process:
                      For each output parameter:
                         count 1 EXIT (X)
                      For each input parameter:
                        (If there are two separated words with at least one space then count 1 ENTRY (E)
                          If there are comas, then ENTRY <– Count (number of comas) + 1)

                    For each body of the function:
                       If the instruction is the initialization, then count 1 WRITE (W)
                       If the instruction is an arithmetic instruction, then count 2 READ (R) and 1 WRITE (W)
                       If the instruction is an value assignment to a variable, then count 1 WRITE (W)
                       If the instruction is an variable assignment to a variable, then count 1 READ (R) and 1
                          WRITE (W)
                       If the instruction is an logical expressions Type 1 (between variable and constant), then
                          Count 1 READ (R)
                       If the instruction is an logical expressions Type 2 (between variable and variable), then
                          Count 2 READ (R)
                       If the instruction is an increment, then count 1 READ (R) and 1 WRITE (W)
                       If the instruction is printf, then count 1 WRITE (W)
                       If the instruction is the scanf, then count 1 READ (R)
                4. Add ENTRIES, EXITS, READS and WRITES from step 3.
                5. Aggregate the CFP for all functional processes
               }
               End
Figure 4: Algorithm of measurement process
4.2.   Validation of the prototype
   The automated measurement tool prototype was implemented using Python language. As a test
case example, the source code of the C program, as shown in Figure 5, was used.




  Figure 5: Content of the C program file used for testing the automation prototype
   Figure 6 shows the automated measurement results for all COSMIC data movements from the C
program file.




Figure 6: CFP automated measurement results
   As shown in Figure 6, the tool identified 6 entries, 4 exits, 15 reads, and 20 writes from the C
program file. The total number of COSMIC function points of the program was 45 CFP. Table 3
presents the corresponding manual measurement results for the same program using the COSMIC
ISO 19761 method. Three people performed manual measurements, and one of them was a certified
COSMIC measurer.
Table 3
CFP manual measurement results
                 N° of lines of      COSMIC data movements                Value in CFP
                   code
                       3                       1X, 2E                           3
                       4                         1W                             1
                       5                       2R, 1W                           3
                       6                         1R                             1
                       8                         1E                             1
                       9                         1R                             1
                      10                         1W                             1
                      12                         1W                             1
                      14                       1E, 1X                           2
                      15                         2R                             2
                      17                       1X, 2E                           3
                      18                         1W                             1
                      20                         2R                             2
                      21                       1R, 1W                           2
                      23                  1R, 1W (optional)                     2
                      25                         1R                             1
                      28                         1X                             1
                      29                         2W                             2
                      30                         1W                             1
                      31                         1R                             1
                      32                         1W                             1
                      33                       1R, 1W                           2
                      34                       1R, 1W                           2
                      35                         1W                             1
                      36                         1W                             1
                      37                         1W                             1
                      38                       1R, 1W                           2
                      40                         1W                             1
                      41                         1W                             1
                      42                         1W                             1
                      30           Total entries: 06; Total exits:        Total CFP: 45
                                04; Total reads:15; Total writes:
                                                20

   From Table 3, the same number of COSMIC function points was obtained from both the
automated and manual measurements.

5. Conclusion
   Several studies have shown the importance of FSM automation for the software industry, and
while there are a number of studies on COSMIC FSM automation for a variety of contexts and
programming languages, none have tackled automated measurement solutions for C programs. In this
study, we proposed a measurement procedure for sizing C programs using the COSMIC rules,
including relevant C regular expressions.
    Next, an automated measurement tool prototype is introduced, with a test example as a case study.
The measurement results for this automated measurement tool prototype were similar to those
obtained manually. Such work on the COSMIC FSM automation of C programs can be useful for
organizations’ estimation purposes or benchmarking studies.
    Limitations refer to influences or shortcomings that are beyond researchers’ control and place
restrictions on the methodology and analysis of research data [41]. The limitations of this study
related to the research problem under investigation are as follows:
        The proposed prototype tool correctly identified the Main() function as a COSMIC functional
    process. However, this tool does not identify the triggering Entry. However, this limitation should
    be addressed in future studies.
        Our research relates exclusively to software written in C programming language.
        A test case example given in this study is relatively simple for both humans and the software
    to handle. More tests should be done on the different data structures.
    This study was limited to software written in C programming language. We plan to extend our
study to other languages with similar syntax in terms of regular expressions such as Java, JavaScript,
and Python. We also plan to explore existing tools for lexical analysis to extract COSMIC function
points from source code. To reveal any limitations or threats to validity of automated measurement
from source code, we plan to compare the size measured based on the user requirement of the same
piece of software and the source code.

6. Acknowledgment
   We are grateful to anonymous reviewers.

7. References
[1] cosmic-sizing.org, Why measure software size?, 2022. URL: https://cosmic-sizing.org/cosmic-
     sizing/intro/why-measure-size/.
[2] M. Unterkalmsteiner, T. Gorschek, A.M.M. Islam, C.K. Cheng, R.B. Permadi, and R. Feldt,
     Evaluation and measurement of software process improvement: a systematic literature review,
     IEEE Transactions in Software Engineering, 38(2) (2012) 398–424. doi: 10.1109/TSE.2011.26
[3] T. DeMarco, Controlling Software Projects, New Jersey, Yourdon Press, 1982.
[4] VIM ISO/IEC Guide 99 International vocabulary of metrology — Basic and general concepts
     and associated terms (VIM), International Organization for Standardization — ISO, Geneva,
     2007.
[5] H. Huijgens, M. Bruntink, A. van Deursen, T. van der Storm, and F. Vogelezang, An
     Exploratory Study on Functional Size Measurement Based on Code, in: Proceedings of
     IEEE/ACM International Conference on Software and System Processes (ICSSP), 2016, pp. 56-
     65. doi: 10.1145/2904354.2904360
[6] A. Darwish, and H. Soubra, COSMIC Functional Size of ARM Assembly Programs, in:
     Proceeding of the 30th IWSM-Mensura. Mexico city, Mexico, 2020.
[7] H.V. Heeringen, Automated Function Points, the Game Changer!, IT Conference – ISBSG,
     2020.
[8] H. Soubra, Y. Abufrikha, and A. Abran, Towards Universal COSMIC Size Measurement
     Automation, in: Proceedings of the 30th IWSM-Mensura, Mexico city, Mexico, 2020.
[9] V. Bévo, G. Lévesque, and A. Abran, UML notation for functional size measurement method,
     in: Proceedings of the International Workshop in Software Measurement - IWSM, Lac-
     Supérieur, Canada, 1999.
[10] T.M. Fehlmann, and E. Kranich, COSMIC functional sizing based on UML sequence diagrams,
     in: Proceedings of the MetriKon, Kaiserslautern, Germany, 2011.
[11] Meiliana, S. Karim, S. Liawatimena, A. Trisetyarso, B. S. Abbas, and W. Suparta, Automating
     functional and structural software size measurement based on XML structure of UML sequence
     diagram, in: Proceedings of the IEEE International Conference on Cybernetics and
     Computational Intelligence (CyberneticsCom), IEEE, Phuket, Thailand, 2017, pp. 24–28.
     doi:10.1109/CYBERNETICSCOM.2017.8311709.
[12] A.A. Akca, and A. Tarhan, Run-time measurement of COSMIC functional size for java business
     applications: Initial results, in: Proceedings of the IWSM-Mensura, IEEE, Assisi, Italy, 2012, pp.
     226–231. doi: 10.1109/IWSM-MENSURA.2012.40.
[13] R. Gonultas, and A. Tarhan, Run-time calculation of COSMIC functional size via automatic
     installment of measurement code into Java business applications, in: Proceedings of the 41st
     Euromicro Conference on Software Engineering and Advanced Applications. IEEE, Madeira,
     Portugal, 2015, pp.112–118. doi: 10.1109/SEAA.2015.30.
[14] M.A. Sag, and A. Tarhan, Measuring COSMIC software size from functional execution traces of
     Java business applications, in: Proceedings of the IWSM-Mensura 2014, IEEE, Rotterdam,
     Netherlands, 2014, pp. 272–281. doi: 10.1109/IWSM.Mensura.2014.29.
[15] N. Chamkha, A. Sellami, and A. Abran, Automated COSMIC Measurement of Java Swing
     Applications throughout their Development Life Cycle, in: Proceedings of the IWSM-Mensura,
     Beijing, China, 2018, pp. 20-33.
[16] A. Abran, Software Estimation: How to use ISBSG data for early software sizing?, IT
     Conference – ISBSG, 2020.
[17] A. Sahab, and S. Trudel, COSMIC Functional Size Automation of Java Web Applications Using
     the Spring MVC Framework, in: Proceedings of the 30th IWSM-Mensura, Mexico city, Mexico,
     2020.
[18] Gartner, C (Programming Language), 2022. URL: https://www.gartner.com/en/information-
     technology/glossary/c-programming-language.
[19] Statistics and Data, The Most Popular Programming Languages – 1965/2022 – New Update,
     2022. URL: https://statisticsanddata.org/data/the-most-popular-programming-languages-1965-
     2022-new-update/.
[20] TIOBE Software, 2022. URL: https://www.tiobe.com/tiobe-index/.
[21] ISO/IEC 20926: Software and systems engineering - Software measurement - IFPUG functional
     size measurement method 2009, 2nd ed., ISO, Geneva, 2009.
[22] ISO/IEC 20968: Software engineering - Mk II Function Point Analysis - Counting Practices
     Manual, ISO, Geneva, 2002.
[23] ISO/IEC 24570: Software engineering - NESMA functional size measurement method -
     Definitions and counting guidelines for the application of function point analysis, 2nd ed., ISO,
     Geneva, 2018.
[24] ISO/IEC 29881: Information technology - Systems and software engineering - FiSMA 1.1
     functional size measurement method, ISO, Geneva, 2010.
[25] ISO/IEC 19761: Software engineering - COSMIC: a functional size measurement method, ISO,
     Geneva, (2011, reviewed and confirmed in 2019).
[26] H. Sneed, Purpose of Software Measurement, Software Measurement News, Volume 26,
     Number 1, March 2021.
[27] C. Symons, Why COSMIC functional Measurement?, Measurement News, Volume 25, Number
     2, September 2020.
[28] C. Commeyne, A. Abran, and R. Djouab, Effort estimation with story points and COSMIC
     function points - an industry case study, Software Measurement News, Volume 21, Number 1,
     2016.
[29] M. Salmanoglu, T. Hacaloglu, and O. Demirors, Effort estimation for agile software
     development: comparative case studies using COSMIC functional size measurement and story
     points, in: Proceedings of the 27th IWSM-Mensura, ACM, Göteborg, Sweden, 2017.
[30] S. Di Martino, F. Filomena, C. Gravino, and F. Sarro, Web Effort Estimation: Function Point
     Analysis vs. COSMIC, Information and Software Technology 72 (2016) 90-109. doi:
     10.1145/3143434.3143450.
[31] C. Symons, A. Abran, C. Ebert, and F. Vogelezang, Measurement of Software Size: Advances
     Made by the COSMIC Community, in: Proceedings of the IWSM-Mensura, IEEE, Berlin,
     Germany, 2016, pp. 75-86. doi: 10.1109/IWSM-Mensura.2016.021.
[32] A. Tarhan, B. Özkan, and G.C. İçöz, A Proposal on Requirements for COSMIC FSM
     Automation from Source Code, in: Proceedings of the IWSM-Mensura, IEEE, Berlin, Germany,
     2016, pp. 195-200. doi: 10.1109/IWSM-Mensura.2016.038.
[33] A. Tarhan, and M.A. Sag, COSMIC Solver: A Tool for Functional Sizing of Java Business
     Applications, Balkan Journal of Electrical & Computer Engineering 6(1) (2018).
[34] E. Ungan, C. Hammond, and A. Abran, Automated COSMIC Measurement and Requirement
     Quality Improvement Through ScopeMaster® Tool., in: Proceedings of the IWSM-Mensura,
     Beijing, China, 2018.
[35] S. Bagriyanik, and A. Karahoca, Automated COSMIC Function Point measurement using a
     requirements engineering ontology, Information and Software Technology 72 (2016) 189-203.
[36] T. Zaw, S.Z. Hlaing, M. M. Lwin, and K. Ochimizu, An Automated Software Size Measurement
     Tool based on Generation Model using COSMIC Function Size Measurement, in: Proceedings of
     the International Conference on Advanced Information Technologies (ICAIT), IEEE, Yangon,
     Myanmar, 2019, pp. 268-273.doi: 10.1109/AITC.2019.8920991.
[37] A. Sellami, H. Hakim, A. Abran, and H. Ben-Abdallah, A measurement method for sizing the
     structure of UML sequence diagrams, Information and Software Technology 59 (C) (2015) 222–
     232.
[38] H. Hakim, A. Sellami, H. Ben-Abdallah, and A. Abran, Improving the Structural Size
     Measurement Method Through the Assessment of Nested (Multi-Level) Control Structures in
     UML Sequence Diagram, in: Proceedings of the IWSM-Mensura, Mexico city, Mexico, 2020.
[39] S. Abrahão, L. De Marco, F. Ferrucci, J. Gomez, C. Gravino, and F. Sarro, Definition and
     evaluation of a COSMIC measurement procedure for sizing Web applications in a model-driven
     development environment, Information and Software Technology 14 (2018) 144-161.
[40] G. De Vito, F. Ferrucci, and C. Gravino, Design and automation of a COSMIC measurement
     procedure based on UML models, Software and Systems Modeling 19 (2020) 171–198.
[41] A. Filippova, E. Trainer, and J.D. Herbsleb, From diversity by numbers to diversity as process:
     Supporting inclusiveness in software development teams with brainstorming, in: Proceedings of
     the 39th International conference on software engineering, IEEE, Buenos Aires, Argentina, 2017,
     pp. 152–163.doi: 10.1109/ICSE.2017.22.