Procesos de Diseño. Andrés Djordjalian <andres@indicart.com.ar> Seminario de Sistemas Embebidos Facultad de Ingeniería de la U.B.A.



Documentos relacionados
Desarrollo Ágil y Modelado

Ciclo de vida y Metodologías para el desarrollo de SW Definición de la metodología

DE VIDA PARA EL DESARROLLO DE SISTEMAS

Elementos requeridos para crearlos (ejemplo: el compilador)

Metodologías de diseño de hardware


Manejo de versiones 392

Paula Izaurralde. Especialista en Calidad en ARRIS Argentina. Ayudante en Metodologías Ágiles en el Desarrollo de Software

Testing ágil en las Empresas de Software del. Cluster TIC Villa María

Proceso Unificado de Rational PROCESO UNIFICADO DE RATIONAL (RUP) El proceso de desarrollo de software tiene cuatro roles importantes:

Análisis y Diseño de Aplicaciones

CMM - Capability Maturity Model. Estructura de CMM... Componentes de CMM. Estructura de CMM

6 Anexos: 6.1 Definición de Rup:

De la Integración Continua a la Entrega Continua

FÁBRICA DE SOFTWARE. Presentado por: Ing. Juan José Montero Román Gerente de Fábrica de Software USMP

La medición funcional de software con SCRUM

PRUEBAS DE SOFTWARE TECNICAS DE PRUEBA DE SOFTWARE

INGENIERÍA DEL SOFTWARE

Encuesta sobre utilización de la microelectrónica en la Argentina

3.1 INGENIERIA DE SOFTWARE ORIENTADO A OBJETOS OOSE (IVAR JACOBSON)

Empresa Financiera Herramientas de SW Servicios

PROCEDIMIENTO ESPECÍFICO. Código G Edición 0

CICLO DE VIDA DEL SOFTWARE

Ciclo de vida del Software

Reporte inicial. Metodología

Ingeniería de Software. Pruebas

Certified Scrum Developer (CSD), Módulo 3 y Track Completo

Señor A/P. Lino Bessonart FEMI Presente Ref.: 181/2009

Unidades temáticas de Ingeniería del Software. Fases del proceso de desarrollo 4ª edición (2008)

Planificación en Team Foundation Server 2010

Capítulo 4. Requisitos del modelo para la mejora de la calidad de código fuente

Departamento de Lenguajes y Sistemas Informáticos. Ciclo de vida del software

Ingeniería de Software

+ Cómo ahorrar dinero con Software Quality

CONTENIDO. ACERCA DE SWAT IT Quiénes somos y para qué trabajamos

PROCEDIMIENTO DE PRESTACIÓN DE SERVICIOS TECNOLÓGICOS

Cómo seleccionar el mejor ERP para su empresa Sumario ejecutivo

Introducción. Definición de los presupuestos

Contenidos. Parte I - Introducción Capítulo 1 - Evolución. Capítulo 2 Condiciones de trabajo en el Desarrollo de Software

El Camino Más Rápido hacia Su Éxito Seminarios de National Instruments. Aprendizaje Práctico Nuevas Tecnologías Expertos Técnicos

Servicio de administración de pautas publicitarias en Internet

Propiedad Colectiva del Código y Estándares de Codificación.

Estándares para planes de calidad de software. Escuela de Ingeniería de Sistemas y Computación Desarrollo de Software II Agosto Diciembre 2008

Conceptos básicos de Ingeniería de Software

Karen Giraldo Escobar Graciela Catalina Soto PROYECTO DE GRADO I

Ciclo de vida y Requerimientos de software. Laboratorio de Programación

Gestión de la configuración en el software (SCM) Ingeniería de software Eduardo Ferreira, Martín Solari

Testing. Tipos, Planificación y Ejecución de Pruebas

Qué es Scrum? Basado en el texto Explicando Scrum a mi abuela de Jorge Serrano - MVP Visual Developer - Visual Basic

CICLO DE VIDA DEL SOFTWARE. Una aproximación lógica a la adquisición, el suministro, el desarrollo, la explotación y el mantenimiento del software

1 GLOSARIO. Actor: Es un consumidor (usa) del servicio (persona, sistema o servicio).

1.1 Planteamiento del problema

CRONO SISTEMA DE CONTROL DE PRESENCIA. Software abierto. Distintas opciones para realizar las picadas. Web personal para cada usuario

Planificación, Gestión y Desarrollo de Proyectos

Norma ISO 9001: Sistema de Gestión de la Calidad

SISTEMAS DE INFORMACIÓN II TEORÍA

Profesional Services. Profesional Services. Diseño de Soluciones y Servicios. Página 1

Administración de Centros de Computo. ITIL. MSG.ING. DARWIN CERCADO B dcercado@primma.com.ec

Tema 2. Ingeniería del Software I feliu.trias@urjc.es

Ingeniería de Software

Las 10 preguntas más habituales sobre los Sistemas de Captación de Datos en planta

Hostaliawhitepapers. Las ventajas de los Servidores dedicados. Cardenal Gardoki, BILBAO (Vizcaya) Teléfono:

GUÍA TÉCNICA PARA LA DEFINICIÓN DE COMPROMISOS DE CALIDAD Y SUS INDICADORES

Agile ITIL. Proyectos de Implantación Ágil

Plan de estudios ISTQB: Nivel Fundamentos

Capitulo 3. Desarrollo del Software

Mantenimiento de Sistemas de Información

e-commerce, es hacer comercio utilizando la red. Es el acto de comprar y vender en y por medio de la red.

ANÁLISIS Y GESTIÓN DEL DESARROLLO DE SOFTWARE TEMA 1: INTRODUCCIÓN AL PROCESO SOFTWARE PERSONAL

Metodologías de Desarrollo de Sistemas de Información

Tecnología de la Información. Administración de Recursos Informáticos

Caso Particular: Administración y Control de Proyectos II. Planificación Aprobada. Ejecución y Control. Administración del Cambio

K2BIM Plan de Investigación - Comparación de herramientas para la parametrización asistida de ERP Versión 1.2

UNIDAD 2: Abstracción del Mundo real Al Paradigma Orientado a Objetos

Test de intrusión (Penetration Test) Introducción

TeCS. Sistema de ayuda a la gestión del desarrollo de producto cerámico

Ventajas del software del SIGOB para las instituciones

Presentación de Pyramid Data Warehouse

Unidad III. Software para la administración de proyectos.

Tecnologías de Información y Comunicación II CLASE 10

Modificación y parametrización del modulo de Solicitudes (Request) en el ERP/CRM Compiere.

App para realizar consultas al Sistema de Información Estadística de Castilla y León

Modelos de Ciclo de Vida de Desarrollo de Software en el Contexto de la Industria Colombiana de Software

Implementación de Paquetes

9) UPS s: EN QUE CONSISTEN DE QUE Y COMO PROTEGEN

REGISTRO DE PEDIDOS DE CLIENTES MÓDULO DE TOMA DE PEDIDOS E INTEGRACIÓN CON ERP

Gestión de Equipos de Desarrollo. Max Déboli Director de Desarrollo Lagash MVP Azure

Bechtle Solutions Servicios Profesionales

-OPS/CEPIS/01.61(AIRE) Original: español Página Estructura del programa de evaluación con personal externo

Seminario Electrónico de Soluciones Tecnológicas sobre VPNs de Extranets

Diseño e implementación 15% Instalación y comisionamiento 6% Operación y mantenimiento 15%

Anteproyecto Fin de Carrera

Resumen General del Manual de Organización y Funciones

NUEVAS TENDENCIAS EN LA CALIDAD DEL SOFTWARE IGNACIO BAYUGAR

Internet Information Server

CAPÍTULO 1 Instrumentación Virtual

ITBA - UPM MAGISTER EN INGENIERIA DEL SOFTWARE ANTEPROYECTO DE TESIS

Instituto Nacional de Tecnología Industrial TESTING DE SOFTWARE

Desarrollar el concepto del producto. Asignar requisitos de hardware y software N

Por qué Invertir en Tecnología: Criterios Objetivos para Analizar el Ahorro de Costes de la Inversión

Transcripción:

Procesos de Diseño Andrés Djordjalian <andres@indicart.com.ar> Seminario de Sistemas Embebidos Facultad de Ingeniería de la U.B.A. 02:47 1de 28

Éxito Técnico vs. Éxito Económico Como desarrolladores y amantes de los fierros, frecuentemente nos focalizamos en el éxito técnico El prototipo funciona? El diseño es ingenioso? Sorprende lo que hace? Fue logrado con poco hard? Etc. Pero los proyectos tiene que lograr éxito económico El producto hace lo que demanda nuestro mercado? Lo estamos lanzando a tiempo? Es confiable? Es fácil de modificar, para sacar nuevas versiones? Podemos reutilizar el trabajo en otros diseños? Fueron razonablemente certeras nuestras estimaciones de costos y tiempo de entrega? Para las inversiones, la incertidumbre (o sea, riesgo) es un costo Los temas de esta presentación se focalizan en el éxito económico, por medio de la reducción de riesgos, tiempos y costos, y la mejora eficiente de la calidad. 02:47 2de 28

Qué es un Proceso de Diseño? Requerimiento informal (intención de diseño) Transformación Artifacts para implementar la solución Tecnología de Implementación Procesador PCB FPGA ASIC Todas Ejemplos de Artifacts Finales Código objeto Dibujo de las capas, incluyendo info de las perforaciones Documentación para el armado Esquemático BOM (bill of materials) Archivos de configuración Plan de testeo Máscaras Plan de testeo Documentación explicativa, para mantenimiento y futuras mejoras 02:47 3de 28

Más Sobre Artifacts Durante el proceso, se producen artifacts intermedios Ej.: código C o C++, código VHDL o Verilog, diagramas de bloques, prototipos, vectores de testeo, etc. Diseño es toda transformación de artifacts (o, en una etapa inicial, la transformación de conceptos a artifacts) que nos acerca a una solución implementable Los artifacts son, en su mayoría, representaciones (de parte) del producto final. Tipo de Transformación de Artifacts El diseñador agrega detalles sobre el producto final Un software convierte representaciones en otras Verificación Ejemplos Dibujar un PCB partiendo de un esquemático Programar en C a partir de un pseudo-código Compilación de C Síntesis de VHDL Generación automática de vectores de testeo Simulación Testeo de un prototipo Design-rule check (DRC) Layout vs. schematic (LVS) 02:47 4de 28

Tendencias Habiendo mejores posibilidades (ej., en los procesos CMOS, el software, la inversión) el mercado exige más: Más prestaciones. Flexibilidad ante cambios de requerimientos. Menor tiempo de entrega. Mayor personalización. Todo eso sin comprometer costo, confiabilidad, robustez, etc. Este incremento de la complejidad del trabajo se potencia debido a que: Hay más diseñadores en cada proyecto para coordinar. Habiendo más componentes y líneas de código, la verificación y el testeo se hacen más complicados. Pasan a ocupar la mayor parte del esfuerzo de diseño. Conclusión: El análisis y mejoramiento del proceso tiene importancia creciente La Ing. Electrónica va incorporando técnicas de la Ing. de Software y de la Systems Engineering, destinadas a mejorar los procesos 02:47 5de 28

Ciclo de Vida. Modelo en Cascada Análisis y Definición de los Requerimientos Diseño de la Arquitectura del Sistema En inglés: Watefall life cycle. Es el modelo clásico de ciclo de vida de software (las etapas, y sus nombres, pueden variar). Diseño Detallado Implementación Integración y Verificación Instalación, Operación y Mantenimiento 02:47 6de 28

Definiciones Requerimientos: Qué hace el producto? Expresado sin ambigüedad y de forma verificable Arquitectura: Cómo está hecho? (descripto en el nivel de abstracción más alto) Ej.: Diagrama de bloques; flujo de datos entre estos Implementación: Cómo está hecho? (descripto en nivel de abstracción bajo) Ej.: Código; esquemático; dibujo del circuito impreso Diseño Detallado: Cómo está hecho? (descripto en un nivel de abstracción intermedio) Ej.: Especificación de las interfases; descripción detallada de la operación Integración de módulos diseñados separadamente Ej.: Hardware y software Verificación: Funciona como debe? 02:47 7de 28

Ciclo de Vida Tipo V Instalación, Operación y Mantenimiento Análisis y Definición de los Requerimientos Plan de Pruebas de Aceptación Prueba de Aceptación Diseño de la Arquitectura del Sistema Plan de Pruebas de Integración Prueba de Integración Diseño Detallado Plan de Pruebas para Cada Unidad Testeo de cada unidad (unit test) Es una evolución del anterior. En este, la verificación se desglosa en etapas de nivel de abstracción creciente. Implementación de cada unidad En cada etapa de diseño se crea un plan de pruebas, que es el que guía la etapa de validación que le corresponde. 02:47 8de 28

Tipos de Pruebas Prueba de unidad (unit testing) Se testean unidades individuales de código (software o hardware) separadamente. por medio de sus interfaces, en un lenguaje de programación (C, etc.) Es el primer paso de un enfoque bottom-up de testeo, como el que propone el modelo V. Prueba de integración (integration testing) Se testean los módulos anteriores en conjunto, o sea, una vez conectados entre sí. también por medio de sus interfaces en C u otro lenguaje. Prueba de aceptación (acceptance testing o system testing) Se testea que el conjunto cumpla los requerimientos. Se lo hace por medio de las interfaces del producto final Interfaces al usuario, etc. 02:47 9de 28

Ciclo de Vida. Ejemplos HW / SW (SoC) HW (lógica a medida) 02:47 10 de 28

Embebidos: Esfuerzo en Cada Etapa Tiempo utilizado para cada etapa de proyecto: (2006 State of the Embedded Market Survey: Encuesta a 1217 suscriptos a publicaciones sobre embebidos y visitantes a conferencias.) 02:47 11 de 28

Nivel de Abstracción Más Alto Hay una tendencia a trabajar en nivel más alto y usar más herramientas y lenguajes (incluyendo los de tipo gráfico). Ej., principal lenguaje de programación para embebidos: Ayer: Assembly Hoy: C/C++ Mañana: Model-Driven Development (MDD)? MDD es el diseño basado en modelos gráficos, o de otros tipos cercanos al problema (ej., Simulink, Matlab, UML, LabView) Proyectos de SW embebido: Lenguajes empleados (hasta 2004) / Lenguaje principal (desde 2005) Fuente: http://i.cmpnet.com/embedded/2009/0709_j uly2009/0709esdbarr01sm.gif 02:47 12 de 28

Ventajas de Trabajar en Nivel Alto Es una manera de manejar la complejidad creciente. La tecnología lo permite Porque progresaron las herramientas y los componentes. Se potencia el trabajo en equipo Porque buenos lenguajes evitan malentendidos y facilitan la documentación. Es difícil encontrar profesionales que manejen el dominio del problema y el de la implementación también. Se pueden corregir errores temprano, sin que produzcan más gastos. El Costo de solucionar una falla (ej., en los requerimientos) crece exponencialmente con la demora en hacerlo: Fuente: nasa.gov 02:47 13 de 28

Modelos Waterfall y V en la Práctica Análisis y Definición de los Requerimientos Diseño de la Arquitectura del Cambiar Sistemaun requerimiento Corregir fallas Se acumulan correcciones hacia el final, con la consiguiente incertidumbre (ej., no se tiene certeza sobre cuánto falta hacer, porque no se sabe cuánto van a demandar los bloques azules) Cambiar un requerimiento Diseño Detallado Corregir fallas Cambiar un requerimiento Corregir fallas Implementación Corregir fallas Corregir fallas Integración y Verificación Corregir fallas Corregir fallas Corregir fallas Corregir fallas Instalación, Operación y Corregir fallas Corregir Mantenimiento 02:47 fallas 14 de 28

Ciclo de Vida Iterativo o Incremental En cada iteración se crea un prototipo, cuya complejidad crece con cada ciclo Comparado con waterfall y V, consigue: World Class Systems Engineering, D.K. Hitchins, disponible el 29/11/08 en Flexibilidad ante cambios de requerimientos = más valor para el usuario. Corrección más temprana de errores = menor costo. Mejores métricas de progreso del proyecto = más control (ej., se puede modificar el plan en función del ritmo de avance logrado) = menor riesgo. <http://www.hitchins.net/wcse.html> 02:47 15 de 28

Desarrollo Ágil (Agile) de Software Paradigma sobre cómo conviene organizar la construcción de software Basado en un ciclo de desarrollo incremental Builds frecuentes, con valor para el usuario, que colabora activamente Focalizado en la adaptabilidad Aceptar cambios en los requerimientos, incluso sobre el final del proceso y en las personas que integran el equipo Comunicación, auto-organización, motivación, trabajo en equipo Especialmente útil en equipos que no son muy grandes Las metodologías ágiles más populares son: Scrum Programación Extrema (Extreme Programming o XP) Vamos a dar ejemplos con esta 02:47 16 de 28

Metodologías Ágiles: Creciente interés en el mundo IT Predicting the Year Ahead Un artículo de un blog sobre IT (Cutter Consortium Blog) Le pidieron, a 35 especialistas, predicciones breves sobre el IT del 2010 14 de estos 35 mencionan las metodologías ágiles Tomado en marzo de 2010 de http://www.cutter.com/predictions/2010.html Encuesta sobre adopción de metodologías ágiles: 100% 90% 80% 70% 60% 50% 40% 30% 20% 10% 0% 2005 2008 Adoptaron una para todos los proyectos Adoptaron una para algunos proyectos Adoptaron sólo algunas prácticas Proyecto piloto Investigándolas No las conocen No las usan Las analizaron y rechazaron Realizada por Methods & Tools, con 512 participantes (232 en 2005), tomado en marzo de 02:47 2010 de http://www.methodsandtools.com/dynpoll/oldpoll.php?agile2 17 de 28

Metodologías Ágiles: Su practicidad para el desarrollo de embebidos El software es una parte significativa del esfuerzo del desarrollo de embebidos, mientras que el diseño de hardware se le parece cada vez más Se usan mucho los lenguajes de descripción de HW (ej., VHDL, Verilog) Ganan impulso los de verificación de HW (ej., e, OpenVera) y de modelado a nivel de transacciones (ej. SystemC) Con FPGAs y simuladores, se pueden obtener prototipos frecuentemente (símil compilar). Las metodologías ágiles se centran en la adaptabilidad y el trabajo en equipo, que resultan particularmente útiles en el co-diseño de hardware y software 02:47 18 de 28

Demanda de Embedded Agile Avisos en indeed.com cuyo texto incluye embedded versus los que incluyen embedded y agile 02:47 19 de 28

El Equipo XP Entre 425 profesionales que adoptaron métodos ágiles: Equipo más grande que intentaron Equipo más grande con el que tuvieron éxito 02:47 20 de 28

El Equipo XP (Programación Extrema) Clientes Definen el producto Incluyen un dueño del producto Que es el responsable de la visión del producto Programadores Escriben el código, diseñan la arquitectura, etc. Validadores Investigan, en busca de defectos Son optativos, porque los clientes y programadores pueden cumplir sus funciones Entrenadores Un entrenador de programadores Programador experimentado, para atender consultas, liderar en las decisiones importantes, y evaluar lo que hacen los otros Si hace falta, un administrador de proyecto No es imprescindible porque el equipo se auto-organiza Otros Si hacen falta: escritores, analistas ISO 9000, etc. 02:47 21 de 28

Los Clientes El Equipo XP Son los responsables de establecer los requerimientos del sistema Utilizando las estimaciones de costo que les proveen los programadores Entre los clientes pueden haber: Clientes reales de la empresa Expertos de dominio (ej., analistas de negocios, científicos) Diseñadores de interfaces al usuario Proporción típica: 1 cada 3 programadores O los necesarios para mantener ocupados a los programadores 02:47 22 de 28

Plan del Release Programación Extrema Release es cada vendible que se le entrega al usuario final Se aconseja que demore unos tres meses como máximo Empieza con una planificación, a cargo de los clientes A cada requisito se le llama historia de usuario Ej.: Un usuario que necesita tal cosa, opera el producto de tal manera, obtiene tal respuesta, etc. Casos puntuales y concretos. pero dejando los detalles para después Los programadores los asisten, estimando el esfuerzo (o sea, tiempo) que demoraría cada historia Para que puedan decidir qué dejar para un próximo release Obtienen así el release plan 02:47 23 de 28

Plan de la Iteración Programación Extrema El release se divide en iteraciones Unas 1 a 3 semanas c/u Luego de cada iteración, se tiene un producto demostrable para ser evaluado por los clientes y verificado por los validadores Al principio de cada iteración, los clientes determinan qué historias se van a hacer en ella Empezando por las que son clave; la optimización va al final Este plan puede ser modificado en base a las estimaciones (de costo) de los programadores Queda así establecido lo que hace cada equipo en el resto de la iteración: Los programadores implementan esas historias Los clientes seleccionan y detallan las de la próxima iteración y atienden consultas de los programadores O sea que los clientes reemplazan la documentación pesada Los validadores (si los hay) ponen a prueba los builds que proveen los programadores 02:47 24 de 28

Los Programadores El Equipo XP Codifican en pares (pair programming) Habitualmente, en una PC compartida, con teclado y mouse para c/u, más dos notebooks individuales Para averiguar más, googlear pairing workstation Es una alternativa a la técnica más tradicional: revisión de código El objetivo es lograr un código confiable que pueda ser comprendido por todos Antes de programar cualquier unidad, programan su código de prueba Esto se llama Desarrollo Guíado por Pruebas (Test-Driven Development, o TDD) Para estas pruebas automatizadas utilizan ejemplos preparados por los clientes En C, el código de prueba de una unidad puede consistir de muchas llamadas a ese módulo, con diferentes parámetros, chequeándose las variables retornadas Como las pruebas se automatizan, los proyectos necesitan pocos o ningún validador 02:47 25 de 28

Otras Técnicas Importantes Programación Extrema Colaboración El ambiente de trabajo debe ser abierto con varios pizarrones para intercambiar ideas Sugerencia: Sacarles fotos a los diagramas en el pizarrón Todo código es de todos Usar un sistema de control de versiones Métricas Como métrica de progreso del proyecto, se usa la suma del esfuerzo de las historias ya implementadas y verificadas Y como métrica de lo que resta por hacerse, se usa la suma del esfuerzo de la historias que faltan La cantidad de historias a hacer puede ser ajustada, en función de la velocidad (o sea, progreso / tiempo) que está logrando el equipo Y hay bastantes más prácticas en XP 02:47 26 de 28

Bibliografía Programación Extrema Para ver más: http://www.extremeprogramming.org The Art of Agile Development; J.Shore Practices of an Agile Developer; V.Subramanian, A.Hunt Extreme Programming Explained; K.Beck Y http://www.agilemodeling.com/ para juntarlo con el próximo tema 02:47 27 de 28

Conclusiones 1. Para lograr éxito profesional, no podemos desligarnos del éxito económico de nuestro trabajo Por eso, planifiquemos, y hagamos un esfuerzo por mejorar los procesos de diseño 2. Cuando planifiquemos el diseño, pensemos en qué artifacts necesitamos crear y cómo los vamos a producir Sin subestimar la validación 3. Aprovechemos las ventajas del alto nivel Trabajemos en bajo nivel sólo cuando esté justificado Ej., optimizar una sección de código que ocupa mucho tiempo de ejecución. Usemos esta y otras estrategias para corregir errores lo más temprano posible 4. Consideremos usar ciclos de vida iterativos 5. Aprovechemos las ideas del Desarrollo Ágil de SW En particular si trabajamos en equipos/empresas chicos/as 02:47 28 de 28