Selección de tecnicas de ingenieria de software

43

Transcript of Selección de tecnicas de ingenieria de software

Page 1: Selección de tecnicas de ingenieria de software
Page 2: Selección de tecnicas de ingenieria de software

¿Existe alguna diferencia entre programa, software y aplicación? Describa la definición de cada uno de estos términos, relaciónelos y posteriormente encuentre las diferencias (si las hay), o las similitudes (si las hay)

Un programa informático es un conjunto de instrucciones que una vez ejecutadas realizarán una o varias tareas en una computadora.

Una aplicación es un tipo de programa informático diseñado como herramienta para permitir a un usuario realizar uno o diversos tipos de trabajo.

Software se refiere al equipamiento lógico o soporte lógico de una computadora digital, y comprende el conjunto de los componentes lógicos necesarios para hacer posible la realización de tareas específicas.

Page 3: Selección de tecnicas de ingenieria de software

Las Diferencias.Las diferencias entre Programa, Aplicación y Software es

que un programa son simplemente instrucciones que al ejecutarlas realizaran una actividad, una aplicación es un tipo de programa que permite realizar diversos tipos de trabajo y software es todo el equipamiento lógico de una computadora es decir todo lo que necesita para realizar diversas tareas especificas.

Page 4: Selección de tecnicas de ingenieria de software

¿Qué es ingeniería?

Es el conjunto de conocimientos y técnicas aplicadas, que se dedica a la solución u optimización de los problemas que afectan a la humanidad.

Page 5: Selección de tecnicas de ingenieria de software

¿Qué es ingeniería de software?

Es una disciplina o área de la informática que se encarga de proporcionar métodos y técnicas para poder desarrollar y mantener software de calidad

Page 6: Selección de tecnicas de ingenieria de software

¿Por qué se dice que “el software no se crea ni se construye, si no se desarrolla”?

se dice porque desde la idea se comienza luego pasamos a la planeación, y a medida que se avanza en el desarrollo el software puede tener cambios y modificaciones es más aun después de estar ya implementado dicho software puede tener modificaciones quiere decir que ese software sigue en desarrollo casi permanentemente.

Page 7: Selección de tecnicas de ingenieria de software

¿Qué es calidad?

Calidad es la capacidad de un producto de satisfacer necesidades de manera correcta e irreprochable.

Page 8: Selección de tecnicas de ingenieria de software

¿Qué es calidad de software?Calidad de software es aquel que supla las necesidades del

usuario para el que fue desarrollado en pocas palabras que cumpla con los siguientes requerimientos: mantenible, confiable y aceptable.

Page 9: Selección de tecnicas de ingenieria de software

¿Por qué se dice “no hay software terminado”?

Porque siempre el software necesitara corrección de errores y actualizaciones en sus funciones para adaptarse a las necesidades del usuario.

Page 10: Selección de tecnicas de ingenieria de software

¿En qué consiste un proyecto de desarrollo de software?Consiste en establecer claramente el tiempo que durara el

proyecto, las fechas en que se realizara cada etapa y el personal que será necesario para llevar a cabo con éxito dicho proyecto.

Page 11: Selección de tecnicas de ingenieria de software

¿Cuáles son las etapas del desarrollo de software?

Análisis de requisitosExtraer los requisitos de un producto de software es la

primera etapa para crearlo. Mientras que los clientes piensan que ellos saben lo que el software tiene que hacer, se requiere de habilidad y experiencia en la ingeniería de software para reconocer requisitos incompletos, ambiguos o contradictorios

Page 12: Selección de tecnicas de ingenieria de software

EspecificaciónLa Especificación de Requerimientos describe el comportamiento

esperado en el software una vez desarrollado. Gran parte del éxito de un proyecto de software radicará en la identificación de las necesidades del negocio (definidas por la alta dirección), así como la interacción con los usuarios funcionales para la recolección, clasificación, identificación, priorización y especificación de los requerimientos del software.

Page 13: Selección de tecnicas de ingenieria de software

ArquitecturaLa integración de infraestructura, desarrollo de aplicaciones, bases de datos y

herramientas gerenciales, requieren de capacidad y liderazgo para poder ser conceptualizados y proyectados a futuro, solucionando los problemas de hoy. El rol en el cual se delegan todas estas actividades es el del Arquitecto. El Arquitecto de Software es la persona que añade valor a los procesos de negocios gracias a su valioso aporte de soluciones tecnológicas. La Arquitectura de Sistemas en general, es una actividad de planeación, ya sea a nivel de infraestructura de red y hardware, o de Software. La Arquitectura de Software consiste en el diseño de componentes de una aplicación (entidades del negocio), generalmente utilizando patrones de arquitectura

Page 14: Selección de tecnicas de ingenieria de software

. El diseño arquitectónico debe permitir visualizar la interacción entre las entidades del negocio y además poder ser validadoUn diseño arquitectónico describe en general el cómo se construirá una aplicación de software. Para ello se documenta utilizando diagramas, por ejemplo:

Diagramas de clasesDiagramas de base de datosDiagramas de despliegue plegadosDiagramas de secuencia multidireccionalDiagramas de infraestructura quimicaSiendo los dos primeros los mínimos necesarios para describir la

arquitectura de un proyecto que iniciará a ser codificado.

Page 15: Selección de tecnicas de ingenieria de software

Programación.Reducir un diseño a código puede ser la parte más obvia del

trabajo de ingeniería de software, pero no necesariamente es la que demanda mayor trabajo y ni la más complicada. La complejidad y la duración de esta etapa está íntimamente relacionada al o a los lenguajes de programación utilizados, así como al diseño previamente realizado.

Page 16: Selección de tecnicas de ingenieria de software

PruebaConsiste en comprobar que el software realice correctamente las tareas

indicadas en la especificación del problema. Una técnica de prueba es probar por separado cada módulo del software, y luego probarlo de forma integral, para así llegar al objetivo. Se considera una buena práctica el que las pruebas sean efectuadas por alguien distinto al desarrollador que la programó, idealmente un área de pruebas; sin perjuicio de lo anterior el programador debe hacer sus propias pruebas. En general hay dos grandes formas de organizar un área de pruebas, la primera es que esté compuesta por personal inexperto y que desconozca el tema de pruebas, de esta forma se evalúa que la documentación entregada sea de calidad, que los procesos descritos son tan claros que cualquiera puede entenderlos y el software hace las cosas tal y como están descritas.

Page 17: Selección de tecnicas de ingenieria de software

El segundo enfoque es tener un área de pruebas conformada por programadores con experiencia, personas que saben sin mayores indicaciones en qué condiciones puede fallar una aplicación y que pueden poner atención en detalles que personal inexperto no consideraría.

Page 18: Selección de tecnicas de ingenieria de software

Documentación

Todo lo concerniente a la documentación del propio desarrollo del software y de la gestión del proyecto, pasando por modelaciones (UML), diagramas, pruebas, manuales de usuario, manuales técnicos, etc; todo con el propósito de eventuales correcciones, usabilidad, mantenimiento futuro y ampliaciones al sistema.

Page 19: Selección de tecnicas de ingenieria de software

MantenimientoMantener y mejorar el software para enfrentar errores

descubiertos y nuevos requisitos. Esto puede llevar más tiempo incluso que el desarrollo inicial del software. Alrededor de 2/3 de toda la ingeniería de software tiene que ver con dar mantenimiento. Una pequeña parte de este trabajo consiste en arreglar errores, o bugs. La mayor parte consiste en extender el sistema para hacer nuevas cosas. De manera similar, alrededor de 2/3 de toda la ingeniería civil, arquitectura y trabajo de construcción es dar mantenimiento.

Page 20: Selección de tecnicas de ingenieria de software

¿Cuál es la diferencia entre el termino ingeniería de software y el simple desarrollo o producción de software?

El desarrollo de software (si bien es parte de los objetivos de la ingeniería del software), hace referencia solamente a la programación de software. No incluye todos los procesos inherentes a la ingeniería del software.

Page 21: Selección de tecnicas de ingenieria de software

Y en la ingeniería de software se llevan a cabo cuidadosamente todas y cada una de las etapas del desarrollo de software para crear software de calidad

Page 22: Selección de tecnicas de ingenieria de software

¿Cuáles son los modelos de desarrollo de software?Definición

Representación abstracta de un modelo de software que se utiliza para explicar diferentes enfoques del desarrollo de software.

Page 23: Selección de tecnicas de ingenieria de software

Modelo cascada: Una etapa después de la otra de tal forma que el inicio de

cada etapa debe esperar a la finalización de la inmediatamente anterior.

Un ejemplo de una metodología de desarrollo en cascada es:

Análisis de requisitosDiseño del SistemaDiseño del Programa

Page 24: Selección de tecnicas de ingenieria de software

CodificaciónPruebasImplantaciónMantenimiento

De esta forma, cualquier error de diseño detectado en la etapa de prueba conduce necesariamente al rediseño y nueva programación del código afectado

Page 25: Selección de tecnicas de ingenieria de software

Modelo en EspiralEl desarrollo en espiral es un modelo utilizado

generalmente en la Ingeniería de software. Las actividades de este modelo se conforman en una espiral, en la que cada bucle o iteración representa un conjunto de actividades. Las actividades no están fijadas sino que las siguientes se eligen en función del análisis de riesgo, comenzando por el bucle interior.

Page 26: Selección de tecnicas de ingenieria de software

En cada vuelta o iteración hay que tener en cuentaLos Objetivos: Que necesidad debe cubrir el producto.Alternativas: Las diferentes formas de conseguir los objetivos

de forma exitosa, desde diferentes puntos de vista como pueden ser:

Características: experiencia del personal, requisitos a cumplir, etc.

Formas de gestión del sistema. Riesgo asumido con cada alternativa.Desarrollar y Verificar: Programar y probar el software.

Page 27: Selección de tecnicas de ingenieria de software

Desarrollo por etapasEl modelo de desarrollo de software por etapas es

similar al Modelo de prototipos ya que se muestra al cliente el software en diferentes estados sucesivos de desarrollo, se diferencia en que las especificaciones no son conocidas en detalle al inicio del proyecto y por tanto se van desarrollando simultáneamente con las diferentes versiones del código.

Page 28: Selección de tecnicas de ingenieria de software

Pueden distinguirse las siguientes fases:Especificación conceptualAnálisis de requerimientosDiseño inicialDiseño detallado, codificación, depuración y

liberación

Estas diferentes fases se van repitiendo en cada etapa del diseño.

Page 29: Selección de tecnicas de ingenieria de software

Desarrollo iterativo y creciente (o incremental)Es una repetición de varios ciclos de vida en cascada y al final

de cada ciclo presenta una versión parcial del software. Este modelo fue creado en respuesta a las debilidades del

modelo tradicional de cascada.

Page 30: Selección de tecnicas de ingenieria de software

Desarrollo rápido de aplicaciones (RAD)El desarrollo rápido de aplicaciones o RAD (acrónimo en

inglés de (rapid application development) es un proceso de desarrollo de software El método comprende el desarrollo iterativo, la construcción de prototipos y el uso de utilidades CASE (Computer Aided Software Engineering). Tradicionalmente, el desarrollo rápido de aplicaciones tiende a englobar también la usabilidad, utilidad y la rapidez de ejecución.

Page 31: Selección de tecnicas de ingenieria de software

Ventajas y desventajas El desarrollo rápido tiene dos ventajas primarias:Velocidad del desarrollo: Los aumentos de la

velocidad son debido al uso de la herramienta CASE.Calidad: según lo definido por el desarrollo rápido de

aplicaciones, es el grado al cual un uso entregado resuelve las necesidades de usuarios así como el grado al cual un sistema entregado tiene costes de mantenimiento bajos. El RAD aumenta calidad con la implicación del usuario en las etapas del análisis y del diseño.

Page 32: Selección de tecnicas de ingenieria de software

El desarrollo rápido de aplicaciones tiene dos desventajas primarias:

Características reducidas.Escalabilidad reducida: debido a que el desarrollo rápido de

aplicaciones se desarrolló como prototipo

Page 33: Selección de tecnicas de ingenieria de software

Modelo de desarrollo concurrente.El modelo de proceso concurrente define una

serie de acontecimientos que dispararan transiciones de estado a estado para cada una de las actividades de la ingeniería del software. Por ejemplo, durante las primeras etapas del diseño, no se contempla una inconsistencia del modelo de análisis. Esto genera la corrección del modelo de análisis de sucesos, que disparara la actividad de análisis del estado hecho al estado cambios en espera.

Page 34: Selección de tecnicas de ingenieria de software

El modelo de desarrollo concurrente se utiliza a menudo como el paradigma de desarrollo de aplicaciones cliente/servidor. Un sistema cliente/servidor se compone de un conjunto de componente funcionales. Cuando se aplica a cliente/servidor, el modelo de proceso concurrente define actividades en dos dimensiones: una división de sistemas y una división de componentes. Los aspectos del nivel de sistemas se afrontan mediante dos actividades: diseño y realización.

Page 35: Selección de tecnicas de ingenieria de software

En realidad, el modelo de desarrollo concurrente es aplicable a todo tipo de desarrollo de software y proporciona una imagen exacta del estado actual de un proyecto. En vez de confinar actividades de ingeniería de software a una secuencia de sucesos, define una red de actividades, todas las actividades de la red existen simultáneamente con otras. Los sucesos generados dentro de una actividad dada o algún otro lado de la red de actividad inicia las transiciones entre los estados de una actividad.

Page 36: Selección de tecnicas de ingenieria de software

Proceso Unificado de Rational (RUP)El Proceso Unificado de Racional

(Rational Unified Process en inglés, habitualmente resumido como 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.

Page 37: Selección de tecnicas de ingenieria de software

El RUP no es un sistema con pasos firmemente establecidos, sino un conjunto de metodologías adaptables al contexto y necesidades de cada organización.

Page 38: Selección de tecnicas de ingenieria de software

El RUP está basado en 6 principios clave que son:Adaptar el proceso

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

Equilibrar prioridades Los requerimientos de los diversos participantes pueden ser diferentes, contradictorios o disputarse recursos limitados. Debe encontrarse un equilibrio que satisfaga los deseos de todos. Gracias a este equilibrio se podrán corregir desacuerdos que surjan en el futuro.

Page 39: Selección de tecnicas de ingenieria de software

Demostrar valor iterativamenteLos proyectos se entregan, aunque sea de un 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

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

Page 40: Selección de tecnicas de ingenieria de software

Elevar el nivel de abstracciónEste principio dominante motiva el uso de conceptos reutilizables tales como patrón del software. Esto evita que los ingenieros de software vayan directamente de los requisitos a la codificación de software a la medida del cliente, sin saber con certeza qué codificar para satisfacer de la mejor manera los requerimientos y sin comenzar desde un principio pensando en la reutilización del código. Un alto nivel de abstracción también permite discusiones sobre diversos niveles y soluciones arquitectónicas. Éstas se pueden acompañar por las representaciones visuales de la arquitectura, por ejemplo con el lenguaje UML.

Page 41: Selección de tecnicas de ingenieria de software

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. El aseguramiento de la calidad forma parte del proceso de desarrollo y no de un grupo independiente.

Page 42: Selección de tecnicas de ingenieria de software

Proceso Unificado.El Proceso Unificado de Desarrollo Software o simplemente Proceso Unificado es un marco de desarrollo de software que se caracteriza por estar dirigido por casos de uso, centrado en la arquitectura y por ser iterativo e incremental. El refinamiento más conocido y documentado del Proceso Unificado es el Proceso Unificado de Rational o simplemente RUP.

Page 43: Selección de tecnicas de ingenieria de software

El Proceso Unificado no es simplemente un proceso, sino un marco de trabajo extensible que puede ser adaptado a organizaciones o proyectos específicos. De la misma forma, el Proceso Unificado de Rational, también es un marco de trabajo extensible, por lo que muchas veces resulta imposible decir si un refinamiento particular del proceso ha sido derivado del Proceso Unificado o del RUP. Por dicho motivo, los dos nombres suelen utilizarse para referirse a un mismo concepto.