The majority of modern programming languages provide concurrency and object-orientation in some form. However, object-oriented concurrency remains cumbersome in many situations. We introduce the language OrcO, Orc wit...
详细信息
Systems that integrate constraint solving with general purpose programming languages must strike a balance between exposing the full power of solvers and how aware programmers need to be of the solving process to writ...
详细信息
Constraints that have to hold for all models of a modeling language are often specified as invariants using the object Constraint Language (OCL). If violations of such invariants shall be documented or resolved in a s...
详细信息
ISBN:
(纸本)9783885796480
Constraints that have to hold for all models of a modeling language are often specified as invariants using the object Constraint Language (OCL). If violations of such invariants shall be documented or resolved in a software system, the exact model elements that violate these conditions have to be computed. OCL validation engines provide, however, only a single context element at which a check for a violated invariant ***, the computation of elements that caused an invariant violation is often specified in addition to the invariant declaration with redundant information. These redundancies can make it hard to develop and maintain systems that document or resolve invariant violations. In this paper, we present an automated approach and tool for declaring and binding parameters of invariants to violating elements based on boolean invariant expressions that are similar to OCL invariants. The tool computes a transformed invariant that returns violating elements for each iterator variable of the invariant expression that matches an explicitly declared invariant parameter. The approach can be used for OCL invariants and all models of languages conforming to the Meta-object Facility (MOF) standard. We have evaluated our invariant language and transformation tool by transforming 88 invariants of the Unified Modeling Language (UML).
Distributed Pair programming (DPP) is widely known to promote collaboration and knowledge sharing among novice programmers, while it engages them in carrying out programming assignments. Moreover, DPP is a means of ex...
详细信息
Distributed Pair programming (DPP) is widely known to promote collaboration and knowledge sharing among novice programmers, while it engages them in carrying out programming assignments. Moreover, DPP is a means of experiencing agile software development techniques that are considered important in the software market. In this paper, we share some experiences on using the DPP system of SCEPPSys for carrying out assignments in an undergraduate object oriented programming (OOP) course. Specifically, we focus on the information recorded during problem solving and the statistics reported by the system and how this information can be utilized for monitoring both the course regarding the fulfillment of its goals and the programming habits and progress of students. Some proposals are made towards extending the possibilities of SCEPPSys for generating automatically more sophisticated reports that would support instructors in more successfully monitoring a course and students. The ultimate goal of such an enhanced monitoring is to improve students' software quality.
The K framework was successfully used for defining formal semantics for several practical languages, e.g. C, Java, Java Script, but no language with distributed concurrent objects was defined in K up to now. In this p...
详细信息
Debuggers are central tools in IDEs for inspecting and repairing software systems. However, they are often generic tools that operate at a low level of abstraction. Developers need to use simple breakpoint capabilitie...
详细信息
This paper describes the introduction of a feedback-revisionresubmission cycle for homework assignments in two introductory courses. The goal was to increase student engagement with homework assignments as an importan...
详细信息
Design by Contract (DbC) is a software engineering paradigm that aims to reduce the amount of source code in a computer program by avoiding redundant parameter checking. It is based on strict interface specifications,...
详细信息
This paper presents implementation and optimization techniques to support objects in Ikra, an array-based parallel extension to Ruby with dynamic compilation. The high-level goal of Ikra is to allow developers to expl...
详细信息
ISBN:
(纸本)9781450343848
This paper presents implementation and optimization techniques to support objects in Ikra, an array-based parallel extension to Ruby with dynamic compilation. The high-level goal of Ikra is to allow developers to exploit GPU-based high-performance computing without paying much attention to intricate details of the underlying GPU infrastructure and CUDA. Ikra supports dynamically-typed object-orientedprogramming in Ruby and performs a number of optimizations. It supports parallel operations (e.g., map, each) on arrays of polymorphic objects, allowing polymorphic method calls inside a kernel by compiling them to conditional branches. To reduce branch divergence, Ikra shuffles thread assignments to base array elements based on runtime types of elements. To facilitate memory coalescing, Ikra stores objects in a structure-of-arrays (SoA) representation (columnar object layout). To eliminate intermediate data in global memory, Ikra merges cascaded parallel sections into one kernel using symbolic execution. Copyright is held by the owner/author(s). Publication rights licensed to ACM.
Whole-program optimizations are powerful tools that can dramatically improve performance, size and other aspects of programs. Because they depend on global knowledge, they must typically be reapplied to the whole prog...
详细信息
暂无评论