scieee AI-readable full text Open interactive document viewer

Desarrollo de una herramienta para analizar el impacto social durante el proceso de diseño de un producto TIC

Borja García, Jorge; González Zamorano, Fernando

Abstract

Durante los últimos años, la sociedad está notando una digitalización avanzada en la que todas las personas hacemos uso de algún producto relacionado con las nuevas tecnologías. En muchas ocasiones, los desarrolladores de estos productos no son conscientes del poder que tienen en sus manos, y esto, puede tener consecuencias negativas para los usuarios que hacen uso de ellos, el planeta o la reputación de la propia empresa, al no tener en cuenta distintos factores a la hora de diseñarlos. Por ello, es necesario concienciar a los desarrolladores del gran impacto que puede tener un mal diseño en los productos que están en desarrollo y salen al mercado, y la importancia que tiene conseguir un software de calidad que beneficie a todas las partes implicadas. Por esto, hemos desarrollado una herramienta que consiste en un cuestionario para conocer si el proceso de diseño de un producto ha seguido los estándares éticos. Pese a que la herramienta no elimine el problema, creemos que puede ser una solución parcial que haga visible el impacto que puede tener la despreocupación por las cuestiones éticas durante la fase de diseño de un producto y que ayude a frenar la realización.

Full text

UNIVERSIDAD COMPLUTENSE DE MADRID FACULTAD DE INFORMÁTICA Grado en Ingeniería Informática DESARROLLO DE UNA HERRAMIENTA PARA ANALIZAR EL IMPACTO SOCIAL DURANTE EL PROCESO DE DISEÑO DE UN PRODUCTO TIC DEVELOPING A TOOL FOR THE ANALYSIS OF SOCIAL IMPACT TO BE USED DURING THE DESIGN PROCESS OF AN ICT PRODUCT Autores: Jorge Borja García y Fernando González Zamorano Profesor director: Marcos Sánchez-Élez Martín Curso académico: 2020/2021 Resumen: durante los últimos años, la sociedad está notando una digitalización avanzada en la que todas las personas hacemos uso de algún producto relacionado con las nuevas tecnologías. En muchas ocasiones, los desarrolladores de estos productos no son conscientes del poder que tienen en sus manos, y esto, puede tener consecuencias negativas para los usuarios que hacen uso de ellos, el planeta o la reputación de la propia empresa, al no tener en cuenta distintos factores a la hora de diseñarlos. Por ello, es necesario concienciar a los desarrolladores del gran impacto que puede tener un mal diseño en los productos que están en desarrollo y salen al mercado, y la importancia que tiene conseguir un software de calidad que beneficie a todas las partes implicadas. Por esto, hemos desarrollado una herramienta que consiste en un cuestionario para conocer si el proceso de diseño de un producto ha seguido los estándares éticos. Pese a que la herramienta no elimine el problema, creemos que puede ser una solución parcial que haga visible el impacto que puede tener la despreocupación por las cuestiones éticas durante la fase de diseño de un producto y que ayude a frenar la realización de diseños poco éticos. Palabras clave: Diseño Ético, Inteligencia Artificial, Auditoría, Modelo-Vista-Controlador, HTML, SQL, JavaScript, PHP, Bootstrap. Abstract: In recent years, society is witnessing an advanced digitization in which everyone is making use of some product related to new technologies. Very often, the developers of these products are not aware of the power they have in their hands, and this can have negative consequences for the users, the planet or the reputation of the company itself, as a result of not taking into account certain factors in the design process. Therefore, it is necessary to make developers aware of the great impact that a bad design can have on the products that are being developed and made available on market, and the importance of achieving quality software that benefits all parties involved. For this reason, we have developed a tool that consists of a questionnaire to find out if the design process of a product has followed ethical standards. Although the tool does not eliminate the problem, we believe that it can be a partial solution that highlights the impact that can have the lack of concern for ethical issues during the design phase of a product and helps to curb the realization of unethical designs. Keywords: Ethical Design, Artificial Intelligence, Auditing, Model-View-Controller, HTML, SQL, JavaScript, PHP, Bootstrap. Índice Capítulo 1. Introducción ............................................................................................................ 1 1.1 La ética en el diseño tecnológico ..................................................................................... 1 1.2 Diseño no ético: ejemplos ................................................................................................ 5 1.2.1 Reconocimiento facial discriminatorio ..................................................................... 5 1.2.2 Tay, el bot de Microsoft que desarrolló un comportamiento problemático .............. 7 1.2.3 Conscious Coffees .................................................................................................... 7 1.3 La informática en el dilema por conseguir un diseño ético ............................................. 8 1.4 Objetivos .......................................................................................................................... 9 1.5 Organización de la memoria .......................................................................................... 10 Chapter 1. Introduction ............................................................................................................ 11 1.1 Ethics in technological design ....................................................................................... 11 1.2 Unethical design: examples ........................................................................................... 15 1.2.1 Discriminatory Facial Recognition ......................................................................... 15 1.2.2 Tay, the Microsoft bot that developed problematic behavior ................................. 16 1.2.3 Conscious Coffees .................................................................................................. 17 1.3 Computer Science in the dilemma of achieving ethical design ..................................... 17 1.4 Objectives ...................................................................................................................... 18 1.5 Organization of the document ........................................................................................ 19 Capítulo 2. Planificación .......................................................................................................... 20 2.1 Descripción de las fases del trabajo ............................................................................... 20 Capítulo 3. Proceso de búsqueda de las preguntas del cuestionario ........................................ 24 3.1 Proceso de investigación ................................................................................................ 24 3.2 Primeras conclusiones .................................................................................................... 26 3.3 Creación del cuestionario ............................................................................................... 29 3.4 Reuniones mantenidas para la creación del cuestionario ............................................... 30 3.4.1 Primeras reuniones con el tutor del trabajo ............................................................. 31 3.4.2 Reuniones con Elena Martínez Vicente (P2PModels) ............................................ 35 3.5 Conclusiones del proceso ............................................................................................... 39 Capítulo 4. Desarrollo de la herramienta ................................................................................. 41 4.1 Diseño ............................................................................................................................ 41 4.2 Frontend ......................................................................................................................... 43 4.2.1. Página de inicio ...................................................................................................... 43 4.2.2 Registro ................................................................................................................... 44 4.2.3 Login ....................................................................................................................... 45 4.2.4 Mi perfil .................................................................................................................. 46 4.2.5 Cuestionario ............................................................................................................ 47 4.2.6 Informe final ........................................................................................................... 48 4.2.7 Añadir una nueva pregunta ..................................................................................... 49 4.3 Base de datos.................................................................................................................. 49 4.3.1 Tabla de preguntas .................................................................................................. 50 4.3.2 Tabla de respuestas ................................................................................................. 52 4.3.3 Tabla de secciones .................................................................................................. 53 4.3.4 Tabla de usuarios .................................................................................................... 53 4.4 Implementación.............................................................................................................. 54 4.4.1 Cuestionario ............................................................................................................ 54 4.4.2 Usuarios .................................................................................................................. 61 4.4.3 Añadir pregunta ...................................................................................................... 71 Capítulo 5. Conclusiones y trabajo futuro ............................................................................... 88 5.1 Conclusiones .................................................................................................................. 88 5.2 Asignaturas .................................................................................................................... 90 5.3 Trabajo futuro ................................................................................................................ 91 Chapter 5. Conclusions and future work .................................................................................. 92 5.1 Conclusions .................................................................................................................... 92 5.2 Subjects .......................................................................................................................... 94 5.3 Future work .................................................................................................................... 94 Capítulo 6. División del trabajo ............................................................................................... 96 6.1 Contribuciones de Jorge Borja García ........................................................................... 96 6.2 Contribuciones de Fernando González Zamorano ......................................................... 99 6.3 Contribuciones importantes de los dos miembros del equipo ..................................... 101 Apéndice ................................................................................................................................ 104 Introducción ....................................................................................................................... 104 Acción y supervisión humanas .......................................................................................... 105 Derechos fundamentales ................................................................................................ 105 Solidez técnica y seguridad ................................................................................................ 106 Resistencia a los ataques ................................................................................................ 106 Plan de repliegue ............................................................................................................ 107 Fiabilidad y reproducibilidad ......................................................................................... 108 Gestión de la privacidad y los datos .................................................................................. 108 Respeto de la privacidad y de la protección de datos .................................................... 108 Calidad e integridad de los datos ................................................................................... 109 Acceso a los datos .......................................................................................................... 110 Transparencia ..................................................................................................................... 110 Trazabilidad ................................................................................................................... 110 Explicabilidad ................................................................................................................ 111 Comunicación ................................................................................................................ 111 Diversidad, no discriminación y equidad........................................................................... 112 Necesidad de evitar sesgos injustos ............................................................................... 112 Accesibilidad y diseño universal ................................................................................... 112 Bienestar social y ambiental .............................................................................................. 113 Un producto sostenible y respetuoso con el medio ambiente ........................................ 113 Sociedad y democracia .................................................................................................. 113 Rendición de cuentas ......................................................................................................... 114 Auditabilidad.................................................................................................................. 114 Minimización de efectos negativos y notificación de estos ........................................... 114 Documentación de los equilibrios alcanzados ............................................................... 114 Bibliografía ............................................................................................................................ 116 7 1.2.2 Tay, el bot de Microsoft que desarrolló un comportamiento problemático Tay fue un bot de conversación creado por las divisiones de Tecnología e Investigación de Microsoft en 2016 [15]. Este bot era considerado por la compañía tecnológica un experimento para conocer más sobre la interacción entre las computadoras y los seres humanos, y fue desarrollado para la plataforma Twitter. Tay era un bot con una inteligencia artificial avanzada que tenía capacidad de aprendizaje, y por ello, conforme entablaba conversaciones con humanos iba almacenando y procesando datos de estas con el objetivo de perfeccionar su lenguaje, aptitudes y actitudes para aumentar su realismo en la simulación de una joven adolescente. Pese a que el bot tenía respuestas preprogramadas para ciertos temas tabú (política, religión o sexo) para evitar que los usuarios se aprovecharan de su “inocencia”, el desarrollo de Tay no fue el esperado durante las primeras horas de su lanzamiento. Al parecer, Tay no tenía ningún filtro a la hora de aprender de sus conversaciones con los usuarios y elaborar respuestas, además de nuevos tweets que publicar, y los usuarios se aprovecharon de ese comportamiento. Tay publicaba numerosos tweets por hora, y de pronto, comenzó a postear tweets muy diferentes a su comportamiento esperado. Se trataba de tweets racistas, xenófobos, homófobos e incluso tweets con tendencias nazis, lo que provocó la alta expectación en los usuarios de la plataforma y también la suspensión de la cuenta por parte de Microsoft, anunciando que era para realizar ajustes en el bot. Un portavoz de la compañía además declaró que “hay un esfuerzo coordinado por algunos usuarios para abusar de las habilidades para comentar de Tay y responder de forma inapropiada” [16]. Días después, Microsoft lanzó un comunicado donde confirmó que Tay estaba dado de baja, lamentando los polémicos tweets no intencionados del bot inteligente, y también anunció que Tay estaría de vuelta cuando estuvieran seguros de evitar conflictos que pusieran en peligro los principios y valores de la compañía. Unos días después, Microsoft volvió a lanzar a Tay, pero al poco tiempo entró en bucle escribiendo un mensaje acerca de tomarse un descanso, al publicar tantos tweets con pocos segundos de diferencia. Tay fue dada de baja definitivamente y su cuenta de Twitter se puso privada. Para contrastar los ejemplos anteriores, vamos a exponer el caso adverso: una compañía que sí tiene en cuenta los principios y preocupaciones éticas en todo momento. Este ejemplo mantiene buenas prácticas en su marketing ético y no en su diseño, ya que se trata de una empresa de producción y venta de café, y por lo tanto, no desarrolla productos tecnológicos, pero nuestro objetivo es dejar clara la idea de preocuparse por las cuestiones éticas. El marketing ético desde el punto de vista de las empresas consiste en comercializar sus bienes y servicios buscando cómo beneficiar al medio ambiente o a la sociedad además de beneficiar al cliente. Su objetivo es tomar decisiones desde una perspectiva no solo comercial sino también moral [17]. 1.2.3 Conscious Coffees Conscious Coffees es una compañía creada en 1996 que produce y vende café saludable con sede en Colorado, cuya filosofía es realizar prácticas éticas que ayuden al medio ambiente y a la sociedad dentro de la industria del café [18]. Así lo demuestran con su nombre, “Cafés Conscientes” en español, y con su logo, una huella de una mano humana, reflejando su 8 preocupación por el medio ambiente. Sus granos de café son 100% orgánicos, sin utilizar ningún producto químico agresivo que intervenga en el crecimiento de sus cultivos y así ayudar a sus clientes a tomar café completamente natural, y a los agricultores a cultivar plantas con un crecimiento natural sin modificar. Desde Conscious Coffees son conscientes del problema de la producción agrícola de café, donde hasta la mitad de tierra de cultivo podría perderse en 30 años por culpa del cambio climático y el efecto que tiene en el cultivo de este producto. Por ello, esta compañía trabaja sin cesar en mejorar sus tuberías de producción con el objetivo de beneficiar a sus agricultores y proveedores. Además, es una de las mejores empresas B-Corps, que se trata del grupo de empresas que están construyendo una economía más inclusiva y sostenible para todas las personas y el planeta. Por otra parte, además de su compromiso de asegurar que los procesos de producción son éticos, su programa CAFE está destinado a que las personas de algunos países de América del Sur pongan en marcha su negocio de café, y realizan talleres orientativos para ello. Además, también ofrecen apoyo donando café y enseñando nuevas técnicas de producción a estos nuevos agricultores que los ayuden a obtener los máximos beneficios posibles y de esta manera salgan adelante con su negocio de café. 1.3 La informática en el dilema por conseguir un diseño ético La informática tiene un inmenso poder de influencia. Algo aparentemente inofensivo como pueden ser unas cuantas líneas de código, puede alterar el comportamiento de las personas e influir en sus vidas, llegando a causar un gran impacto en la sociedad. Este impacto, puede tener dos variantes. Por una parte, la tecnología puede influir de forma positiva, y de hecho, su principal función debería ser esa, la de ayudar y beneficiar a las personas que la usen. Pero esto no siempre es así, ya que en algunas ocasiones puede provocar daños o influir de manera negativa, y esto no tiene porqué ser siempre de forma intencionada, sino que a veces, debido a la despreocupación en distintas partes durante el diseño, se pueden causar daños sin ser consciente de ello. Por lo tanto, creemos que es necesario concienciar a las personas de la influencia que tienen los productos tecnológicos que usamos hoy en día y las consecuencias que eso puede tener, ya que en la mayoría de ocasiones no somos conscientes de los efectos negativos o el daño que nos pueden causar. A pesar de ello, creemos que para solucionar este problema hay que centrar el foco en los desarrolladores, que son los principales responsables, para que se pueda frenar desde el principio y de esta forma evitar las consecuencias que después habrá que tratar y solucionar. Los desarrolladores están presentes durante todo el ciclo de vida de un producto, por lo que son los encargados de poner en práctica sus conocimientos para crear el software que compone cualquier producto tecnológico. Durante este ciclo, hay que hablar de los desarrolladores en la fase de diseño, ya que se trata de una fase muy importante que se debe realizar cuidadosamente y que determinará el impacto que tendrá el producto en la sociedad. Por ello, es de vital importancia que los desarrolladores se centren en producir software de calidad, garantizando su fiabilidad al seguir las directrices que hemos mencionado anteriormente. Para conseguir esto, una de las principales pautas a seguir es educar a los jóvenes programadores a realizar un software responsable, enseñándoles a conocer los riesgos que supone no hacerlo y el impacto que podría tener en las personas, el planeta, o la reputación de la compañía. Por otro lado, en la fase de diseño también hay que tomar medidas como 9 asegurarse de que el personal está cualificado para realizar cualquier tarea determinada, especialmente si es una tarea sensible e importante. También es conveniente realizar pruebas durante el diseño del producto y asegurarse de que los datos que se manejan no contienen sesgos, y se tratan de manera segura sin la existencia de alguna brecha de seguridad que los ponga en peligro. Estas medidas son algunos de los ejemplos que pueden ayudar a conseguir un software de calidad que evite que se produzcan riesgos potenciales y beneficie a todas las partes implicadas. 1.4 Objetivos Nuestra principal tarea con este Trabajo de Fin de Grado es desarrollar una herramienta que evalúe el grado de eticidad de un producto TIC durante su fase de diseño. Con esta herramienta tenemos varios objetivos claros. En primer lugar, determinar mediante una evaluación compuesta por un conjunto de preguntas si un producto cumple con los requisitos éticos o no, y notificar a los desarrolladores de ello. Con esto, queremos evitar que se sigan desarrollando productos que puedan tener consecuencias negativas, frenando su salida al mercado a menos que cambie su fase de diseño para cumplir con las directrices éticas adecuadas. En segundo lugar, creemos que es muy importante un aspecto que hemos mencionado en el párrafo anterior. Para evitar este problema es necesario concienciar a los desarrolladores para que sean responsables a la hora de diseñar un producto, dejando claro que, si no lo son, el impacto negativo que pueden generar es muy grande. Por ello, queremos que nuestra herramienta funcione también como un apoyo que ayude a concienciar a los desarrolladores sobre los diferentes aspectos del producto que no habían tenido en cuenta previamente, y por ende, no volver a cometer los mismos errores. Y en tercer lugar, otro de nuestros objetivos es que queremos que la herramienta se mantenga actualizada en todo momento. Esto lo conseguimos mediante una funcionalidad que permite a cualquier usuario que sea desarrollador añadir una pregunta nueva al cuestionario. De esta forma, dejamos espacio a que cada persona o grupo que realice la evaluación tenga la oportunidad de aportar su granito de arena de manera responsable, en caso de que crean que la herramienta pueda mejorar en alguna de sus secciones, dando lugar a un cuestionario mucho más completo y actualizado. También creemos que al permitir la adición de nuevas preguntas al cuestionario, estamos fomentando la participación de otras personas en la herramienta y por lo tanto, aumentando el grado de eticidad de nuestro producto al crear una comunidad a su alrededor que lo mantiene actualizado. Algunos ejemplos de las preguntas que podrían formar parte del cuestionario son los siguientes: - ¿Has tenido en cuenta todos los ámbitos en los que tu producto puede no ser ético? - ¿Eres consciente de cualquier comportamiento sesgado que puede tener tu producto? - ¿Tu producto es respetuoso con el medio ambiente? 10 1.5 Organización de la memoria La memoria está dividida en un total de 6 capítulos (contando la introducción como el primero de ellos), un apéndice y la bibliografía. Después de la introducción, se encuentra el mismo capítulo en inglés, y posteriormente comienza el capítulo 2, donde desarrollamos la planificación que hemos llevado a cabo durante todo el proyecto. En el capítulo 3, detallamos el proceso de búsqueda de las diferentes preguntas del cuestionario, además de explicar las reuniones más importantes que hemos tenido para mejorar las preguntas y conseguir el cuestionario definitivo. En el capítulo 4, parte técnica, habrá dos apartados: diseño e implementación de la herramienta. El capítulo 5, contiene las conclusiones de nuestro trabajo y posibles mejoras futuras o cosas que nos habría gustado hacer. Antes de llegar al último capítulo, vuelve a estar en inglés. Y el sexto y último capítulo, trata sobre cómo hemos distribuido el trabajo entre los dos miembros que hemos realizado el proyecto. 11 Chapter 1. Introduction In this introductory chapter, we are going to show the problems that exist today caused by unethical design in technological products, as well as mentioning how some organizations, companies and individuals are trying to find solutions to stop this bad practice and remedy the problem. In addition, we will present a series of examples of products with an unethical design and another with an ethical design, in order to better understand the real problem we are referring to. Lastly, we will stress the responsibility that falls on developers to curb the problem in the design phase of a product, followed by an explanation of where our tool stands in this dilemma and the goals we want to achieve with it. 1.1 Ethics in technological design Nowadays, the number of people who make use of the different applications that come on the market is constantly increasing, this is because many of these applications are not exclusively related to leisure, but are necessary for our daily tasks, such as: make payments, make appointments with the doctor or request the social security number. As a result, we can say that the use of technological applications is widespread in today's society and it is quite difficult to avoid using them in our daily lives. Therefore, it is very important that designers and developers take into account the social impact of their products or even the damage they can cause. So the development of a tool that helps to highlight the ethical issues of design can be a partial solution to try to avoid unethical situations as a result of the use of such an application. More and more headlines are appearing in newspapers or news reports about the consequences that we humans are suffering as a result of the use of these technological products. Among them are addiction, loss of attention span, polarization or the increase in depression rates [8], and these are increasingly frequent consequences that concern different groups of society, such as parents or adolescents, psychologists or sociologists who see how the problem worsens while there is no sign of a possible solution to remedy it, or at least reduce it. With this type of cases, humans themselves are usually put in the spotlight, blaming these problems on the excessive use of these products due to the digitalization that is occurring in society in recent years, but perhaps the roots of the problem are not there, but rather in the design of these products, which are the ones that really cause this behavior by taking advantage of our vulnerabilities. The design is one of the most important phases in the life cycle of a product. This is so, because it is the phase where designers must meet the established requirements, proposing a solution thanks to their knowledge and experience [12]. But the very fact that it is a fundamental phase implies that it is complex and, therefore, it must be given the importance it deserves, since much of the impact of a product is originates in this phase, and a failure or an inadequate design decision can lead to the emergence of serious problems that thwart its development or damage the brand, and sometimes not meeting the objectives, in addition to having a negative impact on its customers or users. It is here where the concept of ethical design comes into play, since 12 designers must constantly reflect on the way they deal with ethical values, in order to adopt a correct position and improve the quality of the software produced, which should avoid the negative consequences that the product may have. Therefore, it is necessary to establish ethical boundaries in the design process that avoid the aforementioned problems due to the use of technology. In the previous paragraph, we mentioned that an inadequate decision can have negative consequences for the product. By this type of decisions we mean to the use of persuasive methods by many companies with the aim of manipulating user behavior. To do this, they use design patterns known as "dark patterns" [10], which take advantage of the vulnerabilities of users to deceive them and influence the way they act, in order to make them perform actions against their will. This term was defined by Harry Brignull and some concrete examples would be the following: - Disguised advertising: this happens when hidden advertisements appear in the content and are mistaken for Call to Actions (calls to the user to perform an action), causing the user to click on them. - Forced continuity: this occurs when at the end of a trial service or a free demo, the user is charged without prior notice. In addition, the procedure to end the subscription is often complex and tedious. - Sneaking into the basket: this happens when there is a checkbox or radio button already activated, which goes unnoticed and adds an unexpected item to your purchase. These examples are just a few of the many patterns that companies use to exploit their knowledge of users and manipulate their actions. There are also other methods used by technology companies in the design of their products to get us to continue using them and get to know the user even better. One of the best known is the creation of personalized recommendations. These companies have large teams designing algorithms that, through "machine learning", automatically learn the user's behavior as they use the product, for example, knowing the YouTube videos you have liked or the Twitter accounts you have recently followed. Thanks to this learning, these algorithms can predict how we would behave and generate recommendations based on our behavioral profile that we might like or be interested in, with the aim of keeping us using their product [8]. These recommendations can be videos that we have not seen and that we may like or similar accounts that we may follow, going back to the YouTube and Twitter examples. Moreover, in many cases these recommendations are taken to the extreme to ensure that the user accesses and obtains more content, and therefore, stays longer using the product, the main objective of these companies. But this radicalization in the recommendations is actually causing a side effect in society, which is the polarization of users. Users' opinions tend to become more extreme, with intermediate levels disappearing and generating inequality. This in turn contributes to the progressive radicalization that has occurred in the social and political spheres in recent years. On the other hand, an increasing number of technological products are being launched with very similar functionalities, and sometimes their objective is exclusively commercial, without worrying too much about contributing to help or improve society, aiming for the product that 13 will get more downloads or purchases, in order to get the maximum possible profit. Usually these applications are useful, versatile and innovative, so at first glance everyone wins. Companies get great benefits and users get applications that apparently improve, help and / or influence our daily lives. But the reality is that it seems that these companies with the aim of being the fastest and gain advantage over the competition, tend to launch their applications without giving enough thought to other extremely important issues. As we have mentioned, these are very useful applications, but they may contain biased behaviors, do not collaborate in not harming the environment, or do not properly treat sensitive user data, among others. When we mentioned above that making certain decisions during the design phase can have negative consequences for the users of the product, we mean that it can have negative consequences in the long term. At the beginning, the consequences will be positive, since by applying the aforementioned design patterns you will be fulfilling your goal by getting users to act against their will to get what they want. But what happens is that as time goes by, it is very likely that the credibility of the brand will be put at stake and therefore, user will decrease considerably. This is because there will be users who are aware of this and for that reason will move away from the product. Trust between a customer and a product is something that takes a long time to establish, which is consolidated little by little. To do this, the product will have to provide transparency and leave the user total freedom to carry out their actions, it must meet their needs and the user will have to see it as a help and not as an impediment or an obstacle, and if it is, it will erode their trust much faster than it took to get it [10]. Design problems are increasing with the passage of time, and therefore, the negative consequences that these problems produce in people are also increasing in number. Both users and developers are beginning to be aware of this, being a recurring theme when facing the design of a new product by the work teams, that is, users are beginning to realize the real power that these products hold and that can cause a feeling of self-criticism in developers that will lead them to seek solutions that promote ethical design to alleviate these problems. Among these possible solutions, the following can be found: raise and discuss the different ethical issues that occur during the product design process, investigate how certain design decisions would affect users and understand their position in order to discover unethical behavior, create a team that deals exclusively with studying such issues and promote ethical design, not only consider whether something is done right or wrong because it depends on the contexts that encompasses the product and it is necessary to look at the consequences of its impact to make decisions that are right about the design [9]. To talk about solutions regarding the ethical design of technology, it is also necessary to talk about Tristan Harris, an American technology ethicist. In 2013, he gave a presentation called "A Call to Minimize Distraction & Respect Users' Attention" [13] when he was working at Google. This presentation talked about how big companies like Google should feel a great responsibility to ensure that humanity does not spend its time with a smartphone in its hands, arguing that technology is exploiting our vulnerabilities to keep us addicted to mobile phones, apps or websites. The presentation reached thousands of company employees and had a huge influence, as many people started to become aware of the problem and even Google years later 14 announced that it would implement digital improvements to achieve wellness. It was then that the "Time Well Spent" movement led by Tristan emerged, with the goal of pushing for a change in the design of technology where humans are not cheated and it matters how we spend our time on tech products. In late 2015, Tristan Harris along with Aza Raskin and Radima Fernando founded the Center for Human Technology [14], an organization charged with supporting the need for radical change in technology infrastructures and business models in the best interests of humanity by addressing the harm done to people by large technology companies. The European Commission is also aware of these problems, and has seen the need to act, focusing on artificial intelligence within the broad field of technology. To this end, it created a high-level expert group on artificial intelligence with the aim of defining ethical guidelines for reliable AI that is safe and complies with ethical principles. These guidelines are included in a document issued by the Commission [6], and in it, there are the guidelines to be followed to ensure the reliability of AI systems. In the document, it is very important to understand that AI systems must have as their main objective to help human beings, that is, to improve people's lives by guaranteeing social and individual welfare and ensuring their progress. But it should also be noted that, due to its accelerated development in recent years, it is necessary to address the possible risks that may occur, contributing to their prevention and minimization, thus avoiding a possible negative impact on society. For this reason, they insist on guaranteeing reliability, an indispensable requirement that will allow the social and economic benefits that these systems have to be fully achieved, and which is supported by three components that must be satisfied simultaneously. AI must be: - Lawful: AI systems must operate in compliance with laws, with particular attention to those that apply to the development, deployment, and use of AI systems. It should be noted that such laws not only prohibit some behaviors, but also permit others. - Ethics: it is necessary to ensure that ethical standards are met at all times, since, as mentioned, technology can advance much faster than law, and therefore it may be the case that there are still no laws that can deal with a particular issue or that some laws are inconsistent with those standards. - Robust: in addition to the ethical purpose, systems must also be safe and not produce unwanted harm, adopting appropriate protective measures. Robustness must be guaranteed from a technical and social point of view, depending on the context in which the AI system is located. The guidelines found in the document seek to make ethics a fundamental pillar in the life cycle of a system, especially in its design phase, and are directed from a global and representative approach to different sectors, contemplating the different ethical concerns of each one of them. In the document, they are grouped in three levels, where each level is more specific than the previous one: 1) Fundamentals of reliable AI. 2) Realization of reliable AI. 3) Evaluation of reliable AI. 15 1.2 Unethical design: examples To illustrate the importance of ethical design, in this section we are going to show some examples of unethical designs that had to be remodeled or stopped due to their negative impact on society. These products have not taken into account different crucial factors during their design phase, and therefore, have led to unethical behavior that can cause harm to third parties and have negative consequences for the company that has developed them. 1.2.1 Discriminatory Facial Recognition Nowadays, the use of facial recognition technology is very common. This is because a number of services have been developed that allow a system to identify a person, as well as determine their gender, race, age or other characteristics and are therefore used for commercial purposes, such as marketing and recruitment of employees, or in the field of surveillance and security. These systems use machine learning algorithms, which are responsible for processing large amounts of information taking into account a series of parameters previously set by the developer. The problem lies when the data processed by the system is full of biases or does not accurately reflect real life, i.e. is erroneous, and when the parameters are not defined correctly. All this can alter the system's decision-making, leading to discriminatory behavior based on race and gender. In 2018, a study known as Gender Shades [11] was conducted to measure the commercial accuracy of systems from Microsoft, Face ++ and IBM. The study found that these systems responded better with lighter than darker skin, and with men's faces than women's faces. In 2019, the study was conducted again [11], adding two new commercial systems, Amazon Rekognition and Kairos, to the equation. The results obtained from Microsoft, Face ++ and IBM were better, on the other hand, those of the new companies had an accuracy difference of 31% and 22.5%, between lighter skinned men and darker skinned women. The following image (figure 2) extracted from [11] better illustrates both studies: Figure 2: Gender Shades (2018) and Actionable Auditing (2019). 16 Faced with this situation, Amazon began a smear campaign on the study, instead of trying to remedy the problem and try to reverse the situation. Finally, some companies, such as IBM, have stopped developing this type of software, and others, such as Amazon or Microsoft, have temporarily stopped selling their systems to the police. The biggest drawback is that in most cases, it is the companies themselves who are responsible for monitoring this type of problem and proposing a solution if necessary, but when these solutions interfere with their economic interests, they are not applied correctly and therefore, the problem is not eliminated. For this reason, the European Commission has published a report, Gendered Innovations 2 [21] whose main objective is to make all parties, citizens, organisations and public administration aware of the existing problem, and thus encourage the development of systems that work correctly and ethically for the whole of society and not just for the majority. 1.2.2 Tay, the Microsoft bot that developed problematic behavior Tay was a conversational bot created by Microsoft's Technology and Research divisions in 2016 [15]. This bot was considered by the technology company as an experiment to learn more about the interaction between computers and humans, and was developed for the Twitter platform. Tay was a bot with advanced artificial intelligence that had the ability to learn, and therefore, as it engaged in conversations with humans, it stored and processed data from these with the aim of perfecting its language, skills and attitudes to increase its realism in the simulation of a young teenage girl. Although the bot had pre-programmed responses for certain taboo topics (politics, religion or sex) to prevent users from taking advantage of its "innocence", Tay's development was not as expected during the first hours of its launch. Apparently, Tay had no filter when it came to learning from its conversations with users and crafting responses, as well as new tweets to post, and users took advantage of that behavior. Tay was posting numerous tweets per hour, and suddenly, she started posting tweets that were very different from her expected behavior. These were racist, xenophobic, homophobic and even tweets with Nazi tendencies, which caused high expectation among users of the platform and also the suspension of the account by Microsoft, announcing that it was to make adjustments to the bot. A company spokesperson further stated that "there is a concerted effort by some users to abuse Tay's commenting abilities and respond inappropriately" [16]. Days later, Microsoft released a statement where they confirmed that Tay was decommissioned, regretting the smart bot's controversial unintentional tweets, and also announced that Tay would be back when they were sure to avoid conflicts that would jeopardize the company's principles and values. A few days later, Microsoft relaunched Tay, but soon afterwards it went into a loop writing a message about taking a break posting so many tweets within seconds of each other. Tay was permanently decommissioned and her Twitter account was made private. To contrast the previous examples, we are going to present the opposite case: a company that does take into account ethical principles and concerns at all times. This example maintains good practices in its ethical marketing and not in its design, since it is a company that produces and sells coffee, and therefore does not develop technological products, but our objective is to make clear the idea of being concerned about ethical issues. Ethical marketing from the point 23 como el formato que tendrían y su contenido. Cuando tuvimos claro cómo se iba a distribuir toda la memoria, a principios de mayo comenzamos con la redacción de la parte técnica, que consiste en explicar la implementación de la aplicación y cómo se distribuye la base de datos. Este es uno de los apartados más largos e importantes para conocer cómo está hecha nuestra aplicación y comprender su funcionamiento. A lo largo del mes continuamos desarrollando la memoria con sus respectivos apartados hasta tener un documento mucho más completo, exceptuando la parte técnica, donde todavía quedaban por añadir las modificaciones que nos faltaban por hacer para tener la aplicación completa, las conclusiones de nuestro TFG y la división del trabajo que habíamos llevado a cabo a lo largo de todo este tiempo. Cuando ya tuvimos implementadas las funcionalidades que restaban de la aplicación, durante la última semana de junio las redactamos en el apartado de la parte técnica, para dejarlo finalizado. En las semanas siguientes, redactamos los capítulos restantes, que eran los de las conclusiones y la división del trabajo. 24 Capítulo 3. Proceso de búsqueda de las preguntas del cuestionario En este capítulo nos centraremos en explicar detalladamente el proceso de indagación seguido para encontrar las diferentes preguntas que iba a tener nuestro cuestionario, empezando por la investigación llevada a cabo y siguiendo con la posterior elaboración del cuestionario. Después, detallaremos las reuniones más importantes que también formaron parte de dicho proceso de búsqueda. 3.1 Proceso de investigación En una de nuestras primeras reuniones con el tutor, nos proporcionó una serie de enlaces relacionados con las cuestiones éticas de la tecnología, que nos ayudarían a profundizar en la relación entre la informática y la ética, y cuáles son las principales preocupaciones y objetivos a día de hoy referentes a ello. A continuación, vamos a explicar qué contienen estos enlaces y algunos de los temas que tratan: - The Mozilla Foundation. Responsible Computer Science Challenge Winners [1]: La Fundación Mozilla ha indexado una serie de proyectos ganadores realizados por diferentes universidades de Estados Unidos, relacionados con las responsabilidades éticas en ámbitos científico-tecnológicos. En ellos, se trata en profundidad temas concretos acerca de cómo se relacionan la ética y la tecnología. Kathy Pham, informática y co-directora de este concurso de proyectos de Mozilla, mencionaba que “a día de hoy, los informáticos escriben código que tiene el potencial de afectar a la privacidad, la seguridad, la igualdad y el bienestar de miles de millones de personas”. Para aclarar la reflexión anterior, Kathy pone una serie de ejemplos, donde habla acerca de que la tecnología actual puede influir en la prensa que leemos y en las discusiones políticas en las que nos vemos envueltos, cómo aparecen los resultados sobre nosotros en una búsqueda online, o si somos aptos para una hipoteca o una póliza de seguros, entre otros. Por ello, asegura que “los 17 proyectos ganadores reconocen ese poder y adoptan medidas cruciales para integrar la ética y la responsabilidad en cursos de algoritmos, compiladores, arquitectura informática, redes neuronales o estructuras de datos, dando a conocer sus materiales y metodologías, permitiendo que otras personas e instituciones los adapten y utilicen en su propio entorno, ampliando el alcance de su trabajo con el objetivo de integrar la ética en los planes de estudio de la informática, creando así una tecnología más responsable desde el principio”. Entre los ganadores había dos universidades que trabajaron en proyectos acerca de cómo se analizan y se usan los datos médicos de la población y si es de una forma ética, o sobre el impacto en la sociedad a la hora de desarrollar tecnología estudiando casos reales y ficticios. En nuestro caso, profundizamos más en el proyecto de la Universidad de Georgetown, cuyo departamento de informática colaboraba con el Laboratorio de Ética de la universidad para crear experiencias que mostraran cómo interactúa la ética con la informática. En el párrafo 25 donde explicaban su proyecto, se encontraba el enlace del Laboratorio de Ética [23], donde pudimos leer algunos artículos con diferentes experiencias que nos permitieron llegar a ciertas reflexiones. Entre estos artículos, hay dos que nos llamaron mucho la atención. El primero, Uncovering Ethical Concerns in Programming [24], consistía en un experimento por parte de un profesor a sus alumnos, donde se llegó a la conclusión de que los alumnos pensaban que si su aplicación o producto funcionaba, no había que preocuparse por nada más, es decir, no estaban teniendo en cuenta el impacto social que tendría su trabajo. El objetivo del experimento era profundizar en la comprensión de los estudiantes sobre las complejidades éticas, e inculcar un sentido de responsabilidad moral a la hora de afrontar los proyectos. El segundo artículo, CS Students Explore the Ethics of Contact Tracing Apps [25], consistía en realizar una serie de preguntas a estudiantes que no pertenecieran al curso, acerca de una nueva posible aplicación de rastreo por contactos COVID-19. A estos estudiantes se les preguntó sobre la posibilidad de ofrecer ciertos datos personales a esta aplicación para facilitar el rastreo, y se obtuvieron distintas respuestas. Un estudiante dijo que no le importaría facilitar datos a la aplicación si era del gobierno, pero que no los proporcionaría si se tratara de una empresa privada. Otro de ellos planteó que la población probablemente preferiría ofrecer cualquiera de sus datos con tal de remediar la crisis de la pandemia cuanto antes. Con estas preguntas y respuestas, los alumnos reforzaron la importancia de los valores éticos y cómo reconocerlos a la hora de desarrollar un producto. - The Mozilla Foundation. With Great Tech Comes Great Responsibility [2]: Otro de los documentos entregados es una guía para abordar problemas éticos en la industria tecnológica. En ella, se plantea la falta de transparencia a la hora de reconocer, abordar y hacerse responsable de los problemas éticos que existen en los numerosos productos y servicios que ven la luz en la sociedad actual. Estas cuestiones éticas en la industria tecnológica son muy frecuentes: algoritmos sesgados, software de reconocimiento facial racista, tratamiento inseguro de datos personales, entre otros. Por ello, menciona que los estudiantes interesados por el mundo tecnológico deben abordar estos problemas con el objetivo cada vez más necesario de cambiar el futuro de la industria, y por ende, el de la sociedad. Dentro del documento, un ex trabajador del mundo de la tecnología plantea como una posible solución que las empresas miren más allá de las partes internas interesadas, y traigan a un grupo externo e independiente para analizar y supervisar críticamente las operaciones y los productos. También plantea que es una buena práctica que un trabajador de esta industria ofrezca su propia información o haga preguntas a otras fuentes internas de la empresa, como por ejemplo, de qué salvaguardas se disponen para prevenir cualquier posible daño a terceros por parte del producto que se está desarrollando. Esto es necesario, y además, es muy útil porque los trabajadores disponen de más información que cualquier usuario futuro que utilice el producto, por lo que reflexionar y hacerse este tipo de preguntas, y compartirlas con el equipo de trabajo puede ser crucial, ya que estas conversaciones pueden ayudar a decidir si realmente el desarrollo del producto se está haciendo de manera correcta. Ambas ideas planteadas están muy presentes en nuestro proyecto, ya que se trata de lo que queremos conseguir con nuestra herramienta, un cuestionario al que se tendrán que enfrentar los desarrolladores durante la fase de diseño de un 26 producto, con el objetivo de abordar los diferentes problemas éticos antes de que lleguen a suceder. Además, el documento de Mozilla presenta una lista con pautas y sugerencias que son de gran ayuda para que los trabajadores tecnológicos intenten combatir o evitar estos problemas. Estas pautas son las siguientes: - Tener una actitud proactiva para considerar cualquier problema ético potencial en un producto. - Establecer relaciones fuertes con los compañeros para facilitar el tratamiento de cualquier problema con más confianza. - Consultar con miembros de otros equipos las diferentes inquietudes éticas para poder abordarlas de una forma diferente antes de consultarlas con los miembros del equipo, trabajar con diferentes grupos sociales para tener en cuenta el potencial impacto de un producto en la sociedad. - Aprender estrategias de organización usando herramientas que no dejen de lado las cuestiones éticas y alienten a la empresa a ser responsable con el impacto que pueda tener su producto. 3.2 Primeras conclusiones Como hemos mencionado anteriormente, leer estos artículos y documentos nos ayudó a tener una perspectiva más amplia sobre el tema que íbamos a tratar en nuestro proyecto, además de tener más claros nuestros objetivos y consolidar la idea que teníamos acerca de la herramienta que implementaríamos más tarde. También nos permitió tomar notas y sacar breves conclusiones de lo que habíamos leído, pero esto no nos proporcionó la idea para definir las preguntas de nuestro cuestionario, ya que pensamos que las preguntas tenían que ir enfocadas en apartados más generales, y que fueran desembocando en preguntas más concretas relacionadas con ellos. En la siguiente reunión con nuestro tutor, le comentamos la situación y entendimos que el objetivo principal era generar preguntas para hacer el cuestionario, además de que nos proporcionó más documentos que nos resultaron muy útiles en nuestro proceso de redacción de las preguntas. Esta vez, nos compartió dos enlaces a comunicados de la Comisión Europea [3][4] acerca de las directrices éticas para conseguir una inteligencia artificial fiable, junto con el documento donde se encontraban redactadas y detalladas [6], presentado por el grupo independiente de expertos de alto nivel sobre la inteligencia artificial. Los requisitos esenciales para lograr una inteligencia artificial fiable según dicho documento eran los siguientes: - Intervención y supervisión humanas: los productos deben promover el cumplimiento de los derechos fundamentales, pero puede haber casos en los que dificulten dicho cumplimiento. En el caso de que afecten negativamente a los mismos, se deben llevar 27 a cabo evaluaciones que permitan reducir estos riesgos, aunque también existe la posibilidad de que se tenga que asumir alguno de ellos. En tal caso, deberán llevar un seguimiento de los mismos para que no se materialice ninguno de ellos. Por otra parte, es necesario garantizar que un sistema de inteligencia artificial no se interponga en la autonomía humana a la hora de tomar decisiones y para ello, los desarrolladores tienen que aplicar mecanismos de control durante toda la fase de diseño del sistema y seguimiento de este. - Robustez y seguridad: este apartado sugiere que los productos tienen que desarrollarse teniendo en cuenta los riesgos, evitando situaciones o daños imprevistos y asegurando que se comporte de la manera esperada, incluyendo los posibles cambios que el producto sufra a lo largo de su desarrollo. Se debe asegurar la resistencia a los ataques y seguridad, adoptando medidas que puedan mitigar los riesgos que puedan suponer que un agente malintencionado explote alguna vulnerabilidad del producto. Esto podría desembocar en situaciones inesperadas como la alteración del comportamiento del producto, la pérdida de datos o el daño físico a personas. También se deberían contemplar soluciones que proporcionen un plan de repliegue aplicable si ocurre algún problema. Esto incluye que el producto se comporte de manera esperada sin producir daños de ningún tipo. Por último, los productos deben garantizar la fiabilidad y reproducibilidad, asegurando un funcionamiento adecuado en diferentes situaciones y mostrando el mismo comportamiento en las mismas condiciones. - Privacidad y gestión de los datos: para garantizar la privacidad de un producto, es necesario cumplir una serie de puntos. Se debe garantizar la protección de la intimidad y de los datos, esto engloba tanto los datos proporcionados por el usuario al comienzo, como los datos que se han generado automáticamente tras la interacción de éste con el sistema. Otro de los puntos que debe cumplir un producto es garantizar la calidad e integridad de los datos, es decir, un sistema debe de ser consciente de que los datos obtenidos pueden tener sesgos sociales u otros errores, por ello, se debe atajar el problema antes de que esos datos se utilicen para llevar a cabo alguna tarea. Y por último, al tratarse de un sistema que utiliza un amplio volumen de datos de carácter personal, el acceso a dichos datos debe de ser controlado, es decir, se tienen que establecer protocolos y restricciones para acceder a ellos de forma segura. - Transparencia: para conseguir transparencia en un producto, hay tres factores importantes que se deben tener en cuenta: la trazabilidad, la explicabilidad y la comunicación. La trazabilidad consiste en documentar los conjuntos de datos y los procesos que sigue el producto para dar una respuesta determinada, así como las decisiones que toma su sistema de inteligencia artificial en caso de tenerlo. La 28 explicabilidad sostiene que el producto debe ser capaz de dar una explicación a cualquier respuesta que haya tomado, verificando que la respuesta ofrecida es oportuna y adaptando dicha explicación al usuario que la requiera. En último lugar, la comunicación se refiere a informar al usuario de que está interactuando con un producto o con un algoritmo de toma de decisiones (en caso de hacerlo), y además, hacer saber a los usuarios las limitaciones del mismo según el caso de uso. - Diversidad, no discriminación y equidad: este punto se caracteriza por el cumplimiento del principio de equidad y por ello, hay que tener en cuenta diversos factores. En muchas ocasiones, los datos recopilados que posteriormente utiliza el sistema pueden contener sesgos u otros errores que den lugar a prácticas que están en contra de dicho principio, como pueden ser los prejuicios y la discriminación. Por este motivo, existe la necesidad de evitar sesgos injustos y para ello, los equipos de trabajo deben contar con procesos de supervisión e incluso con personas externas al proyecto procedentes de otras culturas y disciplinas, con el objetivo de combatir estos sesgos mediante la diversidad de opiniones. Por otro lado, en cuanto a la accesibilidad, un producto debe de ser totalmente accesible por cualquiera de los usuarios que hagan uso de él, sin importar su edad, género, capacidades u otras características. Al igual que con el primer punto, si ambos factores se cumplen, se estará asegurando el principio de equidad. - Bienestar social y medioambiental: los diferentes productos que salen al mercado tienen que llevar a cabo sus tareas de la forma más respetuosa posible con el medio ambiente. Para ello, el equipo tiene que efectuar diferentes exámenes a lo largo del ciclo de vida del producto, desde su proceso de desarrollo hasta su despliegue. Estas evaluaciones consisten en elegir las opciones menos perjudiciales para el medio ambiente. Otro factor que hay que tener en cuenta, es que este tipo de productos pueden afectar directamente a las personas. Por un lado, estos productos (hagan uso de un sistema de IA o no) son creados para favorecer la vida de las personas, pero por otro, puede suceder lo contrario. Por esto, es muy importante que el equipo de desarrollo lo tenga en cuenta y estudie los efectos que puedan provocar o lleguen a provocar, con el fin de corregirlos en caso de ser necesario. Además, también se debe evaluar las repercusiones del producto desde un punto de vista social, teniendo en cuenta sus efectos sobre la sociedad en su conjunto. - Rendición de cuentas: en este apartado juega un papel importante la auditabilidad, ya que un producto debe poder ser evaluado mediante auditorías internas y externas con el objetivo de garantizar su fiabilidad y seguridad. Además, un producto debe ser capaz de informar acerca del proceso seguido para obtener un determinado resultado, así 29 como sus consecuencias. Esto será muy importante para identificar y notificar posibles efectos negativos derivados de estos resultados. También es recomendable disponer de evaluaciones de impacto que permitan evaluar estos efectos negativos, en caso de producirse, y minimizarlos. Por otra parte, a lo largo del desarrollo del producto es posible que surja algún conflicto entre sus intereses y valores al aplicar todos estos requisitos anteriores. En caso de que esto suceda, se debe buscar el equilibrio entre los mismos en función del riesgo que suponen respecto a los principios éticos. Si no se puede garantizar este equilibrio y el cumplimiento de los principios éticos se ve afectado, se deberá cambiar el desarrollo del producto realizando los cambios que sean necesarios. Rápidamente nos dimos cuenta de que estas directrices no solo eran útiles para el ámbito de la inteligencia artificial, sino que también se podían aplicar en cualquier producto TIC como directrices generales para que un producto sea ético y tenga un impacto positivo en la sociedad. Gracias a estas directrices empezamos a tener más claro cuáles serían los diferentes aspectos que debíamos tener en cuenta a la hora de formular las preguntas. Además, en el documento donde se encontraban dichas directrices, también había una serie de preguntas relacionadas con cada una de ellas garantizando su cumplimiento. Gracias a ello, este documento nos sirvió como base para observar qué tipo de preguntas había que realizar y a partir de ahí, pudimos redactar nuestras propias preguntas adaptándolas a nuestras necesidades. 3.3 Creación del cuestionario En un principio a la hora de redactar las preguntas, nuestra idea era elaborar un cuestionario con algo más de 20 preguntas, tal y como acordamos con el tutor. Por ello, acabamos redactando un cuestionario dividido en distintas secciones que contenía 26 preguntas, pero nos dimos cuenta de que al ser tan pocas, el cuestionario contendría preguntas demasiado generales que no nos permitirían saber con exactitud el grado de eticidad del producto que estuviéramos evaluando. Por este motivo, en la siguiente reunión con el tutor, le comentamos el problema y llegamos a la conclusión de que el cuestionario debía tener más preguntas nuevas y/o más concretas. Además de esas preguntas, también teníamos que introducir algunas relacionadas con la inteligencia artificial, ya que pensamos que es un campo muy a tener en cuenta (en caso de que haga uso de ella) a la hora de evaluar un producto. Junto con estas, también era necesario meter preguntas introductorias que nos permitieran saber qué tipo de producto es el que se va a evaluar y gracias a ello, podemos estimar qué rango de edades lo utilizarían. A la hora de añadir nuevas preguntas más concretas, ampliamos los apartados en los que dichas preguntas eran demasiado generales, y para ello era necesario introducir temas nuevos sobre los que desarrollar dichas preguntas. En cuanto a la parte de inteligencia artificial, introdujimos preguntas prácticamente en todos los apartados, tomando como ejemplo el documento mencionado anteriormente. Por último, con la ayuda de un documento que nos había proporcionado nuestro tutor en una de las primeras reuniones [5], vimos que en función de la 30 edad de los usuarios existe una mayor necesidad por unos productos que por otros, por lo que añadimos una pregunta introductoria para saber de qué tipo es el producto, teniendo en cuenta todos los tipos posibles dependiendo del rango de edad de usuarios que lo utilizaría. Después de añadir las nuevas preguntas y hacer las correcciones pertinentes, el cuestionario pasó a tener 50 preguntas (33 comunes y 17 de inteligencia artificial). Todavía nos quedaba trabajo por hacer, pero se podría decir que teníamos definido un primer prototipo del cuestionario. En este momento, Marcos nos recomendó aplicar un nuevo orden para las preguntas, que consistía en situar primero las preguntas más técnicas y en segundo lugar las preguntas relacionadas con cuestiones éticas. El siguiente paso sería revisarlo para mejorar algunos apartados y retocarlo añadiendo, modificando o eliminando alguna pregunta. Para ello, acordamos con el tutor que el cuestionario tenía que llegar a más personas para que pudiéramos tener una retroalimentación que nos ayudara a mejorar el trabajo realizado hasta el momento. Entonces, lo primero que se nos ocurrió fue hacer un formulario utilizando la plataforma de Google Forms, y una vez terminado, nos encargamos de compartirlo junto al tutor. Todo este proceso se explicará detalladamente en el capítulo siguiente. Una vez obtenidos los resultados y sacado las conclusiones oportunas, una de las personas a las que el tutor compartió el cuestionario, Elena Martinez Vicente, diseñadora de producto en P2PModels, se puso en contacto con él, ofreciéndose voluntaria a ayudarnos por su gran experiencia en diseño de desarrollo de software. Nosotros no dudamos en recibir su ayuda y nuestro tutor nos puso en contacto con ella vía correo electrónico. Entonces, concertamos dos reuniones que nos ayudaron a corregir y mejorar el cuestionario, y nos acercaron a una versión casi definitiva del mismo. Las reuniones con Elena y el proceso de modificación de las preguntas del cuestionario serán explicados con más detalle en el capítulo siguiente. Por último, nos reunimos con el tutor para mostrarle los cambios que habíamos realizado en el cuestionario gracias a la ayuda de Elena y para que nos diera su visión acerca de ellos, proponiendo y llevando a cabo los ajustes que fueran necesarios. De esta forma, consideramos que el cuestionario ahora ya era el definitivo y las preguntas que estaban en ese momento serían las que estarían en la aplicación en un futuro próximo. 3.4 Reuniones mantenidas para la creación del cuestionario A lo largo de este capítulo nos hemos centrado en detallar el proceso de búsqueda que seguimos a la hora de definir las diferentes preguntas, y en este apartado nos vamos a centrar en anotar y describir las reuniones más importantes que tuvimos con Marcos, nuestro tutor y más tarde, con Elena, trabajadora de P2PModels. Consideramos que, como el trabajo que se presenta en este TFG está relacionado con la creación de un cuestionario para conocer si el proceso de diseño de una aplicación ha seguido estándares éticos, es necesario detallar todo el proceso seguido hasta obtener el cuestionario final para favorecer la transparencia de todo el proceso y facilitar, en caso de ser necesario, la auditabilidad del proceso seguido. Además, hemos añadido a la presente memoria en forma de apéndice una descripción detallada de varias de las 31 preguntas finales del cuestionario realizado para que el lector pueda hacerse una idea más completa de todo lo que se expone en este capítulo. 3.4.1 Primeras reuniones con el tutor del trabajo [21/10/2020] Nos dedicamos a hacerle preguntas sobre el TFG con el objetivo de tener más claro qué era lo que queríamos hacer y cómo lo íbamos a hacer. Obviamente, la visión y concepción de nuestro TFG ha ido cambiando ligeramente a lo largo del tiempo según evolucionaba el proyecto, pero desde el primer momento nos quedó claro que queríamos realizar una herramienta que evaluara si un producto TIC en su fase de diseño sería ético o no, y para ello, debíamos hacer un cuestionario que englobara muchos temas susceptibles de entrar en conflicto con diferentes cuestiones éticas. En un principio, Marcos nos dijo que el cuestionario debía tener entre 15 y 20 preguntas acerca de dichos temas, aunque nos dejó claro que no se trataba de un número fijo y que el límite a la hora de concretar con las preguntas lo pondríamos nosotros conforme fuéramos avanzando y entrando en materia. En esta reunión, Marcos nos compartió los documentos de la Fundación Mozilla (mencionados en el capítulo anterior) que nos servirían para ponernos en contexto y familiarizarnos con los temas que íbamos a tratar a lo largo del proyecto. [24/11/2020] Después de haber leído y haber tomado notas de los documentos que nos había compartido, no habíamos sacado conclusiones claras para comenzar a definir las preguntas. Ante esta situación, Marcos nos dijo que no era tan necesario tomar nota de los documentos, sino que nuestra misión principal era buscar las preguntas que tendría el cuestionario, o la información necesaria en dichos documentos para desarrollarlas. Además, nos ofreció más documentos que nos serían de gran utilidad para formular las preguntas [5][6][7], una vez tuvimos claro el principal objetivo en esta primera fase de investigación. [22/12/2020] Tras numerosas reuniones con Marcos, el 22 de diciembre, tuvimos la reunión previa al parón por vacaciones. Unos días antes de dicha reunión, mientras estábamos desarrollando las preguntas del cuestionario, nos surgieron un par de dudas respecto a la adición de preguntas de inteligencia artificial y las preguntas introductorias que nos permitieran conocer el tipo del producto con el que íbamos a tratar. Marcos nos resolvió las dudas por correo electrónico y gracias a ello, pudimos completar el primer prototipo del cuestionario con un total de 50 preguntas. En esta reunión le enviamos y le enseñamos este primer prototipo para que nos diera su opinión y nos propusiera mejoras o cambios. En ella nos sugirió que reordenáramos las preguntas con el objetivo de que los desarrolladores hicieran el cuestionario con mayor facilidad al responder primero las preguntas más técnicas y posteriormente las preguntas éticas, donde se necesita más tiempo para dar una respuesta. Este nuevo orden implicaría eliminar las secciones del cuestionario. Todavía quedaban preguntas por pulir, pero fue un gran paso, ya que este primer prototipo nos serviría como base sobre la que desarrollar el cuestionario definitivo en un futuro próximo. [19/01/2021] Mostramos las modificaciones que acordamos con él en la reunión anterior. Añadimos más preguntas para tratar con mayor exactitud los diferentes temas y organizamos el nuevo orden de las preguntas, aunque mantuvimos guardado el orden anterior con las 32 secciones por si era necesario en el futuro. Marcos vio los nuevos cambios con nosotros y nos dio el visto bueno, y fue entonces cuando pensamos en realizar el formulario de Google Forms con las preguntas que teníamos hasta el momento, para distribuirlo a terceras personas que nos dieran una realimentación que nos ayudara a realizar distintos cambios o consolidar las preguntas existentes. Este formulario lo hicimos y se lo mandamos dos días después, el 21 de enero. [24/02/2021] y [04/03/2021] Las siguientes reuniones fueron después de la época de exámenes. En la primera, le volvimos a mandar el formulario modificado, organizado en apartados y subapartados con una breve explicación del tema que se trata en cada uno de ellos, para facilitar la comprensión de las preguntas. Y en la segunda, volvimos a realizar cambios que se especificarán avanzado el capítulo. Con el formulario de Google Forms terminado, Marcos y nosotros comenzamos a distribuirlo. [12/04/2021] Mostramos los resultados que habíamos obtenido hasta el momento con el formulario de Google Forms. Dichos resultados no fueron lo que esperábamos por motivos que explicaremos más adelante, y Marcos nos dijo que eso ya era una realimentación que teníamos que tener en cuenta para dar un repaso general a las preguntas y modificar las que los usuarios hubieran marcado con la opción de “Reformular”. Además, también nos comentó que había contactado Elena Martínez Vicente ofreciéndose voluntaria a prestarnos su ayuda. [29/04/2021] Para esta fecha ya habíamos tenido diferentes reuniones con Elena (que detallaremos en profundidad más adelante) nos volvimos a reunir con Marcos. Ahora, el cuestionario tenía una apariencia muy diferente de cara a la usabilidad del usuario, que era el principal problema que habíamos tenido con el formulario de Google. Le comentamos que las preguntas que teníamos ahora sí eran las definitivas, además de que habíamos pensado en volver a la versión con secciones que teníamos anteriormente, abandonando el nuevo orden que establecimos semanas atrás. Marcos estuvo de acuerdo con nosotros en ambas cosas. Ahora ya teníamos el cuestionario definitivo, por lo que nuestro objetivo fue centrarnos por completo en desarrollar la herramienta e ir redactando la memoria. Las reuniones posteriores fueron para aclarar dudas acerca del contenido y la organización de la memoria. Además, aprovechamos para explicar cómo funcionaba nuestra herramienta, ya que estaba en una fase bastante avanzada. Hasta este punto hemos mencionado las reuniones más importantes que hemos tenido con nuestro tutor a lo largo del desarrollo del proyecto. A partir de aquí, explicaremos detalladamente en qué consistió el proceso desde la creación del formulario de Google Forms hasta su distribución, así como los resultados obtenidos y cómo esto afectó en nuestro cuestionario, además de las reuniones con Elena y cómo mejoró el cuestionario gracias a ellas. Después de tener definido el primer prototipo del cuestionario y las numerosas reuniones con el tutor que hemos mencionado para añadir nuevas mejoras, conseguimos tener un cuestionario que creíamos que le faltaba poco para ser el definitivo, pero para nuestra sorpresa no fue así. Una vez tuvimos las preguntas que queríamos y todo más o menos organizado, nos faltaba dar 39 y decidimos dividirlas en dos, y el otro fue la omisión de una pregunta que consideramos que era demasiado redundante. A continuación, vamos a mostrar el primer cambio que comentamos en el párrafo anterior. La pregunta original: - ¿Has establecido procesos para verificar la existencia de posibles sesgos y llevar a cabo un seguimiento de estos durante las distintas fases del producto? La pregunta modificada, dividida en dos: - ¿Has establecido procesos para verificar la existencia de posibles sesgos? - ¿Has realizado un seguimiento de estos durante las distintas fases del producto? En conclusión, Elena se mostró muy satisfecha con las modificaciones que habíamos hecho y, aunque todavía teníamos que reunirnos con Marcos y que él también nos diera el visto bueno a los cambios realizados, pudimos dar por hecho que estas preguntas serían las definitivas de nuestro cuestionario. Estas reuniones con Elena nos fueron de gran utilidad para enfocar el cuestionario desde el punto de vista del usuario y darnos cuenta de que su usabilidad era muy mejorable, un punto muy importante de cara al desarrollo de nuestra aplicación que hasta ese momento no habíamos tenido en cuenta. 3.5 Conclusiones del proceso Tras leer en profundidad los primeros enlaces y documentos proporcionados por nuestro tutor, comenzamos a ser conscientes del problema real que existe entre la tecnología y la ética. Los desarrolladores tienen el poder de afectar a miles de millones de personas, mediante el código que escriben y los productos que desarrollan. Poco a poco, tanto las personas como las compañías se están mentalizando de la gravedad del problema, y por ello, está surgiendo la necesidad de buscar soluciones. Por ejemplo, la Fundación Mozilla tuvo la iniciativa de crear un concurso en el que diferentes universidades de Estados Unidos participaban presentando sus proyectos relacionados con las responsabilidades éticas en el ámbito de la tecnología. Estos proyectos contaban con la participación de los estudiantes con el objetivo de hacerles ver cuál era el problema y cómo ellos tienen en sus manos la responsabilidad de evitarlo en el futuro. Por ello, hay que formar a los futuros profesionales de la industria de tal forma que no cometan los mismos errores que se producen hoy en día, asumiendo que las preocupaciones éticas siempre deben estar presentes en el desarrollo de un producto. Por otra parte, conforme fuimos desarrollando el cuestionario nos dimos cuenta de que teníamos que cubrir todos los requisitos necesarios que garanticen la fiabilidad de un producto, y por ello, el cuestionario debía ser más extenso, al profundizar en cada uno de esos requisitos para lograr que la evaluación fuera completa. También vimos necesario incluir preguntas que abordaran el tema de la inteligencia artificial, ya que la gran mayoría de productos hacen uso de ella y consideramos que es una parte muy importante a tener en cuenta. Además, fuimos 40 conscientes de que teníamos que ser cercanos al usuario con el cuestionario, para que entendiera nuestro objetivo y nos diera las respuestas adecuadas que permitieran que la evaluación le fuera de gran ayuda. Para ello, intentamos evitar un lenguaje excesivamente técnico en las preguntas si no era necesario, y procuramos que fueran concisas, es decir, que no fueran muy largas y se entendiera bien el propósito de cada de ellas. Con esto, queremos lograr que el usuario no tenga que releer varias veces una pregunta y en todo momento tenga claro la temática a la que se enfrenta, de esta forma, podrá realizar el cuestionario de una forma más sencilla y fluida. 41 Capítulo 4. Desarrollo de la herramienta En este capítulo vamos a explicar cómo se ha implementado este proyecto. Primero hablaremos del modelo que hemos seguido, después detallaremos la base de datos que hemos utilizado y cómo están organizadas las diferentes tablas que la componen, y, por último, nos centraremos en la implementación, definiendo el proceso que sigue el cuestionario para realizar la evaluación y explicando las funcionalidades que contiene la herramienta. 4.1 Diseño En primer lugar, vamos a comenzar definiendo el modelo que hemos decidido seguir a la hora de implementar la aplicación. Hemos utilizado una arquitectura cliente-servidor para dividir claramente la parte que solicita la información (cliente) y la parte que provee los recursos (servidor). Para el lado del servidor, más comúnmente conocido como backend, hemos trabajado únicamente con lenguaje PHP, mientras que el lado del cliente o frontend, lo hemos desarrollado mediante lenguaje HTML, JavaScript, CSS y Bootstrap. Para implementar esta arquitectura hemos utilizado el patrón MVC (Modelo-Vista-Controlador), compuesto por tres componentes distintos que son el modelo, la vista y el controlador. El modelo se encarga de interactuar con la base de datos para realizar las peticiones que recibe de los usuarios por medio del controlador, y lo hemos implementado mediante clases DAO (Data Access Object) que procesan operaciones CRUD [28] y hacen consultas con la base de datos. Por ello, cada tabla de la base de datos tiene su propio DAO que interactúa con ella, y estos heredan de una clase padre que establece la conexión con la base de datos. - DAO - PreguntaDAO - RespuestaDAO - SeccionDAO - UsuarioDAO El controlador, que se encarga de recibir las peticiones de los usuarios y solicitar los datos a los DAO, se corresponde con los SA (Service Application) y los scripts PHP que no son vistas para el usuario, sino que gestionan la creación y el tratamiento de estos SA, además de crear los objetos Transfer. Dichos objetos, también conocidos como DTO (Data Transfer Object), se utilizan para transportar los datos necesarios de un lugar a otro, en este caso, desde el controlador al modelo, por lo que tenemos una clase Transfer por cada objeto del cuestionario. En los SA se encuentran las operaciones necesarias para llevar a cabo las peticiones del cliente a la base de datos. - PreguntaSA - RespuestaSA - SeccionSA - UsuarioSA 42 - PreguntaTransfer - RespuestaTransfer - SeccionTransfer - UsuarioTransfer - procesarAñadirPregunta - procesarBorrarUsuario - procesarCuestionario - procesarEditarUsuario - procesarLogin - procesarRegistro La vista se corresponde con la muestra visual de los datos proporcionados por el modelo con los que interactúa el usuario durante todo el proceso de realización del cuestionario. En las vistas solamente tenemos los HTML y PHP que nos permiten mostrar esa interfaz de usuario. - index - mostrarCuestionario - mostrarResultados - perfilUsuario - formularioAñadirPregunta - formularioEditarUsuario - formularioLogin - formularioRegistro Aquí es donde hacemos uso de JavaScript, concretamente en los formularios. Lo utilizamos para hacer las comprobaciones pertinentes sin la necesidad de tener que enviar el formulario previamente, mediante peticiones con AJAX. De esta manera, evitamos que se refresque la página cada vez que se envíe el formulario con errores, mostrando el mensaje de error conveniente hasta que se introduzcan todos los datos correctamente. También decidimos utilizar Bootstrap, ya que es un framework que nos facilita mucho el trabajo a la hora de definir los estilos de la herramienta, al ser de fácil de usar y ofrecer numerosas posibilidades. Además, tenemos nuestras propias hojas de estilos para complementar los de Bootstrap y dar retoques más concretos que identifiquen más nuestra herramienta. Un ejemplo de cómo funciona el Modelo-Vista-Controlador lo podemos ver siguiendo el flujo (figura 5) a la hora de mostrar una pregunta del cuestionario: ● En el formulario de mostrarCuestionario.php se crea un nuevo PreguntaSA, con el que llamamos al método getPregunta(id) pasándole el id de la siguiente pregunta que se va a mostrar. ● Este método, desde el servicio de aplicación (SA) llama al mismo método, pero en este caso de PreguntaDAO, que ha sido creado solo si no existía previamente. 43 ● El DAO se encarga de establecer la conexión con la base de datos y hacer la consulta con la que obtendrá la pregunta con el id que le ha llegado por parámetro. ● Estos métodos devuelven un objeto pregunta que se guardará en una variable en mostrarCuestionario.php, que posteriormente será mostrada al usuario usando cada uno de los campos necesarios del objeto. Figura 5: Esquema Modelo-Vista-Controlador 4.2 Frontend En este apartado vamos a detallar el frontend o lado del cliente, es decir, vamos a explicar las diferentes funcionalidades de las que puede hacer uso el usuario navegando a través de las diferentes vistas disponibles en la herramienta. De esta forma, cualquiera que lea este apartado será capaz de entender como está distribuida nuestra aplicación y como puede acceder a las diferentes funcionalidades. 4.2.1. Página de inicio Esta es la página principal de la aplicación, donde encontraremos una breve descripción de nuestro proyecto y para qué sirve la herramienta, además de varios botones con los que el usuario podrá interactuar. En la parte superior de la vista, encontramos la cabecera y dependiendo de si el usuario se ha registrado o no, será de una forma u otra. Cabe destacar que la cabecera estará presente en todas las vistas de la aplicación. - Si el usuario no se ha registrado o autenticado: la cabecera contiene un enlace (“Inicio”) para volver a esta página desde cualquier lugar de la aplicación, un botón para registrarse en caso de no tener una cuenta de usuario (“¡Regístrate!”) y otro botón para autenticarse en caso de tener una cuenta de usuario (“Login”) (figura 6). - Si el usuario se ha registrado o autenticado: la cabecera sigue teniendo el enlace (“Inicio”) para volver a esta página desde cualquier lugar de la aplicación, un botón para poder ver la información de su perfil de usuario (“Mi Perfil”) y otro botón de cierre de sesión que lo único que hará es cerrar la sesión (“Cerrar sesión”) (figura 7). 44 Mientras, en la parte inferior de la vista, debajo de la descripción mencionada anteriormente, encontramos un botón para comenzar a realizar la evaluación (“Empezar cuestionario”) que inicialmente estará deshabilitado, ya que ningún usuario no registrado podrá entrar a realizar el cuestionario. Esta descripción de la vista puede apreciarse mucho mejor en la figura 6 y la figura 7. Figura 6: Vista de la página principal sin autenticarse Figura 7: Vista de la página principal autenticado 4.2.2 Registro Si el usuario ha clicado en el botón “¡Regístrate!” de la cabecera, la aplicación le llevará a la vista donde se muestra el formulario que tendrá que rellenar para completar el registro (figura 8). Una vez que el usuario haya rellenado todos los campos del formulario y haya marcado o no la casilla para conocer si es desarrollador, lo único que tendrá que hacer es pulsar en el botón “Registrarse” para terminar el proceso (figura 9). Si el nombre de usuario no está repetido y las contraseñas coinciden, todo estará correcto y la aplicación introducirá al nuevo usuario en la base de datos. Una vez finalizado el proceso, se redirige al usuario ya autenticado a la página principal (figura 7). 45 Figura 8: Vista con el formulario de registro Figura 9: Vista con el formulario de registro completo 4.2.3 Login Si el usuario ya tiene una cuenta y quiere autenticarse, tendrá que pulsar en el botón “Login” de la cabecera que le llevará a la vista de login (figura 10), donde lo único que tiene que hacer es introducir su nombre de usuario y su contraseña correctamente. Una vez introducidos (figura 11), tendrá que pulsar en el botón “Login” para finalizar el proceso de autenticación. Al igual que en el registro, se redirige al usuario a la página principal (figura 7). 46 Figura 10: Vista con el formulario de login Figura 11: Vista con el formulario de login completo 4.2.4 Mi perfil Si el usuario autenticado pulsa en el botón de “Mi perfil”, irá a una página donde podrá visualizar la información relacionada con su perfil de usuario. Además, podrá editar cada uno de los campos pulsando en “Editar perfil” e incluso borrar su cuenta de usuario pulsando en “Borrar usuario” (figura 12). - Si el usuario decide editar su perfil: Después de pulsar en el botón de “Editar perfil”, el usuario irá a una vista donde se muestra un formulario con los diferentes campos rellenos que el usuario podrá modificar a su gusto, siempre y cuando no introduzca un nombre de usuario existente y las contraseñas vuelvan a coincidir (figura 13). Después de realizar las modificaciones pertinentes y pulsar en “Editar”, se actualizará la base de datos y se redirigirá al usuario a la página principal (figura 7). - Si el usuario decide borrar su perfil: Después de pulsar en el botón de “Borrar usuario”, el sistema eliminará la cuenta de usuario de la base de datos y le redirigirá a la página principal sin estar autenticado (figura 6). 47 Figura 12: Vista con la información del perfil de usuario Figura 13: Vista con el formulario para editar la información del perfil 4.2.5 Cuestionario Una vez que el usuario se haya autenticado podrá realizar el cuestionario. El proceso es muy sencillo, simplemente tendrá que acceder a él desde la página principal pulsando en el botón de “Empezar cuestionario” (figura 7). Una vez iniciada la evaluación, tendrá que ir respondiendo a cada una de las preguntas que le irán apareciendo, y pulsando en el botón de “Enviar” (figura 14). La propia herramienta será la encargada de mostrarle las preguntas correspondientes en función de las respuestas que vaya eligiendo. 48 Figura 14: Vista con la pregunta del cuestionario 4.2.6 Informe final Una vez finalizado el cuestionario, el usuario pasará a la vista donde se muestra el informe final de la evaluación (figura 15). En este informe, se muestra una barra con el porcentaje alcanzado por el usuario, que será el resultado final obtenido en su intento. Inmediatamente debajo, se muestra una breve explicación en función de la puntuación obtenida para que el usuario sepa qué debe hacer para mejorar su producto, en caso de ser necesario. Además, también aparecerán las tres secciones peor valoradas (en caso de haberlas) para que el usuario conozca las partes más vulnerables de su producto y realice las modificaciones que crea conveniente. Por último, si el usuario es desarrollador tendrá la oportunidad de añadir una nueva pregunta al cuestionario. Figura 15: Vista con el informe final 55 Para mostrar cada pregunta, inicializamos una variable idPregunta en el script mostrarCuestionario.php, que es el script encargado de mostrar al usuario la pregunta con la sección a la que pertenece y sus respuestas correspondientes. Esta variable se inicializa según el contenido de la variable sigPregunta, obtenida por GET desde el script procesarCuestionario.php que explicaremos más tarde. Pero en el caso excepcional de la primera pregunta, dado que todavía no ha pasado por procesarCuestionario.php y, por tanto, la variable sigPregunta está vacía, idPregunta se inicializa con el id de la primera pregunta, es decir, ‘1’ (figura 22). Figura 22: Variable idPregunta Después de esto, una vez que tenemos guardado en la variable idPregunta el id de la pregunta que tenemos que mostrar, pasamos al formulario, donde comenzamos a realizar las peticiones correspondientes a la base de datos. Para realizar dichas peticiones creamos tres servicios de aplicación que son los siguientes (figura 23): - PreguntaSA(): con este SA obtenemos un objeto pregunta por medio de su id. - RespuestaSA(): con este SA obtenemos un objeto con las respuestas asociadas a esa pregunta también con su id. - SeccionSA(): con este SA obtenemos la sección a la que corresponde la pregunta actual por medio del atributo que indica la sección a la que pertenece dicha pregunta. Figura 23: Creación y uso de los SA Una vez que disponemos de la pregunta con sus respectivas respuestas y su sección, mostramos la sección en la que se encuentra el usuario para ubicarle con la temática y debajo mostramos el texto de la pregunta. Después, implementamos un bucle que recorre el objeto con las respuestas que hemos obtenido y las muestra de una en una como fila de una lista con dos elementos: el texto y el selector que permite marcar la respuesta, cuyo valor es el id de la misma. Una vez marcada la respuesta, el formulario se envía a procesarCuestionario.php con el id de la pregunta respondida. Cuando llegamos a procesarCuestionario.php, obtenemos dos elementos, el id de la pregunta que acaba de responder por medio de GET, y el id de la respuesta seleccionada vía POST al enviar el formulario (figura 24). 56 Figura 24: Obtención de idPregunta e idRespuesta Después de esto creamos de nuevo dos servicios de aplicación: - PreguntaSA(): con este SA obtenemos un objeto pregunta por medio del id conseguido mediante GET y también la siguiente pregunta que tiene que mostrar el cuestionario tras la respuesta del usuario. - RespuestaSA(): con el que obtenemos un objeto respuesta con el id de la respuesta que ha seleccionado el usuario. Además, también inicializamos una variable llamada siguiente usando el atributo sigPregunta del objeto respuesta, que guarda la siguiente pregunta a la que se dirigirá el cuestionario y que utilizaremos para redireccionar al usuario allí una vez sea procesada la respuesta (figura 25). Figura 25: Creación y obtención de la siguiente pregunta Ahora, realizamos dos comprobaciones simples pero muy importantes para encaminar el flujo del cuestionario de manera correcta. En primer lugar, comprobamos si estamos en la pregunta 2 (figura 26), dicha pregunta es la encargada de activar el conjunto de preguntas relacionadas con la inteligencia artificial, y en caso de que el usuario haya respondido que sí, cambiamos el valor de la variable de sesión tieneIA a 1 para tener en cuenta que el producto hace uso de inteligencia artificial. Figura 26: Inicialización de la variable de sesión tieneIA Por otra parte, también comprobamos si la variable de sesión tieneIA es 1, para continuar con el flujo normal, o si por el contrario es 0 y debemos cambiar el rumbo de la siguiente pregunta cuando sea de inteligencia artificial y no pasar por ella (figura 27). En este último caso, entra en juego la respuesta de emergencia, que utilizaremos como puente para acceder a la siguiente pregunta que no sea de inteligencia artificial, modificando la variable siguiente que hemos 57 mencionado anteriormente. Esto solo lo haremos en los casos en los que la siguiente pregunta a una pregunta general es una pregunta de inteligencia artificial. Figura 27: Cambio de la siguiente pregunta en función de si el producto hace uso de IA Ahora, llega el turno de actualizar la variable de sesión valoracionTotal en función de la respuesta que se haya obtenido del usuario. Además de crear una nueva variable de sesión que se encarga de guardar la valoración que ha obtenido el usuario en cada sección, con el objetivo de dividir el valor de la variable valoracionTotal entre todas las secciones del cuestionario. En este punto, hemos distinguido diferentes casos que dependen de tres variables: esHija (atributo que indica si una pregunta es hija o no), esEtica (atributo que indica si una respuesta es ética o no), y si la respuesta que se ha dado previamente a la pregunta padre de la actual es ética o no. Esto último lo guardamos en una variable de sesión resX con el id de la pregunta a la que pertenece cada vez que se procesa una respuesta (siendo X dicho id). Los casos que hemos distinguido vamos a detallarlos a continuación con una tabla ilustrativa para facilitar su comprensión (tabla 1). Tabla 1: Casos de respuesta para una pregunta • Casos 1 y 2: en los dos primeros casos no modificamos la variable valoracionTotal ni la variable seccionX (siendo X la sección en la que se encuentra actualmente el usuario) debido a que la respuesta no es ética y no es hija de ninguna otra. Aquí la variable 58 $_SESSION[res”id”] es irrelevante porque al ser una pregunta que no es hija, no está condicionada por ninguna respuesta anterior. • Casos 3 y 4: los siguientes dos casos son idénticos entre ellos, e inversos a los dos casos anteriores. En esta ocasión, dado que el usuario ha respondido de manera ética, hay que incrementar ambas variables con el peso de la pregunta actual (figura 28). Aquí la variable $_SESSION[res”id”] es irrelevante de nuevo porque al ser una pregunta que no es hija, no está condicionada por ninguna respuesta anterior. Figura 28: Incremento de la variable de sesión valoracionTotal • Caso 5: en este caso la pregunta es hija de otra, por lo que está condicionada por la respuesta de su padre. Pero, dado que la respuesta de su padre y la respuesta de la pregunta actual no son éticas, no hay que modificar las variables. • Caso 6: este caso es similar al anterior, con la única diferencia de que la respuesta de su padre sí es ética, por lo tanto, hay que restar el peso de la pregunta actual a las variables valoracionTotal y seccionX (figura 29), a la que previamente se le ha sumado el valor de la pregunta padre al ser ética. Figura 29: Decremento de la variable de sesión valoracionTotal • Caso 7: este caso está implementado como indica la figura 30. La pregunta actual es hija de una respuesta a la que se ha respondido de manera no ética, por lo tanto, dado que la respuesta actual es ética, sumamos el peso de la pregunta actual a las variables valoracionTotal y seccionX. 59 Figura 30: Incremento de la variable de sesión valoracionTotal • Caso 8: este último caso es parecido al caso 5, con la diferencia de que ahora ambas respuestas, tanto la respuesta de la pregunta actual como la de su padre, son éticas. Por lo tanto, no hay que modificar ninguna de las variables, ya que previamente se ha sumado el peso de la pregunta padre. Por último, comprobamos si la variable siguiente es 1. Esto lo hacemos así para distinguir el caso de la última pregunta, ya que después finaliza el cuestionario. En caso de no ser 1, seguimos con el flujo normal pasando a mostrarCuestionario.php que mostrará la pregunta correspondiente, pero si lo es, pasamos a mostrarResultados.php, donde se realiza la operación para calcular el resultado obtenido tras realizar el cuestionario. Aquí, en primer lugar, obtenemos el resultado final que ha obtenido el usuario conforme ha ido realizando el cuestionario, guardando en la variable resulCuestionario el contenido de la variable de sesión valoracionTotal. A continuación, comprobamos si el cuestionario realizado ha tenido preguntas de IA o no, mediante la variable de sesión tieneIA. En caso de que esta variable sea 1, obtenemos de la base de datos todas las preguntas excepto las que son hija de alguna otra, y en caso de ser 0, obtenemos todas las preguntas excepto las que son hija de alguna otra y las que son de IA, es decir obtenemos todas las preguntas excepto las de IA. Una vez tenemos todas las preguntas que queremos, realizamos un bucle para guardar en la variable total, que comienza siendo 0, el resultado de sumar todos los pesos de las preguntas obtenidas previamente (figura 31). Figura 31: Bucle para rellenar la variable total con el peso de las preguntas Una vez tenemos el máximo resultado que es posible obtener en el cuestionario y el resultado del usuario, hacemos una regla de tres y multiplicamos por 100 para conocer el porcentaje obtenido por el usuario respecto al total. Este resultado se muestra al usuario en forma de barra de progreso para hacerle saber el porcentaje de eticidad que tiene su producto, y dicha barra va acompañada de una explicación para informar al usuario qué debe hacer para mejorar ese porcentaje y obtener un producto que cumpla con los requisitos éticos. Después, se realiza un bucle que recorre todas las secciones (figura 32), donde en la variable pesoSeccion se obtiene el peso máximo que se puede conseguir en cada sección, sumando el peso de todas las 60 preguntas padre que tiene. A dicho peso, se le resta la puntuación obtenida por el usuario en la sección correspondiente y se guarda en el array pesoSecciones. Figura 32: Bucle para rellenar el array pesoSecciones Ahora, disponemos en el array pesoSecciones el peso que el usuario se ha ido dejando en cada sección conforme ha ido rellenando el cuestionario. Esto lo utilizaremos para conseguir las tres secciones que han obtenido peor valoración e informar al usuario acerca de ello. Para obtener la sección peor valorada, guardamos en dos variables el máximo valor que tiene el array y su clave (que corresponde al id de la sección), y después eliminamos dicho valor. Este proceso se repite tres veces (figura 33). A continuación, se crea un nuevo servicio de aplicación que nos servirá más adelante. También creamos e inicializamos el array descripciones, compuesto por una descripción de cada sección del cuestionario que proporcionará al usuario más detalles sobre cómo mejorarlas e incrementar la eticidad del producto. Ahora comprobamos si resulFinal es inferior a 100, es decir, comprobamos que el resultado no es el máximo posible. Si es así, se obtienen las tres secciones peor valoradas del cuestionario (si existen) mediante el servicio de aplicación creado previamente (seccionSA), y se muestran las tres al usuario, acompañadas de la descripción correspondiente del array descripciones. Después, si el usuario es desarrollador, se le ofrece la posibilidad de añadir una nueva pregunta al cuestionario. Por último, cuando el usuario vuelve al inicio, se reinician las variables necesarias por si el usuario quiere hacer de nuevo el cuestionario. Estas variables son las que guardan la valoración de cada sección por separado, y las que guardan si la respuesta seleccionada a cada pregunta es ética o no (figura 34). 61 Figura 33: Obtención de las tres secciones peor valoradas Figura 34: Reinicio de las variables de sesión 4.4.2 Usuarios El cuestionario hará uso de un registro de usuarios y un login para conocer a los usuarios que lo realicen y así ofrecerles distintas funcionalidades dependiendo del rol que tengan. Es muy importante informar de que un usuario podrá realizar el cuestionario solo si está registrado, es decir, si tiene una cuenta de usuario. Por lo tanto, en la herramienta existirán dos roles diferentes para los usuarios: usuarios desarrolladores y usuarios no desarrolladores. Para acceder al cuestionario, lo único que tendrán que hacer es autenticarse con su cuenta introduciendo su nombre de usuario y contraseña y, pulsando en “Login”. En caso contrario, tendrán que registrarse pulsando en “¡Registrate!”, dónde será necesario introducir una serie de datos para obtener la cuenta y así poder realizar el cuestionario. El apartado “¡Registrate!” Se divide en dos partes: formularioRegistro.php y procesarRegistro.php. En el formulario se muestran los campos que el usuario tendrá que 62 rellenar para crear su cuenta, entre los que se encuentran el nombre, los apellidos, el nombre de usuario, la contraseña y si es desarrollador de un producto. Este último campo será importante, ya que, como se ha mencionado anteriormente, determinará qué puede hacer el usuario. Si el usuario es desarrollador, además de poder realizar el cuestionario, podrá añadir una nueva pregunta en el lugar que quiera dentro del mismo. En esta parte del código, además del formulario, también se encuentra un script que se encargará de hacer que se cumplan una serie de requisitos a la hora de rellenar el formulario. Figura 35: Evento click En dicho script nos encontramos la función registro, que se ejecutará cuando el usuario haga click para enviar el formulario (figura 35). Dicha función es la encargada de realizar la petición AJAX a procesarRegistro.php vía POST para comprobar que todos los campos son válidos y así realizar el registro de un nuevo usuario. Aquí, se construye el objeto JSON que se enviará en la petición, con los datos introducidos por el usuario en el formulario. Para ello, lo primero que hacemos es guardar en diferentes variables los datos introducidos por el usuario, obteniéndose cada uno de los campos mediante su id con querySelector (figura 36). Figura 36: Obtención de todos los campos del formulario de registro Una vez tenemos todas las variables que necesitamos, comprobamos si el usuario ha dejado alguno de los campos sin rellenar. Cabe destacar que todos los campos son obligatorios, excepto el segundo apellido, ya que puede haber usuarios que no lo tengan (nacionalidad diferente de la española). En caso de que alguno de los campos obligatorios esté vacío, se lanzará un mensaje de error que interrumpirá el proceso (figura 37). Figura 37: Comprobación de los campos 63 Pero si no es así, quiere decir que todos los campos son correctos. Por eso, se construye el objeto JSON, asignando a cada clave el valor que se obtiene de cada una de las variables inicializadas un poco más arriba (figura 38). Figura 38: Construcción del objeto JSON Una vez hecho esto, se envía la petición AJAX con los parámetros necesarios: el método POST de envío, la ruta a la que irá la petición, procesarRegistro.php, y el objeto JSON con los datos que se enviarán en la petición. Al comienzo de procesarRegistro.php se obtienen todos los campos que el usuario ha rellenado en el formulario vía POST, aunque de una forma un tanto peculiar porque se trata de un objeto JSON (figura 39). La instrucción json_decode es necesaria porque se encarga de convertir el JSON a una variable de PHP. Una vez tenemos la variable myObj, se inicializan todas las demás con los datos obtenidos de los campos del formulario. Figura 39: Obtención de los campos vía POST Para almacenar y devolver el resultado de la petición que se ha realizado a este script, utilizamos una variable llamada result que tiene el valor 3 inicialmente y que al final podrá cambiar, llegando a tener alguno de los siguientes valores: - result = 0: El usuario no se ha añadido correctamente. 64 - result = 1: El usuario se ha añadido correctamente. - result = 2: El nombre de usuario ya existe. - result = 3: Las contraseñas no coinciden. Si las dos contraseñas introducidas por el usuario en el registro no coinciden, la variable result seguirá teniendo el valor 3 y ni siquiera se llegará a entrar en la primera condición. En caso de que ambas coincidan, se crea un objeto UsuarioTransfer inicializado con las variables que contienen los datos del formulario, y a continuación, se crea un servicio de aplicación (UsuarioSA) que se encargará de lanzar la petición de añadir el nuevo usuario al DAO. El resultado de la consulta se guarda en la variable result sobrescribiendo su valor anterior (figura 40), con el objetivo de conocer si el usuario se ha añadido correctamente o no, y en el caso de no haberse añadido, especificar si ha sido debido a que el nombre de usuario ya existía previamente. Figura 40: Creación del UsuarioTransfer y adición del nuevo usuario Si el usuario se ha añadido con éxito, result pasará a tener el valor 1 y se crean tres variables de sesión que nos serán muy útiles para determinar si el usuario ya está autenticado en el sistema o no, y de qué tipo de usuario se trata (figura 41). Figura 41: Creación de las variables de sesión En caso de que el nombre de usuario introducido ya exista en la base de datos, la consulta devolverá el valor 2, que se guardará en la variable result. Al igual que si se da el caso de que la consulta no se haya podido realizar, devolverá un 0 y también se guardaría en la variable result. 71 Figura 56: Obtención del nombre de usuario mediante la variable de sesión Después de eso, se crea un servicio de aplicación (UsuarioSA) y se realiza una petición para obtener el objeto usuario a partir de su nombre (username). Dicho objeto se almacena en la variable usuario y contiene todos los atributos del usuario. Disponiendo del identificador del usuario podemos hacer una última petición para borrar la cuenta de usuario de la base de datos de forma permanente (figura 57). Figura 57: Creación del SA y borrado de la cuenta de usuario Para terminar, de la misma forma que hacemos en el apartado de cerrar sesión, se liberan las variables de sesión y se destruye la información relacionada con la sesión. 4.4.3 Añadir pregunta Nuestra idea con esta funcionalidad es que los desarrolladores que usen la herramienta tengan la posibilidad de añadir sus propias preguntas al cuestionario. Únicamente permitimos que los desarrolladores sean los que puedan introducir las preguntas porque conocen la temática del cuestionario y entendemos que ellos pueden observar algún punto concreto que no hayamos contemplado. Por ello, esta funcionalidad permitirá cubrir esos posibles huecos confiando en que añadirán la pregunta de manera responsable. De esta forma, el cuestionario irá creciendo con el paso del tiempo y será mucho más completo que la versión actual. Cuando un usuario termine de hacer el cuestionario llegará a mostrarResultados.php, una vista en la que se le informará de los resultados obtenidos tras responder a todas las preguntas. Además de poder ver los resultados, si el usuario es desarrollador (esDesarrollador = 1), le aparecerá la opción de poder añadir una nueva pregunta a la base de datos de forma dinámica y para ello, tendrá que rellenar un formulario con diferentes campos relacionados con la nueva pregunta que quiere añadir. Tras enviarlo, la herramienta se encargará de insertar la pregunta dentro de la base de datos y enlazarla correctamente con el resto de las preguntas del cuestionario. En este apartado nos centraremos en explicar el proceso que llevará a cabo la aplicación para realizar dicha tarea. Antes de comenzar, vamos a enumerar los diferentes casos que se pueden dar a la hora de añadir una pregunta, después explicaremos detalladamente cada uno de ellos cuando llegue el momento. - Añadir una pregunta hija a una pregunta padre (tenga más hijas o no). - Añadir una pregunta que será padre de otras ya existentes que no tenían padre. 72 - Añadir una pregunta que será hija de una padre y padre de las hijas (añadir una pregunta en medio de una relación padre/hija). - Añadir una pregunta independiente, sin padre ni hijas. Antes de llegar a procesarAñadirPregunta.php tenemos que pasar por formularioAñadirPregunta.php, donde se encuentran todos los campos a rellenar necesarios para que la pregunta pueda añadirse sin ningún problema. Dicho formulario es dinámico, es decir, el usuario podrá desplegar ciertos campos en caso de necesitarlos, siendo cada uno de ellos necesario para que la pregunta se añada a la base de datos de forma correcta y no haya ninguna alteración en el comportamiento de la herramienta. Al comienzo del cuestionario tenemos los campos más básicos y generales: un campo para introducir el texto de la pregunta y otro para introducir el texto de la respuesta. Debajo de este último, hay un botón con el símbolo de suma que el usuario podrá pinchar para desplegar más campos de texto en el caso de que quiera que su pregunta tenga más de una respuesta. Concretamente podrá añadir hasta cuatro respuestas a la nueva pregunta, es decir, podrá desplegar un máximo de cuatro campos de texto de respuesta. Debajo de estos campos, hay tantas cajas de selección como respuestas haya, que servirán para definir si cada una de las respuestas es ética o no. A continuación, hay una lista desplegable para seleccionar la sección a la que pertenece la pregunta. Justo debajo dos listas desplegables más, una para seleccionar la pregunta anterior de la que se va a introducir y otra para seleccionar la pregunta siguiente, y también, un campo para introducir el peso que tendrá la nueva pregunta dentro del cuestionario. Cabe destacar que los campos para seleccionar las preguntas anterior y siguiente, deben ser obligatoriamente preguntas consecutivas en el cuestionario, y en caso de añadir la pregunta nueva al final, la pregunta siguiente será la primera. Además, el peso de la pregunta debe tener un valor entre 1 y 10. La descripción realizada a lo largo de todo el párrafo se puede apreciar mucho mejor observando la figura 58. Figura 58: Campos más generales del cuestionario 73 Como hemos mencionado, estos son los campos más básicos, pero eso no quiere decir que sean los menos importantes, ya que junto con los que vamos a explicar a continuación, son indispensables para la construcción y adición de la nueva pregunta. Ahora vienen los campos más rebuscados, a partir de los cuales obtendremos datos concretos de vital importancia para enlazar correctamente la nueva pregunta y sus respuestas con el resto del cuestionario. Por ello, vamos a explicarlos con más detalle para que no haya ningún tipo de confusión a la hora de entender el formulario y lo que pedimos en él. Para saber si la pregunta que va a introducir el usuario es una pregunta hija, tendrá que responder a lo siguiente: “¿La pregunta depende de otra anterior?” (figura 59). Según la respuesta del usuario sabremos si la pregunta que va a introducir es hija o no, y en caso de serlo, aparecerá una lista desplegable (figura 60) debajo para seleccionar cuál es la pregunta de la que depende, es decir, su padre. Figura 59: Pregunta para conocer si la nueva pregunta será hija o no Figura 60: Tras marcar "Sí" se despliega la lista de preguntas De la misma forma, para saber si la nueva pregunta va a ser padre de alguna otra, el usuario tendrá que responder a: “¿Habrá preguntas que dependan de la nueva?” (figura 61). Según la respuesta del usuario sabremos si la nueva pregunta va a ser una pregunta padre o no, y en caso de serlo, aparecerán tantos nuevos campos de selección como respuestas haya, cuya función detallaremos unos cuantos párrafos más abajo, ya que estos campos no aparecerán inmediatamente debajo de esta pregunta. Figura 61: Pregunta para conocer si la nueva pregunta será padre o no Después viene una pregunta sencilla relacionada con la IA (figura 62) que el usuario tendrá que responder para saber si la nueva pregunta estará relacionada o no con la IA. Figura 62: Pregunta para conocer si será de IA o no Un detalle que también tuvimos que tener en cuenta era la forma en la que se tenía que acceder a la nueva pregunta, es decir, como ya hemos explicado en uno de los apartados anteriores, el 74 usuario se moverá por el cuestionario en función de lo que vaya respondiendo, y, por lo tanto, conociendo cuál será la pregunta anterior, necesitamos saber si para acceder a la nueva se ha tenido que responder de forma ética o no a la anterior, o si da igual, pudiendo acceder a ella de las dos formas (figura 63). Figura 63: Pregunta para conocer si para acceder a la nueva se ha tenido que responder de forma ética o no Ahora llegamos a la parte del formulario en la que el usuario tendrá que seleccionar a qué pregunta tendrá que ir tras contestar cada una de las respuestas introducidas previamente (figura 64). Además, si anteriormente ha indicado que habrá preguntas que dependan de la nueva, aparecerán los nuevos campos de selección que hemos mencionado más arriba para indicar si la pregunta a la que tiene que ir tras contestar a la respuesta, será hija o no (figura 65). Un detalle que el usuario debe tener muy en cuenta a la hora de seleccionar las preguntas a las que van a ir cada una de las respuestas, es que al menos una de esas respuestas debe de ir a la pregunta inmediatamente siguiente para evitar de esta forma lagunas o caminos cortados que impidan llegar a una pregunta. Si la pregunta siguiente a la nueva es la primera, es decir, la pregunta nueva se va a añadir al final, sus respuestas también deberán conducir a la primera. Figura 64: Pregunta para conocer la siguiente cuestión a la que tendrá que ir después de la respuesta seleccionada Figura 65: Nuevo campo para conocer qué preguntas serán hijas de la nueva Una vez que el usuario haya completado todos los campos y haya pinchado en el botón “Añadir”, los datos se pasarán a procesarAñadirPregunta.php a través del formulario y se obtendrán vía POST. Nada más llegar al script, se realiza la obtención de dichos campos, además de su preparación para ser usados a lo largo del proceso. Lo primero que se obtiene es el texto de la pregunta que se almacena en la variable pregunta, seguido del número de respuestas introducidas que se almacena en la variable num_respuestas. Esta variable la obtenemos mediante un campo oculto en el formulario (que no hemos mencionado), que guarda el número de respuestas que ha introducido el usuario. Utilizaremos el valor de la variable para recorrer un bucle con el que obtendremos cada una de las respuestas introducidas, que iremos almacenando en el array arrayRespuestas (figura 66). 75 Figura 66: Obtención de la pregunta y las respuestas vía POST Una vez obtenidos y almacenados los valores relacionados con las respuestas , se crea un nuevo array arrayEsEtica. De nuevo, volvemos a utilizar la variable num_respuestas para recorrer un bucle mediante el que iremos obteniendo los valores que tienen que ver con la eticidad de las respuestas introducidas y los iremos almacenando en la variable arrayEsEtica. Este array será útil más adelante para crear los RespuestaTransfer (figura 67). Figura 67: Creación del array que indica qué respuestas son éticas y cuáles no Después se obtiene y almacena la sección seleccionada, la pregunta anterior, la pregunta siguiente y el peso de la nueva pregunta en sus respectivas variables: seccion, pregAnterior, pregSiguiente y peso. Las variables esHija y padre son complementarias. En esHija se almacena un booleano que indica si la nueva pregunta que va a añadir el usuario es una pregunta hija (pregunta que depende de otra anterior) y, por lo tanto, en caso de serlo, en la variable padre se guarda el identificador de su pregunta padre. Si la nueva pregunta no es una pregunta hija, el valor de la variable padre se pondrá a 0, ya que no importa dicho valor al no tener una pregunta padre (figura 68). 76 Figura 68: Obtención de los atributos esHija y padre La variable esPadre almacena un booleano que indica si la nueva pregunta es una pregunta padre (pregunta que tiene otras que dependen de ella). La variable esIA almacena un booleano que indica si la nueva pregunta está relacionada con la inteligencia artificial o no. En acceso se almacena qué respuesta hay que dar a la pregunta anterior para poder llegar (acceder) a la nueva pregunta. En este caso hay tres posibilidades: 1 (respuesta ética), 0 (respuesta no ética) y 2 (da igual la respuesta anterior). Ahora se crean dos arrays: arraySigPreguntaRes y arrayEsPadre. De nuevo, volvemos a utilizar la variable num_respuestas para recorrer un bucle para rellenar ambos arrays. En el primero (arraySigPreguntaRes) se almacenan los identificadores de las preguntas a las que tiene que ir después de cada respuesta. Dependiendo de la respuesta que seleccione el usuario, tendrá que ir a una u otra pregunta, además de guardar en el segundo (arrayEsPadre), en caso de ser necesario, si la siguiente pregunta a la que tiene que ir es hija o no de la nueva pregunta (figura 69). Los dos arrays se van a utilizar después para crear los RespuestaTransfer y hacer las modificaciones oportunas. Figura 69: Obtención de las siguientes preguntas a las que irá el usuario en función de la respuesta Una vez analizado el apartado de la obtención de los datos vía POST del formulario y su respectiva organización en diferentes variables, pasamos a la parte del código en la que se hace uso de todas estas variables. Para comenzar se crea un servicio de aplicación (PreguntaSA) que 77 posteriormente será el encargado de realizar las diferentes tareas necesarias para añadir la pregunta a la base de datos. Para comprender mejor los diferentes pasos que seguimos para añadir la nueva pregunta del cuestionario, hemos dividido esta parte del código en diferentes apartados que vamos a listar a continuación: - Modificar los pesos de las preguntas. - Modificar el atributo orden donde sea oportuno. - Añadir la nueva pregunta a la base de datos. - Modificar los atributos esHija y padre. - Añadir las respuestas de la pregunta recién añadida. Dentro de esta división se puede también se puede hacer una diferenciación, primero está la parte del código relacionada con las preguntas (los primeros cuatro puntos) y después la de las respuestas (el último punto). Modificar los pesos de las preguntas Al añadir una nueva pregunta, el usuario tendrá que introducir el peso que le quiere dar a la misma dentro del cuestionario. Por ello, dependiendo del tipo de pregunta que sea, hay que modificar el peso de una forma u otra. Antes de comenzar con la explicación, es necesario recordar que la suma del peso de todas las preguntas hijas de un mismo padre, no puede superar el peso de dicha pregunta padre, es decir, esa suma tiene que ser menor o igual que el peso de la pregunta padre. Dicho esto, podemos empezar diferenciando los casos que hemos contemplado a la hora de gestionar los pesos. Primero contemplamos si la nueva pregunta es una pregunta hija, sin importar si es padre también (eso lo haremos en la siguiente condición). Como hemos mencionado en el párrafo anterior, al añadir una pregunta tenemos que modificar el peso de otras, en este caso, al ser una pregunta hija tenemos que modificar el peso de su pregunta padre sumándole el peso de esta, para que la suma total de los pesos de sus hijas siga siendo menor o igual que el de la pregunta padre. Y a su vez, si esa pregunta padre también es hija, es decir, tiene una pregunta padre, habrá que seguir haciendo lo mismo hasta que se llegue a una pregunta que no tenga padre y sea la última de la cadena. Por eso hacemos un bucle recorriendo las preguntas padre (figura 70). 78 Figura 70: La nueva pregunta es hija sin importar si es padre o no Una vez tenemos cubierta esa parte, llegamos a las siguientes dos condiciones del apartado que tienen que ver con que la nueva pregunta sea padre. - Primer caso. La nueva pregunta es hija y padre a la vez (figura 71). Con el servicio de aplicación (preguntaSA) se obtienen todas las hijas de la pregunta padre de la nueva pregunta y se guardan en la variable hijas, que posteriormente se recorrerá mediante un bucle while para sumar el peso de todas ellas. Dicha suma se irá guardando en la variable pesoHijas (que se ha inicializado previamente). Esto es así porque las preguntas hijas de la pregunta padre de la nueva pregunta, pasarán a ser hijas de la nueva pregunta, por lo que hay que sumar el peso de todas ellas y añadirlo al peso de la nueva pregunta. Antes de salir de la condición, se modifica la variable peso sumándole el valor de la variable pesoHijas. Figura 71: La nueva pregunta es hija y padre a la vez - Segundo caso. La nueva pregunta es padre, pero no es hija (figura 72). Este caso es muy similar al anterior, con la diferencia de que aquí solo se tienen en cuenta las preguntas hijas de la nueva pregunta. Por eso, lo que hacemos es un bucle que recorre las siguientes preguntas a las que puede ir el usuario después de responder, 79 y dentro de ese bucle, se comprueba si cada una de esas preguntas son hijas o no de la nueva pregunta padre. En caso de serlo, se acumula su peso en la variable pesoHijas. Antes de salir de la condición, se modifica la variable peso sumándole el valor de la variable pesoHijas. Figura 72: La nueva pregunta es padre, pero no hija La variable peso, que contiene el valor de la nueva pregunta, se utilizará más adelante para crear el PreguntaTransfer. Modificar el atributo orden donde sea oportuno Esta parte del código es la que se encarga de mantener el orden correcto de todas las preguntas para que se muestren correctamente en los desplegables de selección de formularioAñadirPregunta.php. Cada pregunta tiene su identificador único, pero no es posible que indique también la posición de cada una dentro de su sección, por el simple hecho de que, al añadir una nueva pregunta a la base de datos, ésta se añade con el identificador que le toque al ser de tipo AUTO_INCREMENT. Por ello, tuvimos que definir un nuevo atributo (orden) dentro de la tabla de preguntas que indicara la posición de la pregunta dentro de su sección. Una vez declarado dicho atributo, lo único que tenemos que hacer es tenerlo en cuenta a la hora de añadir una nueva pregunta, con el objetivo de hacer las modificaciones necesarias para mantener el orden correcto de las preguntas dentro de cada sección. Antes de comenzar, declaramos una nueva variable orden que utilizaremos para guardar la posición en la que se situará la nueva pregunta dentro de su sección. Justo en las dos líneas de debajo, ver figura 73, utilizamos las variables pregAnterior y pregSiguiente para obtener los objetos pregunta pertinentes mediante el servicio de aplicación (PreguntaSA). Dichos objetos se almacenan en las variables preguntaAnterior y preguntaSiguiente. 80 Figura 73: Creación de la variable orden y obtención de la pregunta anterior y siguiente Es importante mencionar que nunca se va a dar el caso en el que un usuario añada una nueva pregunta y su sección no coincida ni con la de la pregunta anterior ni con la de la pregunta siguiente, al menos coincidirá con una de ellas. Ese caso solo podría ocurrir si existiera una sección vacía y el usuario añadiera la nueva pregunta en esa sección, pero como no hay ninguna sección vacía no puede pasar. En este apartado podemos distinguir tres casos: - Primer caso. La sección a la que pertenece la nueva pregunta no coincide con la de su pregunta anterior (figura 74). En este caso, la nueva pregunta ocupará la primera posición en la sección indicada, ya que después de la última pregunta de una sección, que aquí es la pregunta anterior, tiene que ir la primera pregunta de la siguiente sección obligatoriamente. Para ello, se almacena un 1 en la variable orden (la nueva pregunta es la primera de la sección) y se hace una petición al servicio de aplicación (PreguntaSA) que se encargará de incrementar en uno el valor del atributo orden de todas las preguntas de esa sección, para que encaje la nueva pregunta. Figura 74: La sección a la que pertenece la nueva pregunta no coincide con la de su pregunta anterior - Segundo caso. La sección a la que pertenece la nueva pregunta no coincide con la de su pregunta siguiente (figura 75). Aquí ocurre lo mismo que en el caso anterior, pero ahora la nueva pregunta será la última de su sección y la siguiente pregunta, la primera de la suya. Por lo tanto, lo único que hay que hacer es almacenar en la variable orden la suma de la posición de la pregunta anterior (que pertenece a la misma sección) más uno. Figura 75: La sección a la que pertenece la nueva pregunta no coincide con la de su pregunta siguiente - Tercer caso. La sección a la que pertenece la nueva pregunta coincide con ambas (figura 76). 87 Figura 90: Bucle para modificar las respuestas Para terminar, queda un último caso donde aún es necesario modificar la variable sigPregunta de alguna respuesta. Este caso reside en las preguntas sucesoras de las hijas de la pregunta padre de la nueva, donde al no ser hijas directas del padre, la modificación de sus respuestas no está contemplada en el caso anterior, pero también tienen que ser cambiadas. Por ello, hacemos una consulta (figura 91) donde obtenemos las respuestas cuyo atributo sigPregunta es igual al valor de la variable pregSiguiente y, además, pertenecen a preguntas cuyo id es posterior al del padre de la nueva (evitando de esta forma cambiar las respuestas de alguna pregunta anterior). Figura 91: Obtención de las respuestas Una vez tenemos estas respuestas, se hace lo mismo que en el bucle anterior (figura 90). Se recorre la variable respuestasIdMayorPadre, y en cada vuelta del bucle, se modifica cada una de las respuestas correspondientes, cambiando el valor del atributo sigPregunta por el del id de la nueva pregunta (codPregunta) (figura 92). Figura 92: Bucle para modificar las respuestas 88 Capítulo 5. Conclusiones y trabajo futuro En este capítulo comenzaremos explicando las conclusiones que hemos sacado de nuestro proyecto a lo largo de estos meses que hemos trabajado en él, además de explicar de qué forma nos han ayudado las asignaturas cursadas a lo largo del grado. Dedicaremos una parte de este capítulo a explicar cómo se podría extender nuestro trabajo de cara al futuro, mencionando distintas mejoras que se podrían llevar a cabo. 5.1 Conclusiones Tener en cuenta si los diferentes aspectos de un producto TIC cumplen con los requisitos éticos o no, es fundamental y va a ser cada vez más común en el desarrollo tecnológico. Esto es algo que a menudo los equipos de desarrollo no tienen muy en cuenta, pero puede determinar si el producto está listo para salir al mercado sin que exista la posibilidad de provocar daños a los usuarios o a otras personas. Hasta el momento, en la mayoría de los casos el estudio ético de un producto se realizaba cuando este ya estaba en el mercado (o a punto de salir) midiendo los resultados negativos y parcheando el producto para minimizarlos. Este modelo de producción no garantiza la integridad ética del producto, por eso distintas entidades supranacionales y empresas (como se han referenciado en el capítulo 1) inciden en que es desde el momento de diseño de la aplicación cuando deben empezar a tenerse en cuenta los aspectos éticos. Por ello, en la fase de diseño es donde entra en funcionamiento nuestra herramienta, con el objetivo de evaluar qué aspectos del producto que está en desarrollo puede que no cumplan con los requisitos éticos, dando la posibilidad de corregir estos descuidos a tiempo y concienciar a los desarrolladores para que no vuelvan a suceder. En esa fase, somos capaces de determinar qué problemas relacionados con la ética podría haber y qué consecuencias podrían tener sobre el producto, y lo más importante, la sociedad. Para implementar nuestra herramienta y conseguir que resuelva este problema, hemos tenido que realizar una extensa fase de investigación que nos ha permitido conocer los apartados más importantes que debemos tener en cuenta a la hora de evaluar el grado de eticidad de un producto. Además de conocer qué clase de preguntas tenemos que contemplar para cubrir los aspectos más destacados de cada apartado. Afortunadamente, gracias a los avances tecnológicos y a la digitalización de la sociedad, cada vez hay más empresas que tienen en cuenta la importancia de realizar productos que sean respetuosos y éticos en todos sus aspectos. Las empresas tecnológicas están empezando a ser conscientes de su gran influencia e impacto en la sociedad, ya que pueden afectar a millones de personas en segundos, y las consecuencias de un error en la fase de diseño pueden ser fatales, pudiendo provocar daños a personas y pudiendo afectar negativamente a la reputación de la empresa. Consideramos que este tema podría tener una visión mucho más amplia e influyente en los próximos años, donde cobre mucha más importancia la función del eticista (especialista en ética [26]) hasta llegar a ser una profesión de futuro. Actualmente, no solo es complicado 89 encontrar casos de personas cuyo trabajo sea el de eticista, sino que el significado de la palabra no se encuentra en la gran mayoría de diccionarios. En internet se pueden encontrar distintas acepciones para el término eticista, pero la que se asemeja más a nuestro trabajo, relacionado con la búsqueda de la ética en los diferentes aspectos de un producto TIC antes de que salga al mercado, es la siguiente: se trata de una persona que estudia sistemáticamente los valores y cómo estos informan acciones, decisiones y prácticas. Hoy en día hay empresas que disponen de eticistas dentro de su plantilla, considerando que es un puesto importante y necesario, cuya función es la de revisar material y dar recomendaciones sobre la forma de realizar una tarea [27]. Por ello, la evolución de este puesto con el paso del tiempo podría desembocar en que las empresas tomen la decisión de tener un departamento de profesionales especializados en ética que se encargue de verificar la eticidad de un producto, un algoritmo o una decisión determinada. En esto último, nuestra herramienta podría ser de gran ayuda. A la hora de realizar una evaluación para verificar si un producto cumple con las directrices éticas, nuestro cuestionario facilitaría el trabajo de estos profesionales. Ahora, no necesitan documentarse con distintos comunicados, consejos y directrices para conocer y evaluar los requisitos éticos a tener en cuenta en el diseño de un producto, ya que es una tarea que hemos desempeñado nosotros previamente para elaborar el cuestionario mediante el documento que contiene las directrices éticas emitido por la Comisión Europea, además de otros enlaces y artículos con los que hemos trabajado todo este tiempo. Además, para los especialistas en ética sería de gran ayuda el hecho de que nuestro cuestionario permita a los desarrolladores añadir nuevas preguntas. En caso de creerlo necesario, pueden elaborar nuevas cuestiones que hagan más completo el cuestionario y esté actualizado en todo momento, ya que con el paso del tiempo y el desarrollo de nuevas tecnologías pueden surgir nuevos dilemas éticos que sea necesario contemplar y añadir en el cuestionario. Por otra parte, también se pueden contemplar una visión y un uso diferentes que se le pueden dar a nuestra herramienta. Los profesores o conferenciantes que formen parte del sector tecnológico pueden utilizar nuestro cuestionario de apoyo para formar a los futuros desarrolladores, concienciándoles para que conozcan el impacto que tiene su profesión y las consecuencias de sus actos si no actúan de la manera correcta, con el objetivo de que aprendan a implementar los productos de manera responsable y cumpliendo con los valores éticos. Antes de comenzar con este proyecto, teníamos los conocimientos básicos sobre el diseño relacionado con la ética gracias a la asignatura de Ética, legislación y profesión, pero después de estar trabajando durante tanto tiempo en este TFG, hemos ampliado considerablemente nuestros conocimientos acerca de esta temática y la percepción que teníamos sobre el diseño de nuevos productos tecnológicos ha cambiado. En primer lugar, dado que la parte a la que más tiempo le hemos dedicado es la búsqueda y creación de las preguntas, ahora somos capaces de realizar una evaluación siguiendo las directrices éticas establecidas por la Comisión Europea. Esta evaluación incluye el conocimiento de los diferentes apartados que hay que tratar, así como la manera de enfocarlos, siendo en nuestro caso, a través de las diferentes preguntas para realizar una auditoría completa. Cabe destacar que, como futuros profesionales del sector tecnológico, y más concretamente del desarrollo relacionado con nuevos productos y aplicaciones, este largo proceso nos ha hecho ser conscientes del poder que tenemos en nuestras 90 manos y la responsabilidad con la que debemos desempeñar nuestra función, asumiendo que la fase de diseño durante el ciclo de vida de un producto es vital para evitar un impacto negativo que pueda afectar a distintas partes cuando el producto salga al mercado. Además de esto, hemos aprendido a formular las preguntas de forma correcta, aplicando distintas técnicas para conseguir que el usuario no se pierda en ningún momento y sea capaz de entender la finalidad de cada cuestión sin dificultad. 5.2 Asignaturas De cara a realizar nuestro proyecto hemos tenido muy en cuenta los conocimientos que hemos ido adquiriendo a lo largo de la carrera, que nos han permitido desarrollar e implementar nuestra herramienta. Este proyecto tiene dos partes bien diferenciadas, la primera consiste en toda la fase de investigación y desarrollo de las preguntas, fuertemente relacionada con los principios éticos en la informática, mientras que la segunda parte, la de desarrollo e implementación de la herramienta tiene que ver en su mayoría con el desarrollo de aplicaciones web. En cuanto a toda la fase de investigación y el desarrollo de las preguntas, hemos tenido en cuenta los principios éticos aprendidos en la asignatura de Ética, legislación y profesión, donde hemos obtenido la capacidad para diseñar, desarrollar y evaluar aplicaciones y sistemas informáticos, asegurando su fiabilidad, seguridad y calidad, conforme a estos principios, así como la capacidad para valorar la repercusión social y medioambiental de las soluciones de la ingeniería. A la hora de desarrollar e implementar la herramienta hemos aplicado los conocimientos adquiridos en cuatro asignaturas: Aplicaciones web, Desarrollo de sistemas interactivos, Bases de datos y Estructura de datos. En primer lugar, la asignatura de Aplicaciones web nos ha permitido conocer la arquitectura de las aplicaciones web, así como el lenguaje de programación del lado del servidor PHP, que ha sido el que hemos empleado para desarrollar la parte backend, y el lenguaje HTML, que hemos aplicado en la parte del cliente o frontend. Además, en esta parte, también hemos podido aplicar los conocimientos adquiridos en la asignatura de Bases de datos, que tienen que ver con las características, funcionalidades y estructura de las bases de datos, que permitan su adecuado uso, y el diseño y el análisis e implementación de aplicaciones basadas en ellos. Gracias a Desarrollo de sistemas interactivos hemos adquirido la capacidad para diseñar y evaluar interfaces personacomputador que garanticen la accesibilidad y usabilidad a los sistemas, servicios y aplicaciones informáticas. Y por último, a la hora de implementar el flujo del cuestionario los conocimientos adquiridos en la asignatura de Estructura de datos nos han sido de gran utilidad. Siempre hemos pensado que nuestro cuestionario funcionaría como una especie de lista enlazada, donde las preguntas con su conjunto de respuestas harían a su vez de nodos, y el usuario se iría desplazando por cada uno de ellos dependiendo de la respuesta que seleccione. Cada nodo está formado por una pregunta y sus respuestas, que apuntan a la siguiente pregunta a la que tiene que ir el usuario. Esto se puede ver implementado mediante algunos atributos de la base de datos. Esta visión también nos ha ayudado a la hora de implementar la adición de una nueva pregunta al cuestionario, introduciendo el nuevo nodo enlazándolo con el anterior y el posterior. También, para realizar las pruebas con los diferentes casos que podrían darse a la hora de añadir una nueva pregunta, veíamos la relación preguntas padre e hijas como una 91 especie de árbol, que nos ayudaba mucho a tener una visión completa del caso concreto que estuviéramos analizando en ese momento. 5.3 Trabajo futuro Nuestro proyecto se podría extender claramente con más funcionalidades para conseguir un cuestionario más completo y útil para la auditoría ética del diseño de un producto tecnológico. Una mejora sería la adición de preguntas en función del tipo de producto que está siendo evaluado. Esta es una modificación que en un principio íbamos a implementar, pero finalmente no nos ha dado tiempo a hacerla. Consistiría en profundizar en los apartados más delicados dependiendo del tipo de producto (obtenido en la primera pregunta del cuestionario), por ejemplo, si se trata de una aplicación que ofrece servicios de banca, sería aún más importante y necesario verificar que almacena correctamente los datos sensibles de sus usuarios y comprobar que no hay ningún agujero de seguridad que los ponga en peligro. Nos habría gustado que nuestra aplicación hubiera sido testeada por desarrolladores profesionales con el objetivo de obtener una retroalimentación aún más completa que la que hemos tenido durante el desarrollo de las preguntas. No es algo obligatorio, pero tal vez nos podría haber ayudado a pulir aún más ciertas preguntas e incluso desarrollar otras nuevas. Respecto al cuestionario, una posible mejora, pensando en los desarrolladores que trabajaran en la gestión del mismo, sería añadir a cada pregunta un marcador para que en caso de que consideren que no está formulada correctamente o no enfoca bien el tema que trata, puedan hacer algún tipo de modificación. La persona que está completando el cuestionario marcaría todas las preguntas que considere necesarias y al final aparecerían todas estas preguntas con un campo de texto que le permita modificarlas a su gusto, de la manera que crea que puede mejorar el cuestionario y la experiencia de los siguientes usuarios que hagan uso de él. El hecho de permitir que el usuario modifique la pregunta que quiera y de la manera que quiera, lo haríamos porque el cuestionario va dirigido a personas que se dedican a desarrollar productos de manera profesional y, por lo tanto, es su trabajo, por lo que entendemos que actuarían de manera responsable y harían tan solo las modificaciones que creyeran necesarias. 92 Chapter 5. Conclusions and future work In this chapter we will begin by explaining the conclusions we have drawn from our project over the months we have been working on it, as well as explaining how the subjects we have taken in the degree have helped us. We will dedicate a part of this chapter to explain how our work could be extended in the future, mentioning different improvements that could be carried out. 5.1 Conclusions Considering whether or not different aspects of an ICT product meet ethical requirements is critical and will become increasingly common in technology development. This is something that is often overlooked by development teams, but it can determine whether the product is ready to go to market without the possibility of harm to users or others. Until now, in most cases, the ethical analysis of a product has been done when the product is already on the market (or about to be released) by measuring negative results and patching the product to minimize them. This production model does not guarantee the ethical integrity of the product, which is why different supranational entities and companies (as referenced in chapter 1) insist that ethical aspects must be taken into account from the moment the application is designed. Therefore, it is in the design phase where our tool comes into operation, with the aim of assessing which aspects of the product under development may not comply with ethical requirements, giving the possibility of correcting these flaws in time and raising awareness among developers so that they do not happen again. At that stage, we can determine what ethics-related problems there might be and what consequences they might have on the product, and most importantly, society. In order to implement our tool and get it to solve this problem, we have had to carry out an extensive research phase that has allowed us to know the most important sections that we must take into account when assessing the ethical standards of a product. In addition to knowing what kind of questions we have to consider to cover the most important aspects of each section. Fortunately, thanks to technological advances and the digitalization of society, more and more companies are taking into account the importance of making products that are respectful and ethical in all aspects. Technology companies are becoming aware of their great influence and impact on society, as they can affect millions of people in seconds, and the consequences of an error in the design phase can be fatal, causing harm to people and negatively affecting the reputation of the company. We believe that this topic could have a much broader and more influential vision in the coming years, where the role of the ethicist (ethicist [26]) will become much more important and will become a profession of the future. Currently, it is not only difficult to find cases of people whose work is that of an ethicist, but the meaning of the word is not found in the vast majority of dictionaries. On the internet you can find different meanings for the term ethicist, but the one that most closely resembles our work, related to the search for ethics in the different aspects 93 of an ICT product before it goes to market, is the following: this is a person who systematically studies values and how they inform actions, decisions and practices. Nowadays there are companies that have ethicists within their staff, considering it an important and necessary position, whose function is to review material and give recommendations on how to perform a task [27]. Therefore, the evolution of this position over time could lead to companies taking the decision to have a department of professionals specialized in ethics that is responsible for verifying the ethics of a product, an algorithm or a particular decision. In this, our tool could be of great help. When carrying out an assessment to verify whether a product complies with ethical guidelines, our questionnaire would facilitate the work of these professionals. Now, they do not need to document themselves with different communications, advice and guidelines to know and evaluate the ethical requirements to be taken into account in the design of a product, as this is a task that we have previously carried out to develop the questionnaire through the document containing the ethical guidelines issued by the European Commission, in addition to other links and articles that we have worked with all this time. In addition, it would be helpful for ethicists if our questionnaire could allow developers to add new questions. If they think it is necessary, they can develop new questions that make the questionnaire more complete and updated at all times, because with the passage of time and the development of new technologies new ethical dilemmas may arise that need to be contemplated and added in the questionnaire. On the other hand, it is also possible to contemplate a different vision and use that can be given to our tool. Teachers or lecturers who are part of the technology sector can use our support questionnaire to train future developers, making them aware of the impact of their profession and the consequences of their actions if they do not act in the right way, so that they learn to implement products responsibly and in compliance with ethical values. Before starting this project, we had the basic knowledge about design related to ethics thanks to the subject of Ethics, legislation and profession, but after working for so long on this TFG, we have considerably broadened our knowledge about this subject and the perception we had about the design of new technological products has changed. First of all, since the part we have spent the most time on is the research and creation of the questions, we are now able to make an evaluation following the ethical guidelines established by the European Commission. This evaluation includes the knowledge of the different sections to be dealt with, as well as the way to approach them, being in our case, the different questions to perform a complete audit. It should be noted that, as future professionals in the technology sector, and more specifically in the development of new products and applications, this long process has made us aware of the power we have in our hands and the responsibility with which we must play our role, understanding that the design phase during the life cycle of a product is vital to avoid a negative impact that may affect different parts when the product goes to market. In addition to this, we have learned to formulate the questions correctly, applying different techniques to ensure that the user does not get lost at any time and is able to understand the purpose of each question without difficulty. 94 5.2 Subjects In order to carry out our project we have taken into account the knowledge we have acquired during our studies, which has allowed us to develop and implement our tool. This project has two distinct parts, the first consists of the entire research and development phase of the questions, strongly related to ethical principles in computer science, while the second part, the development and implementation of the tool has to do mostly with the development of web applications. Regarding the whole research phase and the development of the questions, we have taken into account the ethical principles learned in the subject of Ethics, law and profession, where we obtained the ability to design, develop and evaluate applications and computer systems, ensuring their reliability, security and quality, according to these principles, as well as the ability to assess the social and environmental impact of engineering solutions. When developing and implementing the tool we have applied the knowledge acquired in four subjects: Web Applications, Interactive Systems Development, Databases and Data Structure. Firstly, the subject of Web Applications has allowed us to learn the architecture of web applications, as well as the server-side programming language PHP, which has been the one we have used to develop the backend, and HTML language, which we have applied in the client side or frontend. In addition, in this part, we have also been able to apply the knowledge acquired in the subject of Databases, which have to do with the characteristics, functionalities and structure of databases, allowing their proper use, and the design and analysis and implementation of applications based on them. Thanks to Interactive Systems Development we have acquired the ability to design and evaluate human-computer interfaces that guarantee accessibility and usability to systems, services and computer applications. And finally, when implementing the flow of the questionnaire, the knowledge acquired in the Data Structure course has been very useful. We have always thought that our questionnaire would work as a kind of linked list, where the questions with their set of answers would act as nodes, and the user would scroll through each of them depending on the answer selected. Each node is formed by a question and its answers, which point to the next question the user has to go to. This can be seen implemented through some database attributes. This view has also helped us to implement the addition of a new question to the questionnaire, introducing the new node linking it with the previous and the next one. Also, to test the different cases that could occur when adding a new question, we saw the relationship between parent and child questions as a kind of tree, which helped us a lot to have a complete view of the specific case we were analyzing at that time. 5.3 Future work Our project could clearly be extended with more functionalities to achieve a more complete and useful questionnaire for the ethical audit of the design of a technological product. One improvement would be the addition of questions based on the type of product being evaluated. This is a modification that we were originally going to implement, but finally we have not had time to do it. It would involve going deeper into the most sensitive sections 95 depending on the type of product (obtained in the first question of the questionnaire), for example, if it is an application that offers banking services, it would be even more important and necessary to verify that it correctly stores the sensitive data of its users and check that there is no security hole that puts them at risk. We would have liked our application to have been tested by professional developers in order to get even more complete feedback than we have had during the development of the questions. It's not mandatory, but maybe it could have helped us to further refine certain questions and even develop new ones. Regarding the questionnaire, a possible improvement, thinking about the developers who will work on its management, would be to add a marker to each question so that in case they consider that it is not formulated correctly or does not focus well on the topic it deals with, they can make some kind of modification. The person who is completing the questionnaire would mark all the questions they consider necessary and at the end all these questions would appear together with a text field that would allow them to modify them as they wish, in the way they believe they can improve the questionnaire and the experience of the following users who make use of it. We would allow the user to modify the question he wants and the way he wants, because the questionnaire is addressed to people who are dedicated to developing products in a professional way and, therefore, it is their job, so we understand that they would act responsibly and would make only the modifications they believe necessary. 96 Capítulo 6. División del trabajo En este capítulo hablaremos del trabajo realizado por cada uno de los dos miembros del equipo que hemos participado en este Trabajo de Fin de Grado, detallando las tareas más concretas y diferenciadas que ha hecho cada componente respecto al otro. Cabe destacar que todo el proyecto ha sido construido por los dos integrantes desde el comienzo de la fase de investigación (fase 1) hasta la conclusión de la redacción de la memoria (fase 4), sin excepciones. Para ello, hemos trabajado de manera conjunta en todas las partes del proyecto, algo que hemos conseguido mediante la constante comunicación entre los dos componentes y el gran trabajo en equipo que hemos desempeñado en todo momento, cualidades importantes y sobre todo, necesarias para la adecuada elaboración de un proyecto como este. A continuación, vamos a detallar en primera persona las tareas que ha realizado cada integrante a lo largo de todo el proceso de realización del proyecto. 6.1 Contribuciones de Jorge Borja García ● Obtención de información acerca de la responsabilidad en las tecnologías: En el comienzo de la fase de investigación, Marcos nos pasó un documento de la fundación Mozilla relacionado con la importancia de la responsabilidad en la industria tecnológica y los problemas éticos que se han dado a lo largo de los últimos años. Yo me encargué de leer este documento e ir anotando en otro documento de Word los problemas éticos destacados que han surgido recientemente y sus causas, así como la importancia de seguir un comportamiento ético al desarrollar un producto tecnológico y las pautas a seguir para minimizar estos problemas éticos. Posteriormente, juntamos esta información en otro documento junto con la extraída por mi compañero de otros enlaces proporcionados por nuestro tutor, obteniendo conclusiones con el objetivo de poder comenzar a elaborar las preguntas respecto a los posibles problemas encontrados. ● Anotación de conclusiones de cada uno de los requisitos esenciales para lograr una IA fiable: Una vez comenzamos a redactar las preguntas del cuestionario, conforme íbamos añadiendo nuevas preguntas consideramos que sería mejor que algunas tuvieran una breve descripción, con el fin de facilitar su comprensión y poner en contexto a la persona que estuviera realizando el cuestionario. Fue entonces cuando busqué información extendida acerca de cada uno de los requisitos esenciales para lograr una IA fiable, ya que estos requisitos también los utilizamos en nuestro cuestionario englobando a todos los productos TIC. En uno de los documentos que nos compartió nuestro tutor, donde se ofrecía una gran descripción de cada uno de ellos, obtuve conclusiones que hasta ahora no habíamos contemplado y que incorporamos en algunas preguntas, ya que las descripciones de otras las hicimos nosotros sin información adicional. 103 concretas, el resto de la memoria lo hemos hecho entre los dos, los capítulos 1, 2, 3, 4 y 5. 104 Apéndice Introducción Este formulario consiste en una serie de preguntas que tendrán que responder los desarrolladores de un producto durante su fase de diseño para evaluar si dicho producto será ético o no. 1 - ¿De qué tipo es el producto que está en desarrollo? Conociendo el tipo de producto en el que están trabajando los desarrolladores, además de permitirnos saber el rango aproximado de edades a las que estará enfocado el producto, podremos realizar preguntas adicionales más concretas y relacionadas con ese tipo (aún no están implementadas). Respuestas posibles: - Educación: aplicaciones educativas que almacenen datos de los estudiantes, sistemas de aprendizaje como Moodle, o sistemas que aprendan el desarrollo y la evolución de los estudiantes y generen una enseñanza personalizada. - Entretenimiento: videojuegos de consolas, PC o móviles, que pueden ser físicos o digitales. - Servicios online: distintas plataformas online, como las redes sociales, webs de compra online, motores de búsqueda y asistentes digitales (Siri o Cortana). - Comunicación móvil: aplicaciones móviles de música, mensajería instantánea, redes sociales, juegos, etc. - Servicios de streaming: plataformas online de vídeo, música o contenido para adultos (Netflix, Spotify, etc). - Buscar trabajo: portales para encontrar trabajo. - Servicios de banca y seguros: servicios bancarios online y otros servicios financieros como seguros de coche, vida, salud o casa. - Quedadas online: aplicaciones para quedar con personas. - Cuidado de la salud: servicios utilizados para la sanidad. - Salud y fitness equipables: dispositivos y aplicaciones diseñadas para llevar consigo, con funcionalidades de seguimiento físico para mejorar la salud. - Consumo: aplicaciones relacionadas con el consumo de agua, electricidad, gas, teléfono o Internet. - Otro. 2 - ¿El producto hace uso de un sistema de inteligencia artificial (IA)? Saber si el producto utiliza inteligencia artificial nos resultará muy importante a la hora de añadir nuevas preguntas enfocadas en este tema. 105 Acción y supervisión humanas Derechos fundamentales En el ámbito de los productos TIC, consideramos que los derechos con más probabilidad de que puedan ser vulnerados son los siguientes: - Derecho a la libertad y a la seguridad. - Derecho a la dignidad humana, al honor y a la intimidad. - Derecho a la igualdad, no discriminación y solidaridad. - Derecho al secreto de las comunicaciones. 3 - ¿Crees que tu producto puede vulnerar alguno de los derechos fundamentales? (1 - Identificación) En caso de haber respondido: SI 4 - ¿Has llevado a cabo una evaluación del impacto en el caso de que se produzca? (2 - Evaluación) El primer paso después de identificar los procesos que no cumplan con alguno de los derechos fundamentales, es evaluar estos efectos negativos midiendo el impacto que producirían de cara a facilitar la búsqueda de una solución. En caso de haber respondido: SI 5 - ¿Qué tipo de evaluación se ha llevado a cabo? 1. Una evaluación general. 2. Una evaluación basada en tres fases (determinar el alcance del impacto, gestión del impacto y evaluación) y algo más detallada. 3. Una evaluación basada en cinco fases y muy detallada (determinar el alcance del impacto, planificación, análisis del impacto, mitigación y gestión del impacto, informes y evaluación). 4. Una evaluación basada en más de cinco fases y muy exhaustiva. 6 - Después de haber realizado la evaluación, ¿se han conseguido mitigar estos riesgos o se ha tenido que asumir alguno de ellos? 1. Se han conseguido mitigar. 2. Se ha tenido que asumir algún riesgo. Es posible que después de realizar la evaluación los desarrolladores se hayan dado cuenta de que es inevitable asumir alguno de esos riesgos a la hora de desarrollar el producto de tal 106 manera que sea la única solución a seguir, pero es importante conocer si son conscientes de ello. En caso de haber respondido: Se ha tenido que asumir algún riesgo. 7 - ¿Se ha establecido algún mecanismo de seguimiento para estos riesgos? Si los desarrolladores han tenido que asumir unos determinados riesgos, es importante que establezcan un mecanismo de seguimiento para mitigarlos y controlarlos en un futuro. 8 - ¿Has documentado las posibles soluciones para tratar estos riesgos? (3 - Solución) El siguiente paso después de evaluar el impacto de estos riesgos y de haber tomado las decisiones pertinentes, es documentarlas. 9 - IA ¿Interactúa el sistema de IA con la toma de decisiones de los usuarios? En caso de haber respondido: SI 10 - IA ¿Existe el riesgo de que el sistema de IA interfiera con esta toma de decisiones? En caso de que la IA interactúe con el usuario en su toma de decisiones, es necesario conocer si esta influye en su decisión final de forma inesperada, restando autonomía al propio usuario. Solidez técnica y seguridad Resistencia a los ataques 11 - ¿Has tomado medidas para garantizar la integridad del producto y su capacidad para resistir posibles ataques? Si los desarrolladores han adoptado medidas para garantizar la integridad del producto y su capacidad para resistir posibles ataques, esto implica que previamente han evaluado las diferentes formas de ataque a las que puede ser vulnerable su producto. 12 - ¿Has analizado si el producto se puede utilizar para diferentes fines? En caso de haber respondido: SI 13 - ¿Has adoptado medidas adecuadas para prevenir su uso con fines no deseados? Es importante que los desarrolladores tengan en cuenta que su producto puede ser utilizado con distintos fines, sobre todo, con algún fin no deseado que pueda ser perjudicial para el propio producto, por lo tanto, creemos conveniente que se hayan adoptado medidas en caso de ser necesarias para evitar ese tipo de situaciones. En caso de haber respondido: SI 107 14 - ¿Estas medidas han implicado alguna modificación en el diseño del producto? Después de adoptar las medidas adecuadas para prevenir el uso del producto con fines no deseados, puede darse el caso de que se haya tenido que modificar el diseño previsto del producto hasta ese momento. 15 - ¿Ha evaluado el comportamiento de su producto en situaciones y entornos imprevistos? Es necesario saber si los desarrolladores han evaluado el comportamiento de su producto en situaciones y entornos imprevistos. Esto no tiene porqué ser algo malo (un ataque), pueden darse situaciones inesperadas, como, por ejemplo, relacionadas con desastres naturales o el caso de que un usuario use la aplicación en un entorno para el que no esté diseñada, y por ello no funcione de la forma correcta. En caso de haber respondido: SI 16 - ¿Has adoptado medidas (dentro de lo posible) para asegurar el correcto comportamiento del producto en este tipo de situaciones? Al ser entornos imprevistos, los desarrolladores no pueden contemplar todas las situaciones inesperadas, pero es recomendable establecer medidas para situaciones que ellos consideren imprevistas y pueda suponer un comportamiento inesperado del producto. 17 - IA ¿Has estimado las consecuencias probables de un fallo de su sistema de IA? 18 - IA ¿Hay algún grupo o persona que se encargue de identificar estos fallos con el fin de que sean corregidos? En cualquiera de los casos, es necesaria una supervisión humana del sistema de IA que compruebe las decisiones que toma, ya que puede darse el caso de que no sean éticas y surja la necesidad de solucionar estos errores. Plan de repliegue 19 - ¿Has introducido algún proceso para identificar, medir y evaluar los riesgos para la seguridad? Consideramos que esta pregunta es muy importante, ya que es una pregunta muy general pero muy necesaria porque evaluar los riesgos es algo principal. 20 - ¿Te has asegurado de que el producto cuente con un plan de repliegue suficiente? Después de evaluar las posibles formas de ataque, es imprescindible contar con un plan de repliegue que ayude a mitigar el impacto después de que se haya producido algún ataque o se haya dado una situación inesperada. 108 21 - ¿Has evaluado si es probable que el producto cause daños a los usuarios o a terceros? En caso de haber respondido: SI 22 - ¿Has evaluado la probabilidad, el daño potencial al público afectado y la gravedad de tales daños? 23 - ¿Se han adoptado medidas para reducir la probabilidad de que se produzcan estos daños? 24 - ¿Has proporcionado la información necesaria en caso de que exista algún riesgo para la integridad física, psíquica y moral? Creemos que estas tres preguntas son complementarias, primero preguntamos por la probabilidad de que el producto cause daños a los usuarios, ya sea físico, psíquico o moral, y en caso afirmativo, es necesario tener en cuenta sus consecuencias, adoptar medidas para reducir la probabilidad de que se produzcan estos daños, y además, proporcionar la información necesaria a los posibles afectados. Fiabilidad y reproducibilidad 25 - IA ¿Has establecido algún proceso para describir las situaciones en las que el sistema de IA falla? Uno de los principales puntos a la hora de desarrollar un producto que haga uso de un sistema de IA, es que los usuarios sean conscientes de los posibles errores o fallos que puede cometer el sistema. Para ello, es necesario establecer una serie de procesos que ayuden a describir las situaciones en las que se producen estos fallos, con el objetivo de informar sobre ellas posteriormente y verificar la fiabilidad del sistema. En caso de haber respondido: SI 26 - IA ¿Has establecido una forma de documentar y transmitir al usuario esta información para verificar la fiabilidad del sistema? Gestión de la privacidad y los datos Respeto de la privacidad y de la protección de datos 27 - ¿Has evaluado el tipo y alcance de los datos incluidos en sus bases de datos (por ejemplo, si estas contienen datos de carácter personal (DCP))? En caso de haber respondido: SI 109 28 - ¿Has analizado formas de desarrollar el producto en las que no sea necesario utilizar DCP o potencialmente sensibles (o que utilicen la mínima cantidad posible)? Esta pregunta deriva de la anterior, en el caso de que los desarrolladores hayan evaluado el tipo y alcance de los datos con los que trata su aplicación, se preguntará por la posibilidad de que se haya estudiado otra forma de desarrollar el producto, de manera que no tenga que utilizar datos personales o potencialmente sensibles en caso de hacerlo. En caso de haber respondido: SI 29 - ¿Alguna de estas nuevas formas de desarrollar el producto va a ser implementada? Después de que se haya realizado un análisis de otras formas de desarrollar el producto, es necesario saber si los desarrolladores tendrán en cuenta alguna de estas formas para disminuir el uso de DCP. 30 - ¿Has tomado medidas para mejorar la privacidad, a través de procesos como el encriptado y la anonimización? En el caso de que los desarrolladores no hayan analizado un sistema alternativo para evitar el uso de DCP, o en caso de hacerlo no hayan sido capaces de encontrarlo, al menos, deberán adoptar medidas para mejorar la privacidad de los DCP de los usuarios, a través de los procesos expuestos en la pregunta. 31 - ¿Has introducido mecanismos de aviso y control sobre los DCP, como por ejemplo, validar el consentimiento y la posibilidad de revocar el uso de dichos datos? Esta pregunta es de gran importancia, ya que los usuarios deben conocer con exactitud qué datos personales se utilizan y con qué fines, además de tener la posibilidad de proporcionar o revocar el tratamiento de esos datos. Calidad e integridad de los datos 32 - ¿Has instaurado procesos para garantizar la calidad y la integridad de los datos? Además de garantizar la privacidad de los datos, también es importante garantizar la calidad y la integridad de estos, entendiendo por calidad, datos que no contengan errores e imprecisiones. Y entendiendo por integridad, la exactitud y fiabilidad de los datos, garantizando que no se pierde información. En caso de haber respondido: SI 110 33 - ¿Estás verificando de alguna forma que los conjuntos de datos no son vulnerados ni objeto de ataque? Acceso a los datos 34 - ¿Has evaluado quién puede acceder a los datos de los usuarios y en qué circunstancias? En esta primera pregunta queremos saber si los desarrolladores han tenido en cuenta quién puede acceder a los datos y en qué circunstancias. En caso de haber respondido: SI 35 - ¿Te has asegurado de que esas personas están cualificadas para acceder a los datos? Con esta pregunta queremos saber si las personas que están autorizadas a acceder a dichos datos poseen la cualificación necesaria, es decir, que se les exige acceder a ellos y además comprenden los detalles de la política de protección de datos. 36 - ¿Existe un mecanismo de supervisión que permita registrar cuándo, dónde, cómo y quién accede a los datos, y con qué propósito? Esta pregunta se realizará siempre, ya que puede darse el caso de que los desarrolladores no tengan en cuenta quién accede a los datos y por qué motivo, pero sí que hayan definido un registro de acceso a los datos, que guarde información como cuándo, dónde, cómo y quién accede a ellos. Transparencia Trazabilidad 37 - ¿Has tomado medidas para garantizar la trazabilidad? Es muy importante documentar todo lo que tiene que ver con los conjuntos de datos (su recopilación y etiquetado), así como los algoritmos utilizados que dan lugar al proceso de toma de decisiones del sistema de IA (en caso de utilizarlo). Gracias a ello, será posible facilitar la auditabilidad y la explicabilidad. En caso de haber respondido: SI 38 - IA ¿Se han analizado los métodos utilizados para diseñar y desarrollar el sistema algorítmico? 39 - IA ¿Se han documentado dichos métodos? 40 - IA ¿Se han analizado los métodos empleados para ensayar y validar el sistema algorítmico, incluyendo todos los casos de uso posibles? 111 Hay que tener en cuenta todos los casos de uso para realizar las pruebas de ensayo y validación del sistema algorítmico. 41 - IA ¿Se han documentado dichos métodos? Es muy recomendable documentar los métodos empleados para realizar las pruebas de ensayo y validación porque puede darse el caso de que los resultados obtenidos no sean satisfactorios, y por los tanto, los desarrolladores podrían analizar nuevos métodos para realizar dichas pruebas o podrían seguir desarrollando y corrigiendo los anteriores, algo que no sería posible si no estuvieran documentados. 42 - IA ¿Los resultados obtenidos de estas pruebas son útiles para consolidar o mejorar el sistema algorítmico? Los resultados obtenidos después de emplear los métodos de ensayo y validación, serán muy importantes para continuar con el proceso de desarrollo del sistema algorítmico, si los resultados son negativos servirá para mejorar el sistema y si son positivos, se asegurarán de que el sistema está siguiendo el rumbo correcto. Explicabilidad 43 - ¿Has investigado y tratado de utilizar el modelo más sencillo e interpretable posible para el producto? En muchas ocasiones es muy complicado entender qué proceso lleva a cabo el algoritmo para obtener una salida a partir de un conjunto de datos de entrada, por ello es importante intentar utilizar un modelo más sencillo que garantice la interpretabilidad, es decir, que se pueda entender. En caso de haber respondido: NO 44 - ¿Sería posible encontrar una forma alternativa de garantizar la interpretabilidad (elaborar una explicación comprensible)? 45 - ¿Te has asegurado de que se pueda elaborar una explicación comprensible para todos los usuarios que puedan desearla? Comunicación 46 - IA ¿Has informado a los usuarios de que están interactuando con un sistema de IA y no con otro ser humano? 47 - ¿Has dejado claro el propósito del producto y quién o qué podrá beneficiarse de él o sus servicios? Creemos importante que los desarrolladores dejen claro cuál es el propósito del producto y cuáles serán los clientes objetivo, para evitar hacer un uso erróneo de él. 112 48 - ¿Se ha tenido en cuenta alguna forma de comprobar si el propósito del producto o los benefactores ha cambiado a lo largo del tiempo? Al comienzo del desarrollo de un producto, se suelen redactar los propósitos de este, pero estos propósitos pueden cambiar a lo largo del tiempo según avanza su desarrollo, por lo que sería interesante contrastar esos propósitos iniciales con los más recientes. Diversidad, no discriminación y equidad Necesidad de evitar sesgos injustos 49 - IA ¿Te has asegurado de que exista una estrategia para evitar crear o reforzar un sesgo injusto en el sistema de IA? Es completamente obligatorio que un sistema de IA sea imparcial en la toma de decisiones, es decir, que no tenga ningún tipo de comportamiento sesgado que pueda dar pie a prácticas discriminatorias de algún tipo. Esto puede darse desde el uso de los datos de entrada hasta lo referente al diseño algorítmico. Por lo tanto, durante la fase de diseño del sistema se debe tener en cuenta una estrategia para evitar crear o reforzar estos sesgos. 50 - IA ¿Has establecido procesos para verificar la existencia de posibles sesgos? En caso de haber respondido: SI 51 - IA ¿Has realizado un seguimiento de estos durante las distintas fases del producto? Al igual que hay que definir una estrategia para evitar crear o reforzar los sesgos, también hay que definir procesos que comprueben si existen estos sesgos y monitorizarlos para encontrar una forma de eliminarlos. Accesibilidad y diseño universal 52 - ¿Has tenido en cuenta la diversidad de los usuarios en los datos, así como sus capacidades individuales? A la hora de tratar con los usuarios se debe tener en cuenta la gran cantidad de personas diferentes que harán uso de la aplicación, por lo que es muy importante tener en cuenta la representatividad de todas ellas, además de sus capacidades individuales con el objetivo de no excluir a ningún usuario. 53 - ¿Has evaluado la posibilidad de que haya personas o grupos que puedan verse afectados por las implicaciones negativas del producto? En caso de haber respondido: SI 119 [27] Europa Press (febrero, 2018). Las 100 empresas más éticas y responsables de España: https://www.lasprovincias.es/economia/ranking-merco-2017-mercadonaonce-20180212150059-nt.html [28] Óscar Blancarte (diciembre, 2018). Data Access Object (DAO) Pattern: https://www.oscarblancarteblog.com/2018/12/10/data-access-object-dao-pattern/