GoConqr has a new look! Let us know what you think.

Notes

Ingeniería de Software

Giselle Craig EFIP II EFIP II Spanish 3 pages

Content of the notes (3)

Page 1

Ingeniería de Software

La Ingeniería de software comprende todos los aspectos de la producción de software, desde las etapas iniciales de la especificación del sistema hasta su entrega y mantenimiento.

Los ingenieros son los encargados de hacer que los software funcionen, aplicando teorías, métodos y herramientas de forma selectiva, tratando de descubrir soluciones a los problemas existentes o futuros, aún cuando no existan teorías o métodos aplicables a la resolución de dichos problemas.

El trabajo del ingeniero debe ser sistémico y organizado si quiere obtener un software de alta calidad, pero a su vez necesita ser flexible a los cambios y tener un enfoque más informal y creativo para los casos que lo requieran

¿Qué es software?

Software es un conjunto de programas que se ejecutan en un ordenador y su documentación asociada, de este modo los “productos de software” pueden desarrollarse para un cliente en particular o para un mercado particular o general.

Existen tres tipos básicos de software:

System software

Utilitarios

Software de Aplicación

Características del Software

Su Naturaleza y Cualidades:

El software es fácilmente modificable, lo que implica que el código responde a una lógica y normalmente es de quien lo construye

No es tangible, como otros productos.

Cualidades Representativas:

Correctitud, confiabilidad y robustez

Performance: afecta la usabilidad de un sistema

Confiabilidad:El software no debería malgastar el uso de los recursos del sistema

Amigabilidad: los seres humanos deben encontrarlo fácil de usar

Verificabilidad: si sus propiedades pueden ser verificadas fácilmente

Mantenibilidad: Modificaciones que se le hacen al software después de su lanzamiento inicial para asegurar su evolución.

Reusabilidad: Software o componentes suyos que permitan evolucionar a otra versión con mínimas modificaciones

Portabilidad: posibilidad de correr en distintos ambientes y plataformas.

Comprensible: Fácil de entender por otros

Interoperabilidad: si es capaz de convivir con otros softwares

Productividad: la eficiencia puesta en el proceso

Entrega en fecha: entregar el producto en el tiempo previsto

Visibilidad: si todos los pasos y su actual estado están documentados claramente

Page 2

Ciclo de vida del Software

Proceso de Desarrollo de Software

Conjunto estructurado de actividades para desarrollar un sistema de software. Estas actividades varían dependiendo de la organización y el tipo de sistema que debe desarrollarse.

Ingeniería de Software

Actividades fundamentales:

Especificación del software: Se trata de definir las funcionalidades que deberá tener el software y las restricciones en su operación.

Diseño e Implementación: Primero se diseña la solución y luego se produce el software que cumpla con la especificación.

Validación del Software: Se valida con el cliente la funcionalidad del software asegurando realiza lo que el cliente desea y necesita.

Evolución del software: Debe evolucionar para cubrir las necesidades de cambio que plantea el cliente.

Todo proceso de construcción de software lleva un tiempo desde que es requerido por el cliente hasta que se finaliza y se entrega el producto final, luego viene el mantenimiento del mismo. Este tiempo es el "Ciclo de vida"

Modelos

Un modelo de procesos es una descripción simplificada de un proceso del software que presenta una visión de ese proceso. También puede interpretarse como: La serie de pasos a través de los cuales el producto progresa, teniendo en cuenta las personas involucradas en la ingeniería del software.

En todos los casos los modelos especifican:

Las fases del proceso

El orden en el cual se llevan a cabo

Ciclos de vida secuenciales

Modelo en Cascada

Fue el primer ciclo de vida de software. Es el más básico de todos, plantea una visión simple basada en el concepto que el desarrollo de software puede ser a través de una secuencia simple de fases.

Ingeniería de Software

El modelo de ciclo de vida cascada, captura algunos principios básicos:

Planear un proyecto antes de embarcarse en él

Definir el comportamiento externo deseado del sistema antes de diseñar su arquitectura interna.

Documentar los resultados de cada actividad.

Diseñar un sistema antes de codificarlo

Testear un sistema después de construirlo.

Se realizan relevamientos de los siguientes aspectos:

Técnicos: equipamiento, capacidad técnica de recursos

Funcionales: extracción completa de los Requerimientos, el 100%.

Del Negocio: los sectores involucrados

Ventajas

Provee información a través del ciclo de vida y la documentación de cada fase.

Favorece el seguimiento del proceso ordenándolo, con actividades bien comprendidas pero complejas.

Desventajas

Lleva mucho tiempo finalizarlo por ser tan secuencial

No se puede comenzar hasta tener el total de los requerimientos antes de comenzar con el diseño.

Es rígido, ya que no permite volver hacia etapas anteriores para corregir errores.

No es aconsejable para desarrollos cortos porque posee una excesiva cantidad de documentación

Desarrollo Evolutivo

El desarrollo evolutivo consiste en desarrollar una implementación inicial, entregada a los usuarios para sus comentarios y refinándola a través de la retroalimentación y las versiones hasta lograr el sistema adecuado.

Los requerimientos son cuidadosamente examinados y sólo aquellos que son bien comprendidos son seleccionados para el primer incremento.

Las actividades de especificación, de desarrollo y validación se entrelazan en vez de separarse, con una rápida retroalimentación entre éstas.

Existen 2 tipos de desarrollo evolutivo:

Desarrollo exploratorio: se trabaja con el cliente para explorar sus requerimientos y entregar un sistema final. El sistema crece con lo que el cliente va proponiendo.

Prototipos desechables: se centra en los requerimentos que no están muy claros, por lo que el objetivo es comprender los requerimientos del cliente para poder desarrollar una definición mejorada del sistema.

El modelo evolutivo tiene los siguientes problemas:

Carencia de Visibilidad del Proceso

Los sistemas frecuentemente son pobremente estructurados

Puede requerirse habilidades Especiales (Ej. En lenguajes de prototipación rápida)

Es factible su aplicación:

Para Sistemas interactivos de tamaño pequeño o mediano

Para partes de sistemas grandes (Ej. Interfaces de usuario).

Para sistemas de ciclo de vida corto.

Ingeniería de Software

Ingeniería de Software basada en Componentes

Este enfoque requiere de componentes de software reutilizables y de un marco de trabajo de integración de estos. Es posible que estos componentes sean sistemas por sí mismos, subsistemas o módulos que tienen una funcionalidad específica.

Ingeniería de Software

Análisis de Componentes: se buscan los componentes necesarios que cumplan con toda la funcionalidad o parte de ella.

Modificación de Requerimientos: si los componentes encontrados para los requerimientos no son modificables, se pueden buscar soluciones alternativas, modificando en parte el requerimiento, sin que deje de cumplir con la necesidad del cliente.

Diseño de sistemas con reutilización: son los diseñadores los que tienen en cuenta los componentes que se reutilizan para organizar el marco de trabajo.

Desarrollo e integración: se debe tener en cuenta los componentes que existen, los que se adquieren externamente y los que se desarrollan internamente para integrarlos en un todo.

Ventajas:

Se reduce la cantidad de software a desarrollar

Se reducen costos.

Se reducen riesgos.

Permite una entrega más rápida.

Riesgos

Si depende totalmente de los componentes a utilizar puede ser que el producto no cumpla con las necesidades del cliente.

Las nuevas versiones de los componentes pierden la especificidad de la organización, por lo que requiere de la necesidad de relevar las reglas de negocio de cada cliente.

Modelo Incremental

Una manera de reducir los riesgos del desarrollo de un sistema es construir sólo una parte, organizando por versiones lo que se incrementa.

En este modelo se requieren el 100% de los requerimientos al comienzo del ciclo de vida, se toman subconjuntos de requerimientos y se desarrollan versiones siempre incrementando el producto de software.

La diferencia con el desarrollo evolutivo se centra en que, mientras la aproximación incremental presupone que el conjunto completo de requerimientos es conocido al comenzar, el modelo evolutivo asume que los requerimientos no son completamente conocidos al inicio del proyecto.

Ingeniería de Software

Modelo de Prototipado de Requerimientos

El prototipado de requerimientos tiene el propósito explícito de aprender sobre los requerimientos del sistema, para ello se crea una implementación parcial del sistema.

Esta consiste en la entrega de prototipos de interfaz de usuario, que son dados a los usuarios, clientes o representantes, quienes serán los que provean la retroalimentación sobre lo que les gustó o no del prototipo proporcionado.

Ingeniería de Software

Modelo de entrega por etapas

Ventajas

Permite correcciones en el transcurso del proyecto

Permite colocar en producción las funcionalidades de mayor peso

Obtiene un producto en forma rápida

Desventajas:

Se debe trabajar con una planificación cuidadosa

Se debe tener mucho cuidado porque para implementar una fase se puede requerir de la finalización de otra.

Ingeniería de Software

Modelo Iterativo

Este modelo tiene como objetivo obtener un protocolo de desarrollo común para cualquier tipo de aplicación de software, en el modelo iterativo los prototipos son entregables y tienen versión.

Ingeniería de Software

Modelo de Espiral

Cada proyecto es organizado y explotado en miniproyectos. Es un modelo incremental con versiones, en cada una se respetan las etapas, se documenta y va incluyendo a los productos anteriores.

Es utilizado en:

Sistemas de gran envergadura

Proyectos con un numeroso grupo de integrantes

Problemas de Performance

Existencia de requerimientos pobres, poco entendibles

Arquitectura pobremente detallada

Una vez entendido el problema, continua como un proyecto en cascada

Ventajas

Altos costos significan pocos riesgos

Para desarrollos rápidos

Provee más controles que los sistemas tradicionales

Se pueden "mostrar‟ avances del proyecto

Netamente confiable

Desventajas:

La administración de los riesgos

Requiere una administración rigurosa

Difícil de ser construidos con tiempos predeterminados

Ingeniería de Software

Modelo Iterativo e Incremental

Se toman las características de ambos modelos, del iterativo y del incremental para lograr un modelo con mejores aplicaciones.

Ventajas:

Se divide en fases, workflows centrales e iteraciones.

Resolución de problemas de alto riesgo en menores tiempos del proyecto.

Visión de avance en el desarrollo desde las primeras etapas del desarrollo.

Obtención del feedback del usuario

Menor porcentaje de fallo del proyecto

La complejidad del proyecto se maneja por partes.

Mejora exponencialmente el trabajo,

Aumenta la productividad y permite optimizar el proceso a corto plazo.

El trabajo iterativo permite ir ajustando y mejorando las planificaciones

Adoptar este modelo no presenta grandes inversiones

Desventajas

Su uso no garantiza por si solo el éxito del proyecto ni de su uso.

Existen costos ocultos en su implementación

El modelo iterativo e incremental es utilizado por metodologías modernas y es adoptado por UML (Lenguaje de modelado unificado)

Ingeniería de Software

Las fases son cuatro: Inicio, Elaboración, Construcción y Transición.

Los flujos de trabajo representan las actividades y son 7: Requerimientos, Análisis y Diseño, Implementación, Prueba, Administración de configuración, Administración del proyecto y Entorno.

Las tres últimas etapas se toman como acompañamiento de todo el proceso de desarrollo.

Page 3

Resumen

La Ingeniería en Software es una Ingeniería que abarca todos los aspectos de la producción de software.

Los productos de Software consisten en el desarrollo de programas y toda documentación asociada a ellos. Los atributos esenciales son la mantenibilidad, confiabilidad, eficiencia y usabilidad.

El proceso de software consiste en actividades que involucran el desarrollo de productos de software.

Las actividades básicas son especificación, desarrollo, validación y evolución.

Los métodos son formas organizadas de producir software. Incluyen sugerencias para el cumplimento del método, la notación a ser usada, las reglas de validación de modelos y guías de diseño.

Las herramientas CASE son sistemas de software los cuales son diseñados para auxiliar en actividades de rutina en el proceso de desarrollo de software. Tales como: edición de diagramas, verificar consistencia de diagramas, y mantener un registro de los testeos efectuados

Los ingenieros en Software tienen responsabilidades para con su profesión y para con la sociedad.

En cuanto a los sistemas y las Ingenierías se pueden destacar los siguientes puntos clave

Los sistemas socio-técnicos incluyen hardware, software, personas y procesos

Las propiedades emergentes de un sistema son las características que actúan como un todo no por partes o componentes del sistema

Incluyen propiedades como el rendimiento, fiabilidad, usabilidad, seguridad y protección

Factores humanos y organizacionales influyen en el funcionamiento de los sistemas socio-técnicos.

Dentro de una organización pueden existir más de un tipo de sistemas, los heredados, los propios y los adquiridos

Los sistemas heredados son sistemas socio-técnicos.

Proceso de Software

Un conjunto coherente de actividades para especificar, diseñar, implementar y testear un sistema de software.

Modelos de Ciclo de Vida

Cascada es demasiado inflexible

Orientado a documentos

Modelos evolutivos y prototipos

Dependen de las decisiones tomadas antes del entendimiento del problema

Una buena solución es integrar protipado rápido y cascada

Puntos Clave a tener en cuenta

Los procesos de software incluyen las actividades relacionadas con la producción de un sistema de software.

Todos los procesos del software incluyen las etapas de especificación, diseño, implementación, validación y evolución del software.

Los modelos genéricos del proceso describen la organización de los procesos del software, como son el modelo en cascada, los evolutivos y la Ingeniería basada en componentes.

Los modelos de iteración presentan el proceso de software como un ciclo de actividades.

El modelo en espiral, es uno de los más utilizados.

El modelo iterativo e incremental incluye las mejores prácticas del modelo iterativo y del modelo incremental.

Information

Description
EFIP II EFIP II (Ingeniería de Software) Note on Ingeniería de Software, created by Giselle Craig on 24/02/2019.
Created by
Giselle Craig · Feb 2019
Updated
Mar 3, 2019
Views
0
Rating

Feedback

What is it about?

What do you think of the new look?

How do you like it?