Jaroslav Porubän's scientific contributions

Publications (60)

Article
Full-text available
Contemporary software systems focus on usability and accessibility from the point of view of effectiveness and ergonomics. However, the correct usage of the domain dictionary and the description of domain relations and properties via their user interfaces are often neglected. We use the term domain usability (DU) to describe the aspects of the user...
Article
Full-text available
Automated tests are often considered an indicator of project quality. In this paper, we performed a large analysis of 6.3 M public GitHub projects using Java as the primary programming language. We created an overview of tests occurrence in publicly available GitHub projects and the use of test frameworks in them. The results showed that 52% of the...
Preprint
Full-text available
Software testing is one of the very important Quality Assurance (QA) components. A lot of researchers deal with the testing process in terms of tester motivation and how tests should or should not be written. However, it is not known from the recommendations how the tests are actually written in real projects. In this paper the following was invest...
Article
Full-text available
After a voice control system transforms audio input into a natural language sentence, its main purpose is to map this sentence to a specific action in the API (application programming interface) that should be performed. This mapping is usually specified after the API is already designed. In this paper, we show how an API can be designed with voice...
Article
Full-text available
Unit under test identification (UUT) is often difficult due to test smells, such as testing multiple UUTs in one test. Because the tests best reflect the current product specification they can be used to comprehend parts of the production code and the relationships between them. Because there is a similar vocabulary between the test and UUT, five N...
Preprint
Pure embedding as an implementation strategy of domain-specific languages (DSLs) benefits from low implementation costs. On the other hand, it introduces undesired syntactic noise that impedes involvement of non-programming domain experts. Due to this, pure embedded DSLs are generally not intended for, nor used by, non-programmers. In this work, we...
Preprint
The main purpose of a voice command system is to process a sentence in natural language and perform the corresponding action. Although there exist many approaches to map sentences to API (application programming interface) calls, this mapping is usually performed after the API is already implemented, possibly by other programmers. In this paper, we...
Conference Paper
Identification of unit under test (UUT) from a test is often difficult and requires wider source code comprehension. By automating this process it would be possible to support the program comprehension and reduce software maintenance process. In this paper the Latent Semantic Analysis (LSA) and the Latent Dirichlet Allocation (LDA) were used which...
Article
Source code written in textual programming languages is typically edited in integrated development environments (IDEs) or specialized code editors. These tools often display various visual items, such as icons, color highlights or more advanced graphical overlays directly in the main editable source code view. We call such visualizations source cod...
Article
Full-text available
This paper describes the design of a testing environment for massive assessment of assignments for Android application programming courses. Specific testing methods and tool suggestions are continuously consulted with Wirecard company, dedicated to the development of mobile applications. The paper also analyzes the most common mistakes of students...
Preprint
Source code is inherently abstract, which makes it difficult to understand. Activities such as debugging can reveal concrete runtime details, including the values of variables. However, they require that a developer explicitly requests these data for a specific execution moment. We present a simple approach, RuntimeSamp, which collects sample varia...
Article
Full-text available
Source code written in textual programming languages is typically edited in integrated development environments or specialized code editors. These tools often display various visual items, such as icons, color highlights or more advanced graphical overlays directly in the main editable source code view. We call such visualizations source code augme...
Article
Full-text available
Automated source code documentation approaches often describe methods in abstract terms, using the words contained in the static source code or code excerpts from repositories. In this paper, we describe DynamiDoc: a simple automated documentation generator based on dynamic analysis. Our representation-based approach traces the program being execut...
Article
Full-text available
In spite of its popularity, XML provides poor user experience and a lot of domain-specific languages can be improved by introducing custom, more humanfriendly notation. This paper presents an approach for design and development of the custom notation for existing XML-based language together with a translator between the new notation and XML. The ap...
Article
Pure embedding as an implementation strategy of domain-specific languages (DSLs) benefits from low implementation costs. On the other hand, it introduces undesired syntactic noise that impedes involvement of non-programming domain experts. Due to this, pure embedded DSLs are generally not intended for, nor used by, non-programmers. In this work, we...
Conference Paper
Researchers, students and practitioners often encounter a situation when the build process of a third-party software system fails. In this paper, we aim to confirm this observation present mainly as anecdotal evidence so far. Using a virtual environment simulating a programmer's one, we try to fully automatically build target archives from the sour...
Article
A concern can be characterized as a developer's intent behind a piece of code, often not explicitly captured in it. We discuss a technique of recording concerns using source code annotations (concern annotations). Using two studies and two controlled experiments, we seek to answer the following 3 research questions: (1) Do programmers' mental model...
Article
Full-text available
Model-driven software development is surrounded by numerous myths and misunderstandings that hamper its adoption. For long, our students were victims of these myths and considered MDSD impractical and only applied in academy. In this paper we discuss these myths and present our experience with devising an MDSD course that challenges them and motiva...
Article
Program comprehension deals with an important problem of recreating mental model of the software system from the source code. This process is needed every time a new programmer joins the development team, or the old one forgets about the code. We designed the four-layered model of the developer's mental model that provides a deeper understanding of...
Article
Tools that support development of parsers often concentrate on concrete syntax, leaving abstract syntax defined only implicitly. On the other hand there are projectional language workbenches that give central role to language model (abstract syntax) at the cost of locking a language to the concrete tool. In this paper we present YAJCo parser genera...
Article
As program comprehension is a vast research area, it is necessary to get an overview of its rising and falling trends. We performed an n-gram frequency analysis on titles, abstracts and keywords of 1885 articles about program comprehension from the years 2000-2014. According to this analysis, the most rising trends are feature location and open sou...
Conference Paper
Full-text available
Implementation of domain-specific languages (DSLs) is supported by powerful tools that can automatically generate various artifacts from the language specification. Domain analysis and design of a language, however, are usually done manually. Automatic extraction of domain information can be used to generate preliminary version of the language spec...
Article
Full-text available
Software is not only difficult to create, but it is also difficult to understand. Even the authors themselves in a relatively short time become unable to readily interpret their own code and to explain what intent they have followed by it. Software is being created with the goal to satisfy the needs of a customer or directly of the end users. Out o...
Article
Full-text available
Domain-specific languages (DSLs) are becoming more and more popular. However, the number of DSLs is still small when comparing to the number of existing applications. The results of our previous research showed that it is possible to speed up the DSL development process by aiding the first development phases (design and implementation). More specif...
Article
Full-text available
Problem Reoccurring software documentation fragments called documentation phrases crosscut documentation body and introduce undesired redundancy. The redundancy imposes problems with software documentation development and evolution. Objective We want to reduce the negative effect caused by documentation phrases redundancy by centralizing the docume...
Article
Full-text available
Model-driven software development is surrounded by numerous myths and misunderstandings that hamper its adoption. We have designed our course of model-driven development approach with the goal to introduce it from the viewpoint of a programmer as a pragmatic tool for solving concrete problems in development process. The course covers several techni...
Article
Full-text available
Since the beginning of teaching object-oriented programming at universities in the mid 90’s, university teachers are trying to come up with more effective ways of teaching. Number of researches has been made in this area. They are trying to identify errors teachers are making in learning process. These researches suggest different teaching methodol...
Article
Full-text available
Currently, the most commonly created formal languages are configuration languages. So far source code annotations and XML are the leading notations for configuration languages. In this paper, we analyse the correspondence between these two formats. We show that there are typical XML to annotations mapping solutions (mapping patterns) that indicate...
Article
Full-text available
Popularity of domain-specific languages brings the problem of language components reuse. It should be possible to use parts of different languages in development of new one to lower costs and also allow incremental development. This problem could be solved using the composition of languages. In this paper we discuss the view of language composition...
Article
Full-text available
The term 'usability' is generally used today to identify the degree of a user interface1, application or a device to which it satisfies the user during usage. It is often referred to as "user friendliness" or "software ergonomics". In this paper we argue that usability is formed by two inseparable parts. The first is the ergonomic usability, the se...
Article
In this paper we briefly introduce our concern-oriented source code projections that enable looking at same source code in multiple different ways. The objective of this paper is to discuss projection creation process in detail and to explain benefits of using projections to aid program comprehension. We achieve this objective by showing a case stu...
Chapter
In general, designing a domain-specific language (DSL) is a complicated process, requiring the cooperation of experts from both application domain and computer language development areas. One of the problems that may occur is a communication gap between a domain expert and a language engineer. Since domain experts are usually non-technical people,...
Article
Full-text available
Domain-specific languages are computer (programming, modeling, specification) languages devoted to solving problems in a specific domain. The least examined DSL development phases are analysis and design. Various formal methodologies exist, however domain analysis is still done informally most of the time. There are also methodologies of deriving D...
Article
Configuration languages based on XML and source code annotations are very popular in the industry. There are situations in which there are reasons to move configuration languages from one format to the other, or to support multiple configuration languages. In such cases mappings between languages based on these formats have to be defined. Mapping c...
Article
Full-text available
Software engineers have long recognized the need to shift focus from developing systems to developing system families. One way to develop software family is to develop configurable systems. A configuration (initial settings of a program), written in application-specific language, can be expressed using many different formats, such as XML, YAML, att...
Article
Full-text available
A graphical user interface (GUI, UI) is an important part of an application, with which users interact directly. It should be implemented in the best way with respect to understandability. If a user does not understand the terms in the UI, he or she cannot work with it; then the whole system is worthless. In order to serve well the UI should contai...
Article
Full-text available
This paper presents a parser for OWL DL. OWL DL, a sub-language of OWL, allows efficient reasoning with computability assurance. The OWL parser, named OntoP, has been developed specifically for the requirements of a larger framework: Ontology2DSL. Ontology2DSL enables the semi-automated construction of a formal grammar, as well as programs incorpor...
Article
In general, designing a domain-specific language (DSL) is a complicated process, requiring the cooperation of experts from both application domain and computer language development areas. One of the problems that may occur is a communication gap between a domain expert and a language engineer. Since domain experts are usually non-technical people,...
Article
Configuration is an important part of design of software systems. There are many different configuration formats, such as XML, YAML, attribute-oriented programming, etc., that allow system provider to design configuration language according to his requirements. Target group of system users is often very wide and one configuration language can not m...
Conference Paper
It often happens that computer-generated documents originally intended for human recipient need to be processed in an automated manner. The problem occurs if analyzer does not exist and therefore must be created ad hoc. To avoid the repetitive manual implementation of parsers for different formats of processed documents, we propose a method for spe...
Article
Full-text available
The paper presents innovative parser construction method and parser generator prototype which generates a computer language parser directly from a set of annotated classes in contrast to standard parser generators which specify concrete syntax of a computer language using BNF notation. A language with textual concrete syntax is defined upon the abs...
Article
The paper presents an approach for defining a computer language driven by a language's abstract syntax. The whole process of language specification including abstract syntax, concrete syntax and semantics definition is explained. Particular emphasis is put on language semantics definition and two approaches are introduced in detail -- via annotatio...
Article
The notion of change as a first-class entity in the language is the idea of software language engineering. Multiple metalevel concept is an essential demand for a systematic language approach, to build up adaptable software systems dynamically, i.e. to evolve them. A feedback reflection loop from data to code through metalevel data is the basic imp...
Article
This paper briefly describes process functional language compiler architecture. Process functional language is an experimental functional language with imperative features like memory cell variables. The main parts of the process functional language compiler are presented with short description and examples. Current implementation of PFL compiler c...
Article
Full-text available
From the viewpoint of adaptability, we classify software systems as being nonreflexive, introspective and adaptive. Introducing a simple example of LL(1) languages for expressions, we present its nonreflexive and adaptive implementation using Haskell functional language. Multiple metalevel concepts are an essential demand for a systematic language...
Article
This paper deals with basic principles of metaprogramming and reflection with connection to aspect-oriented programming (AOP). Metaprogramming is about writing programs that represents and manipulate other programs or themselves, i.e. metaprograms are programs about programs. The impact of metaprogramming is obvious in traditional development proce...
Article
From the viewpoint of adaptability, we classify software sys-tems as being nonreflexive, introspective and adaptive. Introducing a simple example of LL(1) languages for expressions, we present its nonre-flexive and adaptive implementation using Haskell functional language. Multiple metalevel concept is an essential demand for a systematic lan-guage...
Article
The state of a system is expressed using PFL, a process functional language, in an easily understandable manner. The paper presents PFL environment variable - our basic concept for the state manipulation in the process functional language. Then we introduce the style in which stateful systems are described using monads and state transformers in pur...
Article
A multiparadigm language provides an opportunity, to a user for exploiting more programming methodologies. It simplifies the language syntax, and extends the application areas by the extended semantics. That is why multiparadigm languages can align a problem in wider application areas and more flexibly than that based on a single paradigm. The pape...
Article
A process functional paradigm prevents the use of assignments in pro-grams, at the same time providing full power of both functional and imperative languages to a programmer. PFL – an experimental process functional language, originally developed as a programming language, seems to be promising to integrate the implementation requirements for any l...
Article
This paper points out the problem of tangling of implicit knowledge about the domain with the core functionality in software applications. The presented framework called Jessine enables separating of rule-based knowledge and object-oriented functionality in order to facilitate independent evolution and development. An application programming interf...
Article
The paper highlights the importance of separating the application domain logic code and user interface code. The presented framework called Object Form Bridge (OFB) is one of many possible solutions, which binds domain objects with user interface forms. Binding between domain objects and forms is defined in OFB configuration files outside an applic...
Article
The paper presents open source Bibliography Registration System developed and implemented in Department of Computer Science and Informatics at Technical University at Košice. The system is designed with correspondence to specific requirements of department which comprises creation of bibliography reports according to different selection criteria, e...
Article
An execution profiling attempts to provide feedback by reporting to the programmer information about inefficiencies within the program. Instead of writing whole code highly optimized, the programmer can initially write simple, maintainable code without much concern for efficiency. Profiling is an effective tool for finding hot spots in a program or...
Article
The state of a system is expressed using PFL – a process functional language in an easily understandable manner. Coming out from monad and state transformers theory we define our concept of PFL variable environment. Then we introduce the style in which stateful systems are described using monads in pure lazy functional language Haskell. Finally, we...
Article
Except the function of a computation, the resource utilization is an important characteristic of systems, which may affect the function. Based on simplified version of PFL – a core process functional language, which is powerful enough to express any imperative program, we propose the method for static evaluation of resources substantial for profili...

Citations

... In our previous work [15], we had already analyzed the correlation between the occurrence of the word "test" in names and contents of files and the number of actual test cases in selected GitHub projects. We were using manual identification of test cases, so we needed to limit the number of projects. ...
... Usability is contingent on the absence of usability issues. The main concern of users is the usability of the software and the consequences of utilizing it without the knowledge of the systems core components, it is working, or its production [14]. While developing software, the needs of the users must be considered and given careful consideration. ...
... This research article is an extended version of a paper published in 2019 IEEE 15th International Scientific Conference on Informatics [8] and extended with other NLP approaches on the same dataset. In Section 2 we briefly describe usage basics of selected NLP models to process natural text without mathematical details, since they are not important to the problem this paper deals with. ...
... Steganography is constantly seeking new possibilities how to hide information in those innovative kinds of computer related stegomedia and tries to find computer specific algorithms of data hiding. To name only a few examples, with the rise of computers possibility of the use of secondary storage systems, their changeable media and file systems were examined for the possibility to hide information based on the hardware and software features [8][9] [10]. Another way how to hide information which is connected to the use of computers is the possibility to hide information into pictures stored in JPEG file format [11] [12]. ...
... While our approach raises the level of abstraction during the mapping specification, adding specific examples of input sentences matching the given method could help the programmer. Visual augmentation of a source code editor [21] would be a suitable approach to display these examples alongside the source code. ...
... Recently, a few tools resulting from joint eforts with companies have been proposed to assess mobile applications automatically [41,153]. Firstly, Madeja et al. [153,154] reported on a testing environment for Android applications based on three types of tests: unit, integration, and user interface tests. Later, Bruzual et al. [41] presented a system for automated assessment of Android exercises with cloud-native technologies, which leverages on a mobile app testing framework largely used in the industry instead of custom testing libraries. ...
... Although it does not express all necessary details, such terseness can be useful in situations when space is constrained. This includes visual source code augmentation [18], such as our recent approach for displaying sample variable values directly at the end of each line in a source code editor [19]. It can also help a developer to improve orientation and navigation when a lot of objects are presented at the same time -which is a purpose of the icon indeed. ...
... Third, to under- stand the details of a particular method, the developers can read the source code of the method definition. To alleviate this, many tools try to visually augment the source code directly in the editor to provide additional information in-place [5]. This work was supported by project KEGA 047TUKE-4/2016 Integrating software processes into the teaching of programming. ...
... Panichella et al. [13] execute source code by automatically generating unit tests. However, it does not provide all the concrete variable values [23]. Sulir et al. [18] show a sample value of the variable being read or written in the line during normal executions of a program by a developer. ...
... These elements will be discussed in further research. Changes in the syntax often require modification of semantic rules (similar in [5]). Here, the configuration in natural semantics shall be extended. ...