Professional Documents
Culture Documents
El Proceso Software
Contenidos
2.1 Modelos de Proceso
2.1.1 Modelos genricos de desarrollo 2.1.2 Mtodos de desarrollo orientados a objetos
Process
Disciplinas de gestin La fase de Inicio (Inception) La fase de Elaboracin Las fases de Construccin y Transicin
Componentes de un mtodo
Together Rose
UML
Proceso: Define el marco de trabajo y permite un desarrollo racional de la IS Tcnicas: Indican cmo construir tcnicamente el software. Incluyen tcnicas de modelado Herramientas: Proporcionan el soporte automtico o semiautomtico para el proceso y para las tcnicas
UP
El proceso software
Un conjunto estructurado de actividades y resultados asociados que conducen a la creacin de un producto de software
Especificacin: Definir la funcionalidad y las restricciones en sus operaciones Diseo e implementacin: Producir software que cumple la especificacin Validacin: Asegurar que hace lo que el cliente desea. Evolucin: Seguir cumpliendo los cambios en las necesidades del usuario.
Un modelo de proceso es una representacin abstracta de un proceso. Presenta una descripcin de un proceso desde una perspectiva particular.
Desarrollo evolutivo
Se interpolan la especificacin y el desarrollo
Modelo en Cascada
Definicin de Definicin de Requisitos Requisitos Diseo del sistema yy Diseo del sistema del software del software Implementacin yyprueba Implementacin prueba de unidades de unidades Integracin yy Integracin prueba del sistema prueba del sistema Operacin yy Operacin mantenimiento mantenimiento
Desarrollo evolutivo
Desarrollar una implementacin inicial e ir refinndola hasta conseguir el sistema adecuado. Las actividades se realizan concurrentemente.
Desarrollo exploratorio
El objetivo es trabajar con los clientes y desarrollar un sistema final con alguna especificacin inicial. Se debe comenzar teniendo en cuenta los requisitos bien-entendidos. El sistema evoluciona segn la nuevas propuestas del cliente.
Prototipos desechables
El objetivo es comprender los requisitps del cliente y desarrollar un prototipo para evaluar hasta qu punto se han entendido.
Desarrollo evolutivo
Actividades concurrentes Versin Versin Inicial Inicial
Especificacin Especificacin
Desarrollo Desarrollo
Versiones Versiones Versiones Versiones intermedias intermedias intermedias intermedias Versin Versin final final
Validacin Validacin
Desarrollo evolutivo
La ventaja es que la especificacin se desarrolla de forma creciente.
Problemas
Hay que documentar cada versin del sistema Los sistemas tienen una estructura deficiente Se requieren herramientas y tcnicas especiales (p.e. conocimientos en lenguajes para el prototipado rpido)
Aplicabilidad
Para sistemas interactivos pequeos o de tamao mediano Para partes de sistemas grandes (e.g. el interfaz de usuario) Para sistemas con vida corta
Proceso mixto
Desarrollar un prototipo desechable (con enfoque evolutivo) para resolver incertidumbres en la especificacin inicial. Reimplementar con un enfoque ms estructurado, con un proceso basado en el modelo en cascada.
Desmostracin de la correccin
Aplicabilidad
Sistemas crticos donde la seguridad o la fiabilidad debe garantizarse antes de que el sistema se ponga en explotacin
Este enfoque se est convirtiendo en el ms importante pero todava hay una experiencia limitada con l
Desarrollo incremental
Propuesto por Mills en 1980. En vez de entregar el sistema de una vez, tanto el desarrollo com las entregas se dividen en incrementos. Con cada incremento que entrega la parte de la funcionalidad que se hubiera determinado Los requisitos del usuario se priorizan y los requisitos de prioridad ms alta se incluyen en los incrementos ms tempranos Cuando el desarrollo de un incremento comienza, sus requisitos son inamovibles, aunque los requisitos de incrementos posteriores pueden continuar desarrollndose
Desarrollo incremental
Sistema final
Sistema incompleto
Desarrollo incremental
incremento 4
analysis
design
code
test
incremento 3
analysis
design
code
test
incremento 2
analysis
design
code
test
incremento 1
analysis
design
code
test
tiempo
Desarrollo en espiral
Propuesto por Boehm en 1988. El proceso se representa como una espiral ms que como una secuencia de actividades con vuelta hacia atrs. Cada vuelta en la espiral representa una fase del proceso. No hay fases fijas como la especificacin o diseo. Cada vuelta en la espiral determina las actividades a realizar.
Desarrollo en espiral
Planificacin Comunicacin con el usuario Ingeniera Anlisis de riesgos
Desarrollo y validacin
Desarrollo y validacin
Se elige el modelo de desarrollo ms apropiado para el sistema de entre todos los modelos genricos.
Planificacin
Se revisa el proyecto y, si se contina, se planifica la siguiente fase (nueva vuelta a la espiral).
Desarrollo en espiral
Deter mine ob jectiv es alternatives and c ons traint s Evaluate alternatives iden tif y, resol ve risk s
Risk analysis Risk analysis OperaPrototype 3 tional protoype Prototype 2 Risk anal sis Protoy type 1 Simulations, models, benchmarks Concept of Operation S/W requirements Prod uct Detaile d
desi gn Code Uni t tes t Design Inte gr ati on V&V test Accep tance test Develop, v erif y Serv ice next-level p rod uct
Risk analysis
Requirement validation
de si gn
Plan ne xt p hase
Generaciones de Mtodos
Aos 60 y 70:
COBOL, FORTRAN, C Mtodos de anlisis y diseo estructurados
Diseo
STD
Implementacin
PROGRAMA
DATOS
DER
RELACIONAL
TABLAS
Anlisis
Diseo
Implementacin
Clases
Desventajas (superadas?)
Disear mdulos reutilizables aade costes. Beneficios a medio/largo plazo. Falta de madurez. Falta de productos (bibliotecas, CASE, ...). Falta de eficiencia. Falta de formacin. Forma de trabajo diferente a la tradicional. Falta de estndares.
Si yo tuviera que vender mi gato (al menos a un informtico) no dira que es amable, autosuficiente y que come ratones: ms bien argumentara que es ... orientado-a-objetos (Roger King)
Evolucin de la OO
1980 1990 Hoy 200?
OO
El libro Object-Oriented Modeling and Design escrito por Rumbaugh et al. en 1991 es un best-seller mundial:
Rumbaugh, James, Blaha, Michael, Premerlani, William, Eddy, Frederick, Lorensen, William. Modelado y Diseo Orientados a Objetos. Metodologa OMT. 2 Reimpresin. Prentice Hall. 1998.
... OMT
Diagramas de clases
Diagramas de estados
DFDs
Mtodo de Booch
Es uno de los ms conocidos En su versin de 1993 este mtodo cubre las fases de anlisis y diseo dentro de un desarrollo OO. Define una gran cantidad de smbolos para representar las distintas decisiones de diseo. Se definen dos tipos de procesos que describen los niveles en un desarrollo orientado al objeto: Macro procesos Micro procesos
Booch, G. "Object-Oriented Analysis and Design with Applications", 2nd edition. Benjamin Cummings, 1993.
Mtodo de Booch
Diferencia:
Modelos esttico y dinmico Modelos lgico y fsico
Modelo dinmico Modelo Esttico Estructura de objetos Modelo Lgico Estructura de clases
Arquitectura de procesos
Modelo Fsico
Arquitectura de mdulos
OOSE (Jacobson)
Es un mtodo que se basa en la idea de los casos de uso como forma de analizar los requisitos del usuario El ciclo de vida es similar al modelo bsico pero se empieza muy pronto con la interfaz de usuario: Anlisis Construccin Pruebas
Proceso de anlisis:
Especificacin de requisitos
Cliente remoto
Identificacin
Jacobson, I., Christerson, M., Jonsson, P., vergaad, G. Object Oriented Software Engineering: A Use Case Driven Approach. Addison-Wesley, 1994.
Mtodos giles
eXtreme Programming (XP)
Mtrica Versin 3
Cubre desarrollo estructurado y orientado a objetos Adems del desarrollo, contempla procesos de Planificacin y Mantenimiento Facilita la realizacin de los procesos de apoyo u organizativos Procesos principales de desarrollo en Mtrica 3: Estudio de Viabilidad del Sistema Anlisis del Sistema de Informacin Diseo del Sistema de Informacin Construccin del Sistema de Informacin Implantacin y aceptacin
Mtrica Versin 3
Mtrica 3. Anlisis
Objetivo: obtencin de una especificacin detallada del sistema que satisfaga las necesidades de los usuarios y sirva de base para el posterior diseo del sistema
Mtrica 3. Diseo
Objetivo: definir la arquitectura del sistema, el entorno tecnolgico y la especificacin detallada de los componentes del sistema
Mtodos giles
Como reaccin a los procesos muy burocratizados surgen los mtodos giles Propuesta por Beck en 1999. Nuevo enfoque basado en el desarrollo y la entrega de incrementos de funcionalidad muy limitada. Confa en la mejora constante del cdigo, implicacin del usuario en el equipo de desarrollo y la programacin sin complejos.
(Unified Process)
Componentes de un Mtodo
Elementos de modelado
Un conjunto fundamental de conceptos de modelado para capturar el conocimiento semntico sobre un problema y su solucin Los conceptos de modelado son independientes de cmo se visualizan
Notacin
Un conjunto de vistas y notaciones para presentar la informacin de modelado subyacente que permite a las personas examinarlos y modificarlos
Proceso
Tiene como cometido la formalizacin de las actividades relacionadas con la elaboracin de sistemas software
Experiencia
Una coleccin de reglas y heursticas para llevar a cabo el desarrollo
UML no es un mtodo
Lenguaje de Modelado
Proceso
Qu es un Proceso?
Describe un conjunto de actividades que deben realizarse en un determinado orden
qu hacer, cmo hacerlo, cuando hacerlo y el motivo por el cual debe ser hecho
Debe ser:
Reproducible Definido Medible en cuanto a rendimiento Optimizable...
Nuevos Requisitos
Proceso software
Sistema Nuevo
Estndar OMG
SPEM (2002)
Estndares OMG
Rational Objectory Process 4.1
1996-1997
UML
Rational Objectory Process 1.0-3.8
1987-1995
Ericsson (Jacobson)
UP es un Proceso marco
Se centra en la arquitectura:
La arquitectura es prioritaria desde el principio hasta el final Se facilita el refinamiento progresivo de la arquitectura
Iterativo e incremental:
El trabajo se divide en iteraciones pequeas en funcin de la importancia de los casos de uso y el anlisis de riesgos
Requisitos
Anlisis
Diseo
Implement.
Pruebas
Centrado en la Arquitectura
La arquitectura describe los elementos fundamentales del sistema:
Subsistemas Dependencias Interfaces Colaboraciones Nodos Clases activas...
Vista Lgica Vista Lgica Vista de Casos de Uso Vista de Vista de Procesos Procesos
Arquitectura y Modelos
Modelo de anlisis
Modelo de diseo
Modelo de Pruebas
Modelos
Vistas
Estructura y funcin
Casos de uso
Arquitectura
Los casos de uso especifican las funciones La arquitectura especifica la la estructura Los casos de uso y la arquitectura deben estar en equilibrio
Se basa en la ampliacin y el refinamiento del sistema Una serie de desarrollos cortos (mini proyectos de 2 a 6 semanas, cada iteracin reproduce el ciclo de vida a menor escala) No slo se mejora sino que el sistema tambin crece: Proceso iterativo e incremental
Funcionalidad del sistema
Anlisis
Incremento2
Diseo Implementacin Prueba
Incremento1
Anlisis
Diseo
Implementacin
Prueba
Tiempo
Visin
Arquitectura
Versiones Beta
Productos
Incremental
Primero, la arquitectura, Despus, se van aadiendo los detalles segn avanza el desarrollo
Elaboracin
Implementacin Diseo
Transicin
Implementacin Diseo
Instalacin
Instalacin
Requisitos
Requisitos
Requisitos
Gestin
Gestin
Gestin
Requisitos
Gestin
Visin
Arquitectura
Versiones Beta
Productos
Instalacin
Artefactos:
Cualquier tipo de informacin producida por los desarrolladores de un sistema (diagramas UML, cdigo, ejecutables, casos de prueba...) Se construyen de forma incremental
Etapa de Ingeniera
Etapa de Produccin
Elaboracin
Construccin
Transicin
Elaboracin
Define la funcionalidad y una arquitectura bsica
Construccin
El producto se desarrolla a travs de iteraciones
Transicin
Se libera el producto y se entrega al usuario para su uso real
Hitos
Los hitos son puntos de control en los cuales los participantes en el proyecto revisan el progreso del proyecto. Se pretende:
Sincronizar las expectativas y la realidad Identificar los riesgos Se evalua la situacin global del proyecto
Se necesitan:
Resultados tangibles para comparar con las expectativas
Varios niveles:
Hitos principales al final de cada fase Hitos secundarios final de cada iteracin
Elaboracin
Construccin
Transicin
Visin
Arquitectura bsica
Capacidad inicial
Producto final
Una iteracin es una secuencia de actividades con un plan establecido y unos criterios de evaluacin, cuyo resultado es una versin ejecutable (hito secundario)
Release Release
Release
Release
Release
Release
Release
Release
Al contrario de lo que ocurre con las fases, las distintas actividades del equipo de desarrollo se pueden solapar en el tiempo.
Inicio
Elaboracin
Construccin
Transicin
Anlisis
Diseo
Implementacin
Pruebas Iteraciones preliminares iter. #1 iter. #2 iter. #n iter. #n+1 ite r. #n+2 iter. #m iter. #m+1
Iteraciones
Inicio
Elaboracin
Construccin Transicin
Inicio
Elaboracin
Construccin Transicin
Artefactos
Definicin de artefacto (o producto):
Cualquier tipo de informacin producida por los desarrolladores de un sistema.
Los modelos son los artefactos bsicos que producen las disciplinas (incluyen otros artefactos)
Anlisis
Diseo
Modelo de diseo
Implementacin
Modelo de Implement.
Pruebas
Modelo de Pruebas
Modelo de anlisis
Diagramas de componentes Diagramas de despliegue Diagramas de secuencia Diagramas de colaboracin Diagramas de estados Diagramas de actividades
Modelo de diseo
Modelo de despliegue
Modelo de Implement.
Modelo de Pruebas
Modelo de anlisis
Diagramas de componentes Diagramas de despliegue Diagramas de secuencia Diagramas de colaboracin Diagramas de estados Diagramas de actividades
Modelo de diseo
Modelo de despliegue
Modelo de Implement.
Modelo de Pruebas
El Caso de desarrollo
El nmero de posibles diagramas, modelos, vistas, ficheros fuente, casos de pruebas, etc. es muy grande Es preciso definir los artefactos que son necesarios en cada desarrollo concreto Uno de los artefactos iniciales es el Caso de desarrollo:
Qu artefacto es necesario en cada disciplina En qu fase se crea En qu fases se actualiza
Artefacto
Modelo de casos de uso Visin Glosario Modelo del dominio Modelo de anlisis Modelo de diseo Arquitectura Modelo de datos Modelo de implementacin Modelo de pruebas Plan de desarrollo Caso de desarrollo
Inicio I I I
Elaboracin R R R I I I I I I I
Construccin
Transicin
Anlisis Diseo
R R R R R R R R R
I I
R R
Mtricas de la productividad
Mtricas relacionadas con el tamao.
Basadas en el tamao de alguna salida de una actividad del proceso: nmero de lneas del cdigo fuente, nmero de instrucciones del cdigo objeto, nmero de pginas de la documentacin, etc.
Puntos de funcin
weighting factor simple avg. complex X 3 X 4 X 3 X 7 X 5 4 5 4 10 7 6 7 6 15 10 = = = = =
measurement parameter count number of user inputs number of user outputs number of user inquiries number of files number of ext.interfaces count-total complexity multiplier function points
Calidad y productividad
Las mtricas basadas en volumen/unidad de tiempo (lneas/programador-mes) son imperfectas porque no tienen en cuenta factores como la fiabilidad, el mantenimiento, La productividad se puede aumentar generalmente a costa de la calidad
Tcnicas de estimacin
No hay una forma simple de hacer una estimacin exacta del esfuerzo requerido para desarrollar un sistema de software
Las estimaciones iniciales se basan en informacin poco precisa que aportan los usuarios El software puede tener que ejecutarse en ordenadores no conocidos o utilizar tecnologa nueva El personal del proyecto es desconocido
Tcnicas de estimacin
Modelado algortmico de costes.
Se analizan los costes de otros proyectos realizados. Se utiliza una frmula matemtica para predecir los costes del proyecto actual Se consulta a varios expertos y entre ellos acuerdan una estimacin. Se estima por analoga con otros proyectos completados sobre el mismo dominio de aplicacin. El trabajo se extiende para llenar el tiempo disponible. El coste se determina segn los recursos disponibles. Se acuerda la funcionalidad aceptable para el sistema teniendo en cuenta el coste acordado.
Opinin de expertos.
3. Anlisis de riesgo.
Posibles riesgos con su probabilidad y estrategias de reduccin de riesgos propuestas
Problemas en la planificacin
Estimar la dificultad de los problemas, y por lo tanto el coste de desarrollar una solucin, es difcil La productividad no es proporcional al nmero de personas que trabajan en una tarea Aadir personal al final del proyecto produce ms retraso por la sobrecarga en la comunicacin Lo inesperado siempre ocurre
T1 (M1) T2, T4 (M2) T1, T2 (M3) T1 (M1) T4 (M5) T3, T6 (M4) T5, T7 (M7) T9 (M6) T11 (M8)
Red de actividades
14/7/99 8 days T1 4/7/99 start 15 days T2 10 days T4 18/7/99 M5 25 days T8 19/9/99 Finish 25/7/99 M2 T7 10 days T5 11/8/99 M7 15 days T10 M1 25/7/99 M3 15 days T3 5 days T6 20 days 4/8/99 M4 15 days T9 25/8/99 M6 7 days T11 5/9/99 M8 10 days T12
Actividades en el calendario
4/7 T4 T1 T2 M1 T7 T3 M5 T8 M3 M2 T6 T5 M4 T9 M7 T10 M6 T11 M8 T12 Finish 11/7 Start 18/7 25/7 1/8 8/8 15/8 22/8 29/8 5/9 12/9 19/9
Asignacin de personal
4/7 Fred T4 T8 Jane T1 T3 T9 Anne T2 T6 Jim Mary T7 T5 T10 T11 T12 11/7 18/7 25/ 1/8 8/8 15/8 22/8 29/8 5/9 12/9 19/9
Tabla de riesgos
Riesgo Probabilidad Impacto Gestin y Gesti Mitigacin del Mitigaci Riesgo
Escala 1..5 Escala 1..5 1=impacto 1=impacto bajo bajo 5=catstrofe 5=catstrofe
4(crtico)
Garanta de calidad
Coste de los fallos encontrados en distintas etapas 100 60.00-100.00
10 1.00 1.50
10.00 3.00
0.75
Req.
Diseo
Conceptos de calidad
Cmo se aplica al software? Control de calidad: inspecciones, revisiones, pruebas Aseguramiento de la calidad: anlisis, auditora e informes Estndares de calidad: ISO 90003
gua para la aplicacin de la ISO 9001:2000 para la adquisicin, suministro, desarrollo, instalacin y mantenimiento de SOFTWARE y servicios de soporte.
Garanta de calidad
Resultados
Inicial
Repetible
- Los procesos de software son estables y repetibles. - La organizacin establece polticas de gerencia de proyectos y procesos. - La planificacin se basa en proyectos similares. - Existen estndares definidos y exigidos. - El proceso se enmarca en un sistema de gerencia de proyectos basado en experiencias pasadas.
Resultados
Definido
Gestionado
Optimizado
otros
modelos de software
Plan Pruebas datos
cdigo
programas
documentacin
datos
Existen herramientas que ayudan al control de las versiones a medida que avanzan (SourceForge)
Anlisis
Anlisis de la arquitectura Anlisis de los casos de uso (de algunos representativos)
Diseo
Esbozo de la arquitectura
Implementacin
Prototipo desechable?
Pruebas
No
Requisitos
Casos de uso diagramas
foo( x ) bar( y )
Glosario
...
diagramas
Modelo de diseo
Diseo
Anlisis
Diseo
Implementacin
Pruebas
Modelo de implementacin Incluye diagramas de implementacin y el cdigo fuente disponible Prototipos de la interfaz de usuario Modelo de datos Todo lo relacionado con la interfaz Traduccin a esquemas de bases de datos
Fase de Construccin
El producto se desarrolla a travs de iteraciones
Cada iteracin involucra anlisis, diseo e implementacin La arquitectura bsica se refina de manera incremental conforme se construye
Gran parte del trabajo es programacin y pruebas Se documenta tanto el sistema construido como el manejo del mismo Esta fase proporciona un producto construido junto con la documentacin Al comienzo de esta fase, se asigna personal y se fijan los criterios de evaluacin:
Lista de casos de uso implementados Documentacin inicial para los usuarios
Implementacin
Pruebas
Arquitectura definitiva
Modelo de implementacin Incluye el cdigo fuente Modelo de pruebas Sistema ejecutable Manual de usuario Anlisis de negocio Plan de proyecto Versin con capacidad operativa inicial (V. Beta) Versin inicial Situacin actual del proyecto Plan para la fase de Transicin
Fase de Transicin
Se libera el producto y se entrega al usuario para un uso real Se incluyen tareas de instalacin, configuracin, entrenamiento, soporte, mantenimiento, etc. Los manuales de usuario se completan y refinan con la informacin anterior Estas tareas se realizan tambin en iteraciones Al comienzo de la fase, se reasigna personal y se establecen los criterios de evaluacin:
Han sido capaces los usuarios de llevar a cabo todos los casos de usos? Ha superado el producto las pruebas de aceptacin? Tiene el manual de usuario una calidad suficiente? Estn listos los cursos de formacin para los usuarios? Estn los usuarios satisfechos?
Bibliografa Recomendada
Sommerville, I. "Ingeniera del software" Pearson, 2005 (7 ed.) Pressman, Roger S. "Ingeniera del software : un enfoque prctico MacGraw-Hill", 2005 (6 ed) Jacobson, I., Booch, G., Rumbaugh, J. El Proceso Unificado de Desarrollo de Software. Addison-Wesley, 2000. Larman, C. UML y Patrones. Introduccin al Anlisis y Diseo Orientado a Objetos y al Proceso Unificado . Prentice Hall, 2004.
Lecturas complementarias
Kruchten, Philippe. "A Software Development Process for a Team of