Professional Documents
Culture Documents
septiembre de 2007
Referencias bsicas
Ingeniera de software. Un enfoque prctico. Pressman, R. Quinta edicin. Mc. Graw Hill 2002 Ingeniera de software. Sommerville, I. Sptima edicin. Addison Wesley 2005
Ingenieria de Software
Un ingeniero civil supervisando la construccin de un edificio para asegurar que sea estable y de acuerdo a los requerimientos de los clientes. Un ingeniero o varios ingenieros escribiendo procedimientos de diversa complejidad para desarrollar sistemas de software (sw) El software de gran envergadura requiere de mtodos, procedimientos y herramientas Metodologas inapropiadas incrementan costos y el consumo extra de tiempo.
3
Software
Caractersticas deseables
Confiable Robusto Reutilizable Eficiente Mantenible Evolutivo Portable Utilizable
4
Proceso de Software
Proceso: Serie de operaciones usadas en la creacin de un producto. Proceso de Software: Conjunto de tareas que tienen que ser realizadas para producir un producto de software de alta calidad (Desarrollo de software) Proceso de Software: Proceso que se sigue para construir un producto de software desde la concepcin de una idea, hasta la entrega y el retiro final del sistema. 5
Actividades usuales
Anlisis de requerimientos
Datos provistos Es una actividad por los expertos requerida y en el dominio en cualquier usuarios potenciales modelo Documentos orientados al usuario y tiles para el analista:
Anlisis de requerimientos
Identificar el problema Documentar los requerimientos Involucrar a los usuarios y expertos en el dominio de aplicacin (requiere dilogo y comunicacin) Esta actividad puede mantenerse a lo largo del proceso Pueden crearse prototipos.
12
Especificacin
Describe en forma precisa Datos resultantes el sistema del anlisis de a desarrollar requerimientos y
consideraciones tcnicas
13
Especificacin
Puede ser informal, semiformal o formal La especificacin formal permite verificacin En algunos modelos sustituye al diseo Describe el qu y no el cmo
14
Diseo
Constituye un refinamiento del anlisis
15
Diseo
Se enriquece la descripcin del anlisis incorporando aspectos de la plataforma de desarrollo Diseo arquitectnico: se desarrolla la arquitectura del sistema Diseo detallado: Se desarrollan los componentes (algoritmos, representacin de datos, etc.)
16
Programacin
Clases, mdulos en el LP seleccionado
17
18
Validacin y verificacin
Permite determinar la confiabilidad o correctitud del Documentos producto (textos,
programas, etc)
19
Validacin y verificacin
Validacin: el software responde a lo que espera el usuario Verificacin: el software satisface la especificacin prueba: el programa satisface la especificacin testing: bsqueda de errores en los componentes, en la integracin, en el sistema.
20
Prototipaje
Desarrollo rpido de programas que constituyen partes del sistema Resultados
parciales del anlisis Prototipo (esbozo parcial del sistema)
21
Prototipaje
Esbozo parcial del futuro sistema Permite experimentar Permite validar y precisar la especificacin de requerimientos y caractersticas del futuro sistema Indispensable para el desarrollo de la interfaz.
22
Liberacin
Diseo de Programas
Integracin
Modelos de desarrollo
Define la estructura de un proceso de desarrollo racional y controlable No existe un modelo universal Los modelos no son rgidos Son una gua respecto al orden en que deben adelantarse las actividades Se basa en el reconocimiento que el software tiene un ciclo de vida.
24
...casi siempre...!!
27
Modelos de desarrollo
Secuencial Lineal
Cascada (clsico) RAD (Desarrollo Rpido de Aplicacin)
Evolutivo
Incremental Espiral Basado en reutilizacin
Modelo de la cascada
Propuesto por Winston Royce en 1970 Conocido como modelo secuencial lineal Encadenamiento secuencial de las actividades Cada etapa produce documentos que son la entrada a la siguiente Para desarrollar una etapa debe concluirse la anterior Popular en la dcada 70
29
30
Modelo de cascada
Ventajas:
Planificacin sencilla. Una plantilla estructurada para ingeniera de sw.
Desventajas:
Evolucin de los Requisitos . Resultados al final. Retrasos innecesarios.
til en proyectos:
Todas las especificaciones claras inicialmente. Producto no novedoso. Complejos que se entienden bien desde el principio.
31
Modelo de cascada
Suponga:
Peter y David consultan a un arquitecto para disear una casa. El arquitecto les presenta un documento tcnico de 100 pginas. Como no entienden y para no leer el documento, ellos aceptan el diseo. Un ama de casa compra cortinas por correo. Ella recibe una descripcin escrita del corte y la tela.
32
Modelo Evolutivo
1. Entregar algo al usuario 2. Recibir retroalimentacin del usuario 3. Ajustar el diseo y objetivos basado a las realidades observadas Enfoques: Incremental Espiral Basado en reutilizacin
35
Modelo Incremental
Desarrollo paso a paso donde las partes de algunas etapas se posponen. Cada etapa consiste en expandir incrementos de un producto de software operacional Incrementos pueden ser entregados al cliente Cada incremento es diseado, codificado, probado, integrado y entregado por separado Los incrementos se desarrollan uno despus de otro, basados en retroalimentacin recibida del cliente.
36
Modelo Incremental
Ventajas:
Existe una disponibilidad limitada de recursos de desarrollo. Cuando es difcil establecer todos los requerimientos por anticipado
Desventajas:
Si los requerimientos crecen, la arquitectura y el diseo puede cambiar drsticamente
37
Modelo en espiral
Propuesto por Barry Boehm en 1988 Desarrollo en ciclos. En cada ciclo: se define el objetivo, se analizan los riesgos, desarrollo y verificacin de la solucin obtenida, revisin de resultados y planificacin del siguiente ciclo
38
Modelo en espiral
Se centra en algunas mejores prcticas:
Manejo de Riesgos Orientacin al Cliente Desarrollo Iterativo
39
Modelo en espiral
Ventajas:
Resolucin temprana de riesgos. Definicin de arquitectura en sus fases iniciales. Basado en un proceso continuo de verificacin de la calidad. Ideal para productos con un nivel alto de inestabilidad de los requerimientos.
40
Modelo en espiral
Desventajas:
No aplicable a proyectos bajo contrato. No recomendable en proyectos simples.
41
Diseo Arquitectnico
42
44
47
48
49
Cul modelo?
Depende del tipo de aplicacin Pueden combinarse diferentes modelos Influye el contexto de desarrollo
...un proceso basado en funcionalidades, soportado en arquitecturas, iterativo e incremental UML
50
Ciclo de Desarrollo
Iteration Story
51
XP - Elementos Principales
El Proceso de planificacin Pequeos lanzamientos Metforas: nombres y descripciones comunes Diseo simple Pruebas unitarias continuas Refactorizacin: reescriben ciertas partes del cdigo para aumentar su legibilidad y mantenibilidad pero sin modificar su comportamiento
52
XP - Elementos Principales
Programacin por parejas Propiedad colectiva: el cdigo es modificado cuando se necesita sin retraso Integracin continua Semanas de 40 horas Cliente altamente disponible Codificacin estndar
53
XP - Ventajas
Cambios en los objetivos y prioridades son naturales. Sin sobrecarga al equipo de desarrollo El cliente desde las primeras etapas tiene software que puede usar y probar. En cualquier momento puede parar el desarrollo, quedndose con un producto que representa lo invertido hasta esa fecha.
54
XP - Desventajas
Es necesario un representante del cliente en todo momento del desarrollo Todo el proceso de desarrollo se basa en la comunicacin, si la misma es costosa o lenta perjudica enormemente el tiempo y costo del desarrollo No sirve para proyectos grandes debido a sus requerimientos de comunicacin
55