Professional Documents
Culture Documents
Diagramas de caso de uso Diagramas de clases Diagramas de objetos Diagramas de estado Diagramas de secuencia Diagramas de colaboracin Diagramas de actividad Diagramas de componentes Diagramas de implementacin
8.Diseo OO
8.1. Modelo de Diseo 8.2. Arquitectura del Software 8.3. Patrones de Diseo
10.
Pruebas OO
10.1. Conceptos 10.2. Pruebas del modelo de anlisis y el de diseo 10.3. Pruebas de unidad 10.4. Pruebas de integracin 10.5. Pruebas de validacin
M.C. Martn Olgun (C) 2004
Bibliografa
1.
2.
3.
...Bibliografa
1.
2.
Design Patterns
Erich Gamma Addison-Wesley
3.
Unidad 1
Introduccin a la Ingeniera del Software
Software
Es el conjunto de programas de cmputo, documentos asociados y esquemas de configuracin necesarios para que estos programas operen. [Sommerville, 2001]
Ingeniera del Software es el estudio de los principios y metodologas para desarrollo y mantenimiento de sistemas de software. [Zelkovitz, 1978]
Definicin 2:
Ingeniera del Software es la aplicacin prctica del conocimiento cientfico en el diseo y construccin de programas de computadora y la documentacin asociada requerida para desarrollar, operar y mantenerlos. Se conoce tambin como desarrollo de software o produccin de software. [Bohem, 1976]
Definicin 3:
Ingeniera del software trata del establecimiento de los principios y mtodos de la ingeniera a fin de obtener software de modo rentable que sea fiable y trabaje en mquinas reales. [Bauer, 1972]
Definicin 4:
1. La aplicacin de un enfoque sistemtico, disciplinado y cuantificable al desarrollo, operacin (funcionamiento) y mantenimiento del software; es decir, la aplicacin de ingeniera al software. 2. El estudio de enfoques como en (1) [IEEE, 1993]
Definicin 5:
Es una disciplina que comprende todos los aspectos de la produccin de software desde las etapas iniciales de la especificacin del sistema, hasta el mantenimiento de ste despus de que se utiliza. [Sommerville, 2001]
Teora de Sistemas
Ingeniera de Sistemas
Ingeniera de Software
Sistema
Un sistema es una coleccin de componentes interrelacionados que trabajan conjuntamente para cumplir algn objetivo.
Ingeniera de Sistemas
La ingeniera de sistemas consiste en la actividad de especificar, disear, implementar, validar, distribuir y mantener sistemas como un todo. Los ingenieros de sistemas no slo estn relacionados con el software, sino tambin con el hardware y las interacciones del sistema con los usuarios y su entorno.
El software se desarrolla, no se fabrica. El software no se descompone, se echa a perder. Aunque la industria tiende a ensamblar componentes, la mayora del software es hecho a la medida.
Mantenibilidad
El software debe poder evolucionar para cumplir con las necesidades de cambio de los clientes. El software debe ser fiable, seguro, no debe causar daos fsicos o econmicos en el caso de una falla del sistema. El software debe aprovechar al mximo los recursos del sistema. El software debe ser fcil de utilizar.
Confiabilidad
Eficiencia
Usabilidad
Software de sistemas Software de tiempo real Software de gestin Software de ingeniera y cientfico Software empotrado Software de PCs Software basado en Web Software de IA
Tarea
Leer de Pressman la seccin 1.4 Mitos del Software y discutir en clase cada uno de los mitos presentados.
Unidad 2
Modelos de Proceso del Software
Proceso de Software
Es un conjunto de actividades y resultados asociados, que generan un producto de software, las cuales son llevadas a cabo por los ingenieros de software.
Distintos procesos organizan estas actividades de diferentes formas y las describen a diferente nivel de detalle. Organizaciones diferentes utilizan procesos diferentes
Es una descripcin de un proceso del software que se presenta desde una perspectiva particular. Es una abstraccin de un proceso real. Existe una gran variedad de modelos o paradigmas de desarrollo de software:
Modelo de Cascada
Definicin de requerimientos Diseo de sistemas y de software Implementacin y Prueba de unidades Integracin y prueba del sistema Operacin y mantenimiento
M.C. Martn Olgun (C) 2004
Royce, 1970 Managing the development of Large software systems: Concepts And techniques IEEE Conference, Los Angeles Adoptado por el DoD
Modelo en V
Operacin y mantenimiento
Definicin de requerimientos
Pruebas de aceptacin
Diseo de sistemas
Pruebas de sistema
Diseo de programas
Codificacin
M.C. Martn Olgun (C) 2004
Desarrollo Evolutivo
Bosquejo de la descripcin
Desarrollo
Validacin
Versin final
Modelo Incremental
The management of software engineering Mills et al., 1980 I BM Systems Journal
Definir incrementos
Disear la arquitectura
Disear incremento
Validar incremento
Integar incremento
Validar sistema
Sistem a final
Embracing change with extreme programming Beck, K. 1999 IEEE Computer
Modelo en espiral
A spiral model of software development and enhancement Bohem, 1988 I EEE Computer
Tarea
Hacer un ensayo explicando las ventajas y desventajas de los modelos de proceso de software analizados en clase.
Tarea
Referencia inicial:
http://www.agilealliance.org/programs/roadmaps/Roadmap Presentacin el mircoles 25 de agosto
M.C. Martn Olgun (C) 2004
Desarrollado por el SEI (Software Engineering Institute) Es un modelo completo basado en un conjunto de funciones de ingeniera del software que deberan de estar presentes conforme organizaciones alcanzan diferentes niveles de madurez de su proceso.
...CMM
El enfoque del SEI proporciona una medida de la efectividad global de las prcticas de la ingeniera del software de una compaa y establece 5 niveles de madurez del proceso. Nivel 1: Inicial. Nivel 2: Repetible. Nivel 3: Definido. Nivel 4: Administrado. Nivel 5: Optimizacin.
Nivel 1: Inicial
Nivel 2: Repetible
Se establecen los procesos de administracin del proyecto para dar seguimiento a los costos, la planificacin y la funcionalidad. Se toman en cuenta experiencias anteriores para repetir las actividades necesarias en el proceso.
Nivel 3: Definido
Se documenta el proceso para las actividades de administracin y de ingeniera. Se estandariza e integra en un proceso para toda la organizacin. Todos los proyectos utilizan una versin documentada y aprobada del proceso.
Nivel 4: Administrado
Se implementan mtricas detalladas para los proyectos. Se establecen estndares de calidad. Mediante la utilizacin de las mtricas se comprenden y se controlan cuantitativamente tanto los productos como el proceso.
Nivel 5: Optimizacin
El proceso se mejora continuamente mediante la retroalimentacin cuantitativa del proceso, ideas y tecnologas innovadoras.
Auditores CMM
Requisitos:
Haber participado en una evaluacin en los dos aos anteriores a su solicitud de cursos. Cursar las asignaturas. Ser lder en una evaluacin CMM a una organizacin dentro de los dos aos siguientes a los cursos, asesorado por un tutor certificado. Obtener la aprobacin del tutor.
Tarea
Unidad 3
El Proceso Unificado de Desarrollo (RUP)
El RUP
El Proceso Unificado es un proceso de software genrico que puede ser utilizado para una gran cantidad de tipos de sistemas de software, para diferentes reas de aplicacin, diferentes tipos de organizaciones, diferentes niveles de competencia y diferentes tamaos de proyectos.
RUP y UML
El Proceso Unificado usa el Lenguaje de Modelado Unificado (UML) en la preparacin de todos los planos del sistema. De hecho, UML es una parte integral del Proceso Unificado, fueron desarrollados a la par.
Unidad 4
Administracin de Proyectos
Fuente: www.standishgroup.com
28%
46%
Implica la planificacin, supervisin y control del personal, del proceso y de los eventos que ocurren mientras evoluciona el software, desde la fase preliminar hasta la implementacin operacional.
El producto es intangible. No existen procesos de software estndar. Comnmente los proyectos grandes son nicos.
Personal
El factor humano Objetivos y el mbito del producto Estructura de apoyo para la planeacin Administracin de la complejidad
Producto
Proceso
Proyecto
Personal
Sin duda el elemento ms valioso en la Ingeniera del Software Quines participan en un proyecto de software?
Programadores Lder de proyecto Arquitectos de software Usuarios Analistas/Diseadores Clientes Ingenieros de requerimientos Ingenieros de proceso Ingenieros de pruebas
...Personal
...Personal
Marilyn Mantei en The effect of Programming Team Structures on Programming Tasks, 1981, sugiere tres tipos genricos de organizacin:
Centralizado Controlado (CC): El jefe del equipo se encarga de la resolucin de problemas a alto nivel y la coordinacin interna del equipo. La comunicacin entre el jefe y los miembros del equipo es vertical.
...Personal
Descentralizado Controlado (DC): Un jefe definido que coordina tareas especficas y jefes secundarios con responsabilidades sobre subtareas. La resolucin de problemas es una actividad del grupo, la comunicacin es horizontal y vertical. Descentralizado Democrtico (DD) o Egoless: No tiene un jefe permanente, se nombran de acuerdo a la tarea. La solucin de problemas se hacen por consenso. La comunicacin es horizontal.
...Personal
Complejidad del proyecto (dificultad del problema, tamao del software) Tiempo de desarrollo. Modularidad. Calidad. Comunicacin requerida.
...Personal
...Personal
Segn Constantine, L. en Work Organization: Paradigms for Project Management and Organization, 1993:
Confianza entre los miembros del equipo. Distribucin de habilidades de acuerdo al problema. Los inconformistas deben ser excluidos.
...Personal
Atmsfera de trabajo frentica, malgastan energa y se descentran de los objetivos Alta frustracin causada por factores tecnolgicos, del negocio o personales que provocan friccin entre los miembros del equipo.
...Personal
Procedimientos coordinados pobremente o fragmentados o una definicin pobre o impropiamente elegida del modelo de procesos que se convierte en un obstculo a saltar. Definicin confusa de los papeles a desempear produciendo una falta de responsabilidad y la acusacin correspondiente. Continua y repetida exposicin al fallo que conduce a una prdida de confianza y una cada de la moral.
...Personal
Cmo evitamos las toxinas que afectan a los equipos de software? Cmo coordinar las acciones de los miembros del equipo?
Tarea
Leer el captulo 3 del Pressman 5ta. edicin Realizar los problemas 3.1, 3.4, 3.6 al 3.11
Planificacin temporal
Se clasifican en dos:
Se relacionan con el tamao de la salida de alguna actividad. La mtrica ms comn es Lneas de Cdigo (LDC) Dependen del lenguaje de programacin y en general no es una buena medida para POO.
Son medidas que se relacionan con la funcionalidad del software. Las ms comunes son:
Puntos de Funcin
Es una medida de la funcionalidad entregada por la aplicacin. Es una medida indirecta, a diferencia de LDC. Propuesta por primera vez en:
Albretch, A.J., Measuring Application Development Productivity, Proceedings IBM Application Development Symposium, Octubre 1979.
Clculo de PF
Factor de ponderacin
Parmetros de medicin
Nmero de entradas de usuario Nmero de salidas de usuario Nmero de peticiones de usuario Nmero de archivos Nmero de interfaces externas Conteo Total (UFP)
M.C. Martn Olgun (C) 2004
Cuenta
Simple
Medio
Complejo
= = = = =
...Clculo de PF
El UFP (Unadjusted Function Point count) se multiplica por factores de complejidad del proyecto para obtener el PF final:
(F )]
i
Fi
1. Requiere el sistema copias de seguridad y de recuperacin fiables? 2. Se requiere comunicacin de datos? 3. Existen funciones de procesamiento distribuido? 4. Es crtico el rendimiento? 5. Se ejecutar el sistema en un entorno operativo existente y fuertemente utilizado? 6. Requiere el sistema entradas de datos interactivas? 7. Las entradas interactivas se harn en mltiples pantallas y operaciones? 8. Se actualizan los archivos maestros de forma interactiva? 9. Son complejas las entradas, salidas, archivos y peticiones? 10. Es complejo el procesamiento interno? 11. El diseo del cdigo es reutilizable? 12. El diseo incluye conversin e instalacin? 13. El diseo incluye soporte para mltiples instalaciones en diferentes orgs. 14. El diseo facilita los cambios y la usabilidad?
M.C. Martn Olgun (C) 2004
0-5
Puntos de Objeto
Tambin es una medida indirecta del software. NO es una medida de las clases necesarias para construir la aplicacin. Los elementos que toma en cuenta son:
[ ]x1 [ ]x2
[ ]x2 [ ]x5
= = =
Utiliza un modelo con informacin histrica de costos, relaciona una mtrica con el costo del proyecto. Se estima la mtrica y se predice el esfuerzo. Se consultan expertos en las tcnicas de desarrollo propuestas y el dominio de la aplicacin. Cada uno estima el costo y se consensa despus de varias iteraciones. Cuando se han completado proyectos del mismo dominio de la aplicacin se estima en base a la experiencia. Establece que el trabajo se expande para llenar el tiempo disponible. El costo se determina ms por los recursos disponibles que por los objetivos logrados.
El modelo COCOMO
Constructive Cost Model Es un modelo de estimacin emprico desarrollado por Bohem. Se obtuvo recolectando datos de varios proyectos de software grandes. Como resultado del anlisis de los datos se obtuvieron frmulas y tablas que se ajustan a las observaciones. Es muy utilizado y ha tenido seguimiento desde su aparicin en 1981.
COCOMO II
Se usa al inicio del proyecto Se aplica cuando se tienen la mayora de los requisitos y diseo preliminar Se aplica cuando ya se tiene la arquitectura
Diseo inicial
Postarquitectnico
...COCOMO II
Estimacin de calendario
TC = 3 x PM(0.33+0.2*(B-1.01)) Para el nivel inicial: B=1 TC = 3 x PM(0.328) TC est dada en meses.
Planificacin Temporal
Es la actividad que distribuye el esfuerzo estimado a lo largo de la duracin prevista del proyecto. Evoluciona con el tiempo. El proyecto se ha completado en un 90%
Red de Actividades
Etapas
Valorar las probabilidades y consecuencias Planes para evitar o minimizar el impacto Valoracin constante, revisin de planes de mitigacin conforme se vaya presentando informacin del riesgo.
Planeacin de riesgos
Supervisin de riesgos
Ejemplos de Riesgos
Riesgo
Rotacin de personal Cambio de administracin No disponibilidad del hardware Cambio de requerimientos Retrasos en la especificacin Subestimacin del tamao Bajo desempeo de la herramienta CASE Cambio de tecnologa
M.C. Martn Olgun (C) 2004
Tipo
Proyecto Proyecto Proyecto Proyecto y producto Proyecto y producto Proyecto y producto Producto Negocio
Identificacin de Riesgos
Anlisis de Riesgos
Planeacin de Riesgos
Supervisin de Riesgos
Valoracin de Riesgos