1,188 research outputs found
On the real world practice of Behaviour Driven Development
Surveys of industry practice over the last decade suggest that Behaviour Driven Development is a popular Agile practice. For example, 19% of respondents to the 14th State of Agile annual survey reported using BDD, placing it in the top 13 practices reported. As well as potential benefits, the adoption of BDD necessarily involves an additional cost of writing and maintaining Gherkin features and scenarios, and (if used for acceptance testing,) the associated step functions. Yet there is a lack of published literature exploring how BDD is used in practice and the challenges experienced by real world software development efforts. This gap is significant because without understanding current real world practice, it is hard to identify opportunities to address and mitigate challenges. In order to address this research gap concerning the challenges of using BDD, this thesis reports on a research project which explored: (a) the challenges of applying agile and undertaking requirements engineering in a real world context; (b) the challenges of applying BDD specifically and (c) the application of BDD in open-source projects to understand challenges in this different context.
For this purpose, we progressively conducted two case studies, two series of interviews, four iterations of action research, and an empirical study. The first case study was conducted in an avionics company to discover the challenges of using an agile process in a large scale safety critical project environment. Since requirements management was found to be one of the biggest challenges during the case study, we decided to investigate BDD because of its reputation for requirements management. The second case study was conducted in the company with an aim to discover the challenges of using BDD in real life. The case study was complemented with an empirical study of the practice of BDD in open source projects, taking a study sample from the GitHub open source collaboration site.
As a result of this Ph.D research, we were able to discover: (i) challenges of using an agile process in a large scale safety-critical organisation, (ii) current state of BDD in practice, (iii) technical limitations of Gherkin (i.e., the language for writing requirements in BDD), (iv) challenges of using BDD in a real project, (v) bad smells in the Gherkin specifications of open source projects on GitHub. We also presented a brief comparison between the theoretical description of BDD and BDD in practice. This research, therefore, presents the results of lessons learned from BDD in practice, and serves as a guide for software practitioners planning on using BDD in their projects
Impacto de las características personales de los programadores en la efectividad de Test-Driven-Development (TDD)
Contexto: El desarrollo dirigido por pruebas (Test Driven Development - TDD), es una estrategia de programación propuesta por Kent Beck (Beck,2002) como alternativa al desarrollo de software tradicional, ha sido una técnica ampliamente estudiada en la ingeniería de software experimental, especialmente con la realización de estudios que intentan demostrar su efectividad en términos de calidad del código y productividad de los programadores.
Objetivos: En este trabajo de tesis doctoral, se propone la realización de una familia de experimentos (Basili,1999), para determinar la influencia de factores personales en la Calidad externa y en la Productividad al aplicar TDD en comparación con el desarrollo iterativo con pruebas al final (ITLD).
Metodología: Se realizó una serie de 7 estudios experimentales en el ámbito académico e industrial, partiendo de un experimento tomado como base. Posteriormente los resultados fueron sintetizados mediante un meta- análisis tipo Individual Patient Data (IPD) con descomposición en subgrupos.
Resultados: Se obtuvieron diferentes resultados en cuanto a la influencia de los factores humanos sobre la Calidad externa y Productividad, dependiendo del tipo de reclutamiento de los participantes que fueron agrupados como voluntarios (volunteer), no voluntarios (conscripted) y aquellos que participaron de los experimentos como un curso de entrenamiento (Training course), o también agrupados como profesionales y estudiantes. la Calidad externa no produjo diferencias significativas al aplicar TDD, aunque en ciertos casos hubo mejoras al aplicar TDD con estudiantes que participaron como conscripted, pero en otros casos la calidad externa decreció cuando fueron estudiantes que participaron como voluntarios. Por otra parte, los desarrolladores que usaron TDD fueron más productivos que aquellos que usaron ITLD.
La experiencia en el uso de herramientas de prueba produjo resultados significativos para la Calidad externa y Productividad, aunque esto depende del tipo de reclutamiento y del carácter profesional o estudiante. Así mismo, la experiencia en Java incidió significativamente en la Calidad externa y el conocimiento del entorno Eclipse en la Productividad. La edad y el grado de completitud o cantidad de código entregado por los participantes al realizar las tareas experimentales fue un factor que influyó significativamente en la Productividad, independientemente de la técnica utilizada. Otro resultado obtenido es que conforme los participantes profesionales tienen mayor edad, su grado de completitud fue disminuyendo, aunque existió cierto interés por realizar un mejor trabajo al aplicar TDD.
Conclusiones: Creemos que uno de los principales aportes de nuestro estudio, que lo consideramos de carácter exploratorio, es haber comprobado cómo la motivación, en este caso determinada por el tipo de reclutamiento, incide en el interés de los sujetos sean profesionales o estudiantes al realizar las tareas experimentales y por tanto influye en su productividad. También observamos que la edad es otro factor humano que debe ser objeto de una mayor investigación en trabajos futuros.Facultad de Informátic
Developing IncidentUI -- A Ride Comfort and Disengagement Evaluation Application for Autonomous Vehicles
This report details the design, development, and implementation of
IncidentUI, an Android tablet application designed to measure user-experienced
ride comfort and record disengagement data for autonomous vehicles (AV) during
test drives. The goal of our project was to develop an Android application to
run on a peripheral tablet and communicate with the Drive Pegasus AGX, the AI
Computing Platform for Nvidia's AV Level 2 Autonomy Solution Architecture [1],
to detect AV disengagements and report ride comfort. We designed and developed
an Android XML-based intuitive user interface for IncidentUI. The development
of IncidentUI required a redesign of the system architecture by redeveloping
the system communications protocol in Java and implementing the Protocol
Buffers (Protobufs) in Java using the existing system Protobuf definitions. The
final iteration of IncidentUI yielded the desired functionality while testing
on an AV test drive. We also received positive feedback from Nvidia's AV
Platform Team during our final IncidentUI demonstration.Comment: Previously embargoed by Nvidia. Nvidia owns the right
Synergi: A Mixed-Initiative System for Scholarly Synthesis and Sensemaking
Efficiently reviewing scholarly literature and synthesizing prior art are
crucial for scientific progress. Yet, the growing scale of publications and the
burden of knowledge make synthesis of research threads more challenging than
ever. While significant research has been devoted to helping scholars interact
with individual papers, building research threads scattered across multiple
papers remains a challenge. Most top-down synthesis (and LLMs) make it
difficult to personalize and iterate on the output, while bottom-up synthesis
is costly in time and effort. Here, we explore a new design space of
mixed-initiative workflows. In doing so we develop a novel computational
pipeline, Synergi, that ties together user input of relevant seed threads with
citation graphs and LLMs, to expand and structure them, respectively. Synergi
allows scholars to start with an entire threads-and-subthreads structure
generated from papers relevant to their interests, and to iterate and customize
on it as they wish. In our evaluation, we find that Synergi helps scholars
efficiently make sense of relevant threads, broaden their perspectives, and
increases their curiosity. We discuss future design implications for
thread-based, mixed-initiative scholarly synthesis support tools.Comment: ACM UIST'2
Improving Science That Uses Code
As code is now an inextricable part of science it should be supported by competent Software Engineering, analogously to statistical claims being properly supported by competent statistics.If and when code avoids adequate scrutiny, science becomes unreliable and unverifiable because results — text, data, graphs, images, etc — depend on untrustworthy code.Currently, scientists rarely assure the quality of the code they rely on, and rarely make it accessible for scrutiny. Even when available, scientists rarely provide adequate documentation to understand or use it reliably.This paper proposes and justifies ways to improve science using code:1. Professional Software Engineers can help, particularly in critical fields such as public health, climate change and energy.2. ‘Software Engineering Boards,’ analogous to Ethics or Institutional Review Boards, should be instigated and used.3. The Reproducible Analytic Pipeline (RAP) methodology can be generalized to cover code and Software Engineering methodologies, in a generalization this paper introduces called RAP+. RAP+ (or comparable interventions) could be supported and or even required in journal, conference and funding body policies.The paper’s Supplemental Material provides a summary of Software Engineering best practice relevant to scientific research, including further suggestions for RAP+ workflows.‘Science is what we understand well enough to explain to a computer.’ Donald E. Knuth in A=B [ 1]‘I have to write to discover what I am doing.’ Flannery O’Connor, quoted in Write for your life [ 2]‘Criticism is the mother of methodology.’ Robert P. Abelson in Statistics as Principled Argument [ 3]‘From its earliest times, science has operated by being open and transparent about methods and evidence, regardless of which technology has been in vogue.’ Editorial in Nature [4
Evaluation Methodologies in Software Protection Research
Man-at-the-end (MATE) attackers have full control over the system on which
the attacked software runs, and try to break the confidentiality or integrity
of assets embedded in the software. Both companies and malware authors want to
prevent such attacks. This has driven an arms race between attackers and
defenders, resulting in a plethora of different protection and analysis
methods. However, it remains difficult to measure the strength of protections
because MATE attackers can reach their goals in many different ways and a
universally accepted evaluation methodology does not exist. This survey
systematically reviews the evaluation methodologies of papers on obfuscation, a
major class of protections against MATE attacks. For 572 papers, we collected
113 aspects of their evaluation methodologies, ranging from sample set types
and sizes, over sample treatment, to performed measurements. We provide
detailed insights into how the academic state of the art evaluates both the
protections and analyses thereon. In summary, there is a clear need for better
evaluation methodologies. We identify nine challenges for software protection
evaluations, which represent threats to the validity, reproducibility, and
interpretation of research results in the context of MATE attacks
Taylor University Catalog 2023-2024
The 2023-2024 academic catalog of Taylor University in Upland, Indiana.https://pillars.taylor.edu/catalogs/1128/thumbnail.jp
Business During COVID: An IOT Based Automated Sand Truck Management Solution
As a result of the development in computing technologies have begun to believe the human expectations on these needs in the different sort of components. The eSand Transport System with IOT (eSTSI) is a sand transport system designed to provide secure and accurate data such as gross weight with the sand and the truck, viewing the details of the owner when the RFID card is detected, sending alerts through the mobile application from the Firebase by interconnecting with IOT device, viewing the schedule of the selected truck with the data and destination, and displaying the location once the truck is passed the checkpoints. The main functionalities of eSTSI are to identify the truck with the correct information via the RFID card that retrieves the data who has enrolled with the app and stores the data in the firebase. The expected services are aimed to provide by this system
A decade of code comment quality assessment : a systematic literature review
Code comments are important artifacts in software systems and play a paramount role in many software engineering (SE) tasks related to maintenance and program comprehension. However, while it is widely accepted that high quality matters in code comments just as it matters in source code, assessing comment quality in practice is still an open problem. First and foremost, there is no unique definition of quality when it comes to evaluating code comments. The few existing studies on this topic rather focus on specific attributes of quality that can be easily quantified and measured. Existing techniques and corresponding tools may also focus on comments bound to a specific programming language, and may only deal with comments with specific scopes and clear goals (e.g., Javadoc comments at the method level, or in-body comments describing TODOs to be addressed).
In this paper, we present a Systematic Literature Review (SLR) of the last decade of research in SE to answer the following research questions: (i) What types of comments do researchers focus on when assessing comment quality? (ii) What quality attributes (QAs) do they consider? (iii) Which tools and techniques do they use to assess comment quality?, and (iv) How do they evaluate their studies on comment quality assessment in general?
Our evaluation, based on the analysis of 2353 papers and the actual review of 47 relevant ones, shows that (i) most studies and techniques focus on comments in Java code, thus may not be generalizable to other languages, and (ii) the analyzed studies focus on four main QAs of a total of 21 QAs identified in the literature, with a clear predominance of checking consistency between comments and the code. We observe that researchers rely on manual assessment and specific heuristics rather than the automated assessment of the comment quality attributes, with evaluations often involving surveys of students and the authors of the original studies but rarely professional developers
- …