55
MEJORES PRACTICAS DE DESARROLLO DE SOFTWARE Semestre – 2014-I

1 Ingenieria de Software

Embed Size (px)

DESCRIPTION

Ingeniera de software

Citation preview

Page 1: 1 Ingenieria de Software

MEJORES PRACTICAS DE

DESARROLLO DE SOFTWARE

Semestre – 2014-I

Page 2: 1 Ingenieria de Software

Síntomas de la crisis de software

07/05/2014Prof. Ing. Christian Velásquez2

No son cubiertas las necesidades del negocio.

Requerimientos mal definidos.

Módulos que no se integran.

Difícil de mantener.

Tardío descubrimiento de defectos.

Baja calidad.

Usuario finales insatisfechos.

Bajo desempeño sobre altas cargas.

Esfuerzo no coordinado del equipo.

Liberaciones (Build-and-release issues).

Page 3: 1 Ingenieria de Software

Problemática del desarrollo de Software

07/05/2014Prof. Ing. Christian Velásquez3

MaximizarBeneficios

Retraso en proyectos Oportunidades perdidas Amenazas de la competencia

Conducirel equipo al

éxitoFechas ajustadas Recortes de presupuestos Pocos recursos.

CrearSoftware

de calidadReunionesCambiosRehacer trabajo hecho

Page 4: 1 Ingenieria de Software

Mejores Practicas en Desarrollo de Software

07/05/2014Prof. Ing. Christian Velásquez4

Desarrollo Iterativo

Gestión de Requisitos

Arquitecturas Basadas enComponentes

Modelado Visual (UML)

Verificación Continua de laCalidad

Gestión del Cambio

Page 5: 1 Ingenieria de Software

¿Qué son las Mejores Practicas?

Es un conjunto de principios,métodos y procesos quepermiten mejorar la calidad yproductividad del desarrollo desoftware.

07/05/2014Prof. Ing. Christian Velásquez5

Page 6: 1 Ingenieria de Software

Mejores Practicas en Desarrollo de Software

07/05/2014Prof. Ing. Christian Velásquez6

Desarrollo Iterativo

Gestión de Requisitos

Arquitecturas Basadas enComponentes

Modelado Visual (UML)

Verificación Continua de laCalidad

Gestión del Cambio

Page 7: 1 Ingenieria de Software

Desarrollo Iterativo

Cada iteración produce, una versión ejecutable del sistema. Las primeras iteraciones atacan los riesgos mayores.

Se define y robustece la arquitectura de la aplicación en formatemprana.

Cada iteración permite la retroalimentación del usuario.

Se prueba desde el principio, verificando desempeño yescalabilidad.

Entregables bien definidos y delimitados permiten tener metas acorto plazo y no una sola meta a largo plazo.

El progreso se mide mediante la evaluación de las

implementaciones (mediciones reales).07/05/2014Prof. Ing. Christian Velásquez7

Iteración 1 Iteración 2 Iteración… n

Tiempo

DC

I T

RD

CI

T

R RD

CI

T

Page 8: 1 Ingenieria de Software

Los retos del Líder del Proyecto

Dificultad para conocer el estado real de los proyectos

Falta de comunicación con el equipo y poca eficiencia En las juntas de equipo sólo se recopila información y no se resuelven

problemas

07/05/2014Prof. Ing. Christian Velásquez8

Múltiples proyectos, prioridades y procesos.

??

?? ??

Líder del proyecto

Page 9: 1 Ingenieria de Software

Perfil de riesgo de un desarrollo iterativo

07/05/2014Prof. Ing. Christian Velásquez9

Cascada

Iterativo

Riesgo

Page 10: 1 Ingenieria de Software

Niveles de estimados

07/05/2014Prof. Ing. Christian Velásquez10

Variación deN1

+/- 50% o más

N2

Variación de

+/- 30%

N3

Variación de

+/- 10%

Page 11: 1 Ingenieria de Software

Mejores Practicas en Desarrollo de Software

07/05/2014Prof. Ing. Christian Velásquez11

Desarrollo Iterativo

Gestión de Requisitos

Arquitecturas Basadas enComponentes

Modelado Visual (UML)

Verificación Continua de laCalidad

Gestión del Cambio

Page 12: 1 Ingenieria de Software

Erase un proyecto

Ejemplo: Diseñar un columpio

07/05/2014Prof. Ing. Christian Velásquez12

Como lo solicito

el cliente

Page 13: 1 Ingenieria de Software

Continuación: Erase un proyecto

Lo que aparece en la definición del problema

07/05/2014Prof. Ing. Christian Velásquez13

Como lo diseño

el arquitecto

Page 14: 1 Ingenieria de Software

Continuación: Erase un proyecto

Lo que aparece en la especificación

07/05/2014Prof. Ing. Christian Velásquez14

Lo que especifico

el ingeniero.

Page 15: 1 Ingenieria de Software

Continuación: Erase un proyecto

Lo que aparece en el diseño.

07/05/2014Prof. Ing. Christian Velásquez15

Como lo solicito

compras

Page 16: 1 Ingenieria de Software

Continuación: Erase un proyecto

Lo que aparece en la implementación.

07/05/2014Prof. Ing. Christian Velásquez16

Como lo construyo

Page 17: 1 Ingenieria de Software

Continuación: Erase un proyecto

Lo que se entrega al cliente.

07/05/2014Prof. Ing. Christian Velásquez17

Como quedo

parche

Page 18: 1 Ingenieria de Software

Continuación: Erase un proyecto

Lo que el cliente quería

07/05/2014Prof. Ing. Christian Velásquez18

Lo que realmente

se necesitaba

Page 19: 1 Ingenieria de Software

Continuación: Erase un proyecto…………

07/05/2014Prof. Ing. Christian Velásquez19

el arquitecto el ingeniero compras

Como lo

solicitóel cliente

Como lo diseñó Como lo especificó Como lo solicitó

Como lo construyó Como quedó LO QUE REALMENTE

el contratista finalmente SE NECESITABA

Page 20: 1 Ingenieria de Software

¿Por qué falla un Proyecto?

Entre otros:

1. El usuario no sabe lo que quiere (¿o nosotros no loentendemos?).

2. Requerimientos y especificaciones incompletos.

3. Cambio en los requerimientos y especificaciones.

4. Carencia de participación por parte del usuario.

5. No existe documentación.

6. Falta de una metodología para la gestión de

requisitos.

07/05/2014Prof. Ing. Christian Velásquez20

Page 21: 1 Ingenieria de Software

¿Qué son los requisitos?

Un requisito es una propiedad/característica que debe ser

mostrada por el sistema que se esté construyendo.

Característica que debe incluirse en un sistema.

07/05/2014Prof. Ing. Christian Velásquez21

Page 22: 1 Ingenieria de Software

Gestión de requisitos implica………

Asegurarse de:

Resolver el problema correcto.

Construir el sistema apropiado

Fases de gestión de requisitos:

Identificación.

Organización (estructura y rastreabilidad).

Documentación (especificación).

Validación de requisitos.

Gestión: del cambio en requisitos, de los atributos, de la rastreabilidad.

07/05/2014Prof. Ing. Christian Velásquez22

Page 23: 1 Ingenieria de Software

Técnicas de trabajo con usuarios

Talleres de requerimientos

Entrevistas.

Cuestionarios.

Prototipos.

Juego de roles

Análisis de regulaciones y procesos actuales.

Lluvia de ideas

07/05/2014Prof. Ing. Christian Velásquez23

Page 24: 1 Ingenieria de Software

Compartir los requisitos

Cada uno de los participantes del proyecto requiere teneracceso a los requisitos.

07/05/2014Prof. Ing. Christian Velásquez24

Desarrolladores y diseñadores

Aseguramiento de la Calidad

Req

Analistas Usuarios yClientes

`GerentesLíder de Proyecto

Page 25: 1 Ingenieria de Software

Matriz de rastreabilidad

Muestra las dependencias entre requerimientos

07/05/2014Prof. Ing. Christian Velásquez25

Page 26: 1 Ingenieria de Software

Mejores Practicas en Desarrollo de Software

07/05/2014Prof. Ing. Christian Velásquez26

Desarrollo Iterativo

Gestión de Requisitos

Arquitecturas Basadas enComponentes

Modelado Visual (UML)

Verificación Continua de laCalidad

Gestión del Cambio

Page 27: 1 Ingenieria de Software

Evolución típica de una aplicación…

07/05/2014Prof. Ing. Christian Velásquez27

arreglo A790

arreglo A812

nuevo requerimiento

Arquitectura 1.0V 1.2V 1.2a

Page 28: 1 Ingenieria de Software

Resistencia al cambio

07/05/2014Prof. Ing. Christian Velásquez28

arreglo A790

arreglo A812

nuevo requerimiento

ArquitectuV 1.2a

V1.2

a1.0

Page 29: 1 Ingenieria de Software

¿Por qué utilizar arquitecturas de

componentes?

La clave del éxito es crear

arquitecturas:

Duraderas

Flexibles al cambio

Basadas en componentes.

La Arquitectura es el20% del esfuerzo que produce

el 80% más importante

07/05/2014Prof. Ing. Christian Velásquez29

Desarrollar:

• Con Reuso

• Para Reuso

Page 30: 1 Ingenieria de Software

Activos de software reutilizable

Reuso de todo “artefacto” Arquitectura

Casos de Uso, Análisis, Diseño, Implementación y

Pruebas

Modelos de interfaces, modelos de negocio, patrones arquitectónicos, etc.

Reuso de tecnología Proceso y automatización

Proyectos

Guías

07/05/2014Prof. Ing. Christian Velásquez30

Page 31: 1 Ingenieria de Software

Ejemplo: Arquitectura basada en

componentes

07/05/2014Prof. Ing. Christian Velásquez31

productos

Producto Licencia

CRMDatabase

Comprado

Existente

Nuevo

Cliente

Mecanismos de interfaces

Funciones de licenciamiento

Funciones de cliente/

Page 32: 1 Ingenieria de Software

Arquitectura de los Sistemas Corporativos

3-capas

07/05/2014Prof. Ing. Christian Velásquez32

PRESENTACIÓN LÓGICA NEGOCIO INTEGRACIÓN

Interfaces de usuarios

Bases de datos

Transactions procesing monitors

Page 33: 1 Ingenieria de Software

J2EE

07/05/2014Prof. Ing. Christian Velásquez33

EJB

CLIENTE SERVIDOR

JDBC

INTEGRACIÓN

Dispositivo ClienteHTTP

Web ServerHTML,XML,WML

Contenedor Web

JSP

Servicios J2EE

Servicios J2SE

EJB ServerDispositivo Cliente

HTTP

Contenedor de EJB

EJB

Servicios J2EE

Servicios J2SE

HTTP

Dispositivo Cliente

Contenedor deAplicaciónes Cliente

Servicios J2EE

Servicios J2SE PRESENTACIÓN LÓGICA DE NEGOCIO

Aplicación

Cliente

CORBA

Java

Application

Message

Queue

Directory

Services

Contenedor deApplets

Applet

Servicios J2SE

Servelet Mail ServerJavaMail

JNDI

JMS

RMI

RMI

Page 34: 1 Ingenieria de Software

Mejores Practicas en Desarrollo de Software

07/05/2014Prof. Ing. Christian Velásquez34

Desarrollo Iterativo

Gestión de Requisitos

Arquitecturas Basadas enComponentes

Modelado Visual (UML)

Verificación Continua de laCalidad

Gestión del Cambio

Page 35: 1 Ingenieria de Software

¿Qué es UML?

UML es el lenguaje

estándar para visualizar, especificar, construir y documentar los artefactos de una

aplicación software

07/05/2014Prof. Ing. Christian Velásquez35

Page 36: 1 Ingenieria de Software

UML: El lenguaje para el desarrollo de

software

07/05/2014Prof. Ing. Christian Velásquez36

Page 37: 1 Ingenieria de Software

UML

07/05/2014Prof. Ing. Christian Velásquez37

Modelado deRequisitos Modelado de

AplicacionesModeladoWeb Modelado

Datosde

Modeladode Negocio

Un único lenguaje para todo el equipo

Page 38: 1 Ingenieria de Software

Diseño y construcción del sistema desde

una herramienta única.

07/05/2014Prof. Ing. Christian Velásquez38

Analista deNegocio

Desarrollador

Arquitecto Diseñador DB

Una Herramienta para todo el equipo.

Page 39: 1 Ingenieria de Software

Mejores Practicas en Desarrollo de Software

07/05/2014Prof. Ing. Christian Velásquez39

Desarrollo Iterativo

Gestión de Requisitos

Arquitecturas Basadas enComponentes

Modelado Visual (UML)

Verificación Continua de laCalidad

Gestión del Cambio

Page 40: 1 Ingenieria de Software

Verificación continua de la calidad

07/05/2014Prof. Ing. Christian Velásquez40

Es de 100 a 1000 veces más costoso encontrar y

reparar los problemas del software después del

desarrollo

to

to

to

de

de

de

reparar

perder

perder

oportunidades.

clientesCosto

Concepción Elaboración Construcción Transición

Cos

Cos

Cos

el software.

Page 41: 1 Ingenieria de Software

Causas principales de la baja calidad del

software

Probar Software es muy difícil

Cambios en los requerimientos

Falta de un proceso sistemáticode pruebas.

Mala comunicación entremiembros del equipo.

07/05/2014Prof. Ing. Christian Velásquez41

Page 42: 1 Ingenieria de Software

Cada actividad incluye su verificación

07/05/2014Prof. Ing. Christian Velásquez42

Todo aquello que hagas, no lo habrás terminado hasta

que hayas verificado que hiciste lo que debías de hacer.

EjecuciónActividad

Acción Verificación

Page 43: 1 Ingenieria de Software

Plan de actividades de aseguramiento de la

calidad

Conjunto de actividades que serán ejecutadas paragenerar confianza en que el producto cumplirá con losrequerimientos y el proceso es efectivo.

07/05/2014Prof. Ing. Christian Velásquez43

Producto

Revisiones

Requisitos

Cliente Validaciones

VerificacionesNecesidades

Page 44: 1 Ingenieria de Software

Jerarquía de planes

07/05/2014Prof. Ing. Christian Velásquez44

Plan de Desarrollo

Plan de Aseguramiento de la Calidad

Plan de Pruebas (de software)

Page 45: 1 Ingenieria de Software

Implementación. Probar en cada iteración….

07/05/2014Prof. Ing. Christian Velásquez45

Pruebas Manuales

Re-ejecutar

primeras

pruebas y ...

Tiempo

Build 1

Page 46: 1 Ingenieria de Software

Implementación. Pruebas de regresión

07/05/2014Prof. Ing. Christian Velásquez46

Tiempo

Build 1 Build 2 Build 3, 4, 5, 6, 7, 8 Build 9 Build 10

Pru

eb

as Difícil de forma

manual!

Pruebas Manuales

...las

nuevas

...más

tiempo

pruebas...

Page 47: 1 Ingenieria de Software

Mejores Practicas en Desarrollo de Software

07/05/2014Prof. Ing. Christian Velásquez47

Desarrollo Iterativo

Gestión de Requisitos

Arquitecturas Basadas enComponentes

Modelado Visual (UML)

Verificación Continua de laCalidad

Gestión del Cambio

Page 48: 1 Ingenieria de Software

¡Cambiar!

¿Qué es lo primero que se le viene a la mente?

07/05/2014Prof. Ing. Christian Velásquez48

En el desarrollo de software,

¡Los cambios ocurren!RequerimientosModelos

Especificaciones de

integraciónCódigoPruebasCriterios de liberaciónPlataforma de distribuciónErrores

vez!

¡Todo el tiempo!

Page 49: 1 Ingenieria de Software

Factores que dificultan la gestión del

cambio

Complejidad en el entorno del proyecto.

Tamaño del equipo. Interdependencia entre componentes. Distribución geográfica.

Complejidad del sistema de Software.

Tamaño del producto. Complejidad de la arquitectura. Número de plataformas.

Aparición de nuevas tecnologías y requisitos.

07/05/2014Prof. Ing. Christian Velásquez49

Page 50: 1 Ingenieria de Software

El proceso de Cambio: La Solución.

07/05/2014Prof. Ing. Christian Velásquez50

Administración de configuracióny cambios

Órdenes de Trabajo

CalidadPetición de Administracióndelcambios y de

productoarreglo de configuraciónFallas reportadas defectos

Petición de nuevascaracterísticas

Page 51: 1 Ingenieria de Software

Proceso basado en actividades

07/05/2014Prof. Ing. Christian Velásquez51

ffB!u862 sut gNew B

i actBNuens

Tan

1ugNsew w dgedge

9 BBugug

GrraapphhiiccssGUIGUIe

isddgetget BBugug NNees411 NN

oro gMMFix

bb

5522 FFiixx558181an eTTwwrranBButt

New widgetutto Bug 953w Script

New wi Bugt 952wiidget tNew

New w New ScriptMS Windows 2000 New widget

Bug 400New Script N on BugBugs 95

950

New ListBug 396

Bug 9

New DB support Update Doc Bug Fix 196

Bug 951

Bug 396 Bug 952

Page 52: 1 Ingenieria de Software

Controlar los cambios del software

07/05/2014Prof. Ing. Christian Velásquez52

Special Promo

Líder deProyecto

Requerimientos Diseño Desarrollo Pruebas

3. Add Use Case

Document

Requirement

Requirements

1. Defi

2. Define GUI

To

1. Test Promo

2. Verify Bug 467

3. Test GUI applet

Deleteitems

Cancel Order

Special Promo

Test Scripts

To Do ListDo List

ne Promo

hello.c foo.c

Rose models

Code Content

1. Special Promo2. Add copyright

3. Update price

To Do List

4. Fix Bug 671

2. Special Promo

3. Fix Bug 829

To Do List

Orden de Trabajo

Page 53: 1 Ingenieria de Software

Administración de la configuración y

cambios: Mediciones

“¿Los defectos de alto grado se lograron resolver en estebuild?”

“¿Cuáles cambios faltan por resolver?”

07/05/2014Prof. Ing. Christian Velásquez53

Métricas revela el estado del proyecto en cualquier momento .

Lider del proyecto

Page 54: 1 Ingenieria de Software

Gestión del trabajo en paralelo

Líneas de desarrollo y de mantenimiento.

Concurrencia en el desarrollo.

Particularización de

componentes.

Distintas versiones en producción.

07/05/2014Prof. Ing. Christian Velásquez54

Page 55: 1 Ingenieria de Software

Administración de Configuración y Cambios

Permitir, controlar y monitorear cambios para habilitar un

desarrollo iterativo. Controlar todos los artefactos de software - modelos, código,documentos, etc. Administrar todas las versiones, con integración automática alos cambios realizados al software. Establecer espacios de trabajo seguros y aislados para cadadesarrollador. Contar con métricas de estado.

07/05/2014Prof. Ing. Christian Velásquez55

¡ Saber qué está pasando en el equipo y en el proyecto !