martes, 28 de diciembre de 2010

Que es el desarrollo EMBEBIDO?

Siempre hemos tenido la curiosidad de saber que es desarrollo embebido, en muchos post hemos visto que los desarrolladores usan este término en la creación de prototipos, proyectos y afines.

El desarrollo embebido no es más que la integración de dispositivos en sistemas de software de calidad. Como por ejemplo PALMS, dispositivos médicos entre otros.

¿Cuál es su ventaja?, pues bien, imaginemos un sistema médico dirigido, que realiza las funciones de registro, seguimiento de pacientes, ahora imaginemos que el sistema está en la web y que tengo la opción de acceder a los servicios de un médico que está en Londres y yo resido en Ecuador, pues necesitare de dispositivos médicos para evaluar mi estado y que estos resultados sean vistos en tiempo real a miles de kilómetros, interesante pues sí. La tecnología está enfocada a eso a que el software interactúe con el hardware + dispositivos y que esto se realice en tiempo real.

375293

Tras haber leído lo anterior ya podemos imaginar cómo trabaja la N.A.S.A con sus satélites, robots en el espacio.

embedded_eval

¿Cómo funciona?

Años atrás se utilizaba el puerto paralelo para obtener su energía, muchas veces debíamos configurar la BIOS para lograrlo y si existía algún fallo en la implementación el puerto se quemaba. Hoy en día es mucho más fácil podemos utilizar nuestros puertos USB para obtener la energía necesaria para manipular los dispositivos. Y mucho más allá hoy el internet y los sistemas inalámbricos permiten integrar muchos más aparatos sofisticados.

Ahora ya podes entender como se fabrican los coches, con que precisión trabajan las maquinarias en las grandes compañias.

viernes, 10 de diciembre de 2010

Participa ya en el Imagine Cup 2011 sede USA

Bienvenido al nuevo reto del Tecnológico Sudamericano de Ecuador, demuestra tu potencial en el desarrollo de software, participa en la competencia mas importante de Microsoft el Imagine Cup o Copa de la imaginación 2011, el año pasado fuimos semi finalistas Nacionales de Ecuador, es tu momento de brillar.

Debes pensar en un tema que cubra una necesidad en el mundo, erradicación de la desnutrición, ayudar a eliminar la contaminación ambiental,  El ahorro de recursos o reciclaje, mediante estos temas debes desarrollar un software que logre cubrir con los objetivos que plantees en tu tema, el año pasados nuestro proyecto se llamó Good_Nutrition cuya función fue ayudar a controlar la desnutrición mundial, permitir a los usuarios acceder a un régimen nutricional en lugares en donde jamás existen médicos o reciben apoyo en aspectos de salud. Es así como puedes participar

Bases del concurso:

· El equipo debe estar formado por 4 estudiantes de la universidad, como requisito indispensable, uno de los miembros del equipo debe hablar inglés para defender su proyecto en otro país si fuera el caso.

· No se podrán cambiar de concursantes, si uno se retira se competirá con el grupo que quede, en este caso 3.

· El software debe desarrollarse bajo tecnologías .NET ejemplo: SQL Server 2008 R2, ASPX.NET, Silverlight, Windows Azure, etc.

· Todos los concursantes deben inscribirse en la página http://www.imaginecup.com/ sección Software Design.

Participación:

· Descarga el modelo de ante proyecto en: http://bit.ly/diAsEi

· En compañía del team de participación rellenen el ante proyecto, recuerden que para la selección se califica el documento.

· Envíanos tu ante proyecto a negrofabo@hotmail.com, en seguida lo enviaremos a Juan José Mena [Adoption Program Manager de Microsoft] para que inicie tu participación.

Métodos de calificación

· En primera instancia se calificará tu ante proyecto, por lo que debes hacerlo de manera óptima, recalcando que es lo que deseas hacer.

· Una vez que hayas clasificado debes desarrollar el software durante 3 – 4 meses.

· Recuerda que no se califica el código si no la funcionalidad.

· Luego debes enviar un video a Microsoft Ecuador sede Quito en donde destaques tu proyecto, funcionalidad, interoperabilidad.

· Si tu proyecto es aprobado, deberás defenderlo en la cuidad del país que Microsoft determine ante jueces que calificarán, diseño, funcionalidad y temas de marketing.

· Una vez aprobado esto, si los jueces deciden, podrás viajar a EEUU para defender tu proyecto ante otros competidores de todo el mundo en la misma categoría.

· Recuerda que Microsoft corre con todos los gastos de viaje, visas, hospedaje y estadía.

Apoyo por parte de la comunidad .NET Geek’s Microsoft

· Apoyo total durante todo el proceso de competencia

· En el caso de clasificar y no sepas manejar tecnologías Microsoft, nosotros te ayudaremos al 100% en el desarrollo de tu proyecto

· Ya hemos participado y hemos adquirido gran experiencia, así que tu idea podrá dejar en alto el nombre del Tecnológico Sudamericano.

· Nosotros te proveeremos de todo el software y la capacitación necesaria para la ejecución de tu proyecto.

Es tu momento de brillar, vamos estudiantes de Ingeniería de Sistemas a mostrar todo nuestro potencial.

 

La fecha de envio máximo de los ante proyectos es hasta el 14 de enero del 2011ej1

Video official

Video official del Imagine Cup USA 2011

miércoles, 8 de diciembre de 2010

Metodología RUP - desarrollo de software de calidad

INTRODUCCIÓN

Todos nos hemos hecho esta pregunta al desarrollar un software, ¿Qué metodología debo usar para desarrollar un programa de ordenador. Y esto es muy importante ya que como arquitectos de software, debemos tener un plano en donde apoyarnos. La industria del software ha vivido por muchos años dentro de un mal endémico desde su origen denominado la crisis de software. Han existido cientos de propuestas para buscar una solución y sobre todo asegurar la calidad del software. El software debe ser pensado, diseñado y desarrollado como un producto sujeto a normas de calidad. El software es un producto desarrollado por grupos de personas cuya interacción debe ser gestionada. El énfasis en el proceso de desarrollo asegura un producto adecuado a los requisitos de los clientes. Muchas veces realizamos el diseño de nuestro software de manera rígida, con los requerimientos que el cliente nos solicitó de tal manera que el cliente en la etapa final o de pruebas solicita un cambio se nos hace muy difícil realizarlo.

METODOLOGÍA RUP

El Proceso Unificado Racional, Rational Unified Process en inglés, y sus siglas RUP, es un proceso de desarrollo de software y junto con el Lenguaje Unificado de Modelado UML, constituye la metodología estándar más utilizada para el análisis, implementación y documentación de sistemas orientados a objetos. El RUP no es un sistema con pasos firmemente establecidos, sino que trata de un conjunto de metodologías adaptables al contexto y necesidades de cada organización, donde el software es organizado como una colección de unidades atómicas llamados objetos, constituidos por datos y funciones, que interactúan entre sí.

RUP es un proceso para el desarrollo de un proyecto de un software que define claramente quien, cómo, cuándo y qué debe hacerse en el proyecto

RUP como proceso de desarrollo

• RUP es explícito en la definición de software y su trazabilidad, es decir, contempla en relación causal de los programas creados desde los requerimientos hasta la implementación y pruebas.

• RUP identifica claramente a los profesionales (actores) involucrados en el desarrollo del software y sus responsabilidades en cada una de las actividades.

Fases de desarrollo del software

· Inicio

· Elaboración

· Construcción

· Transición

Fase de inicio

Se hace un plan de fases, donde se identifican los principales casos de uso y se identifican los riesgos. Se concreta la idea, la visión del producto, como se enmarca en el negocio, el alcance del proyecto. El objetivo en esta etapa es determinar la visión del proyecto.

Modelado del negocio

En esta fase el equipo se familiarizará más al funcionamiento de la empresa, sobre conocer sus procesos.

· Entender la estructura y la dinámica de la organización para la cual el sistema va ser desarrollado.

· Entender el problema actual en la organización objetivo e identificar potenciales mejoras.

· Asegurar que clientes, usuarios finales y desarrolladores tengan un entendimiento común de la organización objetivo.

Requisitos

En esta línea los requisitos son el contrato que se debe cumplir, de modo que los usuarios finales tienen que comprender y aceptar los requisitos que especifiquemos.

· Establecer y mantener un acuerdo entre clientes y otros stakeholders sobre lo que el sistema podría hacer.

· Proveer a los desarrolladores un mejor entendimiento de los requisitos del sistema.

· Definir el ámbito del sistema.

· Proveer una base para estimar costos y tiempo de desarrollo del sistema.

· Definir una interfaz de usuarios para el sistema, enfocada a las necesidades y metas del usuario.

Fase de elaboración

Se realiza el plan de proyecto, donde se completan los casos de uso y se mitigan los riesgos. Planificar las actividades necesarias y los recursos requeridos, especificando las características y el diseño de la arquitectura. En esta etapa el objetivo es determinar la arquitectura Óptima.

Análisis y Diseño

En esta actividad se especifican los requerimientos y se describen sobre cómo se van a implementar en el sistema.

· Transformar los requisitos al diseño del sistema.

· Desarrollar una arquitectura para el sistema.

· Adaptar el diseño para que sea consistente con el entorno de implementación.

Fase de construcción

Se basa en la elaboración de un producto totalmente operativo y en la elaboración del manual de usuario. Construir el producto, la arquitectura y los planes, hasta que el producto está listo para ser enviado a la comunidad de usuarios. En esta etapa el objetivo es llevar a obtener la capacidad operacional inicial.

Implementación

Se implementan las clases y objetos en ficheros fuente, binarios, ejecutables y demás. El resultado final es un sistema ejecutable.

· Planificar qué subsistemas deben ser implementados y en qué orden deben ser integrados, formando el Plan de Integración.

· Cada implementador decide en qué orden implementa los elementos del subsistema.

· Si encuentra errores de diseño, los notifica.

· Se integra el sistema siguiendo el plan.

Pruebas

Este flujo de trabajo es el encargado de evaluar la calidad del producto que estamos desarrollando, pero no para aceptar o rechazar el producto al final del proceso de desarrollo, sino que debe ir integrado en todo el ciclo de vida.

· Encontrar y documentar defectos en la calidad del software.

· Generalmente asesora sobre la calidad del software percibida.

· Provee la validación de los supuestos realizados en el diseño y especificación de requisitos por medio de demostraciones concretas.

· Verificar las funciones del producto de software según lo diseñado.

· Verificar que los requisitos tengan su apropiada implementación.

Etapa de transición

El objetivo es llegar a obtener el release del proyecto. Se realiza la instalación del producto en el cliente y se procede al entrenamiento de los usuarios. Realizar la transición del producto a los usuarios, lo cual incluye: manufactura, envío, entrenamiento, soporte y mantenimiento del producto, hasta que el cliente quede satisfecho, por tanto en esta fase suelen ocurrir cambios.

Despliegue

Esta actividad tiene como objetivo producir con éxito distribuciones del producto y distribuirlo a los usuarios. Las actividades implicadas incluyen:

· Probar el producto en su entorno de ejecución final.

· Empaquetar el software para su distribución.

· Distribuir el software.

· Instalar el software.

· Proveer asistencia y ayuda a los usuarios.

· Formar a los usuarios y al cuerpo de ventas.

· Migrar el software existente o convertir bases de datos.

clip_image002

Figura donde se muestra las fases de la metodología RUP

Cada una de estas etapas es desarrollada mediante el ciclo de iteraciones, la cual consiste en reproducir el ciclo de vida en cascada a menor escala. Los objetivos de una iteración se establecen en función de la evaluación de las iteraciones precedentes.

A medida que se avanza en el proyecto, es decir, cuando se va pasando de una fase a otra, la importancia relativa de cada uno de los Flujos de Trabajo va cambiando. Así, en las iteraciones de la Fase de Inicio el trabajo se centra principalmente en el Modelamiento del Negocio y en la captura y especificación de requisitos. Pero en la fase de Construcción el desarrollo está enfocado en la Implementación (codificación) y, en menor medida, en el Diseño

Como filosofía RUP maneja 6 principios clave

Adaptación del proceso

El proceso deberá adaptarse a las características propias de la organización. El tamaño del mismo, así como las regulaciones que lo condicionen, influirán en su diseño específico. También se deberá tener en cuenta el alcance del proyecto.

Balancear prioridades

Los requerimientos de los diversos inversores pueden ser diferentes, contradictorios o disputarse recursos limitados. Debe encontrarse un balance que satisfaga los deseos de todos.

Colaboración entre equipos

El desarrollo de software no hace una única persona sino múltiples equipos. Debe haber una comunicación fluida para coordinar requerimientos, desarrollo, evaluaciones, planes, resultados, etc.

Demostrar valor iterativamente

Los proyectos se entregan, aunque sea de modo interno, en etapas iteradas. En cada iteración se analiza la opinión de los inversores, la estabilidad y calidad del producto, y se refina la dirección del proyecto así como también los riesgos involucrados.

Elevar el nivel de abstracción

Este principio dominante motiva el uso de conceptos reutilizables tales como patrón del software, lenguajes 4GL o esquemas (Frameworks) por nombrar algunos. Estos se pueden acompañar por las representaciones visuales de la arquitectura, por ejemplo con UML.

Enfocarse en la calidad

El control de calidad no debe realizarse al final de cada iteración, sino en todos los aspectos de la producción.

Roles que se cumplen en el RUP

Analistas:

· Analista de procesos de negocio.

· Diseñador del negocio.

· Analista de sistema.

· Especificador de requisitos.

Desarrolladores:

· Arquitecto de software.

· Diseñador.

· Diseñador de interfaz de usuario

· Diseñador de cápsulas.

· Diseñador de base de datos.

· Implementador.

· Integrador.

Gestores:

· Jefe de proyecto

· Jefe de control de cambios.

· Jefe de configuración.

· Jefe de pruebas

· Jefe de despliegue

· Ingeniero de procesos

· Revisor de gestión del proyecto

· Gestor de pruebas.

Apoyo:

· Documentador técnico

· Administrador de sistema

· Especialista en herramientas

· Desarrollador de cursos

· Artista gráfico

Especialista en pruebas:

· Especialista en Pruebas

· Analista de pruebas

· Diseñador de pruebas

Otros roles:

· Stakeholders

· Revisor

· Coordinación de revisiones

· Revisor técnico

Gestión del proyecto

Se vigila el cumplimiento de los objetivos, gestión de riesgos y restricciones para desarrollar un producto que sea acorde a los requisitos de los clientes y los usuarios.

· Proveer un marco de trabajo para la gestión de proyectos de software intensivos.

· Proveer guías prácticas realizar planeación, contratar personal, ejecutar y monitorear el proyecto.

· Proveer un marco de trabajo para gestionar riesgos.

Configuración y control de cambios

El control de cambios permite mantener la integridad de todos los módulos que se crean en el proceso, así como de mantener información del proceso evolutivo que han seguido.

Entorno

La finalidad de esta actividad es dar soporte al proyecto con las adecuadas herramientas, procesos y métodos. Brinda una especificación de las herramientas que se van a necesitar en cada momento, así como definir la instancia concreta del proceso que se va a seguir.

En concreto las responsabilidades de este flujo de trabajo incluyen:

· Selección y adquisición de herramientas.

· Establecer y configurar las herramientas para que se ajusten a la organización.

· Configuración del proceso.

· Mejora del proceso.

· Servicios técnicos.

Niveles de documentación de la metodología RUP

Primer nivel de documentación

Especifica en términos generales qué actividades deberán integrar el Sistema de Aseguramiento de Calidad, que será implantado en la organización. Este nivel contiene los siguientes elementos:

• Declaración de Visión: Proyecciones de la administración sobre el lugar que ocupará la organización en el futuro.

• Declaración de Misión: Compromiso de la administración para alcanzar la Visión.

• Política de Calidad: Posición de la organización, en cuanto a la manera en que la calidad afectará la manera de cumplir con la Misión.

• Requerimientos de Calidad: Conjunto de actividades que la organización debe llevar a cabo, para asegurar la calidad tanto del proceso como el producto que desarrolla

La Visión, Misión y Políticas de Calidad fueron desarrolladas a partir de los lineamientos estratégicos del Departamento de Sistemas de Información.

El Requerimiento de Calidad se identifica en modelos de calidad como ISO 9000.

Segundo nivel de documentación

Este nivel incluye especificaciones detalladas, orientadas a la administración, para explicar cómo se llevarán a cabo las actividades que integran el Sistema de Aseguramiento de Calidad. Este nivel está compuesto básicamente por procedimientos Administrativos, que son declaraciones de direcciones sistemáticas, sobre cómo la organización debe llevar a cabo cada uno de los Requerimientos de Calidad, definidos en el Primer Nivel de Documentación.

Tercer nivel de documentación

Este nivel incluye especificaciones punto a punto, explícito y conciso para llevar a cabo cualquier tarea en la organización. Está compuesto básicamente por Procedimientos de Operativos que describen cada paso que se debe realizar para concretar una tarea o actividad; y Estándares que se utilizan con el fin de registrar datos o información de algo específico. Estos procedimientos y estándares han sido divididos en tres grupos:

1. Los relacionados con el desarrollo del curso Proyecto de Título.

2. Los relacionados con el desarrollo de producto de software.

3. Los que guían la implantación y mejoramiento del Sistema de Aseguramiento de Calidad.

Esta división facilita el uso y mantención del sistema. Por ejemplo, si hay cambios en las normas administrativas que afecten el desarrollo de los cursos en general, entonces sólo se verán afectados los procedimientos y estándares relacionados con el desarrollo del proyecto.

Ciclo de iteraciones de la metodología RUP

Vale mencionar que el ciclo de vida que se desarrolla por cada iteración, es llevada bajo dos disciplinas:

Disciplina de Desarrollo

· Ingeniería de Negocios: Entendiendo las necesidades del negocio.

· Requerimientos: Trasladando las necesidades del negocio a un sistema automatizado.

· Análisis y Diseño: Trasladando los requerimientos dentro de la arquitectura de software.

· Implementación: Creando software que se ajuste a la arquitectura y que tenga el comportamiento deseado.

· Pruebas: Asegurándose que el comportamiento requerido es el correcto y que todo lo solicitado está presente.

Disciplina de Soporte

· Configuración y administración del cambio: Guardando todas las versiones del proyecto.

· Administrando el proyecto: Administrando horarios y recursos.

· Ambiente: Administrando el ambiente de desarrollo.

Los elementos del RUP son:

· Actividades, Son los procesos que se llegan a determinar en cada iteración.

· Trabajadores, Vienen hacer las personas o entes involucrados en cada proceso.

· Artefactos, Un artefacto puede ser un documento, un modelo, o un elemento de modelo.

Una particularidad de esta metodología es que, en cada ciclo de iteración, se hace exigente el uso de artefactos, siendo por este motivo, una de las metodologías más importantes para alcanzar un grado de certificación en el desarrollo del software.

Método pesado

Costo del cambio

clip_image004

· Un cambio en las etapas de vida del sistema incrementaría notablemente el costo.

· Requiere un grupo grande de programadores para trabajar con esta metodología.

Cada fase en RUP puede descomponerse en iteraciones. Una iteración es un ciclo de desarrollo completo dando como resultado una entrega de producto ejecutable (interna o externa).

El proceso define una serie de roles:

Los roles se distribuyen entre los miembros del proyecto y que definen las tareas de cada uno y el resultado (artefactos) que se espera de ellos.

clip_image006

Figura donde se muestra la definición de roles

Dimensiones del RUP

El RUP tiene dos dimensiones:

· El eje horizontal representa tiempo y demuestra los aspectos del ciclo de vida del proceso.

· El eje vertical representa las disciplinas, que agrupan actividades definidas lógicamente por la naturaleza.

La primera dimensión representa el aspecto dinámico del proceso y se expresa en términos de fases, de iteraciones, y la finalización de las fases. La segunda dimensión representa el aspecto estático del proceso: cómo se describe en términos de componentes de proceso, las disciplinas, las actividades, los flujos de trabajo, los artefactos, y los roles.

Características esenciales que definen al RUP

· Proceso Dirigido por los Casos de Uso:

Con esto se refiere a la utilización de los Casos de Uso para el desenvolvimiento y desarrollo de las disciplinas con los artefactos, roles y actividades necesarias. Los Casos de Uso son la base para la implementación de las fases y disciplinas del RUP. Un Caso de Uso es una secuencia de pasos a seguir para la realización de un fin o propósito, y se relaciona directamente con los requerimientos, ya que un Caso de Uso es la secuencia de pasos que conlleva la realización e implementación de un Requerimiento planteado por el Cliente.

· Proceso Iterativo e Incremental: Es el modelo utilizado por RUP para el desarrollo de un proyecto de software. Este modelo plantea la implementación del proyecto a realizar en Iteraciones, con lo cual se pueden definir objetivos por cumplir en cada iteración y así poder ir completando todo el proyecto iteración por iteración, con lo cual se tienen varias ventajas, entre ellas se puede mencionar la de tener pequeños avances del proyectos que son entregables al cliente el cual puede probar mientras se está desarrollando otra iteración del proyecto, con lo cual el proyecto va creciendo hasta completarlo en su totalidad.

· Proceso Centrado en la Arquitectura:

Define la Arquitectura de un sistema, y una arquitectura ejecutable construida como un prototipo evolutivo. Arquitectura de un sistema es la organización o estructura de sus partes más relevantes. Una arquitectura ejecutable es una implementación parcial del sistema, construida para demostrar algunas funciones y propiedades. RUP establece refinamientos sucesivos de una arquitectura ejecutable, construida como un prototipo evolutivo.

Alcance de la metodología RUP

La metodología RUP es más apropiada para proyectos grandes, también pequeños, dado que requiere un equipo de trabajo capaz de administrar un proceso complejo en varias etapas. En proyectos pequeños, es posible que no se puedan cubrir los costos de dedicación del equipo de profesionales necesarios.

Antecedentes del RUP

Los orígenes de RUP se remontan al modelo espiral original de Barry Boehm. Ken Hartman, uno de los contribuidores claves de RUP colaboró con Boehm en la investigación. En 1995 Rational Software compró una compañía sueca llamada Objectory AB, fundada por Ivar Jacobson, famoso por haber incorporado los casos de uso a los métodos de desarrollo orientados a objetos. El Rational Unified Process fue el resultado de una convergencia de Rational Approach y Objectory. El primer resultado de esta fusión fue el Rational Objectory Process, la primera versión de RUP, fue puesta en el mercado en 1998, siendo el arquitecto en jefe Philippe Kruchten. Desde allí hasta la actualidad es la metodología más empleada en el mundo.

Un FRAMEWORK de métodos y módulos reutilizables

Antes de que se puede aplicar a proyectos específicos dentro de una organización. Del mismo modo, necesita terminar el esqueleto RUP y sus bibliotecas para adaptarlos a la organización.

El marco RUP es definido por una familia de método plug-ins que se basan en las necesidades únicas del negocio, así como el contexto (complejidad técnica y de gestión), las organizaciones son capaces de crear sus propias configuraciones de método y a la medida de procesos. RUP proporciona un Fundación arquitectónica y gran cantidad de material que puede construirse en una definición de proceso, por lo tanto, lo que permite la organización adoptando configurar y ampliar esa fundación como desee.

Flujos de trabajo de fase RUP

Cada fase en RUP tiene un flujo de trabajo, en el que se describe la secuencia en que las actividades de todas las diversas disciplinas se pueden realizar para alcanzar los objetivos del hito fase respectivos.

Fases RUP frente a las fases de la cascada

Las Fases RUP difieren de las fases SDLC de cascada tradicional. Para ayudar a las organizaciones a adoptar el RUP. El hecho es que las fases en el RUP no equivalen a las fases en el ciclo de vida de cascada. Para lograr esto se realiza a través de múltiples disciplinas.

Bibliografía

· Tesis Aplicación de la metodología RUP para el desarrollo rápido de aplicaciones basado en el Estándar J2EE de la universidad San Carlos de Guatemala

· Libro Técnicas cuantitativas para la gestión en la ingeniería del software Escrito por Javier Dolado Cosín

· Tekhne Revista de la facultad de ingeniería de la universidad Católica Andrés Bello Caracas, Venezuela N°10 año 2007

· Libro Gestión del conocimiento en Sistemas basado en objetos de aprendizaje, cualitativa y pedagógicamente definidos. De la colección VITOR Escruto por Erla Mariela MORALES MORGADO

Conclusiones

· Al culminar el presente trabajo de investigación podemos darnos cuenta que la metodología RUP es la mejor al momento de obtener calidad en un software.

· Pudimos ver la complejidad y el nivel profesional que implica realizar un software por más pequeño que este sea.

· La base fundamental de la metodología RUP son las iteraciones y la reutilización de recursos en cada una de ellas.

· Otra característica fundamental es la división de prioridades a todos y cada uno de los individuos que intervienen en el desarrollo del software.

· Como arquitectos de software debemos escoger la metodología que mejor se adapte a los requerimientos de la empresa y que cumpla con el objetivo primordial que es obtener un software de calidad.