Вы находитесь на странице: 1из 74

Dra. Josefina Guerrero Garca Email: jguerrero@cs.buap.

mx

Verano 2013

Objetivos de la materia
General: Que el alumno pueda ser capaz de proponer proyectos y productos de calidad mediante la aplicacin de los mtodos de la ingeniera de software. Especficos:
Que el alumno identifique las ventajas de aplicar metodologas de desarrollo de software. Que aplique ingeniera de requerimientos para obtener las especificaciones de un sistema. Que planifique formas de trabajo en equipo de desarrollo de software. Que gener documentacin bajo estndares de procesos de desarrollo y aplique herramientas de ltima generacin en el proceso de desarrollo de software.

Contenido:
1. 2. 3. 4. 5. 6. 7.

Introduccin a la ingeniera de software Gestin de proyectos Ingeniera de requerimientos Modelado del anlisis Diseo Codificacin Validacin y verificacin

Bibliografa
Ingeniera de Software. Sommerville, Ian. Pearson Educacin. 2. Ingeniera de Software, Un Enfoque Prctico. Pressman Roger S. Mc Graw Hill. 3. Ingeniera de Software. Fairley. Prentice Hall. IEEE Trans. on Software Engineering. 4. Sistemas de informacin gerencial. Laudon & Laudon. Pearson Educacin.
1.

Plataforma de trabajo
http://econtinua.cs.buap.mx/moodle/ Miscellaneous
Ingeniera de software- verano 2013- GuerreroGarca
contrasea: sommerville

Criterios de evaluacin
Criterio Quizzes Tareas y prcticas Participacin y asistencia Proyecto final TOTAL Porcentaje 30 20 15 35 100

Plan de trabajo
Inicio de curso: 27 de mayo Fin de curso: 17 de julio Horario: 9 a 11 am Entrega de proyecto final: 15, 16, 17 de julio No hay recuperacin de quizzes

Actividad 1
Selecciona un producto de programacin que hayas desarrollado en un curso anterior. Resuelve el siguiente cuestionario:
1. 2. 3. 4. 5.

Proporciona una lista de al menos tres requisitos establecidos por el profesor. Consideras que el producto que desarrollaste se apeg a los requisitos establecidos, porqu ? Cumpliste en tiempo y forma, con la fecha de entrega ? Justifica tu respuesta. El tiempo establecido de desarrollo fue suficiente.? Justifica tu respuesta. Indica al menos dos aspectos del proceso de desarrollo de tu proyecto que se podran mejorar.

Unidad 1. Introduccin a la ingeniera de software

1.1 Motivacin

El concepto ingeniera de software se propuso originalmente en 1968, en una conferencia realizada para discutir lo que entonces se llamaba la crisis del software.

Crisis del software


La crisis del software es una serie de problemas que hacen que el software no alcance las expectativas u objetivos esperados por desarrolladores, gestores, clientes, etc. Problemas fundamentales.
La sofisticacin del hardware no esta acompaada de la del software. Demanda creciente. Mantenimiento difcil.

SOLUCIN

INGENIERA DEL SOFTWARE

Problemas de los expertos.


Planificacin y precios imprecisos. La productividad de la gente del software no se corresponde con la demanda. La calidad muchas veces no es la adecuada.

Motivos de estos problemas


No hay tiempo para recoger los datos para el proceso de desarrollo. Falta comunicacin con el cliente. Calidad cuestionable. Dificultad en el mantenimiento.

SOLUCIN

INGENIERA DEL SOFTWARE

Mitos del software


Los mitos del software son frases hechas que propagan informacin errnea y confusa, en lugar de sabidura y buen hacer

Mitos de gestin
Los gestores con responsabilidad en el software, como los gestores en la mayora de las disciplinas, estn normalmente bajo la presin de cumplir los presupuestos, hacer que no se retrase el proyecto y mejorar la calidad. Un gestor de software se agarra frecuentemente a un mito del software, aunque tal creencia slo disminuya la presin temporal.

Mitos:
Por qu debemos cambiar nuestra forma de desarrollar software, si estamos haciendo el mismo tipo de programacin que hace 10 aos? Tenemos un libro que esta lleno de estndares y procedimientos para construir software! Nuestra gente tiene las mejores mquinas para el desarrollo! Si fallamos en la planificacin, aadimos ms programadores y adelantamos el tiempo perdido.

Mitos del cliente


Un cliente que solicita un aplicacin de software puede ser una persona del despacho de al lado, un grupo tcnico de la sala de abajo, el departamento de ventas o una compaa exterior que solicita un software bajo contrato. En muchos casos, el cliente cree en los mitos que existen sobre el software, debido a que los gestores y desarrolladores del software hacen muy poco para corregir la mala informacin. Los mitos conducen a que el cliente se cree una falsa expectativa y, finalmente, quede insatisfecho con el desarrollo del software.

Mitos:
Una declaracin general de los objetivos es suficiente para comenzar a escribir los programas. Podemos dar los detalles ms adelante. Los requerimientos cambian continuamente, pero los cambios pueden acomodarse fcilmente ya que el software es flexible. Cmo afecta un cambio en las diferentes fases del desarrollo del software?

Mitos de los desarrolladores


Los mitos en los que an creen muchos desarrolladores se han ido fomentando durante 50 aos de cultura informtica. Durante los primeros das del desarrollo del software, la programacin se vea como un arte. Las viejas formas y actitudes tardan en morir.

Mitos:
No hay mtodos para el anlisis, diseo y prueba que funcionen bien, simplemente me voy al terminal y comienzo a codificar. Una vez que hacemos que el programa funcione, nuestro trabajo ha terminado. Hasta que no est el programa terminado no puedo establecer su calidad. Lo nico que se entrega al terminar el proyecto es el programa funcionando. Una vez que el software se est usando, el mantenimiento es mnimo y puede manejarse sobre la base de hacerlo como se pueda.

Reflexin sobre los mitos


Muchos profesionales del software reconocen la falacia de los mitos descritos anteriormente. Lamentablemente, las actitudes y mtodos habituales fomentan una pobre gestin y una mala aplicacin de las tcnicas, incluso cuando la realidad dicta un mtodo mejor. El reconocimiento de las realidades del software es el primer paso hacia la formulacin de soluciones prcticas para su desarrollo.

Unidad 1. Introduccin a la ingeniera de software

1.2 Conceptos

Definiciones: Ingeniera del Software


Ingeniera del Software es el estudio de los principios y metodologas para desarrollo y mantenimiento de sistemas de software. [Zelkovitz, 1978] Ingeniera del Software es la aplicacin practica del conocimiento cientfico en el diseo y construccin de programas de computadora y la documentacin asociada requerida para desarrollar y operar (funcionar) y mantenerlos. As como tambin desarrollo de software o produccin de software. [Bohem, 1976] La Ingeniera del Software es el establecimiento y uso de principios slidos de la ingeniera para obtener econmicamente un software confiable y que funcione de modo eficiente en maquinas reales. [Bauer, 1972]

Ingeniera de Software es la aplicacin de un enfoque sistemtico, disciplinado y cuantificable al desarrollo operacin (funcionamiento) y mantenimiento del software: es decir, la aplicacin de ingeniera al software. [IEEE, 1993] La Ingeniera de Software es una disciplina de la ingeniera que comprende todos los aspectos de la produccin de software desde las etapas inciales de la especificacin del sistema hasta el mantenimiento de este despus que se utiliza. [Sommerville, 2004] La Ingeniera de Software es una disciplina que integra el proceso, los mtodos, y las herramientas para el desarrollo de software de computadora. [Pressman, 2005]

La ingeniera de software integra: mtodos, herramientas y procesos para el desarrollo del software bajo un enfoque de calidad.

Ingeniero de software vs programador


Un programador no es equivalente a un ingeniero de software
Todo mundo puede sentarse a programar Esto no garantiza que se pueda crear una solucin compleja en tiempo, costo y calidad

El desarrollar software sin conocer tcnicas de ingeniera representa un enfoque artesanal de desarrollo que hoy en da sigue siendo comn. Los esfuerzos de profesionalizacin mencionados atrs (certificaciones de individuos y de empresas) buscan reducir

Ciclo de Vida El ciclo de vida de desarrollo de sistemas informticos puede

dividirse en actividades o fases que, en general, se ajustan al esquema mostrado en el grfico. Este esquema grfico es el ciclo de vida tpico, dado que existen gran cantidad de variantes que dependen de la organizacin, del tipo de sistema que se realizar, de los gustos de los administradores, de los tiempos, etc. Las actividades tpicas del ciclo de vida son: 1- Estudio de factibilidad. 2- Anlisis (de requerimientos). 3- Diseo 3.1- Creacin de prototipos 3.2- Implementacin 4- Validacin y prueba 5 - Operacin y mantenimiento

La Ingeniera de Software es el resultado de llevar la tradicional disciplina de las ingenieras al mundo de la construccin de sistemas de software. Es el estudio de los principios y metodologas para el desarrollo y mantenimiento de sistemas software.

Los desafos de la Ingeniera de Software son:

La ingeniera de software es una tecnologa multicapa.

Enfoque de calidad

La IS debe estar sustentada en un compromiso con la calidad (Gestin de Calidad Total, Sigma Seis, etc.) que fomente una cultura de mejora continua del proceso.

Procesos

Define un marco de trabajo que debe establecerse para la entrega efectiva, la gestin de proyectos, el contexto en el cual se aplican los mtodos tcnicos, se generan los productos del trabajo, se establecen los fundamentos, se asegura la calidad y el manejo adecuado de cambios

Mtodos:

Definen los cmo para construir el software desde el punto de vista tcnico.

Herramientas:

Proporcionan un soporte automtico o semi-automtico para los mtodos.

Tareas que componen los mtodos. Planificacin y estimacin de proyectos. Anlisis de requerimientos del software y hardware. Diseo de estructuras de datos, arquitectura de los programas. Procedimientos algortmicos. Codificacin. Pruebas y mantenimiento.

Algunas herramientas:
CASE (Ingeniera de software asistida por computadora) Microsoft Project (Planificacin). UML (Modelado). RationalRose, visio (Modelado soportan UML). Designer 2000. Erwin (Bases de datos). MAGERIT (Seguridad).

Fases Genricas de la IS
Definicin. Tareas que la componen:
Anlisis del sistema. Planificacin del Proyecto. Anlisis de requisitos. Diseo del software. Codificacin. Prueba del Software.

QU CMO TIPO

Desarrollo. Tareas que la componen:

Mantenimiento. Tipos de cambios:


Correccin. Adaptacin. Mejora. Prevencin o Reingeniera.

Preguntas que debe Responder la IS


Cul es el problema a resolver? Cules son las caractersticas de la entidad (solucin) que se utiliza para resolver el problema? Cmo se realizar la solucin? Cmo se construir la entidad? Qu enfoque se va a utilizar para no contemplar los errores que se cometieron en el diseo y en la construccin de la solucin? Cmo se apoyar la solucin cuando usuarios soliciten correcciones, adaptaciones y mejoras de la entidad?.

Las cuatro Ps de la IS

Algunos conceptos:

Qu es una metodologa ?. Una metodologa es aquella gua que se sigue a fin realizar las acciones propias de una investigacin. En trminos ms sencillos se trata de la gua que nos va indicando qu hacer y cmo actuar cuando se quiere obtener algn tipo de investigacin. Qu es un modelo?. Un modelo es una representacin de un objeto, sistema o idea, de forma diferente al de la entidad misma. El propsito de los modelos es ayudarnos a explicar, entender o mejorar un sistema. Un modelo de un objeto puede ser una rplica exacta de ste o una abstraccin de las propiedades dominantes del objeto. Qu es una herramienta?. Una herramienta es un objeto elaborado a fin de facilitar la realizacin de una tarea. A las aplicaciones que "ayudan en el trabajo a los humanos" se les considera herramientas de software.

Aplicaciones del software


Software de sistemas. Conjunto de programas que han sido escritos para servir a otros programas. Software de tiempo real. Coordina/analiza/controla sucesos del mundo real conforme ocurren. Software de gestin. Las aplicaciones en esta rea reestructuran los datos existentes para facilitar las operaciones comerciales o gestionar la toma de decisiones. Software de ingeniera y cientfico. Caracterizado por los algoritmos de manejo de nmeros.

Software empotrado. Reside en memoria de solo lectura y se utiliza para controlar productos y sistemas de los mercados industriales y de consumo. Software de computadoras personales. Incluye hojas de clculo, procesamiento de texto, entretenimientos, etc. Software basado en la Web. Las pginas Web buscadas por un explorador son software que incorpora instrucciones ejecutables y datos. Software de I.A. Hace uso de algoritmos no numricos para resolver problemas complejos para los que no son adecuados el clculo o el anlisis directo.

Metodologas de desarrollo del software


La rama de la metodologa, dentro de la ingeniera de software, se encarga de elaborar estrategias de desarrollo de software que promuevan prcticas adaptativas en vez de predictivas; centradas en las personas o los equipos, orientadas hacia la funcionalidad y la entrega, de comunicacin intensiva y que requieren implicacin directa del cliente. Metodologa de desarrollo de software en ingeniera de software es un marco de trabajo usado para estructurar, planificar y controlar el proceso de desarrollo en sistemas de informacin.

Metodologas de desarrollo de software


1970s Programacin estructurada sol desde 1969 Programacin estructurada Jackson desde 1975 1980s Structured Systems Analysis and Design Methodology (SSADM) desde 1980 Structured Analysis and Design Technique (SADT) desde 1980 Ingeniera de la informacin (IE/IEM) desde 1981 1990s Rapid application development (RAD) desde 1991. Programacin orientada a objetos (OOP) a lo largo de la dcada de los 90's Virtual finite state machine (VFSM) desde 1990s Dynamic Systems Development Method desarrollado en UK desde 1995. Scrum (desarrollo), en la ltima parte de los 90's Rational Unified Process (RUP) desde 1999. Nuevo milenio Extreme Programming(XP) desde 1999 Enterprise Unified Process (EUP) extensiones RUP desde 2002 Constructionist design methodology (CDM) desde 2004 por Kristinn R. Thrisson Agile Unified Process (AUP) desde 2005 por Scott Ambler

Unidad 1. Introduccin a la ingeniera de software

1.3 Modelos de procesos del software.

Proceso del Software


El proceso del software es un marco comn para el proceso que define un pequeo nmero de actividades del marco de trabajo que son aplicables a todos los proyectos con independencia de su tamao o complejidad.
Marco de trabajo comn del proceso Actividades del marco de trabajo Conjuntos de tareas Tareas Entregas
Puntos de garanta de calidad

Actividades de proteccin

Modelos de procesos

El modelo de proceso o paradigma de la IS es la estrategia que comprenden mtodos, herramientas y procesos. El ingeniero de software debe seleccionar un modelo de proceso para ingeniera del software segn la naturaleza del proyecto y de la aplicacin, los mtodos, las herramientas a utilizar, y los controles y entregas que se requieren. Los diferentes paradigmas lo que intentan es ordenar las actividades en el desarrollo del software, de manera que no sean llevadas a cabo de manera catica.

1.Modelo en cascada

Llamado algunas veces ciclo de vida bsico o modelo lineal secuencial.

Ingeniera y anlisis del sistema. El software siempre forma parte de un contexto ms grande, que puede ir desde una empresa hasta un sistema. El trabajo comienza estableciendo requisitos de todos los elementos del sistema, y asignando al software algn subgrupo de estos requisitos. Anlisis de los requisitos del software. El proceso de reunin de requisitos se intensifica y se centra especialmente en el software. Dentro del proceso de anlisis es fundamental que a travs de una coleccin de requisitos funcionales y no funcionales, el desarrollador o desarrolladores del software comprendan completamente la naturaleza de los programas que deben construirse para desarrollar la aplicacin, la funcin requerida, comportamiento, rendimiento e interconexin.

Diseo. Es un proceso de muchos pasos pero que se clasifican dentro de uno mismo. En general, la actividad de diseo se refiere al establecimiento de las estructuras de datos, la arquitectura general del software, representaciones de interfaz y algoritmos. El proceso de diseo traduce requisitos en una representacin de software. Generacin de cdigo. Esta actividad consiste en traducir el diseo en una forma legible por la mquina. Pruebas. El proceso de pruebas se centra en los procesos lgicos internos del software, asegurando que todas las sentencias se han comprobado, y en los procesos externos funcionales, es decir, la realizacin de las pruebas para la deteccin de errores. Mantenimiento. El software indudablemente sufrir cambios, y habr que hacer algunas modificaciones a su funcionalidad. Es de suma importancia que el software de calidad pueda adaptarse con fines de acoplarse a los cambios de su entorno externo.

Problemas del modelo en cascada


Raramente los proyectos siguen este ciclo de vida. El cliente pocas veces establece todos los requerimientos al principio. El cliente no tiene un producto hasta el final.

2. Modelo de construccin de prototipos

El paradigma de construccin de prototipos (Pressman)

Un prototipo es una versin inicial de un sistema de software que se utiliza para demostrar los conceptos, probar las opciones de diseo y entender mejor el problema y su solucin. El prototipo es una aplicacin que funciona Los prototipos evolucionan a travs de un proceso iterativo.

Por qu se usa este Modelo? El cliente no puede especificar todos los requerimientos al principio. Existen dudas de alguna parte del sistema. Facilita un modelo al programador.

Ventajas: Modificacin del sistema en etapas tempranas de su desarrollo. El xito del uso del prototipo depende de qu tan pronto y con que frecuencia se reciba la retroalimentacin del usuario para hacer cambios y adecuarlos a las necesidades actuales. Permite al desarrollador darse cuenta de lo que requiere el cliente. Permite que el desarrollador se de cuenta como va avanzando en trabajo.

Desventajas: Administracin difcil: dicha dificultad radica en manejar el prototipo como un proyecto dentro del ciclo de desarrollo de sistemas sin perder de vista cul era su propsito. Adoptarlo como sistema final: los usuarios y profesionales de sistemas pueden considerar al prototipo como el sistema final cuando an es incompleto e inadecuado. El desarrollador y el cliente tienen poca comunicacin al principio del proceso. Surgen cambios imprevistos que retrasan el progreso del prototipo.

3. Modelo DRA
El Desarrollo Rpido de Aplicaciones (DRA) es un modelo de desarrollo de software lineal secuencial que enfatiza un ciclo de desarrollo extremadamente corto. Es una adaptacin a alta velocidad del modelo lineal secuencial, donde se puede aumentar la velocidad haciendo uso de componentes. Si se comprenden bien los requisitos y se limita el mbito del proyecto, el proceso DRA permite al equipo de desarrollo crear un sistema completamente funcional, dentro de periodos cortos de tiempo.

El modelo DRA (Pressman)

Modelado de gestin. El flujo de informacin entre las funciones de gestin se modela de forma que responda a las siguientes preguntas: qu informacin conduce el proceso de gestin?, qu informacin se genera?, quin la genera?, a dnde va la informacin?, quin la procesa? Modelado de datos. El flujo de informacin se refina como conjunto de objetos de datos necesarios para apoyar la empresa. Se definen las caractersticas de cada uno de los objetos y las relaciones entre estos objetos. Modelado del proceso. Los objetos de datos quedan transformados para lograr el flujo de informacin necesario para implementar una funcin de gestin. Las descripciones del proceso se crean para aadir, modificar, suprimir o recuperar un objeto de datos.

Generacin de aplicaciones. El proceso DRA trabaja para volver a utilizar componentes de programas ya existentes (cuando es posible) o a crear componentes reutilizables (cuando sea necesario). En todos los casos se utilizan herramientas para facilitar la construccin del software. Pruebas y entrega. Como el proceso DRA enfatiza la reutilizacin, ya se han comprobado muchos de los componentes de los programas. Esto reduce tiempo de pruebas. Sin embargo, se deben probar todos los componentes nuevos y se deben ejercitar todas las interfaces a fondo.

Problemas del modelo DRA


Para proyectos grandes necesitamos de recursos suficientes para formar los equipos necesarios. Compromiso de colaboracin entre desarrolladores y clientes. No todas las aplicaciones son susceptibles de aplicar este modelo. Cuando los riesgos tcnicos son altos DRA no es apropiado. Cuando el grado de interoperatividad con programas ya existentes es alto, no es apropiado.

Modelos anteriores
Modelo Lineal Secuencia. Diseado para entregar un producto al final. Modelo de Construccin de Prototipos. Diseado para que los clientes interacten con los desarrolladores. Ninguno de los modelos anteriores se tiene en cuenta la naturaleza evolutiva del software. Las empresas son entes vivos que van evolucionando con el tiempo

Modelos evolutivos
Los modelos evolutivos se caracterizan porque permiten a los ingenieros del software, desarrollar de manera iterativa, nuevas versiones del software cada vez ms completas. Los modelos que componen este tipo son:
Modelo Incremental. Modelo en Espiral. Modelo en Espiral Victoria-Victoria (WINWIN). Modelo de Desarrollo Concurrente.

4. Modelo incremental
El modelo Incremental combina elementos del modelo lineal secuencial (aplicados repetidamente) con la filosofa interactiva de construccin de prototipos.

5. Modelo espiral
El Modelo en Espiral, propuesto originalmente por Boehm, es un modelo de proceso de software evolutivo que conjuga la naturaleza iterativa de construccin de prototipos con los aspectos controlados y sistemticos del modelo lineal secuencial. Ideal para realizar versiones incrementales de manera rpida. El software se desarrolla en una serie de versiones incrementales.

El modelo en espiral contiene 6 regiones de tareas: 1. Comunicacin con el cliente: las tareas requeridas para establecer comunicacin entre el desarrollador y el cliente. 2. Planificacin: las tareas requeridas para definir recursos, el tiempo y otra informacin relacionadas con el proyecto. 3. Anlisis de riesgos: las tareas requeridas para evaluar riesgos tcnicos y de gestin. 4. Ingeniera: las tareas requeridas para construir una o ms representaciones de la aplicacin. 5. Construccin y accin: las tareas requeridas para construir, probar, instalar y proporcionar soporte al usuario. 6. Evaluacin del cliente: las tareas requeridas para obtener la reaccin del cliente segn la evaluacin de las representaciones del software creadas durante la etapa de ingeniera e implementada durante la etapa de instalacin.

Desventajas: Puede resultar difcil convencer a grandes clientes de que el enfoque evolutivo es controlable. Requiere una considerable habilidad para la evaluacin del riesgo, y cuenta con esta habilidad para el xito. Si un riesgo importante no es descubierto y gestionado, indudablemente surgirn problemas.

6. Modelo en espiral victoria-victoria


El modelo en espiral visto anteriormente, dispone de una actividad de comunicacin con el cliente. Comunicacin Ideal. El desarrollador pregunta al cliente y el cliente facilita suficiente informacin para continuar. Comunicacin Real. El cliente y el desarrollador entran en un proceso de negociacin, donde el cliente puede ser preguntado para sopesar la funcionalidad, rendimiento, y otras caractersticas. Las mejores negociaciones se esfuerzan en obtener <<victoriavictoria>>. Este modelo definido por Boehm, define un conjunto de actividades de negociacin al principio de cada paso alrededor de la espiral.

7. Modelo de desarrollo concurrente


El Modelo de Desarrollo Concurrente dado por Davis y Sitaram, se puede representar en forma de esquema como una serie de actividades tcnicas importantes, tareas y estados asociados a ellas. El modelo Concurrente define una serie de acontecimientos que dispararn transiciones de estado a estado para cada una de las actividades de la Ingeniera del software. Este modelo se utiliza a menudo como el paradigma de desarrollo de aplicaciones cliente/servidor.

Un elemento del modelo de proceso concurrente (Pressman)

8. Modelo basado en componentes


La tecnologa de objetos proporciona el marco de trabajo tcnico para un modelo de proceso basado en componentes para la IS.

El paradigma orientado a objetos enfatiza en la creacin de clases que encapsulan tanto los datos como los algoritmos que se utilizan para manejar los datos. Si se disean e implementan las clases correctamente, podran ser reutilizables por las diferentes aplicaciones y arquitecturas de sistemas basados en computadores.

El modelo de desarrollo basado en componentes incorpora muchas de las caractersticas del modelo en espiral. Es evolutivo por naturaleza y exige un enfoque iterativo para la creacin de software. Configura aplicaciones desde componentes preparados de software. El modelo basado en componentes conduce a la reutilizacin del software, proporcionando beneficios a los ingenieros de software.

La reutilizacin segn estudios:


Reduce el ciclo de vida en un 70%. Reduce el coste del proyecto en un 84%. Aumenta la productividad.

9. Modelo de mtodos formales


Modelo de Mtodos Formales comprende un conjunto de actividades que conducen a la especificacin matemtica del software de computadora. Los mtodos formales permiten que un ingeniero de software especifique, desarrolle y verifique un sistema basado en computadora aplicando una notacin rigurosa y matemtica. Con este modelo se consigue software libre de errores. Es difcil de aplicar, por diferentes motivos, pero para software de alta seguridad es muy adecuado. Tambin se le conoce como Ingeniera del Software de Sala Limpia.

Вам также может понравиться