Papers by Zoltán Porkoláb
Software: Practice and Experience
There is a strong prejudice against the friendship access control mechanism in C++. People claim ... more There is a strong prejudice against the friendship access control mechanism in C++. People claim that friendship breaks the encapsulation, reflects bad design, and creates too strong coupling. However, friends appear even in the most carefully designed systems, and if it is used judiciously (like using the attorney‐client idiom), they may be better choice than widening the public interface of the class.
YOUNG …, 2000
Creating a generic, object− oriented, component− based, transactional business system, which cove... more Creating a generic, object− oriented, component− based, transactional business system, which covers the whole lifecycle, is possible only with integration of commercial tools, component technologies, recently developed class libraries and using code generators. ...
Complexity metrics play an important role in software development; they are reducing the costs du... more Complexity metrics play an important role in software development; they are reducing the costs during almost the whole development process. There is a growing demand for measuring the complexity of large systems with keeping the consistency of the results regardless of the diversity of the programming languages. In this article we present a general software measurement process on .NET basis
Lecture Notes in Computer Science, 2004
To ensure the correctness of template based constructions in C++, constraints on template paramet... more To ensure the correctness of template based constructions in C++, constraints on template parameters are especially useful. Unlike other languages (Ada, Eiffel, etc.), C++ does not directly support checking requirements on template parameters (ie, concept checking). ...
Ontology-Driven Software Engineering on - ODiSE'10, 2010
Semantic User Interfaces (SUI) are interrelated sets of static, user editable, domain specific do... more Semantic User Interfaces (SUI) are interrelated sets of static, user editable, domain specific documents having layout and content with meaning defined through semantic decoration. SUIs follow a service oriented approach, where elements of static SUI documents are mapped through domain ontologies to predefined service provider components. SUIs are fully declarative in nature, and they associate event-and data sources with pieces of application logic through semantic binding based on domain ontologies. This assures semantic separation of user interface components from elements of the underlying system infrastructure. This article introduces the architecture and components of a SUI framework, presents basic elements of SUI documents and outlines relevant properties of domain ontologies for semantic user interfaces.
Studia Universitatis Babes-Bolyai …, 2008
... Springer Verlag, New York, 1989. Page 14. 14. Brian McNamara, Yannis Smaragdakis: Static inte... more ... Springer Verlag, New York, 1989. Page 14. 14. Brian McNamara, Yannis Smaragdakis: Static interfaces in C++. In First C++ Template Programming Workshop, October 2000, Erfurt. 15. ... 295-308. 24. Brian McNamara, Yannis Smaragdakis: Functional programming in C++. ...
Electronic Notes in Theoretical Computer Science, 2009
Concept is a new and powerful language element being introduced in the next C++ standard. With th... more Concept is a new and powerful language element being introduced in the next C++ standard. With the help of concepts we can define the properties a template requires from its type arguments. If a type does not fulfill the requirements syntactically, but semantically, the connection must be declared with the use of a concept map. Often the description of the semantic matching results in long codes that need to be modularized. In this paper we present an extension to the concept map language constructs that enables this transformation. We introduce the well-known public, protected, private class arrangement scheme into concept maps. We present our preprocessor, that transforms the modularized code into regular code to be compiled by ConceptGCC, the experimental Concept C++ compiler.
Software projects often fail regardless of the technological changes in recent years. One of the ... more Software projects often fail regardless of the technological changes in recent years. One of the primary reasons is the intuitive assessment of project size, effort, costs and duration. Project size is an independent value where effort, costs and duration are derived values directly related to project size. For size estimates, several methodological approaches are available and in use today. However the Function Point Analysis (FPA) method tends to be predominant in practice as well as in research. In this paper, the use of the FPA method for a project developed in the .NET environment is briefly discussed and linked with source code metrics in order to improve size estimates and get more information related to derived values such as effort, costs and duration.
keywords: UML, code generation, component, metadata, aspect-oriented programming Creating a gener... more keywords: UML, code generation, component, metadata, aspect-oriented programming Creating a generic, object-oriented, component-based, transactional business system, which covers the whole lifecycle, is possible only with the integration of commercial tools, component technologies, newly developed class libraries and,by using code generators. Most of the recently used tools for development,techniques,are focusing,on only one of the layers of the model,from the code
The Standard Template Library (STL) is an essential part of professional C++ programs. STL is a t... more The Standard Template Library (STL) is an essential part of professional C++ programs. STL is a type-safe template library which is based on the generic programming paradigm and helps to avoid some possible dangerous C++ constructions. With its usage, increases the efficiency, safety and quality of the code. However, the C++ standard gives the definition of STL by informal description that can lead to ambiguous explanations. In this paper we create a formal specification of STL. With these instruments we prove the soundness of STL implementations, libraries over the STL and programs that use STL. Our solution is based on the Hoare-method, that we extend to describe the claims of the generic programming paradigm.
Software size is the fundamental metric for project planning. Effort and duration are calculated ... more Software size is the fundamental metric for project planning. Effort and duration are calculated based on the size estimate. However, for a given software size, the actual development effort could be significantly different. The question is whether the increase in effort is due to the low productivity of the development team or higher product quality. While higher product quality is highly desirable and usually worth investing in, the reasons for additional effort might be elsewhere. In the research presented in this paper, the focus is on the correlation between code quality and productivity. Code quality is only one aspect of product quality. This paper presents a method for calculating a new type of project effort named "acknowledged effort". Acknowledged effort is calculated based on the actual effort and code quality. This new type of effort reflects not only the project's size and the productivity of the development team, but also the quality aspect of the delive...
Since McCabe’s cyclometric measure, structural complexity have been playing an important role mea... more Since McCabe’s cyclometric measure, structural complexity have been playing an important role measuring the complexity of programs. Complexity metrics are used to achieve more maintainable code with the least bugs possible. C++ Standard Template Library (STL) is the most popular library based on the generic programming paradigm. This paradigm allows implementation of algorithms and containers in an abstract way to ensure the configurability and collaboration of the abstract components. STL is widely used in industrial softwares because STL’s appropriate application decreases the complexity of the code significantly. Many new potential errors arise by the usage of the generic programming paradigm, including invalid iterators, notation of functors, etc. In this paper, we present many complexity inconsistencies in the application of STL that a precise metric must take into account, but the existing measures ignore the characteristics of STL.
One of the key questions in software development is software size estimation. For systematic soft... more One of the key questions in software development is software size estimation. For systematic software size estimation, different methods are used, all of which have their roots in the Function Point Analysis (FPA) method. However, the elements and constructs of the FPA method are not directly applicable to object-oriented concepts: a mapping of object-oriented concepts to FPA elements is required. There are proposals for such mappings, but a serious calibration and validation process is required to ensure that the various parameters have been chosen in the most appropriate way. Such a validation implies the creation of effective product metrics working in environments like the industrial standard .NET platform. Since .NET is a typical multi-language environment, a product metric capturing all languages and producing comparable and accumulable results is hard and expensive to produce. Therefore we propose to solve the problem in the .NET Common Interface Language level: thus only one...
Protocol (SIP) to establish, modify, and close sessions. The SIP messages are text based and they... more Protocol (SIP) to establish, modify, and close sessions. The SIP messages are text based and they have redundancy. Since in wireless environments the bandwidth is limited, we need to decrease traffic during communication. One solution is Signalling Compression (SigComp) which offers a robust, lossless compression of SIP messages in a standardized way. In this article we overview the possibilities to improve effeciency of SigComp. The standard defines the major functionality, but there are several cases where the implementator can make decisions. The compressor modul is the one where the standard give the most freedom to improve SigComp. We have chosen the LZSS algorithm and looked for a good match function. We examined the detailed possibilities and tuned different parameters regarding the restricted resources of a mobile phone environment. Our result: in com mon usage the general algorithms were better, but using in SIP environment our solution produced better efficiency.
Based on the improvements of the C# programming language towards functional programming support, ... more Based on the improvements of the C# programming language towards functional programming support, and motivated by the FC++ functional library for C++, we introduce the FC# functional library for C# . FC# itself is an internal Domain Specific Language (DSL) for C#, therefore solutions created using FC# can be embedded into native C#. FC# has a couple of useful features for programmers who like functional concepts or who write multi-paradigm programs. The most important features we support are lazy lis ts, basic list filtering and composition operations, high performance, extensibi lity, and easy integration with C#. To achieve it the following capabilities of the C# 3.0 language are exploited: enumerators, lambda expressions, type inference, cu rrying, and extension methods. Beside expressiveness and high level of usability, FC# has also an efficient implementation that we also show in the performance comparison charts. The latest version of FC# can be downloaded from the following U...
Since the notion of program slicing was introduced in the early 80's, the area has seen a con... more Since the notion of program slicing was introduced in the early 80's, the area has seen a continuous evolution. While the more recent approach of dynamic slicing gained significant interest, static slicing has also been widely studied. Original methods used dataflow analysis techniques, later different approaches using multi-graphs were formed. Although these improved algorithms offer the capability to slice real-world applications, their usability is still heavily confined by their resource intensive characteristics. In this paper an advanced caching algorithm intended to decrease average complexity of SDG-based static slicing is proposed. Caching different formal parameter set-ups of a procedure might imply significant speed growth since re-computing dependences between formal input and output parameters is avoidable.
Encapsulation is one of the most important features of object-oriented programming. Reducing the ... more Encapsulation is one of the most important features of object-oriented programming. Reducing the interface where software components can communicate with each other increases software quality, security and decreases development cost. Compile time or runtime visibility and access control checking that support encapsulation is the key part of modern languages and runtime environments. They enforce responsibility separation, implementation and security policies. Most modern programming languages like C++, C# and Java do not have sophisticated access control mechanisms only introduce a subset or combination of the following access modifiers: public, private, protected, internal, and friend while Eiffel defines sophisticated selective access control called selective export. In this paper first we describe the existing access control features of C++, C#, Java, Eiffel and other popular programming languages. After that we show an example where the current access control features of C# (and...
Template metaprogramming (TMP) is an emerging new di-rection in C++ programming for executing alg... more Template metaprogramming (TMP) is an emerging new di-rection in C++ programming for executing algorithms in compilation time. Despite all of its already proven benefits, and numerous successful applications, TMP is yet to become an accepted technique in industrial projects. One reason is the lack of professional software tools support-ing the development of template metaprograms. On the other hand, a strong analogue between traditional runtime programs and compile-time metaprograms presents the possibility for creating development tools similar to those already used when writing runtime programs. This pa-per presents two methods for metaprogram profiling. Firstly, Templight, a debugging and profiling framework is introduced. The framework re-veals the steps executed by the compiler during the compilation of C++ programs with templates. Thus Templight is capable of adding times-tamps to template instantiations, and measuring their times. The second method uses compiler modification a...
Uploads
Papers by Zoltán Porkoláb