704 research outputs found

    Benefits of Session Types for software Development

    Get PDF
    Session types are a formalism used to specify and check the correctness of communication based systems. Within their scope, they can guarantee the absence of communication errors such as deadlock, sending an unexpected message or failing to handle an incoming message. Introduced over two decades ago, they have developed into a significant theme in programming languages. In this paper we examine the beliefs that drive research into this area and make it popular. We look at the claims and motivation behind session types throughout the literature. We identify the hypotheses upon which session types have been designed and implemented, and attempt to clarify and formulate them in a more suitable manner for testing

    Panorama - a software maintenance tool

    Get PDF
    Much of the effort in software maintenance is spent on finding relevant information and on program comprehension. Of the several challenges encountered during this process, some are: a) inadequate documentation, b) the developer doing the maintenance activity may not be the one who actually developed it and may be unfamiliar with the application domain (in addition to the unfamiliar code), c) information overload, and d) the relevant code may be scattered across multiple files of different types making it harder to find. Existing documentation in the form of Javadoc is inadequate in providing a global view of the working of the software. Panorama, a java based Eclipse plug-in, was developed to facilitate maintenance activities by providing mechanisms to document and to view expert knowledge and relevant code in the form of a concern. Some features of Panorama are: a code tracing feature that allows the expert to quickly find (so he can document it) lines of code executed in carrying out a function, a concern management feature that allows the expert to create and organize concern information in a hierarchical manner, a concern visualization and context management feature that helps the maintainer to handle information overload by allowing him to switch between contexts, an enhanced user-interface that helps the maintainer to easily navigate between relevant contexts and codes. Panorama also provides a Javadoc -like documentation of cross-cutting concerns that supplement existing Javadoc documentation to provide comprehensive information about the software. In a case study done to validate the usefulness of our tool, Panorama was used to document the SAVER software (a VB.NET based fairly large GIS software with 26,704 executable lines of code that is being actively used by the Iowa Department of Transportation to analyze automobile crashes over a period of time). SAVER has been undergoing continual bug-fixes and enhancement activities - and preliminary studies indicate that the supplementary documentation provided by Panorama has proven beneficial

    DataHub: Science data management in support of interactive exploratory analysis

    Get PDF
    The DataHub addresses four areas of significant needs: scientific visualization and analysis; science data management; interactions in a distributed, heterogeneous environment; and knowledge-based assistance for these functions. The fundamental innovation embedded within the DataHub is the integration of three technologies, viz. knowledge-based expert systems, science visualization, and science data management. This integration is based on a concept called the DataHub. With the DataHub concept, science investigators are able to apply a more complete solution to all nodes of a distributed system. Both computational nodes and interactives nodes are able to effectively and efficiently use the data services (access, retrieval, update, etc), in a distributed, interdisciplinary information system in a uniform and standard way. This allows the science investigators to concentrate on their scientific endeavors, rather than to involve themselves in the intricate technical details of the systems and tools required to accomplish their work. Thus, science investigators need not be programmers. The emphasis on the definition and prototyping of system elements with sufficient detail to enable data analysis and interpretation leading to information. The DataHub includes all the required end-to-end components and interfaces to demonstrate the complete concept

    Infrastructure Plan for ASC Petascale Environments

    Full text link

    A Study of Learning Environment for Initiating Flutter App Development Using Docker

    Get PDF
    The Flutter framework with Dart programming allows developers to effortlessly build applications for both web and mobile from a single codebase. It enables efficient conversions to native codes for mobile apps and optimized JavaScript for web browsers. Since utilizing a wide range of widgets in Flutter ensures consistent experiences on various devices for users, it becomes crucial in programming education by providing a unified environment for learning app development while reducing the need for platform-specific knowledge. However, the setup of the Flutter environment is challenging for novice students due to its multiple steps, such as installing dependencies and configuring environments. To support independent learning for these students, it is essential to simplify the setup by providing user-friendly instructions and automated tools. In this paper, we present a Docker-based environment for Flutter app developments across Windows, Linux, and Mac through Visual Studio Code, ensuring a unified learning experience. This paper aims to simplify complex configurations and address the obstacles encountered by students when initiating Flutter projects. For the evaluation, we prepared three simple Flutter projects along with the setup environment in a Docker container. Then, we asked 24 Master's students at Okayama University, Japan, to install the environment and modify the source codes in the projects independently by following the given instructions. The results show that all the students successfully completed the assignments, which confirms the efficiency and validity of our proposal

    VizLab: The Design and Implementation of An Immersive Virtual Environment System Using Game Engine Technology and Open Source Software

    Get PDF
    Virtual Reality (VR) is a term used to describe computer-simulated environments that can immerse users in a real or unreal world. Immersive systems are an essential component when experiencing virtual environments. Developing VR applications is time-consuming, and developers use many resources in creating VR applications. The separate components require integration, and the challenges in using public domain open source software present complex software development. The VizLab Virtual Reality System was created to meet these challenges and provide an integrated suite of tools for VR system development. VizLab supports the development of VR applications by using game engine and CAVE system technology. The system consists of software modules that provide rendering, texturing, collision, physics, window/viewport management, cluster synchronization, input management, multi-processing, stereoscopic 3D, and networking. VizLab combines the main functional aspects of a game engine and CAVE system for an improved approach to developing VR applications, virtual environments, and immersive environments

    INTERACTIVE ONLINE DEBUGGER FOR INTRODUCTORY C++ PROGRAMMING COURSES

    Get PDF
    The development process for every high-level programming language is heavily dependent on integrated development environments (IDEs) or code editors, which allow software engineers to write code efficiently in terms of time consumption, clean code, and debugging. These tools are in demand for numerous reasons, including auto-completion, extensions, built-in artificial intelligence that memorizes code patterns, built-in debuggers, and readability. Almost all of the listed bullet points share one common objective, which is to alleviate the coding process for advanced users. However, during the learning process and acquisition of unknown information, priorities change. As a result, syntax and knowledge of the underlying processes of syntax take precedence over time efficiency and clean code. Moreover, the presence of those listed features can make the study process overwhelming and tedious for students, as they need to familiarize themselves with the concepts of IDEs, code editors, compilers, and debuggers before studying the programming language. It is worth mentioning that visualization is crucial in the debugging activity, since the survey conducted as a part of our research shows that 75 students out of 96 students prefer visualization during studying rather than plain text. We believe, visualization is particularly important when students start dealing with computer science concepts such as memory allocation, data structure behaviors when core methods are called, and finally, with algorithms. IDEs and code editors provide simple tables as visualizations in debugging procedures, which may not be intuitive at first glance. Another problem mentioned by professors is the distinction of hardware systems that students use. This distinction reveals the problem of installing components that work only for certain hardware systems. For instance, gdb is not suitable for new ARM circuits, whereas LLDB works properly. Meanwhile, for x86 GDB works correctly. In several courses of the School of Engineering and Digital Sciences, first-year students who take introductory courses related to high-level programming languages tend to use IDEs and code editors. Some of those courses are Engineering 101, CSCI 151, and CSCI 152. Students in those courses have faced similar problems as mentioned above. They spend time ineffectively downloading and installing components, instead of spending the same time learning actual programming. The objective of this thesis is to present a resolution for developing a comprehensive application, which allows for the visualization of the debugging process. To achieve this objective, the optimal technologies for the application will be assessed, comparing network protocols like HTTP and WebSocket, as well as examining statelessness and statefulness. The role of threads in this process will also be explored. For compiling and debugging, GCC and GDB were utilized respectively. Furthermore, the concept of a Process will be introduced to run the GCC/GDB process separately, and Input/Output streams will be explained. Finally, the thesis will explore parsing GDB responses and rendering them as a React component to provide an easily understandable visualization
    corecore