1000 resultados para lenguajes de programación
Resumo:
En el presente artículo se muestran las ventajas de la programación en paralelo resolviendo numéricamente la ecuación del calor en dos dimensiones a través del método de diferencias finitas explícito centrado en el espacio FTCS. De las conclusiones de este trabajo se pone de manifiesto la importancia de la programación en paralelo para tratar problemas grandes, en los que se requiere un elevado número de cálculos, para los cuales la programación secuencial resulta impracticable por el elevado tiempo de ejecución. En la primera sección se describe brevemente los conceptos básicos de programación en paralelo. Seguidamente se resume el método de diferencias finitas explícito centrado en el espacio FTCS aplicado a la ecuación parabólica del calor. Seguidamente se describe el problema de condiciones de contorno y valores iniciales específico al que se va a aplicar el método de diferencias finitas FTCS, proporcionando pseudocódigos de una implementación secuencial y dos implementaciones en paralelo. Finalmente tras la discusión de los resultados se presentan algunas conclusiones. In this paper the advantages of parallel computing are shown by solving the heat conduction equation in two dimensions with the forward in time central in space (FTCS) finite difference method. Two different levels of parallelization are consider and compared with traditional serial procedures. We show in this work the importance of parallel computing when dealing with large problems that are impractical or impossible to solve them with a serial computing procedure. In the first section a summary of parallel computing approach is presented. Subsequently, the forward in time central in space (FTCS) finite difference method for the heat conduction equation is outline, describing how the heat flow equation is derived in two dimensions and the particularities of the finite difference numerical technique considered. Then, a specific initial boundary value problem is solved by the FTCS finite difference method and serial and parallel pseudo codes are provided. Finally after results are discussed some conclusions are presented.
Resumo:
La usabilidad es un atributo de calidad de un sistema software que llega a ser crítico en sistemas altamente interactivos. Desde el campo de la Interacción Persona-Ordenador se proponen recomendaciones que permiten alcanzar un nivel adecuado de usabilidad en un sistema. En la disciplina de la Ingeniería de Software se ha establecido que algunas de estas recomendaciones afectan a la funcionalidad principal de los sistemas y no solo a la interfaz de usuario. Este tipo de recomendaciones de usabilidad se deben tener en cuenta desde las primeras actividades y durante todo el proceso de desarrollo, así como se hace con atributos tales como la seguridad, la facilidad de mantenimiento o el rendimiento. Desde la Ingeniería de Software se han hecho estudios y propuestas para abordar la usabilidad en las primeras actividades del desarrollo. En particular en la educción de requisitos y diseño de la arquitectura. Estas propuestas son de un alto nivel de abstracción. En esta investigación se aborda la usabilidad en actividades avanzadas del proceso de desarrollo: el diseño detallado y la programación. El objetivo de este trabajo es obtener, formalizar y validar soluciones reutilizables para la usabilidad en estas actividades. En este estudio se seleccionan tres funcionalidades de usabilidad identificadas como de alto impacto en el diseño: Abortar Operación, Retroalimentación de Progreso y Preferencias. Para la obtención de elementos reutilizables se utiliza un método inductivo. Se parte de la construcción de aplicaciones web particulares y se induce una solución general. Durante la construcción de las aplicaciones se mantiene la trazabilidad de los elementos relacionados con cada funcionalidad de usabilidad. Al finalizar se realiza un análisis de elementos comunes, y los hallazgos se formalizan como patrones de diseño orientados a la implementación y patrones de programación en cada uno de los lenguajes utilizados: PHP, VB .NET y Java. Las soluciones formalizadas como patrones se validan usando la metodología de estudio de casos. Desarrolladores independientes utilizan los patrones para la inclusión de las tres funcionalidades de usabilidad en dos nuevas aplicaciones web. Como resultado, los desarrolladores pueden usar con éxito las soluciones propuestas para dos de las funcionalidades: Abortar Operación y Preferencias. La funcionalidad Retroalimentación de Progreso no puede ser implementada completamente. Se concluye que es posible obtener elementos reutilizables para la implementación de cada funcionalidad de usabilidad. Estos elementos incluyen: escenarios de aplicación, que son la combinación de casuísticas que generan las funcionalidades de usabilidad, responsabilidades comunes necesarias para cubrir los escenarios, componentes comunes para cumplir con las responsabilidades, elementos de diseño asociados a los componentes y el código que implementa el diseño. Formalizar las soluciones como patrones resulta útil para comunicar los hallazgos a otros desarrolladores y los patrones se mejoran a través de su utilización en nuevos desarrollos. La implementación de funcionalidades de usabilidad presenta características que condicionan su reutilización, en particular, el nivel de acoplamiento de la funcionalidad de usabilidad con las funcionalidades de la aplicación, y la complejidad interna de la solución. ABSTRACT Usability is a critical quality attribute of highly interactive software systems. The humancomputer interaction field proposes recommendations for achieving an acceptable system usability level. The discipline of software engineering has established that some of these recommendations affect not only the user interface but also the core system functionality. This type of usability recommendations must be taken into account as of the early activities and throughout the software development process as in the case of attributes like security, ease of maintenance or performance. Software engineering has conducted studies and put forward proposals for tackling usability in the early development activities, particularly requirements elicitation and architecture design. These proposals have a high level of abstraction. This research addresses usability in later activities of the development process: detailed design and programming. The goal of this research is to discover, specify and validate reusable usability solutions for detailed design and programming. Abort Operation, Feedback and Preferences, three usability functionalities identified as having a high impact on design, are selected for the study. An inductive method, whereby a general solution is induced from particular web applications built for the purpose, is used to discover reusable elements. During the construction of the applications, the traceability of the elements related to each usability functionality is maintained. At the end of the process, the common and possibly reusable elements are analysed. The findings are specified as implementation-oriented design patterns and programming patterns for each of the languages used: PHP, VB .NET and Java. The solutions specified as patterns are validated using the case study methodology. Independent developers use the patterns in order to build the three usability functionalities into two new web applications. As a result, the developers successfully use the proposed solutions for two of the functionalities: Abort Operation and Preferences. The Progress Feedback functionality cannot be fully implemented. We conclude that it is possible to discover reusable elements for implementing each usability functionality. These elements include: application scenarios, which are combinations of cases that generate usability functionalities, common responsibilities to cover the scenarios, common components to fulfil the responsibilities, design elements associated with the components and code implementing the design. It is useful to specify solutions as patterns in order to communicate findings to other developers, and patterns improve through further use in other development projects. Reusability depends on the features of usability functionality implementation, particularly the level of coupling of the usability functionality with the application functionalities and the internal complexity of the solution.
Resumo:
En la actualidad se estudia en numerosos campos cómo automatizar distintas tareas ejecutadas por aeronaves con tripulación humana. Estas tareas son en todos los casos muy costosos, debido al gran consumo de combustible, gran coste de adquisición y mantenimiento de la propia aeronave, todo ello sin contar el riesgo para los mismos tripulantes. Como ejemplo de estas tareas se puede incluir la vigilancia policial y fronteriza, revisiones de tendidos de alta tensión, la alerta temprana de incendios forestales y la medición de parámetros contaminantes. El objetivo de este proyecto es el diseño y la construcción de un prototipo electrónico empotrado basado en microcontrolador con núcleo C8051 de Silicon labs, que sea capaz de gobernar una aeronave de radiocontrol de forma transparente, de manera que en un futuro se pueda sustituir el propio aeromodelo, con la modificación de algunos parámetros, para poder incorporar sistemas de video o distintos medios de detección de variables. El prototipo seguirá una ruta confeccionada y transferida como un archivo de texto con un formato determinado que contendrá los datos necesarios para poder navegar mediante GPS. El trabajo con los modelos de motorización térmica (motores de combustión interna tipo glow, en este caso) resulta peligroso debido a la gran energía que son capaces de alcanzar. A fin de mantener la máxima seguridad durante la evolución del proyecto, se ha diseñado un proceso de tres partes independientes que permitan la correcta familiarización de los distintos componentes que se emplearán. Las fases son las siguientes: 1. Test y modelado de todos los componentes mediante pequeños montajes con protoboard de inserción y programas individuales. Se realizará mediante una tarjeta multipropósito que contendrá un microcontrolador similar en características, aunque de menor complejidad, al del prototipo final. 2. Integración de todos los componentes mediante una tarjeta especialmente diseñada que servirá de interfaz entre la tarjeta multipropósito y todo el hardware necesario para el control de un vehículo terrestre de iguales características (actuadores y motorización) al aeromodelo. 3. Diseño de un sistema embebido que concentre todos los subsistemas desarrollados en las fases anteriores y que integre todos los componentes necesarios para el gobierno de una aeronave de ala fija. ABSTRACT. Nowadays, the way of automating different tasks done by manned vehicles is studied. These tasks are any case very expensive, due to large fuel consumption, costs of aircraft buying, without taking into account the risk for human crew. As an example of these tasks, we can include policing or border surveillance, maintenance of high voltage lines, early warning of forest fire and measuring of pollution parameters. The target of this project is the design and construction of an embedded electronic prototype, based on a microcontroller with C8051 core from Silicon labs, and it will be able to controlling an aircraft transparently, in order that in the future the flying model could be changed with the modification of some parameters, and video or any variables detection systems could be added. The prototype will follow a designed and transferred path as an plain text file with a given format, that will contain all the necessary data for GPS navigation. Working with heat engine models (internal combustion engine, glow type, in this case) becomes dangerous due to the large energy that can be able to acquire. In order to keep the maximum safety level during the project evolution a three independent stages process have been designed, this allows familiarizing properly with the parts that will be used. The stages are as follows: 1. Test and modeling of all of the parts by little assemblies with through-hole protoboard and stand alone programs. It will be done with a multipurpose card which contains a microcontroller of similar characteristics, although less complex, of the final prototype. 2. Integrating of all of parts through a dedicated design card that will serve as interface between multipurpose card and all the necessary hardware for controlling a ground vehicle with the same characteristics (actuators and engine) of the flying model. 3. Embedded system designing that contains all the developed subsystems in the previous stages and integrates all the necessary parts for controlling a fixed-wing aircraft.
Resumo:
El objetivo principal de este trabajo es estudiar la distribución espacial de los centros eruptivos monogenéticos según el análisis de vecino más próximo de Poisson, propuesto por Clark y Evans (1954), en las Islas Canarias. Se pretende adquirir así unos valores cuantitativos que permitan interpretar si los centros eruptivos monogenéticos se distribuyen de forma aleatoria, concentrada o dispersa en cada isla. La confrontación de estos resultados con la bibliografía ayudará a interpretarlos mediante comparación. Como objetivo secundario y parte fundamental del trabajo se presenta la necesidad y el fin de adquirir conocimientos teóricos y prácticos de análisis espacial, además de destreza en el uso de lenguajes y entornos de programación adecuados para este tipo de estudios. Otro de los objetivos es desarrollar una aplicación que haga extensible este tipo de estudios de forma sencilla y ponga a disposición, en el caso de una publicación final, de la comunidad científica y de los usuarios a nivel universitario, una herramienta eficaz de análisis cuantitativo para hallar los índices requeridos para llevar a cabo el análisis de vecino más próximo de Poisson. El área de estudio son las Islas Canarias que conforman un archipiélago de siete islas mayores (Fig. 1): Tenerife, Fuerteventura, Gran Canaria, Lanzarote, La Palma, La Gomera y El Hierro; cuatro islas menores: Lobos, La Graciosa, Montaña Clara y Alegranza; y varios roques. Queda comprendido entre los paralelos 27 º 37 ' N y 29 º 35 ' N (Punta de La Restinga, en El Hierro; Punta de los Mosegos, en la isla de la Alegranza) y entre los meridianos 13 º 20 ' W y 18 º 10 ' W (Roque del Este; Punta de Orchilla, en El Hierro) y se encuentra a distancias de entre 100 km y 500 km de la costa noroccidental africana. Queda englobado dentro de la región de la Macaronesia, conjunto de cinco archipiélagos de origen volcánico situado en el Atlántico Oriental, a saber: Azores, Madeira, Salvajes, Canarias y Cabo Verde; y está limitada por los paralelos 14 º 49 ' N y 39 º 45 ' N, y por los meridianos 13 º 20 ' W y 31 º 17 ' W, estando separados entre sus puntos norte y sur por 2 700 km y entre sus puntos este y oeste por 1 800 km de distancia (Gosálvez et al., 2010). Sobre el origen del archipiélago y su contexto geodinámico, se han propuesto varias hipótesis, e.g.: Carracedo et al. (1998), Anguita y Hernán (2000), Ancochea et al. (2006), en las que aún no queda completamente claro el origen de la Islas Canarias, ya que algunos dan un protagonismo mayor a la actividad tectónica como causante del ascenso del magma a través de la corteza y otros defienden la existencia de un punto caliente como verdadera causa del volcanismo en Canarias.
Resumo:
El principal problema que impide actualmente una mayor utilización de las máquinas paralelas es la falta de herramientas de programación que permitan generar programas transportables a máquinas con diferentes prestaciones. En este trabajo se ha estudiado si los lenguajes con paralelismo explícito cumplen este requisito y son, por lo tanto, adecuados para programar este tipo de máquinas. El exceso de paralelismo, esto es, el uso de mayor paralelismo en el programa que el proporcionado por la máquina para esconder la latencia en la comunicación, se presenta en este trabajo como una solución a los problemas de eficiencia de los programas con paralelismo explícito cuando se ejecutan en máquinas que no tienen una granularidad adecuada. Con esta técnica, por lo tanto, los programas escritos con estos lenguajes pueden transportarse con eficiencia a diferentes máquinas. Para llevar a cabo el estudio de los lenguajes con paralelismo explícito, se ha desarrollado un modelo abstracto de paralelismo, en el cual un sistema está formado por una jerarquía de máquinas virtuales paralelas. Este modelo permite realizar un análisis genérico de la implementación de este tipo de lenguajes, ya sea sobre una máquina con sistema operativo o directamente sobre la máquina física. Este análisis genérico se ha aplicado a un lenguaje de este tipo, el lenguaje Ada. Se han estudiado las características específicas de Ada que pueden influir en la implementación eficiente del lenguaje, analizando también la propuesta de modificación del lenguaje correspondiente al proceso de revisión Ada 9X. Dentro del marco del modelo de paralelismo, se analiza también la problemática específica de las implementaciones del lenguaje sobre el sistema operativo. En este tipo de implementaciones, las interacciones de un programa con el entorno externo pueden causar ciertos problemas, como el bloqueo del proceso correspondiente del sistema operativo, que disminuyen el rendimiento del programa. Se analizan estos problemas y se proponen soluciones a los mismos. Se desarrolla en profundidad un ejemplo de este tipo de problemas: El acceso al estándar gráfico GKS desde Ada.---ABSTRACT---The major obstacle to the widespread utilization of the parallel machines is the lack of programming tools allowing the development of software portable between machines with different performance. This dissertation analyzes whether languages with explicit parallelism fulfil this requirement. The approach of using programs with more parallelism than available on the machine (parallel slackness) is presented. This technique can solve the efficiency problems appearing in the execution of programs with explicit parallelism over machines with a too coarse granularity. Therefore, with this approach programs can run efficiently on different machines. A new abstract model of parallelism allowing the generic study of the implementation of languages with explicit parallelism is developed. In this model, a parallel system is described by a hierarchy of parallel virtual machines. This generic analysis is applied to Ada language. Ada specific features with problematic implementation are identified and analyzed. The change proposals to Ada language in the frame of Ada 9X revisión process are also analyzed. The specific problematic of the language implementation on top of the operating system is studied under the scope of the parallelism model. With this kind of implementation, program interactions with extemal environments can lead to problems, like the blocking of the corresponding operating system process, decreasing the program execution performance. A practical example of this kind of problems, the access to GKS (Graphic Kernel System) from Ada programs, is analyzed and the implemented solution is described.
Resumo:
La regulación sobre la inclusión de medios de apoyo (subtítulos, audiodescripción y lengua de signos) en medios de comunicación audiovisual normalmente responde a cuestiones sobre cuánta programación debe incluir estos medios de apoyo y cómo deben ser sus características técnicas y funcionales. Sin embargo, deja al arbitrio del prestador del servicio la elección de cuáles son los contenidos concretos a los que aplicar los medios de apoyo. El presente trabajo pretende definir una serie de criterios para escoger los programas a los que aplicar los medios de apoyo. Dada la indefinición legal existente en ese aspecto en España, se parte de la forma de resolver este problema en otros territorios, de donde se abstraen una serie de criterios comunes y se clasifican en categorías más generales.
Resumo:
La tesis propone el concepto y diseño de una arquitectura cognitiva para representación de conocimiento profesional especializado en clases de dominios relacionados con el mundo físico. Constituye una extensión de los trabajos de B.Chandrasekaran, potenciando el concepto de arquitectura basada en tareas genéricas propuesta por dicho autor. En base a la arquitectura propuesta, se ha desarrollado un entorno como herramienta de construcción de sistemas expertos de segunda generación, así como un lenguaje para programación cognitiva (DECON)- Dicho entorno, programado en lenguaje C sobre UNIX, ha sido utilizado para el desarrollo de un sistema para predicción de avenidas en la Cuenca Hidrográfica del Jucar, en el marco del proyecto SAIH. Primeramente, la tesis plantea el problema de la modelización del comportamiento de los sistemas físicos, reflejando las limitaciones de las formas clásicas de representación del conocimiento para abordar dicho problema, así como los principales enfoques más recientes basados en el concepto de arquitectura cognitiva y en las técnicas de simulación cualitativa. Se realiza después una síntesis de la arquitectura propuesta, a nivel del conocimiento, para detallar posteriormente su desarrollo a nivel simbólico y de implementación, así como el método general para la construcción de modelos sobre la arquitectura. Se muestra también un resumen de los principales aspectos del desarrollo de software. Finalmente, en forma de anejos, se presenta un caso de estudio, el sistema SIRAH (Sistema Inteligente de Razonamiento Hidrológico), junto con la gramática formal del lenguaje de soporte para la definición de modelos.---ABSTRACT---The thesis proposes the concept and design of a cognitive architecture for professional knowledge representation, specialized in domain classes related to the physical world. It is an extensión of the Chandrasekaran's work, improving the concept of Generic Task based architecture introduced by this author. Based on the proposed architecture, an environment has been developed, as a case of second generation building expert systems tool, as well as a language for cognitive programming (DECON). The environment, programmed in C lenguage on UNIX operating system, has been used to develop a system for flood prediction in the Jucar watershed, inside of the SAIH project. Firstly, the behavior modeling problem of physical systems is discussed, showing the limitations of the classical representations to tackle it, beside the most recent approaches based on cognitive architecture concepts and qualitative simulation technique. An overview of the architecture at the knowledge level is then made, being followed by its symbolic and implementation level description, as well as a general guideline for building models on top of the architecture. The main aspects of software development are also introduced. Finaly, as annexes, a case of study -the SIRAH system (Sistema Inteligente de RAzonamiento Hidrológico)- is introduced, along with the formal grammar of the support language for model definition.
Resumo:
En el contexto de las técnicas de validación de programas, de las estructuras de axiomatización de la programación planteadas por Hoare y del desarrollo de la Lógica de la Programación que Dijkstra realiza con el operador wp, hemos dotado a los elementos esenciales que intervienen en dicho desarrollo de una estructura que permite su estudio en el ámbito de las categorias. En este trabajo se demuestra que el conjunto de precondiciones de un fragmento de programa anotado tiene estructura de N-categoría y que sucede lo mismo con el conjunto de postcondiciones. Más aún, se ha puesto de manifiesto (y probado) que el operador wp actúa como un funtor entre estos pares de N-categorías. Además, los conjuntos de guardas surgen de un modo natural en la lógica de la programación, han sido tratados desde el punto de vista de la semántica denotacional (Wlrth para el PASCAL y Scott y otros, después, en un enfoque más general) y presentados por Manes y Arbib en su semántica parcialmente aditiva. Pues bien, en este trabajo se demuestra que los conjuntos de guardas tienen también estructura de N-categoría y gue cualguier N-categoría dotada de una suma definida adecuadamente tiene estructura de conjunto de guardas, de tal modo, además, gue el preorden inducido por la suma en el conjunto de guardas coincide con la flecha de la N-categoría. Esta suma es, en concreto, la disyunción exclusiva, lo que adicionalmente supone una sorprendentemente sencilla definición alternativa a la suma de las categorías parcialmente aditivas definida por Manes y Arbib. Con todo esto, se aportan herramientas conceptuales para entender mejor y resolver más eficientemente los problemas que tiene planteados la lógica de la programación, pues se dispone de un punto de vista distinto y nuevo y de toda una familia de instrumentos adicionales.---ABSTRACT---In the context of program validation techniques, Hoare's systems for programming and Dijkstra's development of the logic of programming, based on the operator wp, we have endowed the essential features of this development with a structure that permits to study them in the frame of category theory. In this thesis we show that the set of preconditions of an annotated program segment is an N-category, and the same happens for the set of postconditions. Even more, it is shown that the operator wp acts as a functor between those pairs of Ncategories. Furthermore, guard sets come out in a natural way in the logic of programming, they have been considered from a denotational semantics point of view (Wirth for Pascal and afterwards Scott and al. in a more general setting) and they have been embodied by Manes and Arbib in their partially additive semantics. Then, it is shown in this thesis that the above mentioned guard sets also have the structure of an N-category and that any N-category with an appropiately defined sum has the structure of a guard set in such a way that, besides, the preorder defined in the guard set by the sum operation coincides with the arrows of the N-category. This sum is just the exclusive or of Boolean Logic and this fact adds a surprisingly simple alternative definition for the sum operation in Manes and Arbib partially additive categories. The present work, in summary, makes a contribution of conceptual tools for a better understanding and a more efficient solution of the problems posed to the logic of programming and it does so by providing a new different point of view and a whole family of additional techniques.
Resumo:
A raíz de la aparición de los procesadores dotados de varios “cores”, la programación paralela, un concepto que, por otra parte no era nada nuevo y se conocía desde hace décadas, sufrió un nuevo impulso, pues se creía que se podía superar el techo tecnológico que había estado limitando el rendimiento de esta programación durante años. Este impulso se ha ido manteniendo hasta la actualidad, movido por la necesidad de sistemas cada vez más potentes y gracias al abaratamiento de los costes de fabricación. Esta tendencia ha motivado la aparición de nuevo software y lenguajes con componentes orientados precisamente al campo de la programación paralela. Este es el caso del lenguaje Go, desarrollado por Google y lanzado en 2009. Este lenguaje se basa en modelos de concurrencia que lo hacen muy adecuados para abordar desarrollos de naturaleza paralela. Sin embargo, la programación paralela es un campo complejo y heterogéneo, y los programadores son reticentes a utilizar herramientas nuevas, en beneficio de aquellas que ya conocen y les son familiares. Un buen ejemplo son aquellas implementaciones de lenguajes conocidos, pero orientadas a programación paralela, y que siguen las directrices de un estándar ampliamente reconocido y aceptado. Este es el caso del estándar OpenMP, un Interfaz de Programación de Aplicaciones (API) flexible, portable y escalable, orientado a la programación paralela multiproceso en arquitecturas multi-core o multinucleo. Dicho estándar posee actualmente implementaciones en los lenguajes C, C++ y Fortran. Este proyecto nace como un intento de aunar ambos conceptos: un lenguaje emergente con interesantes posibilidades en el campo de la programación paralela, y un estándar reputado y ampliamente extendido, con el que los programadores se encuentran familiarizados. El objetivo principal es el desarrollo de un conjunto de librerías del sistema (que engloben directivas de compilación o pragmas, librerías de ejecución y variables de entorno), soportadas por las características y los modelos de concurrencia propios de Go; y que añadan funcionalidades propias del estándar OpenMP. La idea es añadir funcionalidades que permitan programar en lenguaje Go utilizando la sintaxis que OpenMP proporciona para otros lenguajes, como Fortan y C/C++ (concretamente, similar a esta última), y, de esta forma, dotar al usuario de Go de herramientas para programar estructuras de procesamiento paralelo de forma sencilla y transparente, de la misma manera que lo haría utilizando C/C++.---ABSTRACT---As a result of the appearance of processors equipped with multiple "cores ", parallel programming, a concept which, moreover, it was not new and it was known for decades, suffered a new impulse, because it was believed they could overcome the technological ceiling had been limiting the performance of this program for years. This impulse has been maintained until today, driven by the need for ever more powerful systems and thanks to the decrease in manufacturing costs. This trend has led to the emergence of new software and languages with components guided specifically to the field of parallel programming. This is the case of Go language, developed by Google and released in 2009. This language is based on concurrency models that make it well suited to tackle developments in parallel nature. However, parallel programming is a complex and heterogeneous field, and developers are reluctant to use new tools to benefit those who already know and are familiar. A good example are those implementations from well-known languages, but parallel programming oriented, and witch follow the guidelines of a standard widely recognized and accepted. This is the case of the OpenMP standard, an application programming interface (API), flexible, portable and scalable, parallel programming oriented, and designed for multi-core architectures. This standard currently has implementations in C, C ++ and Fortran. This project was born as an attempt to combine two concepts: an emerging language, with interesting possibilities in the field of parallel programming, and a reputed and widespread standard, with which programmers are familiar with. The main objective is to develop a set of system libraries (which includes compiler directives or pragmas, runtime libraries and environment variables), supported by the characteristics and concurrency patterns of Go; and that add custom features from the OpenMP standard. The idea is to add features that allow programming in Go language using the syntax OpenMP provides for other languages, like Fortran and C / C ++ (specifically, similar to the latter ), and, in this way, provide Go users with tools for programming parallel structures easily and, in the same way they would using C / C ++.
Resumo:
La calidad es uno de los principales retos de la construcción de software. En la Ingeniería del Software (IS) se considera a la usabilidad como un atributo de calidad. Al principio se veía a la usabilidad como un requisito no funcional.Se asumía que la usabilidad era una propiedad exclusiva de la presentación de la información.Se creía que separando la capa de presentación del resto, se podía desarrollar un producto software usable.Debido a la naturaleza del sistema y a las necesidades del usuario, a menudo se debe ir más lejos y no basta con tener en cuenta la presentación para obtener un software usable. La comunidad de la Interacción Personar Ordenador (IPO) ha propuesto recomendaciones para mejorar la usabilidad. Algunas de esas recomendaciones tienen impacto directo en la funcionalidad del producto software. En estudios recientes también se ha evaluado la relación entre la usabilidad y los requisitos funcionales. Estas investigaciones sugieren que la usabilidad debe ser tenida en cuenta desde las etapas iniciales de la construcción para evitar costosos cambios posteriores. La incorporación de las características de usabilidad agrega cierta complejidad al proceso de desarrollo. El presente trabajo evalúa la posibilidad de usar patrones para la incorporación de usabilidad en el desarrollo de un producto software. Concretamente se evalúan los siguientes patrones de programación de usabilidad (PPUs): Abort Operation,Progress Feedback y Preferences. Se utilizan unas Pautas de Desarrollo de Mecanismos de Usabilidad(PDMUs) para estos tres mecanismos de usabilidad. Estas pautas poponen patrones para la educción y posterior incorporación de la usabilidad en las distintas fases de la programación. En esta investigación se aborda el desarrollo de un producto software desde la deducción de requisitos hasta la implementación. En cada fase se incorporan los mecanismos de usabilidad de acuerdo a las recomendaciones de las PDMUs. Mediante el desarrollo de un software real se ha evaluado la factibilidad del uso de las PDMUs obteniendo como resultado propuestas de mejoras en estas pautas. Se evalúa asimismo el esfuerzo de incorporación de los mecanismos de usabilidad. Cada evaluación aporta datos que proporcionan una estimación del esfuerzo adicional requerido para incorporar cada mecanismo de usabilidad en el proceso de desarrollo del software.---ABSTRACT---Quality is a major challenge in software construction. Software engineers consider usability to be a quality attribute. Originally, usability was viewed as a nonr functional requirement. Usability was assumed to be simply an information presentation property. There was a belief that a usable software product could be developed by separating the presentation layer from the rest of the system. Depending on the system type and user needs, however, usability often runs deeper, and it is not enough to consider just presentation to build usable software. The humanrcomputer interaction (HCI) community put forward a list of recommendations to improve usability. Some such recommendations have a direct impact on software product functionality. Recent studies have also evaluated the relationship between usability and functional requirements. This research suggests that usability should be taken into account as of the early stages of software construction to prevent costly rework later on. The inclusion of usability features is an added complication to the development process. The research reported here evaluates the possibility of using patterns to incorporate usability into a software product. Specifically, it evaluates the following usability programming patterns (UPPs): Abort Operation, Progress Feedback and Preferences. Usability Mechanism Development Guides (USDG) are applied to these three usability mechanisms. These guides propose patterns for eliciting and later incorporating usability into the different software development phases, including programming. The reported research addresses the development of a software product from requirements elicitation through to implementation. Usability mechanisms are incorporated into each development phase in accordance with USDG recommendations. A real piece of software was developed to test the feasibility of using USDGs, outputting proposals for improving the guides. Each evaluation yields data providing an estimate of the additional workload required to incorporate each usability mechanism into the software development process.
Resumo:
La usabilidad es uno de los aspectos más importantes de la calidad del software para sistemas software interactivos. A pesar de ello, la Ingeniería del Software (IS) se ha centrado históricamente en problemas de funcionalidad y de persistencia, relegando a un segundo plano aspectos de la interacción con el usuario, y más concretamente, de la usabilidad. Ha sido principalmente la comunidad Interacción Persona-Ordenador (IPO) la que ha propuesto recomendaciones para mejorar la usabilidad. En estudios recientes se ha encontrado una relación entre algunas de las recomendaciones de usabilidad propuestas por la comunidad IPO y la funcionalidad de un sistema software. Estas recomendaciones se conocen como Características Funcionales de Usabilidad (CFU), divididas en subtipos más especializados llamados Mecanismos de Usabilidad (MU). Estos estudios han propuesto unas Guías para la Educción de Requisitos por cada mecanismo de usabilidad (GERMU). Posteriormente, se continúan los estudios y con base al repositorio de conocimiento suministrado por las GERMUs, se proponen diseños de más bajo nivel e implementación que facilite la incorporación de un MU en un sistema software. Los resultados se formalizaron en lo que se llamo Patrón de Programación de Usabilidad (PPU). El presente trabajo de investigación se centra en evaluar el impacto debido a la incorporación de mecanismos de usabilidad en el desarrollo de un sistema software. Concretamente el MU Abortar Operación (MU AO), el MU Retroalimentación del Progreso (MU RP) y MU Preferencias (MU P), tanto a nivel de requisitos como a nivel de implementación. Para satisfacer este objetivo, en esta investigación se aborda el desarrollo de un sistema software desde la actividad de educción de requisitos hasta la implementación. Para la actividad de requisitos se hace uso de la GERMU AO, GERMU RP y la GERMU P. La construcción del sistema sigue el modelo incremental. En cada incremento se construye un conjunto de casos de uso junto con uno o varios MUs. Para incorporar cada MU en implementación, se hace uso del PPU Abortar Operación (PPU AO), PPU Retroalimentación del Progreso (PPU RP) y PPU Preferencias (PPU P). En el primer incremento se incorpora el PPU AO, en el segundo el PPU RP, en el tercer incremento PPU P, y en el último incremento, se añaden los restantes casos de uso junto con los tres PPUs al sistema. Tanto en la actividad de requisitos, como en la construcción de cada incremento se evalúa el impacto de la incorporación de tales PPUs. Cada evaluación proporciona datos que pueden dar una estimación del esfuerzo requerido para incorporar cada PPU en las distintas actividades del desarrollo del sistema. Como resultado de la experiencia del uso de los diferentes artefactos relacionados en esta investigación se obtienen propuestas de mejoras para los PPUs, y adicionalmente para las GERMUs.
Resumo:
Este trabajo contiene el diseño y análisis de dos modalidades de docencia de programación de aplicaciones móviles, con el objetivo de aumentar el interés de los estudiantes de enseñanza secundaria por la Ingeniería Informática. Primeramente se analizó la estructura y el contenido de las diferentes materias relacionadas con la informática que existen actualmente en la educación secundaria en España, con el fin de localizar las carencias del currículo. Estas carencias principales son: la falta de reconocimiento de la Ingeniería informática al mismo nivel que el resto de ingenierías y una falta de contenidos relacionados con el desarrollo de software, tanto a nivel de programación como de diseño. A continuación, una vez analizados diferentes posibilidades de entornos con los que desarrollar dichos cursos, se diseñaron los dos modelos de docencia utilizando App Inventor como herramienta conductora, con los que poder cubrir esos conocimientos. El primer modelo consiste en un curso de cuatro semanas a impartir directamente en el centro, mientras que el segundo se trata de un taller de una mañana a impartir en la Escuela Técnica Superior de Ingenieros Informáticos de la Universidad Politécnica de Madrid. De los resultados de esos modelos se han obtenidos resultados muy positivos en cuanto al incremento de los conocimientos de los alumnos sobre informática, además de aumentar su interés por la Ingeniería Informática y obtener una visión más ajustada a la realidad de la misma.---ABSTRACT---This work details the design and realization of a workshop and a course for teaching mobile application programming to Spanish high school students, with the aim of increasing their interest in Computing. In order to locate the shortcomings of the curriculum, the structure and contents of various subjects related to Computing in currently secondary education in Spain were analyzed. The results show a lack of recognition of computer engineering at the same level as the rest of engineering disciplines and a lack of content related to software development, both in terms of programming and design. Then, after analyzing existing programming environments available for covering the basic programming objectives, App Inventor was chosen as mobile programming environment for both teaching activities (the workshop and the course). The first activity consists of a four-week course to teach directly in the high school, while the second one is a 4-hour workshop to be held at the university. The workshop and the course were carried out with students of two secondary schools, obtaining very positive results in terms of increasing students’ knowledge about computers, increasing their interest in Computing, and making them get a more accurate vision of the discipline.
Resumo:
En este Trabajo Fin de Grado se aborda la concepción, diseño, desarrollo y testeo de un robot esférico. En el se cubre el diseño mecánico y su fabricación, el modelado dinámico y su control, y el diseño hardware y software.
Resumo:
El siguiente proyecto versa sobre la programación en lenguaje java del algoritmo de humanización MIDI desarrollado por Jorge Grundman en su tesis La Humanización de la Interpretación Virtual: Tres ejemplos significativos de la obra de Chopin. Este algoritmo, denominado Zig-Zag tiene como finalidad lograr que una partitura interpretada por un ordenador tenga unas características similares a la lectura a primera vista de la misma por un pianista. Para ello, basa su funcionamiento en una aleatorización del tempo en base a una serie de parámetros, a una modificación de la dinámica acorde a la modificación de tempo y a una segunda aleatorización para cada figura de la partitura. Este algoritmo tiene un gran campo de aplicación como complemento a los diversos secuenciadores y editores de partituras que existen en la actualidad, proporcionando nuevas características a los mismos. La programación del algoritmo se ha llevado a cabo empleando el Java SDK (Standard Developement Kit) 7 y las herramientas que proporciona esta plataforma para el manejo y modificación de los mensajes MIDI. ABSTRACT. The next project is about the programming in Java language of the MIDI humanization algorithm developed by Jorge Grundman in his thesis La Humanización de la Interpretación Virtual: Tres ejemplos significativos de la obra de Chopin. This algorithm, called Zig-Zag aims to have similar characteristics in a score performed by a computer than in the sight reading by a pianist. To this end, it bases its process in a randomization of the tempo from several parameters, a modification of the dynamic according to the change of tempo and a second randomization for each figure in the score. This algorithm has a big scope of application as complement for the different sequencers and score editors that already exist, providing new features to them. The algorithm has been programmed using the Java SDK (Standard Development Kit) 7 and the tools that this platform provides to handle and modify MIDI messages.
Resumo:
El objetivo principal de crear un espacio web para el Museo Histórico de la Informática (MHI) perteneciente a la Escuela Técnica Superior de Ingenieros Informáticos (ETSIINF) de la Universidad Politécnica de Madrid (UPM) es la difusión de la historia de la informática entre el público en general. Si bien es cierto que existe ya una página web de consulta del MHI con algunas imágenes y contenido sobre los objetos que allí se exhiben, es también reseñable que se trata de un espacio obsoleto, lleno de carencias y extremadamente difícil de gestionar y actualizar, por lo que se hacía imprescindible actualizar el diseño del espacio web, los contenidos y el sistema de gestión de los mismos, cosa que es de gran interés para un lugar divulgativo. En la actualidad, existen maneras mucho más amigables para el usuario de navegar por una web; y de la misma manera para un administrador, gestionar el contenido de la misma y mantener a los usuarios bien informados de todo lo que se ofrece en cada momento. Esto es posible gracias a los sistemas de gestión de contenidos o content management system (CMS), de los que se hablará lo largo de todo el documento. Estos sistemas, dan una facilidad mucho mayor a los encargados de llevar al día una página web, sin tener que saber de programación, lenguajes o informática en general, ya que incorporan paneles de control muy intuitivos y fáciles de manejar, que son una ventaja tanto para ellos como para los usuarios. Es por esta razón que, hay páginas web como la de las empresas IKEA, Ubuntu o, en especial para el caso que compete al documento, el museo del Louvre usan gestores de contenidos para sus páginas web. Y es que las ventajas y facilidades que ofrece un CMS son realmente interesantes y se tratará de todas ellas en el documento, de la elección del CMS que mejor se ajusta a los requisitos del museo, las restricciones a la hora del despliegue en el ámbito de la ETSIINF y de cómo mejorará esto la calidad visual y divulgativa del MHI. Este trabajo se desarrolla a lo largo de 11 capítulos, en los que se muestra como construir un sitio web, las posibilidades y la elección final para este caso. En el primer capítulo se hace una pequeña introducción de lo que es el proyecto, se especifican los objetivos, la motivación del mismo y el alcance que tiene. En el segundo capítulo se muestra la información que se ha recopilado en el trabajo de investigación que se hace previo al desarrollo. En él se muestran los distintos tipos de páginas web, que tecnologías y lenguajes se pueden usar para su construcción, una comparativa sobre otras entidades similares al MHI, las limitaciones que presenta el entorno y la elección final que se consideró más adecuada para este caso. En el capítulo tres se empieza a desarrollar la solución a través del diseño. Aquí se puede encontrar el diseño de más bajo nivel que se le presenta al cliente para sentar las bases del trabajo, el diseño de alto nivel con un mayor grado de realidad que el anterior y una preparación de lo que serán los planes de prueba. El capítulo cuatro muestra todo lo que se ha usado en la implementación y la integración de la página web: herramientas, tecnologías, plantillas de diseño y módulos que proporcionan distintas funcionalidades. Llegados al capítulo cinco, se puede ver una detallada documentación de los resultados de las pruebas de usabilidad y accesibilidad realizadas, y las conclusiones que subyacen de estas. Una vez acabada la implementación del sitio web del MHI, en el capítulo seis se intenta hacer una labor de consultoría, mostrando precios y presupuestos de las distintas tareas que se han llevado a cabo para la realización de este proyecto. En el capítulo siete se extraen las conclusiones de todo lo acontecido en los capítulos anteriores y en el ocho unas líneas sobre posibles trabajos futuros que se podrían llevar a cabo en base a lo que ya se tiene en la institución, incluido este trabajo. Para facilitar la comprensión y satisfacer la curiosidad del lector, se ha incluido en el capítulo nueve la bibliografía con toda la documentación consultada y en el diez un glosario de términos para la aclaración de términos y acrónimos más técnicos. Para acabar, en el capítulo once se anexionan tanto el documento que se usó para las pruebas de usabilidad como un manual de administrador para el sitio web, que hace más amigable el entorno para las personas que lo tengan que mantener en un futuro.---ABSTRACT---The main goal of creating a website for the Informatics Historical Museum (“Museo Histórico de la Informática” or MHI) located in the Higher Technical School of Informatics Engineers (“Escuela Técnica Superior de Ingenieros Informáticos” or ETSIINF) of the Polytechnic University of Madrid (“Universidad Politécnica de Madrid” UPM), is to promote the aforementioned museum as to increase its reach to the public. While it is true that there already is a consulting website with some pictures and information about the items which are displayed in the building, it is outdated and the data is scarce. Moreover, it is extremely complicated to manage and to regularly update the web page, which is very important for informative/broadcasting media. Currently, there are easier ways for the users of a website to consult whatever information they want, as well as it is now easy for a website manager to display new content and to keep the users informed about what is been offered at every moment. This is possible because of content management systems (CMS), which will be discussed throughout the entire paper. These systems make it easier to use for the administrator of a website to keep it up to date without the necessity for them of having any knowledge or skills in programming, languages or computing, because the systems have an intuitive control panel that is easy to use, which is an advantage for both managers and users. Because of all these reasons, there are lots of companies that use this kind of systems, such as IKEA, Ubuntu or, especially, the Louvre Museum, to which we direct our attention all throughout this report. It is easy to notice that these systems have an important and very interesting number of perks and benefits. In the next chapters of the document we will explain the benefits of the program as well as the choice on the kind of CMS that best suits the requirements of the museum and, finally, the restrictions of the school for the deployment and of how all of this will improve the visual and informational qualities of the MHI. This work is developed over 11 chapters, shown how to build up a website, the possibilities and the final choice for this case. In the first chapter a brief introduction of the project, goals, motivation and scope thereof having specified are done. Before the development of the website, the second chapter shows de information of the researching work. It discusses the different types of websites, technologies and languages that can be used for build-up, a comparison of similar entities to MHI, the limitations of the environment and the final choice was considered more appropriate for this case. Chapter three begins to develop the design of the solution. Here there are the lowest level design that presents the customer to fix any problem, the high level design with a higher degree of reality than the last and the test plans. Chapter four shows everything that has been used in the implementation and integration of the website: tools, technologies, design templates and modules that provide different functionalities. Reaching the fifth chapter, you can see a detailed documentation of the results of the usability and accessibility tests made to some users and the conclusions of it. Once the implementation of MHI website is done, in chapter six there is a consultancy work, showing prices and budgets of the different tasks which were carried out for this project. In chapter seven there are the conclusions of what happened in the previous chapters and eight chapter shows possible future works that could be carried out based on what the institution already have, including this work. To make easier to the reader understand this paper and satisfy his curiosity, the chapter nine includes the bibliography consulted with all the documentation and chapter ten has a glossary of terms and an explanation of technical terms and acronyms. Finally, in chapter eleven there are attached both the document that was used for usability testing as a manual administrator for the website, making the environment friendlier for people who have to maintain it in the future.