23 resultados para Election Counting and Reporting Software,
Resumo:
In the last decades, software systems have become an intrinsic element in our daily lives. Software exists in our computers, in our cars, and even in our refrigerators. Today’s world has become heavily dependent on software and yet, we still struggle to deliver quality software products, on-time and within budget. When searching for the causes of such alarming scenario, we find concurrent voices pointing to the role of the project manager. But what is project management and what makes it so challenging? Part of the answer to this question requires a deeper analysis of why software project managers have been largely ineffective. Answering this question might assist current and future software project managers in avoiding, or at least effectively mitigating, problematic scenarios that, if unresolved, will eventually lead to additional failures. This is where anti-patterns come into play and where they can be a useful tool in identifying and addressing software project management failure. Unfortunately, anti-patterns are still a fairly recent concept, and thus, available information is still scarce and loosely organized. This thesis will attempt to help remedy this scenario. The objective of this work is to help organize existing, documented software project management anti-patterns by answering our two research questions: · What are the different anti-patterns in software project management? · How can these anti-patterns be categorized?
Resumo:
La unión de distintos sistemas software constituye un elemento principal de las nuevas Tecnologías de la Información y la Comunicación. La integración de entornos virtuales tridimensionales con agentes software inteligentes es el objetivo que persigue este trabajo de investigación. Para llevar a cabo esta integración se parte de la creación de un agente virtual, un personaje que es controlado por una mente desarrollada siguiendo un enfoque basado en agentes software. Se busca así dotar al sistema de cierto nivel de inteligencia, tomando como referencia el funcionamiento del cerebro humano. Lo que se consigue es que el agente capte los estímulos del entorno, los procese y genere comportamientos, tanto reactivos como deliberativos, que son ejecutados por el personaje. Los resultados obtenidos resaltan el dinamismo del sistema, a la vez que animan a seguir investigando en este campo lleno de aplicaciones directas y reales sobre el mundo. En conclusión, esta investigación busca y consigue un nuevo paso en el progreso de las nuevas tecnologías mediante una integración real de distintos sistemas software. ---ABSTRACT---The union of different software systems is a major element of Information and Communications Technology. The aim of this research is the integration of 3D virtual environments and intelligent software agents. This integration is based on the development of a virtual agent, a character that is controlled by a mind developed following a software agent approach. It is sought to provide the system with some intelligence level, taking the human brain function as a reference point. The consequence is that the agent captures environmental stimuli, processes them and creates reactive and deliberative behaviours that can be executed by the avatar. The findings emphasize the dynamism of the system as well as they encourage to research more in this field that has a lot of direct and real-life applications on the world. In conclusion, this research seeks and takes a new step in the progress of new technologies through a real integration of different software systems.
Resumo:
El presente Trabajo de Fin de Grado (TFG) es el resultado de la necesidad de la seguridad en la construcción del software ya que es uno de los mayores problemas con que se enfrenta hoy la industria debido a la baja calidad de la misma tanto en software de Sistema Operativo, como empotrado y de aplicaciones. La creciente dependencia de software para que se hagan trabajos críticos significa que el valor del software ya no reside únicamente en su capacidad para mejorar o mantener la productividad y la eficiencia. En lugar de ello, su valor también se deriva de su capacidad para continuar operando de forma fiable incluso de cara de los eventos que la amenazan. La capacidad de confiar en que el software seguirá siendo fiable en cualquier circunstancia, con un nivel de confianza justificada, es el objetivo de la seguridad del software. Seguridad del software es importante porque muchas funciones críticas son completamente dependientes del software. Esto hace que el software sea un objetivo de valor muy alto para los atacantes, cuyos motivos pueden ser maliciosos, penales, contenciosos, competitivos, o de naturaleza terrorista. Existen fuentes muy importantes de mejores prácticas, métodos y herramientas para mejorar desde los requisitos en sus aspectos no funcionales, ciclo de vida del software seguro, pasando por la dirección de proyectos hasta su desarrollo, pruebas y despliegue que debe ser tenido en cuenta por los desarrolladores. Este trabajo se centra fundamentalmente en elaborar una guía de mejores prácticas con la información existente CERT, CMMI, Mitre, Cigital, HP, y otras fuentes. También se plantea desarrollar un caso práctico sobre una aplicación dinámica o estática con el fin de explotar sus vulnerabilidades.---ABSTRACT---This Final Project Grade (TFG) is the result of the need for security in software construction as it is one of the biggest problems facing the industry today due to the low quality of it both OS software, embedded software and applications software. The increasing reliance on software for critical jobs means that the value of the software no longer resides solely in its capacity to improve or maintain productivity and efficiency. Instead, its value also stems from its ability to continue to operate reliably even when facing events that threaten it. The ability to trust that the software will remain reliable in all circumstances, with justified confidence level is the goal of software security. The security in software is important because many critical functions are completely dependent of the software. This makes the software to be a very high value target for attackers, whose motives may be by a malicious, by crime, for litigating, by competitiveness or by a terrorist nature. There are very important sources of best practices, methods and tools to improve the requirements in their non-functional aspects, the software life cycle with security in mind, from project management to its phases (development, testing and deployment) which should be taken into account by the developers. This paper focuses primarily on developing a best practice guide with existing information from CERT, CMMI, Mitre, Cigital, HP, and other organizations. It also aims to develop a case study on a dynamic or static application in order to exploit their vulnerabilities.
Resumo:
Context: Empirical Software Engineering (ESE) replication researchers need to store and manipulate experimental data for several purposes, in particular analysis and reporting. Current research needs call for sharing and preservation of experimental data as well. In a previous work, we analyzed Replication Data Management (RDM) needs. A novel concept, called Experimental Ecosystem, was proposed to solve current deficiencies in RDM approaches. The empirical ecosystem provides replication researchers with a common framework that integrates transparently local heterogeneous data sources. A typical situation where the Empirical Ecosystem is applicable, is when several members of a research group, or several research groups collaborating together, need to share and access each other experimental results. However, to be able to apply the Empirical Ecosystem concept and deliver all promised benefits, it is necessary to analyze the software architectures and tools that can properly support it.
Resumo:
La Ingeniería de Pruebas está especializada en la verificación y validación del Software,y formalmente se define como: “Proceso de desarrollo que emplea métodos rigurosos para evaluar la corrección y calidad del producto a lo largo de todo su ciclo de vida” [3]. Este proceso comprende un conjunto de métodos, procedimientos y técnicas formalmente definidas las cuales, usadas de forma sistemática, facilitan la identificación de la mayor cantidad de errores y fallos posibles de un software. Un software que pase un proceso riguroso de pruebas es un producto de calidad que seguramente facilitará la labor del Ingeniero de Software en la corrección de futuras incidencias, algunas de ellas generadas tras la implantación en el entorno real. Este proceso constituye un área de la Ingeniería del Software y una especialidad por tanto, de la misma. De forma simple, la consecución de una correcta Verificación y Validación del Software requiere de algunas actividades imprescindibles como: - Realizar un plan de pruebas del proyecto. - Actualizar dicho plan y corregirlo en caso necesario. - Revisar los documentos de análisis de requisitos. - Ejecutar las pruebas en las diferentes fases del desarrollo del proyecto. - Documentar el diseño y la ejecución de las pruebas. - Generar documentos con los resultados y anomalías de las pruebas ya ejecutadas. Actualmente, la Ingeniería de Pruebas no es muy reconocida como área de trabajo independiente sino más bien, un área inmersa dentro de la Ingeniería de Software. En el entorno laboral existe el perfil de Ingeniero de Pruebas, sin embargo pocos ingenieros de software tienen claro querer ser Ingenieros de Pruebas (probadores o testers) debido a que nunca han tenido la oportunidad de enfrentarse a actividades prácticas reales dentro de los centros de estudios universitarios donde cursan la carrera. Al ser un área de inherente ejercicio profesional, la parte correspondiente de la Ingeniería de Pruebas suele enfocarse desde un punto de vista teórico más que práctico. Hay muchas herramientas para la creación de pruebas y de ayuda para los ingenieros de pruebas, pero la mayoría son de pago o hechas a medida para grandes empresas que necesitan dicho software. Normalmente la gente conoce lo que es la Ingeniería de Pruebas únicamente cuando se empieza a adquirir experiencia en dicha área en el ejercicio profesional dentro de una empresa. Con lo cual, el acercamiento durante la carrera no necesariamente le ha ofrecido al profesional en Ingeniería, la oportunidad de trabajar en esta rama de la Ingeniería del Software y en algunos casos, NOVATests: Metodología y herramienta software de apoyo para los Ingenieros de Prueba Junior 4 los recién egresados comienzan su vida profesional con algún desconocimiento en este sentido. Es por el conjunto de estas razones, que mi intención en este proyecto es proponer una metodología y una herramienta software de apoyo a dicha metodología, para que los estudiantes de carreras de Ingeniería Software y afines, e ingenieros recién egresados con poca experiencia o ninguna en esta área (Ingenieros de Pruebas Junior), puedan poner en práctica las actividades de la Ingeniería de Pruebas dentro de un entorno lo más cercano posible al ejercicio de la labor profesional. De esta forma, podrían desarrollar las tareas propias de dicha área de una manera fácil e intuitiva, favoreciendo un mayor conocimiento y experiencia de la misma. ABSTRACT The software engineering is specialized in the verification and validation of Software and it is formally defined as: “Development process which by strict methods evaluates and corrects the quality of the product along its lifecycle”. This process contains a number of methods, procedures and techniques formally defined which used systematically make easier the identification of the highest quantity of error and failures within a Software. A software going through this rigorous process of tests will become a quality product that will help the software engineer`s work while correcting incidences. Some of them probably generated after the deployment in a real environment. This process belongs to the Software engineering and therefore it is a specialization itself. Simplifying, the correct verification and validation of a software requires some essential activities such as: -Create a Test Plan of the project - Update this Test Plan and correct if necessary - Check Requirement’s specification documents -Execute the different tests among all the phases of the project - Create the pertinent documentation about design and execution of these tests. - Generate the result documents and all the possible incidences the tests could contain. Currently, the Test engineering is not recognized as a work area but an area immerse within the Software engineering. The professional environment includes the role of Test engineer, but only a few software engineers have clear to become Test engineers (testers) because they have never had the chance to face this activities within the university study centers where they take study of this degree. Since there are little professional environments, this area is focused from a theoretical way instead of a more practical vision. There are plenty of tools helping the Test engineer, but most of them are paid tools or bespoke tools for big companies in need of this software. Usually people know what test engineering is by starting working on it and not before, when people start acquiring experience in this field within a company. Therefore, the degree studied have not approach this field of the Software engineering before and in some cases the graduated students start working without any knowledge in this area. Because of this reasons explained, it is my intention to propose this Project: a methodology and a software tool supporting this methodology so the students of software engineering and similar ones but also graduated students with little experience in this area (Junior Test Engineers), can afford practice in this field and get used to the activities related with the test engineering. Because of this they will be able to carry out the proper tasks of this area easier, enforcing higher and better knowledge and experience of it.
Resumo:
El software se ha convertido en el eje central del mundo actual, una compleja creación humana que influye en la vida, negocios y comunicación de todas las personas pertenecientes a la Sociedad de la Información. El rápido crecimiento experimentado en el ámbito del desarrollo software ha permitido la creación de avanzadas estructuras tecnológicas, denominadas “Sistemas Intensivos Software”, capaces de comunicarse con otros sistemas, dispositivos, sensores y personas. A lo largo de los próximos años los sistemas se enfrentarán a una mayor complejidad, surgida de la necesidad de operar en entornos de grandes dimensiones y de comportamientos no deterministas. Los métodos y herramientas actuales no son lo suficientemente potentes para diseñar, construir,implementar y mantener sistemas intensivos software con estas características, y detener la construcción de sistemas intensivos software o construir sistemas poco flexibles o fiables no es una alternativa real. En el desarrollo de “Sistemas Intensivos Software” pueden llegar a intervenir distintas entidades o compañías software que suelen estar en ubicaciones geográficas distintas y constituidas por grandes equipos de desarrollo, multidisciplinares e incluso multilingües. Debido a la criticidad del resultado de las actividades realizadas de forma independiente en el sistema resultante, éstas se han de controlar y monitorizar para asegurar la correcta integración de todos los elementos del sistema completo. El objetivo de este proyecto es la creación de una herramienta software para dar soporte a la gestión y monitorización de la construcción e integración de sistemas intensivos software, siendo extensible también a proyectos de otra índole. La herramienta resultante se denomina Positioning System, una aplicación web del tipo SPA (Single Page Application) creada con tecnología de última generación como el framework JavaScript AngularJS y tecnología de back-end como SlimPHP. Positioning System provee la funcionalidad necesaria para la creación de proyectos, familias y subfamilias de productos que constituyen los productos software de los proyectos creados, así como la gestión de socios comerciales y gestión de contactos de dichos proyectos. Todas estas funcionalidades son fácilmente monitorizadas y controladas por gráficos estadísticos generados para cada proyecto. ABSTRACT Software has become the backbone of today’s world, a complex human creation that has an important impact in the life, business and communication of all people involved with the Information Society. The quick growth that software development has undergone for last years has enabled the creation of advanced technological structures called “Software Intensive Systems”. They are able to communicate with other systems, devices, sensors and people. Next years, systems will face more complexity. It arises from the need of operating systems of large dimensions with non-deterministic behaviors. Current methods and tools are not powerful enough to design, build, implement and maintain software intensive systems; however stopping the development or developing unreliable and non-flexible systems is not a real alternative. Software Intensive Systems” development may involve different entities or software companies which may be in different geographical locations and may be constituted by large, multidisciplinary and even multilingual development teams. Due to the criticality of the result of each conducted activity, independently in the resulting system, these activities must be controlled and monitored to ensure the proper integration of all the elements within the complete system. The goal of this project is the creation of a software tool to support the management and monitoring of the construction and integration of software intensive systems, being possible to be extended to other kind of projects. The resultant tool is called Positioning System, a web application that follows the SPA (Single Page Application) style. It was created with the latest technologies, such as, the AngularJS framework and SlimPHP. The Positioning System provides the necessary features for the creation of projects, families and subfamilies of products that constitute the software products of the created projects, as well as the management of business partners and contacts of these projects. All these features are easily monitored and controlled by statistical graphs generated for each project.
Resumo:
This paper deals with the prediction of velocity fields on the 2415-3S airfoil which will be used for an unmanned aerial vehicle with internal propulsion system and in this way analyze the air flow through an internal duct of the airfoil using computational fluid dynamics. The main objective is to evaluate the effect of the internal air flow past the airfoil and how this affects the aerodynamic performance by means of lift and drag forces. For this purpose, three different designs of the internal duct were studied; starting from the base 2415-3S airfoil developed in previous investigation, basing on the hypothesis of decreasing the flow separation produced when the propulsive airflow merges the external flow, and in this way obtaining the best configuration. For that purpose, an exhaustive study of the mesh sensitivity was performed. It was used a non-structured mesh since the computational domain is three-dimensional and complex. The selected mesh contains approximately 12.5 million elements. Both the computational domain and the numerical solution were made with commercial CAD and CFD software, respectively. Air, incompressible and steady was analyzed. The boundary conditions are in concordance with experimental setup in the AF 6109 wind tunnel. The k-e model is utilized to describe the turbulent flow process as followed in references. Results allowed obtaining velocity contours as well as lift and drag coefficients and also the location of separation and reattachment regions in some cases for zero degrees of angle of attack on the internal and external surfaces of the airfoil. Finally, the selection of the configuration with the best aerodynamic performance was made, selecting the option without curved baffles.
Resumo:
Hoy en día, existen numerosos sistemas (financieros, fabricación industrial, infraestructura de servicios básicos, etc.) que son dependientes del software. Según la definición de Ingeniería del Software realizada por I. Sommerville, “la Ingeniería del Software es una disciplina de la ingeniería que comprende todos los aspectos de la producción de software desde las etapas iniciales de la especificación del sistema, hasta el mantenimiento de éste después de que se utiliza.” “La ingeniería del software no sólo comprende los procesos técnicos del desarrollo de software, sino también actividades tales como la gestión de proyectos de software y el desarrollo de herramientas, métodos y teorías de apoyo a la producción de software.” Los modelos de proceso de desarrollo software determinan una serie de pautas para poder desarrollar con éxito un proyecto de desarrollo software. Desde que surgieran estos modelos de proceso, se investigado en nuevas maneras de poder gestionar un proyecto y producir software de calidad. En primer lugar surgieron las metodologías pesadas o tradicionales, pero con el avance del tiempo y la tecnología, surgieron unas nuevas llamadas metodologías ágiles. En el marco de las metodologías ágiles cabe destacar una determinada práctica, la integración continua. Esta práctica surgió de la mano de Martin Fowler, con el objetivo de facilitar el trabajo en grupo y automatizar las tareas de integración. La integración continua se basa en la construcción automática de proyectos con una frecuencia alta, promoviendo la detección de errores en un momento temprano para poder dar prioridad a corregir dichos errores. Sin embargo, una de las claves del éxito en el desarrollo de cualquier proyecto software consiste en utilizar un entorno de trabajo que facilite, sistematice y ayude a aplicar un proceso de desarrollo de una forma eficiente. Este Proyecto Fin de Grado (PFG) tiene por objetivo el análisis de distintas herramientas para configurar un entorno de trabajo que permita desarrollar proyectos aplicando metodologías ágiles e integración continua de una forma fácil y eficiente. Una vez analizadas dichas herramientas, se ha propuesto y configurado un entorno de trabajo para su puesta en marcha y uso. Una característica a destacar de este PFG es que las herramientas analizadas comparten una cualidad común y de alto valor, son herramientas open-source. El entorno de trabajo propuesto en este PFG presenta una arquitectura cliente-servidor, dado que la mayoría de proyectos software se desarrollan en equipo, de tal forma que el servidor proporciona a los distintos clientes/desarrolladores acceso al conjunto de herramientas que constituyen el entorno de trabajo. La parte servidora del entorno propuesto proporciona soporte a la integración continua mediante herramientas de control de versiones, de gestión de historias de usuario, de análisis de métricas de software, y de automatización de la construcción de software. La configuración del cliente únicamente requiere de un entorno de desarrollo integrado (IDE) que soporte el lenguaje de programación Java y conexión con el servidor. ABSTRACT Nowadays, numerous systems (financial, industrial production, basic services infrastructure, etc.) depend on software. According to the Software Engineering definition made by I.Sommerville, “Software engineering is an engineering discipline that is concerned with all aspects of software production from the early stages of system specification through to maintaining the system after it has gone into use.” “Software engineering is not just concerned with the technical processes of software development. It also includes activities such as software project management and the development of tools, methods, and theories to support software production.” Software development process models determine a set of guidelines to successfully develop a software development project. Since these process models emerged, new ways of managing a project and producing software with quality have been investigated. First, the so-called heavy or traditional methodologies appeared, but with the time and the technological improvements, new methodologies emerged: the so-called agile methodologies. Agile methodologies promote, among other practices, continuous integration. This practice was coined by Martin Fowler and aims to make teamwork easier as well as automate integration tasks. Nevertheless, one of the keys to success in software projects is to use a framework that facilitates, systematize, and help to deploy a development process in an efficient way. This Final Degree Project (FDP) aims to analyze different tools to configure a framework that enables to develop projects by applying agile methodologies and continuous integration in an easy and efficient way. Once tools are analyzed, a framework has been proposed and configured. One of the main features of this FDP is that the tools under analysis share a common and high-valued characteristic: they are open-source. The proposed framework presents a client-server architecture, as most of the projects are developed by a team. In this way, the server provides access the clients/developers to the tools that comprise the framework. The server provides continuous integration through a set of tools for control management, user stories management, software quality management, and software construction automatization. The client configuration only requires a Java integrated development environment and network connection to the server.