925 resultados para software engineering practices
Resumo:
VALENTIM, R. A. M. ; SOUZA NETO, Plácido Antônio de. O impacto da utilização de design patterns nas métricas e estimativas de projetos de software: a utilização de padrões tem alguma influência nas estimativas?. Revista da FARN, Natal, v. 4, p. 63-74, 2006
Resumo:
Thesis (Ph.D.)--University of Washington, 2016-06
Resumo:
Reverse engineering is usually the stepping stone of a variety of at-tacks aiming at identifying sensitive information (keys, credentials, data, algo-rithms) or vulnerabilities and flaws for broader exploitation. Software applica-tions are usually deployed as identical binary code installed on millions of com-puters, enabling an adversary to develop a generic reverse-engineering strategy that, if working on one code instance, could be applied to crack all the other in-stances. A solution to mitigate this problem is represented by Software Diversity, which aims at creating several structurally different (but functionally equivalent) binary code versions out of the same source code, so that even if a successful attack can be elaborated for one version, it should not work on a diversified ver-sion. In this paper, we address the problem of maximizing software diversity from a search-based optimization point of view. The program to protect is subject to a catalogue of transformations to generate many candidate versions. The problem of selecting the subset of most diversified versions to be deployed is formulated as an optimisation problem, that we tackle with different search heuristics. We show the applicability of this approach on some popular Android apps.
Resumo:
The process of developing software is a complex undertaking involving multiple stakeholders. While the intentions of these parties might vary to some extent, the ultimate goal can be seen as a satisfactory product. Lean and agile software development practices strive toward this and they place customer contentment as one of the highest aims of the process. An important aspect of any development process is the act of innovation. Without it, nothing progresses and the whole process is unnecessary. As a target domain expert, the customer is an important part of effective innovation. Problems arise, however, when the customer is not actively taking part in the activities. Lack of familiarity with software development can easily cause such issues. Unfortunately, the amount of research conducted on product innovation is unimpressive. This makes it difficult to formulate a recommended approach on stimulating the customer and encouraging a more active participation. Ultimately, a small set of high-level guidelines were identified from the available literary resources for inducing innovation. To conclude, this thesis presents the findings made during the development of a small web application and compares them to the aforementioned literature findings. While the guidelines seem to provide promising results, further empirical research is needed to attain more significant conclusions.
Resumo:
VALENTIM, R. A. M. ; SOUZA NETO, Plácido Antônio de. O impacto da utilização de design patterns nas métricas e estimativas de projetos de software: a utilização de padrões tem alguma influência nas estimativas?. Revista da FARN, Natal, v. 4, p. 63-74, 2006
Resumo:
This proposal shows that ACO systems can be applied to problems of requirements selection in software incremental development, with the idea of obtaining better results of those produced by expert judgment alone. The evaluation of the ACO systems should be done through a compared analysis with greedy and simulated annealing algorithms, performing experiments with some problems instances
Resumo:
Os projetos multimédia são uma forma única de desenvolver produtos e serviços inovadores, com recurso a um conjunto distintivo de membros de equipa, conhecimentos e metodologias. Grande parte dos estudos desenvolvidos em torno do conceito de desenvolvimento ágil são orientados para a área da engenharia de software, não sendo, muitas vezes, ajustados às particularidades dos projetos multimédia. Ainda que seja possível desenvolver e gerir projetos multimédia com recurso a métodos ágeis, é fundamental aprofundar o conhecimento nesta área apresentando estudos que comprovem a efetiva adequação das metodologias ágeis a esta tipologia projetual. O trabalho desenvolvido nesta dissertação pretendeu, não só analisar e compreender as metodologias, instrumentos e ferramentas de desenvolvimento ágil, considerando as particularidades da área da multimédia, como também analisar dados recolhidos num contexto real de desenvolvimento, observando práticas e eventos de um projeto específico; tais dados foram confrontados com metodologias existentes, de modo a permitir o desenho e a proposta de uma metodologia de suporte ao desenvolvimento ágil de um projeto multimédia. Os dados foram recolhidos em quatro fases e com objetivos distintos: conhecer o projeto e os elementos envolvidos; observar dinâmicas de trabalho em equipa; recolher informações sobre eventos de interação e partilha, organização hierárquica, controlo e monitorização e tomada de decisão e, por fim, recolher a opinião dos envolvidos sobre a proposta da metodologia de suporte. Esta proposta de metodologia constituiu, portanto, o principal resultado do estudo, apontando para a necessidade de (i) recorrer a uma ferramenta online de suporte à gestão de tempo e tarefas, (ii) utilizar uma ferramenta de partilha que permita um acesso constante por todos os elementos da equipa e (iii) promover reuniões periódicas, com ordem de trabalho definida.
Resumo:
Modern software application testing, such as the testing of software driven by graphical user interfaces (GUIs) or leveraging event-driven architectures in general, requires paying careful attention to context. Model-based testing (MBT) approaches first acquire a model of an application, then use the model to construct test cases covering relevant contexts. A major shortcoming of state-of-the-art automated model-based testing is that many test cases proposed by the model are not actually executable. These \textit{infeasible} test cases threaten the integrity of the entire model-based suite, and any coverage of contexts the suite aims to provide. In this research, I develop and evaluate a novel approach for classifying the feasibility of test cases. I identify a set of pertinent features for the classifier, and develop novel methods for extracting these features from the outputs of MBT tools. I use a supervised logistic regression approach to obtain a model of test case feasibility from a randomly selected training suite of test cases. I evaluate this approach with a set of experiments. The outcomes of this investigation are as follows: I confirm that infeasibility is prevalent in MBT, even for test suites designed to cover a relatively small number of unique contexts. I confirm that the frequency of infeasibility varies widely across applications. I develop and train a binary classifier for feasibility with average overall error, false positive, and false negative rates under 5\%. I find that unique event IDs are key features of the feasibility classifier, while model-specific event types are not. I construct three types of features from the event IDs associated with test cases, and evaluate the relative effectiveness of each within the classifier. To support this study, I also develop a number of tools and infrastructure components for scalable execution of automated jobs, which use state-of-the-art container and continuous integration technologies to enable parallel test execution and the persistence of all experimental artifacts.
Resumo:
The intensive character in knowledge of software production and its rising demand suggest the need to establish mechanisms to properly manage the knowledge involved in order to meet the requirements of deadline, costs and quality. The knowledge capitalization is a process that involves from identification to evaluation of the knowledge produced and used. Specifically, for software development, capitalization enables easier access, minimize the loss of knowledge, reducing the learning curve, avoid repeating errors and rework. Thus, this thesis presents the know-Cap, a method developed to organize and guide the capitalization of knowledge in software development. The Know-Cap facilitates the location, preservation, value addition and updating of knowledge, in order to use it in the execution of new tasks. The method was proposed from a set of methodological procedures: literature review, systematic review and analysis of related work. The feasibility and appropriateness of Know-Cap were analyzed from an application study, conducted in a real case, and an analytical study of software development companies. The results obtained indicate the Know- Cap supports the capitalization of knowledge in software development.
Resumo:
Esta dissertação apresenta um projecto em engenharia de software para o desenvolvimento e implementação ·De um módulo parte integrante da plataforma XEO, denominado XEOReports. Este módulo destina-se à construção de relatórios dinâmicos, no formato. pdf tendo como base ecrãs de edição da plataforma XEO. Foi utilizada uma plataforma de geração de relatórios em diversos formatos, de nome JasperReports, de forma a que o módulo desenvolvido fosse a integração entre as duas plataformas, XEO e JasperReports. O desenvolvimento deste módulo foi feito tendo em conta os requisitos que a plataforma jasperReports apresentava para a geração de relatórios tendo como base os ecrãs da plataforma XEO. O estudo foi feito respeitando a metodologia de desenvolvimento de software UML, respeitando as boas práticas de desenvolvimento de software a ela inerentes. ABSTRACT; This thesis consists in a software engineering project that deals with the development, functioning and implementation of the XEOReports module, which later became a component of the XEO platform. The XEOReports module aims the construction of dynamic reports in the Portable Document Format (PDF), based on edition screens of the XEO platform. JasperReports, an open source reporting engine, which generates reports in several file formats, was also used in the project development. Therefore, the XEOReports module is the result of the two platforms integration, namely XEO and JasperReports. It is also important to refer that this study took into account the JasperReports platform requirements in the creation of reports based on edition screens of the XEO platform. Moreover, the development methodology of the UML software, as well as the good development software practices inherent in it, were respected and followed in the progression of this project.
Resumo:
168 p.
Resumo:
Independientemente de la metodología que se adopte en el desarrollo de software, se contemplan aquellas actividades gerenciales o de dirección del proyecto y las inherentes a las técnicas, propias del desarrollo del producto como tal, como los requerimientos demandados, análisis, diseño, implementación y pruebas o ensayos previos a su materialización -- El presente trabajo se deriva del interés por diseñar una metodología para la gestión de la fase de pruebas y ensayo, con base en el modelo de integración de las actividades contempladas en la guía del PMBOK, la cual es compatible con las funciones de dirección y actividades técnicas de otras metodologías, especialmente en su etapa de prueba; de allí la importancia que representa para los gerentes de proyectos obtener resultados satisfactorios en esta fase, por su impacto directo y significativo en el cumplimiento del tiempo y los costos estimados, lo que permite prevenir o mitigar, tiempos adicionales o sobrecostos por reproceso, evitando ser transferidos al cliente o asumidos por el fabricante de software -- Así mismo, asegurar una ejecución correcta de la fase de pruebas y ensayo, garantiza que el proyecto responda a los estándares de calidad, de acuerdo con sus indicadores de medición y la satisfacción del usuario
Resumo:
Concurrent software executes multiple threads or processes to achieve high performance. However, concurrency results in a huge number of different system behaviors that are difficult to test and verify. The aim of this dissertation is to develop new methods and tools for modeling and analyzing concurrent software systems at design and code levels. This dissertation consists of several related results. First, a formal model of Mondex, an electronic purse system, is built using Petri nets from user requirements, which is formally verified using model checking. Second, Petri nets models are automatically mined from the event traces generated from scientific workflows. Third, partial order models are automatically extracted from some instrumented concurrent program execution, and potential atomicity violation bugs are automatically verified based on the partial order models using model checking. Our formal specification and verification of Mondex have contributed to the world wide effort in developing a verified software repository. Our method to mine Petri net models automatically from provenance offers a new approach to build scientific workflows. Our dynamic prediction tool, named McPatom, can predict several known bugs in real world systems including one that evades several other existing tools. McPatom is efficient and scalable as it takes advantage of the nature of atomicity violations and considers only a pair of threads and accesses to a single shared variable at one time. However, predictive tools need to consider the tradeoffs between precision and coverage. Based on McPatom, this dissertation presents two methods for improving the coverage and precision of atomicity violation predictions: 1) a post-prediction analysis method to increase coverage while ensuring precision; 2) a follow-up replaying method to further increase coverage. Both methods are implemented in a completely automatic tool.