28
02:47 1 de 28 Andrés Djordjalian <[email protected]> Seminario de Sistemas Embebidos Facultad de Ingeniería de la U.B.A. Procesos de Diseño

Procesos de Diseño - indicart.com.ar20de%20Dise%f1o.pdf · 02:47 5de 28 Tendencias Habiendo mejores posibilidades (ej., en los procesos CMOS, el software, la inversión) el mercado

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Procesos de Diseño - indicart.com.ar20de%20Dise%f1o.pdf · 02:47 5de 28 Tendencias Habiendo mejores posibilidades (ej., en los procesos CMOS, el software, la inversión) el mercado

02:47 1 de 28

Andrés Djordjalian <[email protected]>Seminario de Sistemas Embebidos

Facultad de Ingeniería de la U.B.A.

Procesos de Diseño

Page 2: Procesos de Diseño - indicart.com.ar20de%20Dise%f1o.pdf · 02:47 5de 28 Tendencias Habiendo mejores posibilidades (ej., en los procesos CMOS, el software, la inversión) el mercado

02:47 2 de 28

Éxito Técnico vs. Éxito EconómicoComo 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.

Page 3: Procesos de Diseño - indicart.com.ar20de%20Dise%f1o.pdf · 02:47 5de 28 Tendencias Habiendo mejores posibilidades (ej., en los procesos CMOS, el software, la inversión) el mercado

02:47 3 de 28

¿Qué es un Proceso de Diseño?

Artifacts paraimplementar la

solución

Requerimientoinformal (intención de

diseño)

Máscaras • Plan de testeoASIC

Archivos de configuración • Plan de testeo

FPGA

Documentación explicativa, para mantenimiento y futuras mejoras

Todas

Dibujo de las capas, incluyendo info de las perforaciones • Documentación para el armado • Esquemático • BOM (bill ofmaterials)

PCB

Código objetoProcesador

Ejemplos de Artifacts FinalesTecnología de Implementación

Transformación

Page 4: Procesos de Diseño - indicart.com.ar20de%20Dise%f1o.pdf · 02:47 5de 28 Tendencias Habiendo mejores posibilidades (ej., en los procesos CMOS, el software, la inversión) el mercado

02:47 4 de 28

Más Sobre ArtifactsDurante 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.

Compilación de CSíntesis de VHDL

Generación automática de vectores de testeo

Un software convierte representaciones en otras

SimulaciónTesteo de un prototipo

Design-rule check (DRC)Layout vs. schematic (LVS)

Verificación

Dibujar un PCB partiendo de un esquemático

Programar en C a partir de un pseudo-códigoEl diseñador agrega detalles sobre el producto final

EjemplosTipo de Transformación de Artifacts

Page 5: Procesos de Diseño - indicart.com.ar20de%20Dise%f1o.pdf · 02:47 5de 28 Tendencias Habiendo mejores posibilidades (ej., en los procesos CMOS, el software, la inversión) el mercado

02:47 5 de 28

TendenciasHabiendo 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óny 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

Page 6: Procesos de Diseño - indicart.com.ar20de%20Dise%f1o.pdf · 02:47 5de 28 Tendencias Habiendo mejores posibilidades (ej., en los procesos CMOS, el software, la inversión) el mercado

02:47 6 de 28

Ciclo de Vida. Modelo en CascadaEn inglés: Watefall lifecycle.Es el modelo clásico de ciclo de vida de software (las etapas, y sus nombres, pueden variar).

Análisis y Definición de los Requerimientos

Diseño de la Arquitectura del

Sistema

Diseño Detallado

Implementación

Integración y Verificación

Instalación, Operación y

Mantenimiento

Page 7: Procesos de Diseño - indicart.com.ar20de%20Dise%f1o.pdf · 02:47 5de 28 Tendencias Habiendo mejores posibilidades (ej., en los procesos CMOS, el software, la inversión) el mercado

02:47 7 de 28

DefinicionesRequerimientos: “¿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 separadamenteEj.: Hardware y software

Verificación: “¿Funciona como debe?”

Page 8: Procesos de Diseño - indicart.com.ar20de%20Dise%f1o.pdf · 02:47 5de 28 Tendencias Habiendo mejores posibilidades (ej., en los procesos CMOS, el software, la inversión) el mercado

02:47 8 de 28

Ciclo de Vida Tipo “V”

Es una evolución del anterior. En este, la verificación se desglosa en etapas de nivel de abstracción creciente.

Análisis y Definición de los Requerimientos

Diseño de la Arquitectura del

Sistema

Diseño Detallado Testeo de cada unidad (unit test)

Instalación, Operación y

Mantenimiento

Prueba de Aceptación

Prueba de Integración

Implementación de cada unidad

Plan de Pruebas para Cada Unidad

Plan de Pruebasde Integración

Plan de Pruebas deAceptación

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.

Page 9: Procesos de Diseño - indicart.com.ar20de%20Dise%f1o.pdf · 02:47 5de 28 Tendencias Habiendo mejores posibilidades (ej., en los procesos CMOS, el software, la inversión) el mercado

02:47 9 de 28

Tipos de PruebasPrueba 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 systemtesting)

Se testea que el conjunto cumpla los requerimientos.Se lo hace por medio de las interfaces del producto final

• Interfaces al usuario, etc.

Page 10: Procesos de Diseño - indicart.com.ar20de%20Dise%f1o.pdf · 02:47 5de 28 Tendencias Habiendo mejores posibilidades (ej., en los procesos CMOS, el software, la inversión) el mercado

02:47 10 de 28

Ciclo de Vida. Ejemplos

HW (lHW (lóógicagicaa medida)a medida)

HW / SWHW / SW((SoCSoC))

Page 11: Procesos de Diseño - indicart.com.ar20de%20Dise%f1o.pdf · 02:47 5de 28 Tendencias Habiendo mejores posibilidades (ej., en los procesos CMOS, el software, la inversión) el mercado

02:47 11 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.)

Page 12: Procesos de Diseño - indicart.com.ar20de%20Dise%f1o.pdf · 02:47 5de 28 Tendencias Habiendo mejores posibilidades (ej., en los procesos CMOS, el software, la inversión) el mercado

02:47 12 de 28

Nivel de Abstracción Más AltoHay 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: AssemblyHoy: 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

Page 13: Procesos de Diseño - indicart.com.ar20de%20Dise%f1o.pdf · 02:47 5de 28 Tendencias Habiendo mejores posibilidades (ej., en los procesos CMOS, el software, la inversión) el mercado

02:47 13 de 28

Ventajas de Trabajar en Nivel AltoEs 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 solucionaruna falla (ej., en los

requerimientos) creceexponencialmente con la

demora en hacerlo:

Fuente: nasa.gov

Page 14: Procesos de Diseño - indicart.com.ar20de%20Dise%f1o.pdf · 02:47 5de 28 Tendencias Habiendo mejores posibilidades (ej., en los procesos CMOS, el software, la inversión) el mercado

02:47 14 de 28

Modelos Waterfall y “V” en la Práctica

Análisis y Definición de los Requerimientos

Diseño de la Arquitectura del

Sistema

Diseño Detallado

Implementación

Integración y Verificación

Instalación, Operación y

Mantenimiento

Corregirfallas

Corregirfallas

Corregirfallas

Corregirfallas

Corregirfallas

Corregirfallas

Corregirfallas

Corregirfallas

Corregirfallas

Corregirfallas

Corregirfallas

Cambiar un requerimiento

Cambiar un requerimiento

Cambiar un requerimiento

Se acumulan correcciones hacia el final,con la consiguiente incertidumbre

(ej., no se tiene certeza sobre cuántofalta hacer, porque no se sabe

cuánto van a demandarlos bloques azules)

Page 15: Procesos de Diseño - indicart.com.ar20de%20Dise%f1o.pdf · 02:47 5de 28 Tendencias Habiendo mejores posibilidades (ej., en los procesos CMOS, el software, la inversión) el mercado

02:47 15 de 28

Ciclo de Vida Iterativo o Incremental

World Class Systems Engineering, D.K. Hitchins, disponible el 29/11/08 en <http://www.hitchins.net/WCSE.html>

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.

En cada iteración se crea un “prototipo”, cuya complejidad crece con cada cicloComparado con waterfall y V, consigue:

Page 16: Procesos de Diseño - indicart.com.ar20de%20Dise%f1o.pdf · 02:47 5de 28 Tendencias Habiendo mejores posibilidades (ej., en los procesos CMOS, el software, la inversión) el mercado

02:47 16 de 28

Desarrollo Ágil (Agile) de SoftwareParadigma sobre cómo conviene organizar la construcción de softwareBasado en un ciclo de desarrollo incremental

Builds frecuentes, con valor para el usuario, que colaboraactivamente

Focalizado en la adaptabilidadAceptar cambios en los requerimientos, incluso sobre el final del proceso

…y en las personas que integran el equipoComunicación, auto-organización, motivación, trabajo en equipo

Especialmente útil en equipos que no son muy grandesLas metodologías ágiles más populares son:

ScrumProgramación Extrema (Extreme Programming o XP)

• Vamos a dar ejemplos con esta

Page 17: Procesos de Diseño - indicart.com.ar20de%20Dise%f1o.pdf · 02:47 5de 28 Tendencias Habiendo mejores posibilidades (ej., en los procesos CMOS, el software, la inversión) el mercado

02:47 17 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 201014 de estos 35 mencionan las metodologías ágilesTomado en marzo de 2010 de http://www.cutter.com/predictions/2010.html

Encuesta sobre adopción de metodologías ágiles:

Realizada por Methods & Tools, con 512 participantes (232 en 2005), tomado en marzo de 2010 de http://www.methodsandtools.com/dynpoll/oldpoll.php?Agile2

0%10%20%30%40%50%60%70%80%90%

100%

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

Page 18: Procesos de Diseño - indicart.com.ar20de%20Dise%f1o.pdf · 02:47 5de 28 Tendencias Habiendo mejores posibilidades (ej., en los procesos CMOS, el software, la inversión) el mercado

02:47 18 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

Page 19: Procesos de Diseño - indicart.com.ar20de%20Dise%f1o.pdf · 02:47 5de 28 Tendencias Habiendo mejores posibilidades (ej., en los procesos CMOS, el software, la inversión) el mercado

02:47 19 de 28

Demanda de “Embedded Agile”Avisos en indeed.com cuyo texto incluye “embedded”versus los que incluyen “embedded” y “agile”

Page 20: Procesos de Diseño - indicart.com.ar20de%20Dise%f1o.pdf · 02:47 5de 28 Tendencias Habiendo mejores posibilidades (ej., en los procesos CMOS, el software, la inversión) el mercado

02:47 20 de 28

Equipo más grande que intentaron

Equipo más grande con el que tuvieron éxito

Entre 425 profesionales que adoptaron métodos ágiles:

El Equipo XP

Page 21: Procesos de Diseño - indicart.com.ar20de%20Dise%f1o.pdf · 02:47 5de 28 Tendencias Habiendo mejores posibilidades (ej., en los procesos CMOS, el software, la inversión) el mercado

02:47 21 de 28

El Equipo XP (Programación Extrema)“Clientes”

Definen el productoIncluyen 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 defectosSon “optativos”, porque los clientes y programadores pueden cumplir sus funciones

EntrenadoresUn 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

OtrosSi hacen falta: escritores, analistas ISO 9000, etc.

Page 22: Procesos de Diseño - indicart.com.ar20de%20Dise%f1o.pdf · 02:47 5de 28 Tendencias Habiendo mejores posibilidades (ej., en los procesos CMOS, el software, la inversión) el mercado

02:47 22 de 28

Los “Clientes”

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 empresaExpertos de dominio (ej., analistas de negocios, científicos)Diseñadores de interfaces al usuario

Proporción típica: 1 cada 3 programadoresO los necesarios para mantener ocupados a los programadores

El Equipo XP

Page 23: Procesos de Diseño - indicart.com.ar20de%20Dise%f1o.pdf · 02:47 5de 28 Tendencias Habiendo mejores posibilidades (ej., en los procesos CMOS, el software, la inversión) el mercado

02:47 23 de 28

Plan del ReleaseRelease es cada “vendible” que se le entrega al usuario finalSe aconseja que demore unos tres meses como máximoEmpieza 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 releaseObtienen así el release plan

Programación Extrema

Page 24: Procesos de Diseño - indicart.com.ar20de%20Dise%f1o.pdf · 02:47 5de 28 Tendencias Habiendo mejores posibilidades (ej., en los procesos CMOS, el software, la inversión) el mercado

02:47 24 de 28

Plan de la IteraciónEl release se divide en iteraciones

Unas 1 a 3 semanas c/uLuego 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 finalEste 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 historiasLos “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”

Programación Extrema

Page 25: Procesos de Diseño - indicart.com.ar20de%20Dise%f1o.pdf · 02:47 5de 28 Tendencias Habiendo mejores posibilidades (ej., en los procesos CMOS, el software, la inversión) el mercado

02:47 25 de 28

Los “Programadores”Codifican en pares (pair programming)

Habitualmente, en una PC compartida, con teclado y mousepara 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ódigoEl 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-DrivenDevelopment, 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 retornadasComo las pruebas se automatizan, los proyectos necesitan pocos o ningún validador

El Equipo XP

Page 26: Procesos de Diseño - indicart.com.ar20de%20Dise%f1o.pdf · 02:47 5de 28 Tendencias Habiendo mejores posibilidades (ej., en los procesos CMOS, el software, la inversión) el mercado

02:47 26 de 28

Otras Técnicas ImportantesColaboración

El ambiente de trabajo debe ser abierto…con varios pizarrones para intercambiar ideas

• Sugerencia: Sacarles fotos a los diagramas en el pizarrónTodo código es de todos

• Usar un sistema de control de versiones

MétricasComo 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…

Programación Extrema

Page 27: Procesos de Diseño - indicart.com.ar20de%20Dise%f1o.pdf · 02:47 5de 28 Tendencias Habiendo mejores posibilidades (ej., en los procesos CMOS, el software, la inversión) el mercado

02:47 27 de 28

BibliografíaPara ver más: http://www.extremeprogramming.org

Y http://www.agilemodeling.com/ para juntarlo con el próximo tema

Programación Extrema

Practices of an AgileDeveloper; V.Subramanian, A.Hunt

The Art of AgileDevelopment; J.Shore

Extreme ProgrammingExplained; K.Beck

Page 28: Procesos de Diseño - indicart.com.ar20de%20Dise%f1o.pdf · 02:47 5de 28 Tendencias Habiendo mejores posibilidades (ej., en los procesos CMOS, el software, la inversión) el mercado

02:47 28 de 28

Conclusiones1. Para lograr éxito profesional, no podemos

desligarnos del éxito económico de nuestro trabajoPor 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 nivelTrabajemos 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 iterativos5. Aprovechemos las ideas del Desarrollo Ágil de SW

En particular si trabajamos en equipos/empresas chicos/as