Ingeniería del Software

Herramientas

UML (Unified Modeling Language),

Lenguaje para crear una sintaxis notacional para expresar modelos orientados a objetos

Gráficas para representar varias relaciones y son una fuente de información para el diseño de pruebas

Planes bien analizados con la finalidad de comprender correctamente lo que hay que hacer

Diversos elementos gráficos, los cuales presentan diversas perspectivas de un sistema

Lenguaje de programación, pero, permite hacer una transición del modelo al código

IDEF0 (Integration Definition for Function Modeling)

Define procesos de negocio dentro de una empresa

Presenta un modelo de proceso que facilite exactitud, detalle, y claridad en la descripción.

Ideal a usar cuando el proceso posee cierta complejidad.

Serie jerárquica de diagramas que describe las funciones especificadas en sus diferentes niveles

La descomposición en niveles jerárquicos facilita la determinación del mapa de procesos y posibilita visualizar al nivel más alto

caracteristicas

Representar de manera gráfica el negocio

Plataforma objetiva para tomar decisiones

Mecanismos para medir la efectividad del cambio

Propiedades definidas por el usuario.

RUP (Rational Unfied Process)

forma disciplinada de asignar tareas y responsabilidades en una empresa de desarrollo

Divide en cuatro fases

Inicio - define el alcance del proyecto

Construcción - es la implementación

Transición - fin del proyecto y puesta en producción

Elaboración - incluye la definición, análisis y diseño

unifica a todos los integrantes del equipo de desarrollo y manteniene una buena comunicación

Auxilia

- Obtener requerimientos
- Organizarlos
- Documentar requerimientos de funcionalidad
- Documentar decisiones
- Comunicar requerimientos del negocio

PSP (Personal Software Process)

Proporciona metodos detallados para estimar y planear

explica procesos defindos

TSP (Team Software Process)

Enfoca a la iniciativa del equipo

analiza interacción de abajo arriba del equipo de trabajo

Modelo de procesos desarrollo de software

Prototipado

Permite al desarrollador comprender mucho mejor lo que el cliente necesita

El desarrollador y el cliente trabajan en los objetivos globales para el software

Un cliente, define un conjunto de objetivos generales para el software, pero no identifica los requisitos detallados de entrada, proceso o salida.

El responsable del desarrollo del software puede no estar seguro de la eficacia o capacidad de un algoritmo

inicia recolectando los requerimientos

Modelo en cascada o modelo lineal secuencial

El desarrollador y el analista comprendan totalmente los requerimientos del software

Diseño - En esta etapa el desarrollo de software se centra en cuatro atributos

- estructura de datos
- arquitectura de software
- presentación de la interfaz
- detalle procedimental

Generación de código - Etapa del diseño donde comienza la programación del software.

Pruebas - cuando el software ha sido programado se continua con la fase de pruebas para detectar posibles errores y validar que el software cumpla con los requerimientos.

Mantenimiento - Después de entregado el software al cliente es posible que tenga que sufrir alguna modificación para adaptarse a nuevas necesidades del cliente

Enfoque sistemático lineal y es Utilizado cuando los requerimientos se han entendido correctamente

proyectos son pequeños

Análisis de los requisitos del software

Desarrollo evolutivo

Modelo entrelaza las actividades de especificación, desarrollo y validación.

Existen dos tipos de desarrollo evolutivo:

Desarrollo exploratorio - donde el objetivo es trabajar con el cliente para explorar sus requerimientos.

Prototipos desechables - donde el objetivo es comprender los requerimientos del cliente y desarrollar una definición mejorada de los requerimientos del sistema.

Refina el proyecto basándose en las peticiones del cliente para producir un sistema que satisfaga sus necesidades y contenga calidad.

Los requerimientos del usuario pueden cambiar en cualquier momento del proyecto

Se recomienda solo para sistemas pequeños y de tamaño medio (hasta 500 000 líneas de código).

Modelo Espiral

El software se desarrolla en versiones incrementales combinando la construcción de prototipos con el modelo lineal secuencial.

DRA (Desarrollo rápido de aplicaciones)

Modelo de proceso del desarrollo del software lineal secuencial que enfatiza un ciclo de desarrollo extremadamente corto

No todos los tipos de aplicaciones son apropiados para DRA.

Enfoque de construcción basado en componentes

Clientes y desarrolladores comprometidos en las rápidas actividades necesarias para completar un sistema en un marco de tiempo corto

requiere recursos humanos suficientes como para crear el numero correcto de equipos

compromiso, por ninguna de las partes constituyentes, los proyectos fracasaran.

si se comprenden bien los requisitos y se limita el ámbito del proyecto permite al equipo de desarrollo crear un sistema completamente funcional dentro de periodos cortos de tiempo

El desarrollo se realiza a un nivel de abstracción mayor.

- Mayor flexibilidad.
- Menor codificación manual.
- Mayor involucramiento de los usuarios.

Estándares y modelos de calidad

ISO/IEC 15504

establece y mejora la capacidad de madurez de los procesos

proporciona un marco de trabajo para la evaluación del proceso

MoProSoft

Estandariza y mejora los procesos de desarrollo de software

Basado en ISO 9001:2000, en las áreas de procesos de los niveles 2 y 3 de CMM-SW: CMM-SW v.1.1 y en el marco general ISO/IEC15504 entre otros

CMM

evalúa la capacidad de los proveedores de software del gobierno de los Estados Unidos.

Modelo desarrollado con el objetivo de mejorar y evaluar los procesos de desarrollo de software

CMMI

Basa en prácticas ajustables a cualquier dominio de producción

implenta de una forma sencilla el aseguramiento de la calidad.

COMPETISOFT

incrementa el nivel de competitividad de las PyMEs iberoamericanas productoras de software

mediante la creación y difusión de un marco metodológico común que ajustado a sus necesidades específicas

Programación extrema

metodología de desarrollo ligera (o ágil) basada en una serie de valores y de buenas prácticas

Medida con cuatro valores

Comunicación- Crear software requiere de sistemas comunicados.

Retroalimentación - Del sistema, del cliente, y del equipo

Simplicidad- Empezar con lo necesario y requerido y trabajar desde ahí

Coraje - Programa para hoy y no para mañana

caracteristicas

Recomendable emplearlo solo en proyectos a corto plazo

Altas comisiones en caso de fallar.

Grupo pequeño y muy integrado (máximo 12 personas)

Los requisitos pueden (y van a) cambiar

Mejorar la productividad de los proyectos.

Garantizar la Calidad del Software desarrollando, haciendo que este supere las expectativas del cliente.

Estilo que maneja:

Orientada hacia quien produce y usa el software

Reduce el costo del cambio en todas las etapas del ciclo de vida del sistema.

Mejores practicas para desarrollar software, y las lleva al extremo