Ingeniería del Software

De FdIwiki ELP
Revisión a fecha de 20:41 20 feb 2015; Jose Serrano Alvarez (Discusión | contribuciones)

(dif) ← Revisión anterior | Revisión actual (dif) | Revisión siguiente → (dif)
Saltar a: navegación, buscar

Introducción

La Ingeniería del Software es la aplicación de teorías, métodos, herramientas a casos que funcionen teniendo en cuenta restricciones financieras, organizacionales y técnicas. Sigue el siguiente patrón.

Diseño -> Implementación -> Pruebas

El software debe ser:

- Mantenible

- Seguro

- Eficiente

- Amistoso

- Bien Documentado

Están las 3 P de Desarrollo y Mantenimiento: Personas, Producto y Proceso.

El software se desarrolla, no se fabrica. No se estropea, pero hay que mantenerlo y REUTILIZARLO. La IS comprende todos los aspectos de producción, de la especificación inicial, al mantenimiento del software. Diseñar y planificar antes de desarrollar.

Las herramientas CASE ayudan al proceso de la IS.

Todos los países dependen del software y son los gastos mayores en informática: Gastos de desarrollo, mantenimiento y evolución. Siempre evoluciona.

Retos: Sistemas heredados, heterogeneidad, menor tiempo, nodos, ingeniería y formalidad.

La especificación nos sirve para saber que queremos hacer. Para qué sirve, como se usa, y dividirla en casos de uso, algo que se puede probar solo. Deben ser abstractos para que el programador tenga libertad. Se escriben en infinitivo. Tienen un actor, cualquier elemento fuera de la aplicación que se relaciona con ella. El código se divide en clases/objetos para poder dividir el trabajo en distintas piezas que al juntarlas funcionen. Hay que dividir los supuestos de los casos de uso en si está bien o han ido produciéndose errores escalonadamente. En el código tenemos variables y funciones. Para dividir el código en trozos se debe minimizar las dependencias que hay, también llamado acoplamiento. La encapsulación es meter información que antes estaba dispersa en un objeto. Se intenta que los objetos sean factibles, identificables en la especificación y conmutables en código. La historia explica el funcionamiento de las aplicaciones. Un requisito funcional son del tipo: lo que tarda un mensaje en llegar.

Proceso de Desarrollo

En la IS hay que hacer mucho: Principios de ingeniería, software económico, fiable y eficiente. Mantenerlo. Sistematizar, disciplinar y cuantificar.

Utilizando un modelo de proceso se podrá realizar racionalmente, el cual es un patrón que define el proceso a través del que se cera software. Sus conceptos son:

- Personas.- Las que trabajan

- Producto.- El que se obtiene.

- Proyecto.- La pauta a seguir para desarrollar un producto.

- Proceso.- La pauta a seguir para desarrollar un proyecto.

La IS es una tecnología multicapa:

- Capa de enfoque de calidad.- Base de cualquier proceso ingeniería. Calidad.

- Capa de proceso.- Une calidad y métodos para construir. Desarrollo racional IS.

- Capa de métodos.- Un método incluye análisis de requisitos, diseño, construcción de programas, prueba y mantenimiento.

- Capa de herramientas.- Soporte automático o semiautomático para el proceso y los métodos. Fundamental para la correcta aplicación de la IS.

Hay 3 fases genéricas con independencia del modelo de proceso:

- Fase de definición.- Se centra en el que. Se buscan los requisitos. Planificación.

- Fase de desarrollo.- Se centran en el cómo. Diseñar la aplicación y pruebas.

- Fase de mantenimiento.- Corrección de errores, adaptaciones o cambios.

Si se gestiona mal un proyecto, se lleva un 90 % del tiempo y esfuerzo, y el último 10 % es otro 90 % al final.

Modelos de Desarrollo

Un modelo de proceso, o paradigma de IS, es una plantilla o patrón que define el proceso a través el cual se crea software. Definen sus actividades estructurales.

- Evolutivo

Gestionan muy bien la naturaleza evolutiva del software. Iterativos. Se adaptan bien a los cambios.

Como ventajas tiene que es interactivo, con cada incremento el cliente lo evalúa, permite cambiar personal y gestionar riesgos técnicos.

Como inconveniente la primera iteración puede plantear problemas igual que en un modelo lineal secuencial. Tiene fechas poco realistas.

- Cascada

El proyecto pasa a través de una serie de fases:

o Especificación

o Conceptualización

o Análisis

o Diseño

o Implementación

o Pruebas

o Soporte

o Instalación

En la cascada solo se baja, si se sube, hay problemas.

Al final de cada fase se revisan las tareas de trabajo y productos.

Como ventaja tiene que está muy probado y sencillo cuando no se tiene experiencia o se conoce muy bien el proyecto.

Sin embargo es poco realista, visibilidad muy tarde, si se solapan las fases puede haber bloqueo o las revisiones grandes son difíciles.

- Prototipado

Se usa un prototipo para dar al usuario una idea concreta de lo que hara el sistema. Se aplica cuando hay que hacerlo rápido. El prototipo puede ser exploratorio, o de usar y tirar.

Como ventaja tiene que identifica requisitos incrementalmente. Pruebas alternativas. Alta visibilidad.

Como desventajas el cliente no entiende porque hay que desechar el prototipo y tiene riesgo de poca calidad por la rapidez de las fases.

- Espiral

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

Sus ventajas son que tiene un enfoque realista. Tiene una gestión explicita de riesgos. Se centra en reutilización y eliminación de errores en las fases iniciales. Su primer objetivo es la calidad y integra desarrollo con mantenimiento. Las desventajas son convencer al cliente del enfoque controlable y requiere experiencia en la identificación de riesgos.

- Desarrollo Unificado (RUP)

Dirigido por casos de uso, centrado en la arquitectura, iterativo e incremental, Utiliza UML.

Las ventajas es que es un modelo proceso racional y usa tecnología de componentes. Como desventaja está muy ligado al método.

- Basado en componentes

- Formales

Viabilidad de Procesos

Conjunto de actividades para desarrollar software. Son:

- Especificación

- Diseño

- Validación

- Evolución

Las actividades varían por la organización y el sistema, y debe estar perfectamente modelado. El proceso define un marco de trabajo compuesto por actividades (AE).

Las instrucciones para desarrollar una aplicación son:

- Descubrir que tiene que hacer

- Decidir cómo está estructurada

- Como asegurarse de que funciona

- Ocuparse de que pueda evolucionar

Las condiciones del proceso explicito son:

- Proyectos en paralelo y periódicamente

- Equipo grande y rotación de personal

- Se pretende ir refinando la manera de trabajar

Debe estar todo por escrito y adaptarlos a cada caso de uso. El proceso consta de:

- Especificación.- Establecer requisitos y restricciones.

- Diseño.- Producir un modelo en papel.

- Manufactura.- Construir.

- Pruebas.- Verificar que cumple la especificación.

- Instalación.- Entregar y verificar que cumple necesidades.

- Mantenimiento.- Repasar fallos cuando sean descubiertos.

Características del modelo de proceso:

- Entendibilidad.- Entender el proceso.

- Visibilidad.- Resultados.

- Soportabilidad.- Herramientas CASE soportadas.

- Aceptabilidad.- Se acepta proceso.

- Fiabilidad.- Permite detectar errores.

- Robustez.- El proceso puede seguirá a pesar de errores.

- Mantenibilidad.- Puede evolucionar.

- Rapidez.- Rapidez creación.

Tipos de Proceso

- Proceso Unificado de Rational.- Es pesado.

- Extreme Programming.- Cambios radicales diseño, versión más simple, cliente colabora, pruebas automatizadas. Sistemas pequeños. Adaptable. Ágil.

- Scrum.- Trabajo acumulado. Reuniones cortas. Es un sprint. Ágil.

Proceso Ágil

- Es difícil predecir qué requisitos persistirán y las prioridades del cliente.

- Es difícil ver cuánto diseño es necesario: Se intercala diseño y desarrollo.

- El análisis, diseño y construcción no son predecibles.

- Es adaptable de forma incremental.

- Necesita retroalimentación del cliente.

- Se basa en la entrega continua de incrementos.