<!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>User-centric Programming Language</article-title>
      </title-group>
      <contrib-group>
        <aff id="aff0">
          <label>0</label>
          <institution>Warsaw University of Technology</institution>
          ,
          <addr-line>Warsaw</addr-line>
          ,
          <country country="PL">Poland</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>Ambiguously formulated and constantly changing requirements for software systems make it hard to translate them into working code. To overcome these problem, we propose an approach that consolidates the requirements speci cation level with the design and implementation levels in order to shorten the path from initial requirements to the nal code. The end-user of the system will be able to specify requirements in a precise, semantically rich and domain independent User-centric Programming Language (UcPL), which will allow for direct transformation into application logic code.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>Typical software development lifecycles comprise activities that lead from the
initial requirements to the nal working system. These activities produce various
artifacts at di erent level of abstraction: design models and code. The level of
technical complexity makes these artifacts inaccessible to the end-users of the
system. However, end-users can discuss the logic (functionality) of the system
that abstracts away all the technical details of the software system. This should
be done in a language understandable to them. The logic of the problem is
usually expressed within the user requirements speci cations.</p>
      <p>Considering this two main problems arise. The rst problem pertains to the
process of transition from end-user needs into design and implementation. This
includes problems with requirements elicitation and translating the functional
requirements into the logic of the system. Attempts to solve these problems
are mainly based on the introduction of formal and semi-formal requirements
speci cation languages and automation of transformation between requirements
and certain technical artifacts.</p>
      <p>The second problem is that the path from requirements to code makes it
di cult to maintain appropriate traceability links. This is especially an issue
in projects that face high changeability of the requirements. Attempts to solve
these problems include rapid application development environments, certain
agile methodologies, which try to shorten the path from requirements to code and
certain generative approaches where the traces are generated automatically.</p>
      <p>Despite shifting the level of abstraction through the introduction of the
object-oriented paradigm, still, the existing approaches necessitate a signi cant
level of technical expertise to develop a working system. Thus, there is a rising
need to bring the end-user closer to the software developers. The idea here is to
let the end-users write some signi cant portions of software systems. The Gartner
Group, in its 2008 study predicts signi cant growth in end-user software
development. In 2010 an average of 34% of companies are expected to conduct more
than 20% of application development outside of IT. Unfortunately, there are no
approaches to allow the users to construct software through writing the problem
logic at the level of requirements. The traditional way of producing software
systems is to shift from requirements to code in a generally manual process. More
modern approaches try to utilize dedicated tools to automate that process. This
necessitates formalizing requirements and constraining the natural language in
which they are normally written.
2</p>
    </sec>
    <sec id="sec-2">
      <title>Related Work</title>
      <p>
        Requirements engineering has been established in the industry as a method for
awless transition from the early system vision over the design, implementation
up to the validation and tests. The current practice in this area is more focused
on requirements management [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] and requirements interchange [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] than
requirements speci cation. There are also approaches where requirements are speci ed
more formally, like the Four Variable Model [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ], [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]. In UML [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] or in its pro les
like SysML [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] or MARTE [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ], requirements can be handled through creating
semi-formally de ned visual models. In RSL [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ], requirements are speci ed in
constrained natural language with a well de ned grammar.
      </p>
      <p>
        Few of the above mentioned general purpose requirements languages can
execute the requirements speci cation written in it, or can be transformed directly
into complete working code. On the other hand, in recent years there has been
a drive towards developing executable domain speci c languages (DSL) [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]. The
idea is that it is more e cient to create a simple language and the corresponding
code generators than to apply general purpose languages. The questions are how
simple the language has to be and how frequent the language must change to
cope with rising demands by its users.
3
      </p>
    </sec>
    <sec id="sec-3">
      <title>Proposed Solution</title>
      <p>To go further in resolving mentioned problems, we propose to allow the end-users
actively participate in writing software while retaining their role of \requirements
speci ers". They would specify the system logic in the language understandable
for them and then automatically transform such speci cations directly into code.
This would certainly lead to signi cant gains in productivity.</p>
      <p>We aim at delivering a framework consisting of three main elements: the
Usercentric Programming Language (UcPL), the design time environment and the
transformation engine along with appropriate transformation algorithms. Figure
1 shows an overview of the UcPL approach. In UcPL we will substitute
procedural or object-oriented programming with, so called, user-centric programming.
The user-centric language constructs would just allow to specify the logic of the
problem. This means that the user-centric programs could be written and read
by end-users with no software development background. Most of the design and
technological decisions will be hidden by the language platform.</p>
      <p>A scenario of developing software application with UcPL is very
straightforward. End-users creates requirements speci cation in the form of user-centric
program. Then they choose the desired transformation algorithm. Precision
required in order to apply automatic transformation, necessitates extensive
mechanism for validation and correction of the UcPL language constructs.
Validation should precede the transformation step. The transformation engine takes
complete requirements speci cation in the form of user-centric program as an
input and produces complete code of the application logic (or controller in MVC
model). The output code lacks implementation of the application's business
model { only class stubs with appropriate methods are generated. The
application logic code contains calls to these business entities. The same pertains to
the user interface elements like windows, buttons, messages, etc. However, the
generated code constitutes the application framework which can be compiled
and executed, what signi cantly shorten the time needed to develop the whole
system.</p>
      <p>In order to generate code of a full system, appropriate extension of UcPL for
specifying business logic and user interface would be needed. This is, though,
outside the scope of this work.</p>
      <p>A programming language (Java, C++, etc.) and all technological details (e.g.
use of a speci c user interface technology or speci c application framework)
of the generated code will depend on the transformation algorithm used. The
transformation engine built into the UcPL framework will be able to run any
transformation algorithm speci ed in appropriate transformation language.</p>
      <p>In order to ensure end-user comprehension, the UcPL language will be based
on use case scenarios written in natural language with simple imperative
sentences (e.g. "User enters login data\ or "System calculates exchange rate\) and
control sentences expressing conditions, loops, etc. (e.g. "exchange rate greater
than previous exchange rate\).</p>
      <p>The language will clearly separate description of the user-system interaction
from the description of the domain (see Figure 1). Scenarios will be hyperlinked
with appropriate notions de ned in a separate vocabulary. Such hyperlinks could
be then transformed into operation calls from application logic to business logic
and user interface layer.</p>
      <p>The syntax of the language will be precisely de ned as a meta-model in MOF
in order to enable automatic handling of user-centric programs.
4</p>
    </sec>
    <sec id="sec-4">
      <title>Research Method</title>
      <p>
        As we mentioned UcPL will need to combine informality with necessary
precision, that the end-users would be able to comprehend and write user-centric
programs, as well as they are able to understand and write common-prose
requirements. The language that addresses most of mentioned issues is the RSL
language [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ] which was recently developed as a part of the ReDSeeDS project
[
        <xref ref-type="bibr" rid="ref11">11</xref>
        ]. RSL allows for transformation from requirements speci cation into draft
model of system's architecture. UcPL will be based on the RSL which will be
additionally formalized by specifying precise semantics for all the language
constructs.
      </p>
      <p>
        Also an appropriate set of transformation algorithms will be implemented in
the model transformation language MOLA [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ]. Though there are many
transformation languages like QVT [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ] or ATL [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ], MOLA is preferred for its
readability. MOLA is a graphical transformation language where an advanced pattern
mechanism is combined with simple traditional control structures. Moreover,
MOLA o ers comprehensive transformation engine.
      </p>
      <p>An important part of the solution is the design time environment for writing
user-centric programs and performing transformations to code. It will be
implemented as an extension to the existing ReDSeeDS tool which o ers appropriate
infrastructure that can be utilized by using plug-in mechanism.</p>
      <p>This will enable us to build a system that allows for developing software
applications by the end-users by direct transformation from requirements to
application logic code. Preliminary studies shows that the proposed approach is
possible through skilful extension and combination of the existing technologies.</p>
      <p>This goal of retaining end-user comprehensibility of the UcPL as well as
useability and e ectiveness of the whole framework will be assured and validated
through extensive experimental studies. These studies will be mainly carried out
by students during software engineering courses. The students will be divided
into two subgroups. One group will be developing a system using UcPL approach
while the second group will be developing the same or similar system in a
traditional way. The results will be compared and analyzed taking into account such
factors as time needed to develop the nal system and quality of the system
measured as the degree of initial user requirements ful llment.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1. Le ngwell, D.,
          <string-name>
            <surname>Widrig</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          :
          <article-title>Managing Software Requirements: A Use Case Approach, Second Edition</article-title>
          .
          <string-name>
            <surname>Addison-Wesley</surname>
          </string-name>
          (
          <year>2003</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2. ProSTEP:
          <article-title>Requirements interchange format (rif)</article-title>
          .
          <source>Technical Report PSI 6 Version 1</source>
          .2,
          <string-name>
            <surname>ProSTEP iViP</surname>
          </string-name>
          (
          <year>2009</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Parnas</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          :
          <article-title>Systematic documentation of requirements</article-title>
          . Requirements Engineering, IEEE International Conference on
          <volume>0</volume>
          (
          <year>2001</year>
          )
          <fpage>0248</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Heitmeyer</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Archer</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bharadwaj</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Je</surname>
            <given-names>ords</given-names>
          </string-name>
          , R.:
          <article-title>Tools for constructing requirements speci cations: The scr toolset at the age of ten</article-title>
          .
          <source>Computer System Science and Engineering Journal</source>
          vol.
          <volume>1</volume>
          (
          <year>2005</year>
          )
          <volume>19</volume>
          {
          <fpage>35</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5. Object Management Group: Uni ed Modeling Language: Superstructure, version
          <volume>2</volume>
          .2, formal/09-02-
          <fpage>02</fpage>
          . (
          <year>2009</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6. OMG:
          <article-title>Sysml -omg systems modeling language</article-title>
          .
          <source>Technical report</source>
          (
          <year>2008</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7. OMG:
          <article-title>Marte - uml pro le for modeling and analysis of real-time and embedded systems</article-title>
          .
          <source>Technical report</source>
          (
          <year>2008</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Smialek</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ambroziewicz</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bojarski</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Nowakowski</surname>
            ,
            <given-names>W.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Straszak</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          :
          <article-title>Introducing a uni ed requirements speci cation language</article-title>
          . In Madeyski, L.,
          <string-name>
            <surname>Ochodek</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Weiss</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Zendulka</surname>
          </string-name>
          , J., eds.
          <source>: Proc. CEE-SET'</source>
          <year>2007</year>
          , Software Engineering in Progress, Nakom (
          <year>2007</year>
          )
          <volume>172</volume>
          {
          <fpage>183</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Kelly</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Tolvanen</surname>
            ,
            <given-names>J.P.</given-names>
          </string-name>
          :
          <article-title>Domain-Speci c Modeling: Enabling Full Code Generation</article-title>
          . John Wiley &amp; Sons, Inc. (
          <year>2008</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Kaindl</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Smialek</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          , et al.:
          <article-title>Requirements speci cation language de nition</article-title>
          .
          <source>Project Deliverable D2.4</source>
          .1,
          <string-name>
            <given-names>ReDSeeDS</given-names>
            <surname>Project</surname>
          </string-name>
          (
          <year>2007</year>
          )
          <article-title>www</article-title>
          .redseeds.eu.
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Smialek</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kalnins</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ambroziewicz</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Straszak</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wolter</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          :
          <article-title>Comprehensive system for systematic case-driven software reuse</article-title>
          .
          <source>Lecture Notes in Computer Science</source>
          <volume>5901</volume>
          (
          <year>2010</year>
          )
          <volume>697</volume>
          {708 SOFSEM'
          <fpage>10</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Kalnins</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Barzdins</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Celms</surname>
          </string-name>
          , E.:
          <source>Model transformation language MOLA. Lecture Notes in Computer Science</source>
          <volume>3599</volume>
          (
          <year>2004</year>
          )
          <volume>14</volume>
          {
          <fpage>28</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13. Object Management Group:
          <article-title>Meta Object Facility (MOF) 2</article-title>
          .0 Query/View/Transformation Speci cation,
          <source>version 1</source>
          .0, formal/08-04-
          <fpage>03</fpage>
          . (
          <year>2008</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Jouault</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kurtev</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          :
          <article-title>Transforming models with the ATL</article-title>
          .
          <source>Lecture Notes in Computer Science</source>
          <volume>3844</volume>
          (
          <year>2005</year>
          )
          <volume>128</volume>
          {
          <fpage>138</fpage>
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>