(Mthodologie de Conception des Systmes Electroniques) para la especificacin, diseo e implementacin de sistemas de computacin industriales. Estos sistemas integran tcnicas electrnicas y de computacin y tienen que ver con aplicaciones en varios campos y con complejidades muy variables. Los ejemplos considerados son sistemas de tiempo real para aplicaciones dedicadas; esto significa que cada aplicacin es el sujeto de un desarrollo especial que debe producir directamente un producto industrial operacional que satisface los requerimientos del cliente, costos y fechas lmites. Una metodologa puede ser vista como una caja de herramientas que contiene una variedad de herramientas- modelos, mtodos, soluciones- para ayudar al diseador a hacer su trabajo. Todas las actividades involucradas en traer un producto, sistema o aplicacin desde la definicin de sus requerimientos hasta la finalizacin de las especificaciones de implementacin son consideradas en la metodologa MCSE. Estas actividades son divididas en tres pasos: escritura de las especificaciones, preparacin del diseo funcional y por ltimo la definicin de las especificaciones de la implementacin. Para ilustrar la utilidad del libro, mencionaremos los objetivos de un desarrollo y las dificultades relacionadas. Una metodologa es una respuesta a este problema. 0bjetivos poro un Jesorrollo Consideremos el caso normal del desarrollo de un sistema para un cliente. Otra situacin podra ser el desarrollo de un producto para nuestras propias necesidades. Qu esperamos de un diseador? Varias habilidades esenciales, sumadas a la habilidad tcnica para resolver el problema Satisfacer los requerimientos del cliente: este es un punto fundamental. El cliente, contractualmente financia el desarrollo. Un producto con el cual el diseador se siente satisfecho no necesariamente llenar las expectativas del cliente. Respetar las fechas lmites y costos. Normalmente, un desarrollo es el sujeto de un contrato negociado basado en propuestas que incluyen costos y fechas lmites. Sobre dicha base, el cliente define una estrategia para la compaa, por ejemplo ventas e integracin en una serie de productos. El no respetar las fechas lmites y los costos conduce a gastos extras o a prdida de una parte del mercado, junto con una prdida de credibilidad para el equipo de desarrollo. Satisfacer criterios de calidad. Aparte de la necesidad obvia de que el sistema trabaje adecuadamente, los criterios principales son: producto robusto (confiabilidad, tolerancia a los errores), documentos y producto comprensibles, mantenibilidad para facilitar la correccin de errores remanentes y expansin de las capacidades del sistema. De este modo, la calidad en los sistemas tiene repercusiones en el costo global de todas las operaciones involucradas en el ciclo de vida del producto. BificultoJes en el trobojo Jel JiseoJor El diseador generalmente tiene que enfrentar la pregunta: Cmo debo proceder para desarrollar un sistema especfico en el orden correcto y que satisfaga todas las caractersticas mencionadas? Es fcil notar la complejidad en el trabajo del diseador. Hay tres fuentes de complejidad: primero, la diversidad de tcnicas y recursos que sern usadas, segundo la separacin entre la naturaleza del problema y la naturaleza de la tcnica utilizada, y tercero el rango de los tamaos y complejidades de la aplicacin. Primeramente, los componentes de la implementacin deben ser manejados ampliamente; pero el rango de tcnicas es muy amplio electrnica analgica, electrnica digital y componentes VLSI, ciencia de la programacin y la computacin, industrializacin de los problemas, etc. dado que las tcnicas evolucionan y se diversifican muy rpido, un esfuerzo mayor es continuamente necesario, tan solo para mantenerse informados acerca de las tcnicas. La implementacin de los sistemas tambin requiere una buena comprensin de los mtodos de desarrollo de hardware y software. El FlFCTR0NlCA APllCABA - 201S problema planteado puede requerir experiencia en otros campos procesamiento de seales, telecomunicaciones, algoritmos, fsica, etc. Segundo, el diseador no es el cliente. Por consiguiente, l debe involucrarse en el campo del cliente. Un dilogo es esencial. El objetivo de un sistema es satisfacer los requerimientos del cliente, quien probablemente no es un experto ni en electrnica ni en computacin. Consecuentemente, el diseador debe interpretar los requerimientos lo mejor que pueda, de forma tal que el sistema garantice la satisfaccin. Tercero, con el incremento de la complejidad de la aplicacin, los sistemas no pueden ser desarrollados por una sola persona. Gerencia del proyecto, recursos humanos, organizacin del trabajo en equipos, y sobre todo consistencia de los problemas etc., son requeridos. Debemos notar que los sistemas electrnicos se encuentran en un mercado competitivo. Los nicos sobrevivientes sern buenos productos y compaas competitivas. Con la rpida evolucin de tcnicas y conceptos, un producto industrial debe ser manufacturado tan rpido como sea posible. Costos y criterios de calidad se han vuelto esenciales. Entre un 20 a 30% del esfuerzo de desarrollo debe ser dedicado al anlisis, especificacin y diseo preliminar. Cualquier error durante estas fases conlleva a correcciones muy costosas. Esto ha sido conocido por muchos aos. Sin embargo, las especificaciones son frecuentemente muy mal producidas, resultando en costos exorbitantes de rediseo y modificacin. Por qu? Es culpa de los ingenieros porque ellos no dedican el tiempo suficiente o no realizan el trabajo de anlisis correctamente? Hay otras razones. Primero, pocos ingenieros son entrenados y alentados para analizar sistemas complejos. Segundo, los diseadores no pueden aprender uno o ms mtodos por su cuenta, ya que pocos libros han sido escritos sobre el tema. Finalmente, el leer un libro no es suficiente; ingenieros experimentados deben ser guiados a travs de proyectos si se quiere que ellos adquieran la experiencia apropiada. Cmo cada persona se vuelve competente? Adquiriendo know-how el cual gradualmente es expandido con los nuevos desarrollos. Cada problema contempla ayudas que enriquecen la experiencia del diseador. No debe sorprendernos el notar que el know-how para el desarrollo de sistemas industriales es normalmente especfico para grupos relativamente pequeos y, consecuentemente, los mtodos desarrollados a partir del trabajo colectivo permanecen muy restringidos. Tambin existe una diferencia considerable en los hbitos de trabajo en diferentes compaas, e incluso en diferentes grupos dentro de la misma compaa. El procedimiento ms frecuentemente observado consiste de tres fases: definicin de los requerimientos, diseo e implementacin. Los diseadores usan el documento producido por el cliente directamente, sin un mtodo en particular. Una solucin es producida despus de realizado un anlisis. La solucin puede ser descrita en muchas diferentes formas: diagrama de flujo, diagrama de bloques, uso de lenguajes de alto nivel o cualquier otra forma de descripcin. Muy frecuentemente, soluciones de hardware han sido escogidas explcita o implcitamente para un proyecto dado. Sin embargo, la dependencia de la implementacin sobre el diseo la cual debe existir no es tan obvia como debera ser. No es exageracin notar que la implementacin de soluciones seleccionadas muy frecuentemente tiene un efecto sobre el diseo, en vez de lo contrario. Durante el desarrollo, la separacin de las actividades de implementacin del hardware y el software no es tan obvia tampoco, ya que hay un alto grado de acoplo entre las dos partes. Si no existe una definicin precisa de que debe ser llevado a cabo por cada parte, el trabajo de integracin que consiste en la combinacin de las dos partes requiere de una considerable cantidad de tiempo para un proyecto desarrollado de esta forma. La situacin empeora posteriormente ya que una gran cantidad de tiempo debe ser dedicada en mantenimiento, mejoramiento, modificaciones y correcciones, as como bsqueda de fallas en el sistema. Esta situacin, la cual es resultado de corregir diseo y especificaciones o an errores de definicin del producto, no es viable. FlFCTR0NlCA APllCABA - 201S ventojos Je uno metoJoloqio El diseador tiene muchas tcnicas y herramientas a su disposicin para ayudarle a resolver el problema, pero el todava necesita saber cmo poner estas herramientas en uso. Aunque un procedimiento incremental ha parecido adecuado durante varios aos, el incremento en el nmero de tipos de problemas, la variedad de tcnicas y la complejidad de las herramientas hace necesario contar con mtodos globales para moverse eficientemente desde el problema a una solucin apropiada. Este tipo de procedimiento forma una metodologa. Todos los desarrollos involucran un gran nmero de decisiones. Conocimiento acerca del problema, tcnicas y herramientas forman informacin esencial que ayuda en la toma de decisiones, mientras que un procedimiento conduce a considerar las decisiones en el tiempo. Consecuentemente, cuando se enfrenta un problema, los tres aspectos principales mtodos, tcnicas, herramientas deben ser muy bien comprendidos tal como se muestra en la siguiente figura. Tres aspectos principales en la solucin de un problema La tcnica es el apoyo para la implementacin. Las herramientas son usadas para implementar la tcnica. Los mtodos ayudan a progresar desde el problema hacia una implementacin. Qu podemos esperar de una metodologa? Esta debe: Garanta de obtener un resultado. Esta debe ser suficientemente global para cubrir una variedad de problemas y tcnicas, pero tambin debe ser precisa, eficiente y simple. Facilitar la evaluacin temprana de la viabilidad de la aplicacin, el tiempo y costo del desarrollo. Incrementar la productividad del diseador y la calidad del resultado, alentando produccin automtica mxima de soluciones las cuales por inferencia estarn libres de errores. Incrementar el pensamiento al nivel de diseo; esto debe ser tan independiente como sea posible de la tecnologa para conducir a una mejor comprensin del problema y producir especificaciones ms fcilmente reusables y soluciones generales. Permitir la organizacin y gerencia del proyecto, para manejar desarrollos complejos los cuales requieren la participacin de equipos y varios especialistas. Traduccin: Alejandro A Mndez From Part 1 of: Embedded Real Time Systems: A Specification and Design Methodology de Jean Paul Galvez FlFCTR0NlCA APllCABA - 201S Despus de caracterizar los sistemas en base a sus campos de aplicacin, tcnicas usadas y caractersticas especficas de tiempo real, caracterizaremos el proceso de desarrollo de la aplicacin. No nos adentraremos en todas las razones pobre organizacin, falta de mtodos y procedimientos y planes de integracin, falta de especificaciones, falta de inversin del cliente en el proyecto de porque buenos proyectos no necesariamente son exitosos. El objetivo esencial es expresar cual procedimiento debe seguirse para desarrollar eficientemente un sistema que satisfaga los requerimientos del cliente. Para caracterizar la actividad de desarrollo, esta debe ser primero ubicada en el contexto de la compaa. Un desarrollo es parte de las actividades de un proyecto, y cada proyecto est integrado en un objetivo de la compaa. La obtencin de resultados implica la necesidad de un procedimiento para planificar, organizar y controlar el desarrollo de proyectos. La gerencia de proyectos necesita la modelacin del proceso de desarrollo. El trmino general ciclo de vida de la aplicacin o producto es utilizado para describir este tipo de modelo. Introducido alrededor de 1975, esta clase de modelo es usado como un apoyo para describir los detalles del procedimiento a seguir, y para controlar el mismo. Este captulo demuestra que el desarrollo de un sistema requiere una organizacin ms compleja que simplemente establecer la secuencia de los pasos para la especificacin, el diseo e implementacin. Es ms, el modelo para el desarrollo tambin puede ser usado como base para una metodologa. El modelo propuesto para sistemas electrnicos al final del captulo define el rango para el cual la metodologa MCSE es til. Contexto Jel Jesorrollo El trmino desarrollo es usado aqu para caracterizar todas las actividades tcnicas involucradas para ir desde los requerimientos del usuario hasta el producto industrial que satisface la necesidad. Para la compaa u organizacin responsable del desarrollo, estas actividades forman una parte integral del proyecto. Un proyecto es caracterizado primero por sus objetivos y segundo por su progreso. Este tiene un inicio y un final el cual corresponde con la satisfaccin de los objetivos. Un proyecto tambin interacciona con otras actividades (o proyectos) ya que el mismo necesariamente comparte recursos. La caracterizacin del contexto de un desarrollo consiste en posicionarlo en el contexto de la compaa tal como se muestra en la siguiente figura. La actividad de la compaa en el sentido ms amplio contempla un conjunto de proyectos. El desarrollo de una aplicacin y un sistema es solamente parte de un proyecto. Para realizar sus actividades, la compaa tiene recursos fsicos y humanos los cuales distribuye entre las diferentes actividades. La actividad de desarrollo puede ser mejor caracterizada definiendo que es el proyecto y su gerencia. Un proyecto puede ser caracterizado por su ciclo de vida. Este ciclo comienza mediante una fase de expresin de requerimientos y es completado con una fase de finalizacin. Tres fases intermedias son mostradas en la siguiente figura: definicin del proyecto, planificacin y organizacin, y desarrollo [RUSKIN 82]. FlFCTR0NlCA APllCABA - 201S xpresin de uno necesidod Un proyecto comienza por la necesidad o deseo para satisfacer un objetivo. El objetivo puede variar mucho tanto en naturaleza como en forma. Por ejemplo, puede requerirse desarrollar un sistema para el control de grandes edificios, pero el objetivo puede ser expresado como el deseo de suministrar una ayuda para el control de edificios. Por consiguiente, la primera fase tiene que ver con la expresin de una necesidad para satisfacer objetivos, lo cual lleva a expresar un concepto e identificar restricciones esenciales. Esta fase no provee indicacin alguna acerca de la manera de lograr los objetivos. Diferentes tcnicas pueden ser usadas, particularmente tcnicas de creatividad y anlisis de valor. uefinicin de/ proyecto Esta fase contempla un estudio preliminar del proyecto. Primero, el proyecto es caracterizado por un estudio de factibilidad basado en asunciones acerca de las diferentes formas de alcanzar los objetivos, criterios de decisin, restricciones, obstculos potenciales, recursos, presupuesto y fechas lmites. Segundo, la aproximacin global a ser seguida para satisfacer los objetivos es entonces seleccionada. El paso de definicin del proyecto resulta en una descripcin en suficiente detalle para permitir el desarrollo de una propuesta clara. Todos los aspectos del desarrollo deben ser considerados en la fase de definicin del proyecto, pero no requiere la implementacin del proyecto. P/onificocin y orqonitocin Cuando el proyecto es aceptado, los objetivos, costos y fechas lmites son fijados. La siguiente fase tiene que ver con la planificacin y organizacin del mismo. La planificacin consiste en producir planes detallados identificando tareas, fechas lmites y duracin para cada una, y el presupuesto y recursos necesarios para cada tarea. La organizacin necesaria para ejecutar el proyecto es tambin definida. Esta involucra la identificacin de la calidad, cantidad y duracin de los recursos fsicos y humanos. uesorro//o de/ proyecto Esta fase forma la parte tcnicas del trabajo y conduce a la obtencin de la aplicacin o producto a partir de la definicin de requerimientos. 1erminocin de/ proyecto El objetivo de esta actividad es chequear que el producto final cumple con los objetivos, y siempre y cuando sea posible esta debe tomar lugar a lo largo del desarrollo. Cuando el producto ha sido completado, una aceptacin formal es necesaria para confirmar que el cliente est satisfecho con el resultado. Los recursos son liberados y un reporte financiero es producido al concluir el proyecto. Como se muestra en la figura previa acerca del trabajo de desarrollo, la gerencia del proyecto tiene que ver con las actividades de planificacin y organizacin, y la gerencia y control del desarrollo. La metodologa MCSE no tiene que ver con la gerencia de un proyecto. Ioses Jel Jesorrollo El ciclo de vida de una aplicacin o producto es una representacin puramente descriptiva. Esta divide el proceso de desarrollo en una serie de actividades interrelacionadas, basadas sobre la necesidad inicial para producir un producto operacional. El trmino ciclo es relacionado al hecho de que cualquier producto desarrollado normalmente genera nuevas necesidades. FlFCTR0NlCA APllCABA - 201S Varios modelos han sido producidos. Antes de entrar en detalles sobre la diferencia entre ellos, notaremos que todos tienen en comn las fases esenciales de todo desarrollo. Con unas pocas variaciones en dependencia del autor, distinguimos al menos cinco fases: 1. Definicin o especificacin 2. Diseo 3. Implementacin 4. Produccin 5. Operacin El significado normal de cada una de estas fases es descrita a continuacin. uefinicin y especificocin Un proyecto es generalmente el resultado de una solicitud formulada en la forma de un documento en el cual se describen los requerimientos del cliente. Este documento es llamado definicin de requerimientos. Este es un punto de partida para el equipo de diseo, para expresar una propuesta la cual debe contener todas las especificaciones. Aunque las descripciones en la definicin de requerimientos pueden parecer claras para el cliente, este tipo de documento normalmente contiene pocos detalles, y es consecuentemente inadecuado para caracterizar el proyecto en su totalidad. Consecuentemente, durante la fase de definicin, los objetivos, que debe satisfacer el sistema final, son listados. El propsito es producir una descripcin detallada del comportamiento externo del sistema. Esta descripcin describe funciones a ser realizadas, restricciones que deben ser respetadas, interfaces que sern usadas, y toda la informacin complementaria especificando el tamao del sistema, la velocidad de ejecucin, desempeo y otras caractersticas que deben ser satisfechas, etc. el documento resultante es llamado especificacin de requerimientos. uiseo El trabajo de diseo consiste en ir desde la especificacin de requerimientos a una definicin de implementacin, en otras palabras los documentos necesarios para llevar adelante la implementacin. Inicialmente, el diseador usa directamente las especificaciones para producir una descomposicin en trminos de funciones internas. A medida que las decisiones son tomadas, el refinamiento contina expresando como cada funcin considerada como una caja negra contribuye para alcanzar los objetivos. Este es una vista simplificada, ya que el diseo involucra varias etapas intermedias. En cada etapa, cada requerimiento es transformado en una implementacin correspondiente mediante una secuencia de decisiones. Aunque la descripcin anterior es considerada convencional, particularmente para proyectos de software, etapas intermedias tiles dependen del tipo de problemas siendo procesado. Para la categora de sistemas de tiempo real considerados en el libro, el diseo debe producir una definicin simultnea del hardware y software a ser utilizados (co-diseo de hardware/software). Por consiguiente, el proceso es ms complicado. lmp/ementocin La fase de implementacin tiene que ver con el desarrollo del hardware y software, seguido de la integracin del software en la infraestructura de hardware. Esta implementacin lleva a un sistema operando el cual puede ser reproducido industrialmente y el cual satisface todos los requerimientos. Produccin Esta etapa tiene que ver con la experimentacin sobre un prototipo para evaluar sus caractersticas. La produccin es iniciada despus de la evaluacin. Criterios de industrializacin complementarios son introducidos en esta etapa. Operocin Cuando el producto ha sido producido en masa y vendidos, este va a operacin. La fase de explotacin comienza, lo cual implica mantenimiento. Varios tipos de mantenimiento son posibles: correctivo para eliminar errores residuales, adaptivo para tomar en cuenta nuevos requerimientos, preventivos para incrementar la confiabilidad del sistema. FlFCTR0NlCA APllCABA - 201S Las dos ltimas fases no necesariamente forman parte del proyecto. Sin embargo, sin importar la organizacin, la compaa es siempre responsable. Por ejemplo, otros grupos o departamentos pueden ser responsables por la produccin y mantenimiento de los productos desarrollados. HoJelos Je ciclo Je viJo La descomposicin del proyecto en pasos facilita el control del desarrollo mediante la definicin de objetivos planificables y medibles para ser alcanzados en cada fase. Un modelo preparado para el desarrollo puede por consiguiente ser usado como una base para la gerencia del proyecto. Varios modelos han sido sugeridos para representar el proceso de desarrollo. En las siguientes secciones, describiremos los modelos ms comunes presentados para el desarrollo de software. ********************* Besorrollo Je un sistemo electrnico Despus de analizar unos cuantos modelos para el ciclo de vida del desarrollo de un producto y unos cuantos puntos esenciales que afectan su progreso, consideraremos los detalles del proceso para el desarrollo de sistemas electrnicos para aplicaciones de tiempo real, para caracterizar el modelo del proceso de desarrollo seleccionado por MCSE. Debemos recordar que los sistemas electrnicos estn compuestos de dos partes principales el hardware y el software y que estas dos partes deben ser coherentes para sistemas dedicados. Para manejar la complejidad, un sistema es descrito siguiendo un conjunto de niveles jerrquicos: definicin, descripcin externa, descripcin breve, descripcin detallada. Si vamos a tomar en cuenta estos aspectos, el desarrollo de un proyecto debe ser visto como un conjunto de desarrollos jerrquicos. En la parte superior, las primeras fases tienen que ver con la especificacin y la definicin preliminar del sistema global. Esto implica subsistemas. Cada subsistema corresponde con un rea ms restringida del problema, y es entonces desarrollada en la misma manera, comenzando con su especificacin. Los subsistemas pueden ser desarrollados en paralelo. De este modo, el proceso de desarrollo para un sistema electrnico puede ser mostrado como sigue. La figura muestra que el diseo sigue niveles jerrquicos los cuales varan desde lo funcional a lo fsico. Durante la primera etapa de diseo, un sistema complejo es dividido en subsistemas interconectados. El diseo de cada subconjunto incluye la definicin de las partes correspondientes al hardware y al software. Trabajando desde una especificacin hacia un diseo, la parte del hardware es dividida en un conjunto de funciones o componentes. Los componentes, si ellos existen, son directamente usables, de lo contrario tienen que ser diseados. La jerarqua para el desarrollo del hardware termina cuando todos los componentes seleccionados estn disponibles. La implementacin es entonces posible y el ensamblaje y prueba gradual ascendiendo en la jerarqua. Similarmente, la parte del software es dividida en tareas o mdulos. Cada parte es desarrollada usando un procedimiento de diseo top-down y una programacin estructurada. Los mdulos codificados son probados y posteriormente ensamblados. Unos cuantos comentarios pueden hacerse sobre la presentacin realizada. FlFCTR0NlCA APllCABA - 201S Observando la jerarqua, puede verse que cada implementacin es un componente desarrollado como un elemento independiente el cual puede ser integrado en un ensamblaje ms complejo. Cada componente es desarrollado iterativamente: anlisis, sntesis, verificacin y correccin mediante retroalimentacin cuando sea necesario. Las fases de especificacin, diseo, definicin de la implementacin, ensamblaje y prueba son repetidas para cada constituyente. Por consiguiente, la terminologa especificacin, diseo, implementacin no es relacionada a un nivel de descripcin especfico. Existe mucha confusin acerca de la definicin de estos trminos, particularmente entre especificacin y diseo. Por el momento, consideraremos que una especificacin est relacionada con una vista externa del objeto considerado, mientras que las fases subsecuentes tienen que ver con lo interno, y por consiguiente con la solucin. Aunque el abordaje puede ser global (enfoque de sistema) en la parte superior de la jerarqua, cuando el diseador de un constituyente se mueve hacia abajo en la jerarqua el mismo debe ser ms y ms especialista en un campo especifico o tcnica de implementacin: por ejemplo, diseo de un componente ASIC para filtrado de seales, o el desarrollo de un programa que lleva a cabo una transformacin rpida de Fourier, etc. Los constituyentes pueden ser diseados en paralelo. La restriccin necesaria es que uno debe ser capaz de producir la especificacin para cada componente para permitir su posterior integracin. Un procedimiento bottom-up tambin es posible. Este consiste entonces en producir un constituyente para su posterior uso. En este caso, debe ser posible integrar el componente en un ensamblaje ms amplio. Un sistema solamente se vuelve operacional cuando todos sus constituyentes han sido construidos y probados. El constituyente ms complejo es el sistema mismo. Por consiguiente, la implementacin sigue un proceso bottom-up. Una programacin del proyecto puede ser producida para satisfacer las fechas lmites solamente despus de la descomposicin ha sido llevada a cabo. Consecuentemente, un modelo preciso del proceso de desarrollo es muy til para la planificacin y por consiguiente para la gerencia del proyecto. Traduccin: Alejandro A Mndez From Part 1 of: Embedded Real Time Systems: A Specification and Design Methodology de Jean Paul Galvez