9 research outputs found
Improving program comprehension tools for domain specific languages
Dissertação de Mestrado em InformáticaSince the dawn of times, curiosity and necessity to improve the quality of their
life, led humans to find means to understand everything surrounding them, aiming
at improving it. Whereas the creating abilities of some was growing, the capacity
to comprehend of others follow their steps. Disassembling physical objects to comprehend
the connections between the pieces in order to understand how they work
together is a common human behavior. With the computers arrival, humans felt
the necessity of applying the same techniques (disassemble to comprehend) to their
programs.
Traditionally, these programs are written resorting to general-purpose programming
languages. Hence, techniques and artifacts, used to aid on program comprehension,
were built to facilitate the work of software programmers on maintaining
and improving programs that were developed by others. Generally, these generic
languages deal with concepts at a level that the human brain can hardly understand.
So understanding programs written in this languages is an hard task, because the
distance between the concepts at the program level and the concepts at the problem
level is too big.
Thus, as in politics, justice, medicine, etc. groups of words are regularly used
facilitating the comprehension between people, also in programming, languages that
address a specific domain were created. These programming languages raise the
abstraction of the program domain, shortening the gap to the concepts of the problem
domain.
Tools and techniques for program comprehension commonly address the program
domain and they took little advantage of the problem domain. In this master’s thesis,
the hypothesis that it is easier to comprehend a program when the underlying problem
and program domains are known and a bridge between them is established, is
assumed. Then, a program comprehension technique for domain specific languages,
is conceived, proposed and discussed. The main objective is to take advantage from
the large knowledge about the problem domain inherent to the domain specific language,
and to improve traditional program comprehension tools that only dealt, until
then, with the program domain. This will create connections between both program
and problem domains. The final result will show, visually, what happens internally
at the program domain level, synchronized with what happens externally, at problem
level.Desde o inÃcio dos tempos a curiosidade e a necessidade de melhorar a qualidade
de vida impeliram o humano a arranjar meios para compreender o que o rodeia
com o objectivo de melhorar. À medida que a habilidade de uns foi aumentando, a
capacidade de compreensão de outros seguiu-lhe os passos. Desmontar algo fÃsico de
modo a compreender as ligações entre as peças e assim perceber como funcionam num
todo, é um acto bastante normal dos humanos. Com o advento dos computadores
e os programas para ele codificados, o homem sentiu a necessidade de aplicar as
mesmas técnicas (desmontar para compreender) ao código desses programas.
Tradicionalmente, a codificação de tais programas é feita usando linguagens
genéricas de programação. Desde logo técnicas e artefactos que ajudam na compreensão
desses programas (nessas linguagens) foram produzidas para auxiliar o
trabalho de engenheiros de software que necessitam de manter ou alterar programas
previamente construÃdos por outros. De um modo geral estas linguagens mais
genéricas lidam com conceitos a um nÃvel bastante abaixo daquele que o cérebro humano,
facilmente, consegue captar. Previsivelmente, compreender programas neste
tipo de linguagens é uma tarefa complexa pois a distância entre os conceitos ao nÃvel
do programa e os conceitos ao nÃvel do problema (que o programa aborda) é bastante
grande.
Deste modo, tal como no dia-a-dia foram surgindo nichos como a polÃtica, a
justiça, a informática, etc. onde grupos de palavras são usadas com maior regularidade
para facilitar a compreensão entre as pessoas, também na programação foram
surgindo linguagens que focam em domÃnios especÃficos, aumentando a abstracção em
relação ao nÃvel do programa, aproximando este do nÃvel dos conceitos subjacentes
ao problema.
Ferramentas e técnicas de compreensão de programas abordam, geralmente, o
domÃnio do programa, tirando pouco partido do domÃnio do problema. Na presente
tese assume-se a hipótese de que será mais fácil compreender um programa quando
os domÃnios do problema e do programa são conhecidos, e entre eles é estabelecida
uma ponte de ligação; e parte-se em busca de uma técnica de compreensão de
programas para linguagens de domÃnio especÃfico, baseada em técnicas já conhecidas
para linguagens de carácter geral. O objectivo prende-se com aproveitar o conhecimento
sobre o domÃnio do problema e melhorar as ferramentas de compreensão de
programas existentes para as linguagens genéricas, de forma a estabelecer ligações
entre domÃnio do programa e domÃnio do problema. O resultado será mostrar, visualmente,
o que acontece internamente ao nÃvel do programa, sincronizadamente
com o que acontece externamente ao nÃvel do problema
Formal verification of an OCCAM-to-FPGA compiler and its generated logic circuits
EThOS - Electronic Theses Online ServiceGBUnited Kingdo
Conversational code-switching among Japanese-English bilinguals who have Japanese background
The aim of this study is to investigate the code-switching of native speakers of Japanese in an English-speaking context. The languages involved in code-switching therefore are English and Japanese. This is an instance of communication in the participants\u27 first language, in a setting where the speakers\u27 second language is dominant. The research focused on a sample of twelve Japanese people. These participants were born in Japan, and their parents\u27 native language is Japanese. Even though the length of time each has spent in residence in an English-speaking country varies, the minimum is two years. Further, all have previously studied English, for at least six years, during the high school period in Japan, and are regular users of English. These participants were separated into six pairs of two age groups. The first was 20-30 years, the second was 40-60 years. Their informal conversation was recorded and transcribed for analysis. Moreover, a sociolinguistic interview was carried out in order to uncover the participants\u27 intentions or strategies, (based primarily on their own interpretations), with regard to code-switching. Despite a large number of loan words in the Japanese language (most deriving from English), and the prestigious status which the English language holds, Japanese people within Japanese society, tend to hold a negative attitude towards code-switching in conversational circumstances. In this study, however, code-switching was found to be a significant choice in the speakers\u27 linguistic repertoire (in the English-speaking context) for informal interactions with their friends. Although there was some degree of constraints on the speakers\u27 linguistic choices, primarily attributable to a particular topic and attitudes towards code-switching, the speakers demonstrated their ability to make a linguistic choice according to their intentions/strategies. Moreover, this study attempted to expose the linguistic features of English/Japanese code-switching. The type of code-switching which was most frequently used amongst the participants was intrasentential code-switching (which occurs within the same sentence). Specifically, singly occurring intrasentential code-switching was the most common amongst the speakers. It was found that the Japanese language played a dominant role in producing this type of code-switching. On the other hand, well-formed English phrases were also produced in intrasentential code-switching when there is a semantic/ pragmatic mismatch between the two languages
Designing Trustworthy Autonomous Systems
The design of autonomous systems is challenging and ensuring their trustworthiness can have different meanings, such as i) ensuring consistency and completeness of the requirements by a correct elicitation and formalization process; ii) ensuring that requirements are correctly mapped to system implementations so that any system behaviors never violate its requirements; iii) maximizing the reuse of available components and subsystems in order to cope with the design complexity; and iv) ensuring correct coordination of the system with its environment.Several techniques have been proposed over the years to cope with specific problems. However, a holistic design framework that, leveraging on existing tools and methodologies, practically helps the analysis and design of autonomous systems is still missing. This thesis explores the problem of building trustworthy autonomous systems from different angles. We have analyzed how current approaches of formal verification can provide assurances: 1) to the requirement corpora itself by formalizing requirements with assume/guarantee contracts to detect incompleteness and conflicts; 2) to the reward function used to then train the system so that the requirements do not get misinterpreted; 3) to the execution of the system by run-time monitoring and enforcing certain invariants; 4) to the coordination of the system with other external entities in a system of system scenario and 5) to system behaviors by automatically synthesize a policy which is correct
Theories for Session-based Governance for Large-scale Distributed Systems
PhDLarge-scale distributed systems and distributed computing are the pillars
of IT infrastructure and society nowadays. Robust theoretical principles for
designing, building, managing and understanding the interactive behaviours
of such systems need to be explored. A promising approach for establishing
such principles is to view the session as the key unit for design, execution
and verification.
Governance is a general term for verifying whether activities meet the specified
requirements and for enforcing safe behaviours among processes. This
thesis, based on the asynchronous -calculus and the theory of session types,
provides a monitoring framework and a theory for validating specifications,
verifying mutual behaviours during runtime, and taking actions when noncompliant
behaviours are detected. We explore properties and principles
for governing large-scale distributed systems, in which autonomous and heterogeneous
system components interact with each other in the network to
accomplish application goals.
This thesis, incorporating lessons from my participation in a substantial
practical project, the Ocean Observatories Initiative (OOI), proposes an
asynchronous monitoring framework and the process calculus for dynamically
governing the asynchronous interactions among distributed multiple
applications. We prove that this monitoring model guarantees the satisfaction
of global assertions, and state and prove theorems of local and global
safety, transparency, and session fidelity. We also study and introduce the
semantic mechanisms for runtime session-based governance and the principles
of validation of stateful specifications through capturing the runtime
asynchronous interactions.EPSRC grants EP/G015481/1; Queen Mary University of Londo
Algebraically modelling object-orientated programs.
We explore the process of building algebraic models of the behaviour of Java classes. A fundamental building block of object-oriented programs is the class that can typically contain multiple fields, constructors, and methods. In Java a programmer can control access to the various methods, fields and constructors of a class. We will be formally specifying and documenting a class' public behaviour algebraically. In practice even a simple Java class can have complex behaviour. A full algebraic specification (FAS) of a class can be complicated and hard to understand for someone who wishes to quickly ascertain the behaviour of a class. This complexity is largely as a result of machinery needed to define class behaviours that are implicit, that is behaviour that is considered part of Java's general language behaviour and defines the general structure of classes, methods, fields and constructors. However, it is unreasonable to expect a programmer to write such full specifications. Therefore we introduce the concept of an Algebraic Class Specification (ACS) that provides a much reduced version of the FAS of a class. The ACS is therefore more readable and is aimed at showing what we consider to be key information in the specification of a class that cannot be programmatically inferred from the language definition. Using the ACS we present a methodology for generating an FAS thus reducing the complexity of specification for the user. We will show that the ACS provides a reader with a clear formal understanding of a class' behaviour using a minimum of information. The ACS is designed to be human readable yet still machine readable. We will show that in order to aid users in creating specifications of classes we have mimicked the Java syntax closely in the specification syntax. We will, in addition, present a methodology for embedding the formal semantic description for a Java class within javadoc comments thus allowing Java API documentation to contain both a formal specification of the behaviour of a class and its components and an informal general textual description. These techniques have been developed by the analysis of case studies. We will demonstrate all of these techniques applied to a wide and varied range of both invented and existing examples of Java classes
Recommended from our members
An insight into the evolution of mutual understanding in teamwork - Volume 2
The topic of this research is characterising and monitoring mutual understanding in multidisciplinary teamwork. Existing literature has not drawn these two themes together in great detail. This research brings together literature from these two themes. This thesis explores the nature of mutual understanding in teams, monitors its evolution in one multidisciplinary team and proposes a set of guidelines for enhancing and promoting mutual understanding in teams that communicate face-to-face and by electronic-mail (e-mail).
The term ‘mutual understanding’ although commonly referred to in literature, remains a term which is not well defined. For this reason a more precise definition is necessary to identity and establish what this term actually means. In addition, the theoretical work on mutual understanding, and aspects related to mutual understanding are often limited to dyadic interactions, involving just two persons. As teams can be more than two persons more attention needs to be paid to extend existing research. Further, the process of how mutual understanding can be monitored has not been well defined, and attempts which have been made also focus on dyadic interactions. This identifies and establishes the need to characterise a method to monitor the evolution of mutual understanding in a team.
In the context of teamwork, understanding and supporting team members and their tasks is necessary to work towards shared goals and objectives. Sharing information is also important and can contribute towards the progress that the team makes. Including team members who have first-hand experiences to share can also benefit the make-up of the team. However, sometimes changes need to be made to accommodate team members’ individual needs, especially when the team member in question has a disability. Additional challenges can also be encountered when the team in question is multidisciplinary due to differences in disciplinary backgrounds, practices, professional languages, understanding, cultures (disciplinary, institutional, and cultural), and assumptions in communication. Such challenges can make it harder for mutual understanding to evolve in this type of team.
This thesis presents a definition for mutual understanding that can be applied to a team and a method to monitor the evolution of mutual understanding. Detailed empirical analysis of a case study looking at how mutual understanding evolves in a large multidisciplinary team that communicates as a group face- to-face once every 3- months and uses e-mail messages to stay in touch with the team at all other times is also presented. Furthermore the analysis identifies how categories or aspects of mutual understanding appear over time. This analysis can provide an insight to developers and designers in computer supported cooperative work (CSCW) to show them in detail, how a team communicates together face-to-face and by e-mail, but in the context of mutual understanding. Also based on the empirical analysis, guidelines are proposed to promote the evolution of mutual understanding in other types of teamwork. Guidelines are aimed at team members and not just the manager or leader and focus on the two forms of interactions which are the focus of this investigation, face-to-face and e-mail communication. To assess the value of the proposed guidelines a validation exercise using a separate multidisciplinary team was performed