C121 INGENIERÍA DE SOFTWARE I 0011 0010 1010 1101 0001 0100 1011 NOTAS DEL CURSO 1. INTRODUCCIÓN 1 COORDINACIÓN DE COMPUTACIÓN Versión 15-08-11 (C) Pilar Gómez Gil, INAOE 20092011 2 4 DRA. MARIA DEL PILAR GÓMEZ GIL 1 0011 0010 1010 1101 0001 0100 1011 In a real sense, all life is interrelated. All men are caught in an inescapable network of mutuality, tied in a single garment of destiny. Whatever affects one directly affects all indirectly. I can never be what I ought to be until you are what you ought to be, and you can never be what you ought to be until I am what I ought to be. This is the interrelated structure of reality. — King, Martin Luther, Jr. 1 4 tomado de: http://www.stanford.edu/group/King/newsletter/index.htm (C) Pilar Gómez Gil, INAOE 20092011 2 2 Software Engineering Code of Ethics and Professional Practice ACM/IEEE-CS Joint Task Force on Software Engineering Ethics and Professional Practices. (Short Version) disponible en: http://www2.computer.org/portal/web/certification/codeofethics 0011 0010 1010 1101 0001 0100 1011 PREAMBLE The short version of the code summarizes aspirations at a high level of the abstraction; the clauses that are included in the full version give examples and details of how these aspirations change the way we act as software engineering professionals. Without the aspirations, the details can become legalistic and tedious; without the details, the aspirations can become high sounding but empty; together, the aspirations and the details form a cohesive code. Software engineers shall commit themselves to making the analysis, specification, design, development, testing and maintenance of software a beneficial and respected profession. In accordance with their commitment to the health, safety and welfare of the public, software engineers shall adhere to the following Eight Principles: 1. PUBLIC - Software engineers shall act consistently with the public interest. 2. CLIENT AND EMPLOYER - Software engineers shall act in a manner that is in the best interests of their client and employer consistent with the public interest. 3. PRODUCT - Software engineers shall ensure that their products and related modifications meet the highest professional standards possible. 4. JUDGMENT - Software engineers shall maintain integrity and independence in their professional judgment. 5. MANAGEMENT - Software engineering managers and leaders shall subscribe to and promote an ethical approach to the management of software development and maintenance. 6. PROFESSION - Software engineers shall advance the integrity and reputation of the profession consistent with the public interest. 7. COLLEAGUES - Software engineers shall be fair to and supportive of their colleagues. 8. SELF - Software engineers shall participate in lifelong learning regarding the practice of their profession and shall promote an ethical approach to the practice of the profession. (C) Pilar Gómez Gil, INAOE 20093 2011 1 2 4 Leer el artículo: 0011 0010 1010 1101 0001 0100 1011 Donald Gotterbarn, Keith W. Miller .”The Public is the Priority: Making Decisions Using the Software Engineering Code of Ethics” Computer, vol. 42, no. 6, pp. 66-73, June, 2009.DOI Bookmark: http://doi.ieeecomputersociety.org/10.1109/MC.2009.204 (C) Pilar Gómez Gil, INAOE 20092011 1 2 4 4 El Producto SOFTWARE 0011 0010 1010 1101 0001 0100 1011 “Conjunto de requerimientos operacionales, especificaciones, código, guías, manuales y documentación de mantenimiento de un sistema basado en computadora.” [Pressman 92] 1 (C) Pilar Gómez Gil, INAOE 20092011 2 4 5 Características Especiales del Software 0011 0010 1010 1101 0001 0100 1011 1. El SW se desarrolla, no se fabrica en un sentido clásico como otros productos 1 3. La mayoría del software se construye “a la medida” (C) Pilar Gómez Gil, INAOE 20092011 2 4 2. El software no se estropea... pero se deteriora 6 Retos actuales 0011 0010 1010 1101 0001 0100 1011 • • • • 2 Computación para redes inalámbricas Computación sobre Web Software de código abierto (open source) E-bussineess 1 (C) Pilar Gómez Gil, INAOE 20092011 4 7 PROCESO DE DISEÑO INGENIERIL SOLUCIONES A PROBLEMAS SIMILARES RECONOCIMIENT O DEL PROBLEMA 0011 0010 1010 1101 0001 0100 1011 INFORMACION IRRELEVANT E FORMULACION DEL PROBLEMA Formulación general del problema ANALISIS DEL PROBLEMA Formulación detallada del problema BUSQUEDA Soluciones potenciales y parciales DECISION Solución escogida ( no detallada ) ESPECIFICACION Modelo Reportes Documentación de diseño IMPLEMENT ACION Documentación T rabajo resultante (C) Pilar Gómez Gil, INAOE 20092011 1 2 4 [Jensen & Tonies, 79] 8 Ingeniería de Software 0011 0010 1010 1101 0001 0100 1011 “La Sociedad IEEE Computer define ingeniería de software como “(1) La aplicación de una metodología sistematica, disciplinada y cuantificable para el desarrollo, operación y mantenimiento de software; esto es, la aplicación de la ingeniería al software (2) El estudio de metodologías como las definidas en (1)” 1 (C) Pilar Gómez Gil, INAOE 20092011 2 4 9 Características de un(a) ingeniero(a) 0011 0010 1010 1101 0001 0100 1011 • Resolvedor de problemas • Usa recursos disponibles • Busca obtener el mínimo costo (C) Pilar Gómez Gil, INAOE 20092011 1 2 4 10 El proceso de desarrollo de Software: Plantilla general 0011 0010 1010 1101 0001 0100 1011 • Comunicación. Involucra comunicación y colaboración constante con los consumidores, y otros stakeholders a fin de obtener requerimientos y realizar otras actividades • Planeación. Establece el plan para el proceso ingenieril de desarrollo 1 (C) Pilar Gómez Gil, INAOE 20092011 2 4 11 El proceso de desarrollo de Software: Plantilla general (cont.) 0011 0010 1010 1101 0001 0100 1011 • Modelado. Crea modelos que permiten al desarrollador y consumidor entender mejor los requerimientos, y el diseño que alcanzará esos requerimientos • Construcción. Generación de código y pruebas internas del producto • Arranque. Entrega del software y evaluación del producto por el consumidor, quien provee retroalimentación 1 (C) Pilar Gómez Gil, INAOE 20092011 2 4 12 Actividades de apoyo al desarrollo 0011 0010 1010 1101 0001 0100 1011 • Seguimiento y control del proyecto de desarrollo de software • Administración de riesgos • Aseguramiento de calidad del software • Revisiones técnicas formales • Administración de la configuración del software • Administración de la re-usabilidad • Preparación y producción del producto 1 (C) Pilar Gómez Gil, INAOE 20092011 2 4 13 Otros puntos asociados al proceso de desarrollo de SW 0011 0010 1010 1101 0001 0100 1011 • Meta-modelos de procesos hechos para la mejora del proceso de desarrollo (CMMI, Moprosoft, etc.) • Patrones de procesos • Modelos estándares para evaluación y mejora de procesos (ejem. SCAMPI) • Procesos para desarrollo personal y en equipo (Personal software process, PSP y Team software process TSP) 1 (C) Pilar Gómez Gil, INAOE 20092011 2 4 14 Documentación de software 0011 0010 1010 1101 0001 0100 1011 “Lo que no está escrito no existe...” Algunos tipos de documentos: • • • • • • Plan de software Especificación de Requerimientos Especificación de Diseño Plan de Pruebas Resultados de Revisiones Bitácoras (C) Pilar Gómez Gil, INAOE 20092011 1 2 4 15 Ciclos en la vida de un proceso 0011 0010 1010 1101 0001 0100 1011 1 2 4 [Jacobson et al., 2000] (C) Pilar Gómez Gil, INAOE 20092011 16 Algunos Tipos de Ciclos de Vida de Software 0011 0010 1010 1101 0001 0100 1011 • Clásico: modelo secuencial o de cascada • Modelos de procesos incrementales: incremental, modelo RAD (Rapid Application Development) • Modelos evolutivos: Prototipos, Espiral, de desarrollo concurrente • Proceso Unificado • Modelos especializados: Desarrollo basado en componentes, modelos de métodos formales, Desarrollo orientado a aspectos. 1 (C) Pilar Gómez Gil, INAOE 20092011 2 4 17 Modelo Secuencial INGENIERIA 0011 0010 1010 1101 0001 0100 1011 DE SISTEMAS ANALISIS DISEÑO CODIFICACION PRUEBAS 1 CICLO DE VIDA CLASICO MODELO DE CASCADA (C) Pilar Gómez Gil, INAOE 20092011 2 4 MANTENIMIENTO 18 Modelo Espiral 0011 0010 1010 1101 0001 0100 1011 • Combina características del modelo de cascada y el modelo de prototipos, añadiendo el elemento de análisis de riesgo. • Presenta 4 actividades principales: 1. Planeación 2. Análisis de riesgos 1 2 4 3. Ingeniería (desarrollo del producto al siguiente nivel) 4. Evaluación del cliente (C) Pilar Gómez Gil, INAOE 20092011 19 Modelo Espiral 0011 0010 1010 1101 0001 0100 1011 1 2 4 [Pressman 96] (C) Pilar Gómez Gil, INAOE 20092011 20 Modelo de Desarrollo Evolutivo 0011 0010 1010 1101 0001 0100 1011 Tipos de desarrollo evolutivo: • Programación exploratoria. El desarrollo empieza con una parte que está bien entendida. Evoluciona añadiendo nuevas características conforme se proponen. • Prototipos desechables. El objetivo es extender la idea del consumidor. Se experimentan con prototipos en partes no bien entendidas 1 (C) Pilar Gómez Gil, INAOE 20092011 2 4 21 El Proceso Unificado (UP por sus siglas en inglés) 0011 0010 1010 1101 0001 0100 1011 • Desarrollado por Ivan Jacobson, Grady Booch y James Rumbaugh como un marco de referencia para desarrollo de software usando su lenguaje de modelado UML, desarrollado previamente • UP intenta poner juntas las mejores características de los modelos tradicionales de procesos de software implementando en ellos los mejores principios de desarrollo de software ágil (un tipo de marco de referencia para desarrollo de software) (C) Pilar Gómez Gil, INAOE 200922 1 2011 2 4 Flujos de trabajo vs. fases 0011 0010 1010 1101 0001 0100 1011 1 2 4 [Jacobson et al., 2000] (C) Pilar Gómez Gil, INAOE 20092011 23 Fases e Iteraciones en un ciclo 0011 0010 1010 1101 0001 0100 1011 1 2 4 [Jacobson et al., 2000] (C) Pilar Gómez Gil, INAOE 20092011 24 Fases del UP 0011 0010 1010 1101 0001 0100 1011 • Inicio. Incluye comunicación con el usuario y actividades de planeación. Se desarrollo un plan de proyecto, de tipo incremental. Se describen requerimientos fundamentales del negocio a través de Casos de Uso. Se define un bosquejo de la arquitectura general • Elaboración. Incluye actividades de comunicación con el cliente y el modelado del software. Refina los casos de uso y detalla la arquitectura incluyendo 5 vistas del software: modelo de casos de uso, modelo de análisis, modelo de diseño, modelo de implementación y modelo de despliegue o arranque (deployment) 1 (C) Pilar Gómez Gil, INAOE 20092011 2 4 25 Fases del UP (2) 0011 0010 1010 1101 0001 0100 1011 • Construcción. Construcción física del software. Desarrollo de los componentes de software. Se diseñan unidades para prueba • Transición. Incluye los pasos finales de la construcción. Se da el software a los usuarios para pruebas beta. • Producción. El software en uso es monitoreado, se realizan reportes de defectos 1 (C) Pilar Gómez Gil, INAOE 20092011 2 4 26 Fases del UP (3) 0011 0010 1010 1101 0001 0100 1011 • Al mismo tiempo que se llevan a cabo las fases de construcción, transición y producción, es muy probable que ya se haya iniciado la siguiente generación de software (un nuevo incremento). Entonces las fases se puede ejecutar concurrentemente. 1 (C) Pilar Gómez Gil, INAOE 20092011 2 4 27 Modelos del UP 0011 0010 1010 1101 0001 0100 1011 1 2 4 [Jacobson et al., 2000] (C) Pilar Gómez Gil, INAOE 20092011 28 Desarrollo Basado en Componentes 0011 0010 1010 1101 0001 0100 1011 • Aplicable en tecnología orientada a objetos • Técnica Espiral • INGENIERÍA: – – – – – – (C) Pilar Gómez Gil, INAOE 20092011 1 2 4 Identificación de clases candidatas (componentes) Buscar componentes en biblioteca Extraer componentes, si están disponibles Construir componentes si no están disponibles Poner nuevos componentes en la biblioteca Construir la N-estima iteración del sistema 29 BIBLIOGRAFIA 0011 0010 1010 1101 0001 0100 1011 • Roger S. Pressman. Software Engineering. A practitioner approach. Mc Graw Hill, 2002,2005 • Jensen, Randall W. and Charles C. Tonies. Software Engineering. Prentice-Hall. New Jersey 1979 • Jacobson, I. Booch, G. Rumbaugh. J. The Unified Software Development Process. Addison Wesley, 2000. 1 (C) Pilar Gómez Gil, INAOE 20092011 2 4 30