SEMINARIO DE DESARROLLO DE SISTEMAS

1 Conceptos introductorios.images

1.1 Introducción a los sistemas.

1.1.1 Descripción general.

1.1.2 Tipos.

1.1.3 Clasificación.

1.2 Ciclo de vida de un proyecto de software.

1.2.1 Planificación y gestión del proyecto.

1.2.2 Determinación de requerimientos.

1.2.3 Análisis y diseño.

1.2.4 Programación.

1.2.5 Pruebas e Implementación.

2 Introducción a la ingeniería de software.

2.1 Definición de ingeniería de software.

2.2 Historia de la ingeniería de software.

2.3 Características del software.

2.4 Mitos del software.

2.5 Capas de la ingeniería de software.

2.6 El proceso del software.

2.7 Software de alta calidad.

2.8 Factores de calidad y productividad.

3 Paradigmas de la ingeniería de software.

3.1 El enfoque estructurado.

3.1.1 Diagramas de flujos de datos.

3.1.2 Diccionarios de datos.

3.1.3 Diseño de módulos.

3.1.4 Descomposición en procesos.

3.2 El enfoque orientado a objetos.

3.2.1 Análisis.

3.2.2 Diseño.

4 Modelos de proceso de software.

4.1 Modelo de cascada.

4.2 Modelo de espiral.

4.3 Modelo incremental.

4.4 Proceso de desarrollo unificado.

4.5 Proceso software personal.

5 Técnicas , herramientas y estudios previos.

5.1 Técnicas de recopilación de información.

5.1.1 Entrevista.

5.1.2 Cuestionario.

5.1.3 Recopilación y análisis de documentos.

5.1.4 Observación y técnica “STROBE”.

5.2 Herramientas CASE.

5.2.1 Estructuradas.

5.2.2 Orientadas a Objetos.

5.3 Desarrollo de prototipos.

6 Diseño y arquitectura de productos de software.

6.1 Descomposición modular.

6.2 Arquitecturas de dominio específico.

6.2.1 Diseño de software de arquitectura multiprocesador.

6.2.2 Diseño de software de Arquitectura Cliente/Servidor

6.2.3 Diseño de software distribuido

6.2.4 Diseño de software de tiempo real.

1 Conceptos introductorios.

  • Introducción a los sistemas.

El concepto de sistema en general está sustentado sobre el hecho de que ningún sistema puede existir aislado completamente y siempre tendrá factores externos que lo rodean y pueden afectarlo, por lo tanto podemos referir a Muir citado en Puleo (1985) que dijo: «Cuando tratamos de tomar algo, siempre lo encontramos unido a algo más en el Universo».

Puleo define sistema como » un conjunto de entidades caracterizadas por ciertos atributos, que tienen relaciones entre sí y están localizadas en un cierto ambiente, de acuerdo con un cierto objetivo».

Conjunto de personas, datos y procedimientos que trabajan coordinadamente. Para alcanzar el objetivo de apoyar el funcionamiento de la organización. Haciendo posible que la empresa mantenga contacto con el medio ambiente que la rodea, es decir con: Clientes, Proveedores, Organizaciones Estatales de contralor y recaudación de impuestos y aportes, Funcionarios, Accionistas o propietarios.

En informática existen gran cantidad de sistemas:

 

  • Descripción general.

Un sistema es un grupo de elementos que trabajan o apoyan de manera conjunta para alcanzar un objetivo o fin común. Un sistema debe ser alimentado mediante el ingreso de un recurso (entrada), para poder activar los elementos de los sistemas (proceso) y así  arrojar los resultados requeridos (salida).   A partir de este modelo, los sistemas permiten resolver un sin número de eventualidades, que de ahora en adelante lo llamaremos EPS (viene de Entrada Proceso Salida).Por ejemplo,  el   sistemas digestivo  avisa  la  necesidad  de  alimento  que  deberá ingerir el usuario cuando se requiere energía y nutrientes esenciales.   Una vez ingresado las cantidades de alimento, el organismo se encargará de realizar el proceso   de   digestión,   dando   como   resultado,   la absorción de los nutrientes esenciales   y   el   desecho   del   material   indeseable

1.1.2 Tipos.

Pueden ser físicos o abstractos:

Sistemas físicos o concretos: compuestos por equipos, maquinaria, objetos y cosas reales. El hardware.

Sistemas abstractos: compuestos por conceptos, planes, hipótesis e ideas. Muchas veces solo existen en el pensamiento de las personas. Es el software.
En cuanto a su naturaleza

Pueden cerrados o abiertos:

Sistemas cerrados: no presentan intercambio con el medio ambiente que los rodea, son herméticos a cualquier influencia ambiental. No reciben ningún recurso externo y nada producen que sea enviado hacia fuera. En rigor, no existen sistemas cerrados. Se da el nombre de sistema cerrado a aquellos sistemas cuyo comportamiento es determinista y programado y que opera con muy pequeño intercambio de energía y materia con el ambiente. Se aplica el término a los sistemas completamente estructurados, donde los elementos y relaciones se combinan de una manera peculiar y rígida produciendo una salida invariable, como las máquinas.
Sistemas abiertos: presentan intercambio con el ambiente, a través de entradas y salidas. Intercambian energía y materia con el ambiente. Son adaptativos para sobrevivir. Su estructura es óptima cuando el conjunto de elementos del sistema se organiza, aproximándose a una operación adaptativa.

Sistemas aislados: son aqullos sistemas en los que no se produce intercambio de materia ni energìa.

 

1.1.3 Clasificación.

  • ADMINISTRACIÓN DE TAREAS:
    • MONOTAREA: los que permiten sólo ejecutar un programa a la vez
    • MULTITAREA: los que permiten ejecutar varias tareas o programas al mismo tiempo
  • ADMINISTRACIÓN DE USUARIOS
    • MONOUSUARIO: aquellos que sólo permiten trabajar a un usuario, como es el caso de los ordenadores personales
    • MULTIUSUARIO: los que permiten que varios usuarios ejecuten sus programas a la vez.
  • ORGANIZACIÓN INTERNA O ESTRUCTURA
    • Monolítico
    • Jerárquico
    • Cliente-servidor
  • MANEJO DE RECURSOS O ACCESO A SERVICIOS
    • CENTRALIZADOS: si permite utilizar los recursos de un solo ordenador
    • DISTRIBUIDOS: si permite utilizar los recursos (CPU, memoria, periféricos…) de más de un ordenador al mismo tiempo

 

  • Ciclo de vida de un proyecto de software.
  • El términociclo de vida del softwaredescribe el desarrollo de software, desde la fase inicial hasta la fase final. El propósito de este programa es definir las distintas fases intermedias que se requieren para validar el desarrollo de la aplicación, es decir, para garantizar que el softwarecumpla los requisitos para la aplicación y verificación de los procedimientos de desarrollo: se asegura de que los métodos utilizados son apropiados.

1.2.1 Planificación y gestión del proyecto.

Planificar significa estudiar anticipadamente los objetivos y acciones a desarrollar, y sustentar los actos en métodos, plan o lógica estableciendo los objetivos del proyecto y definiendo los procedimientos adecuados para alcanzarlos.

1.2.2 Determinación de requerimientos.

La determinación de requerimientos es la etapa más importante en el desarrollo de un sistema de información. Comienza después de que el Cliente ha detectado una ausencia, falla o falta de oportunidad de la información o simplemente, luego de que la organización ha determinado un cambio en sus políticas, reglas o tecnologías a aplicar.

1.2.3 Análisis y diseño.

El análisis y diseño orientado a objetos (ADOO) es un enfoque de la ingeniería de software que modela un sistema como un grupo de objetos que interactúan entre sí. Este enfoque representa un domino absoluto en términos de conceptos compuestos por verbos y sustantivos, clasificados de acuerdo a su dependencia funcional.

1.2.4 Programación.

La programación informática o programación algorítmica, acortada como programación, es el proceso de diseñar, codificar, depurar y mantener el código fuente de programas de computadora. El código fuente es escrito en un lenguaje de programación. El propósito de la programación es crear programas que exhiban un comportamiento deseado. El proceso de escribir código requiere frecuentemente conocimientos en varias áreas distintas, además del dominio del lenguaje a utilizar, algoritmos especializados y lógica formal. Programar no involucra necesariamente otras tareas tales como el análisis y diseño de la aplicación (pero sí el diseño del código), aunque sí suelen estar fusionadas en el desarrollo de pequeñas aplicaciones.

1.2.5 Pruebas e Implementación.

Pruebas

Antes de que pueda ser usado el sistema de información debe ser probado. Durante este proceso se debe poner en práctica todas las estrategias posibles para garantizar que el usuario inicial del sistema se encuentre libre de problemas.

La implementación es la última fase del desarrollo de sistemas. Es el proceso de instalar equipos o software nuevo, como resultado de un análisis y diseño previo como resultado de la situación o mejoramiento de la forma de llevar a cabo un proceso automatizado. Al implementar un sistema lo primero que debemos hacer es asegurarnos qué el sistema sea operacional o que funcione de acuerdo a los requerimientos del análisis y permitir que los usuarios puedan operarlos

 

  • Introducción a la ingeniería de software.

Ingeniería es la aplicación sistemática de conocimiento científico en la creación y construcción de soluciones, que satisfacen una buena relación efectividad/precio, de problemas prácticos al servicio de la humanidad. La ingeniería del software es la forma de ingeniería que aplica los principios de las ciencias de la computación y las matemáticas en la obtención de soluciones de los problemas del software que satisfacen una buena relación efectividad/precio.

  • Definición de ingeniería de software.

La ingeniería de software es una disciplina formada por un conjunto de métodos, herramientas y técnicas que se utilizan en el desarrollo de los programas informáticos (software). Esta disciplina trasciende la actividad de programación, que es el pilar fundamental a la hora de crear una aplicación.

  • Historia de la ingeniería de software.

Desde sus inicios en la década de 1940, escribir software ha evolucionado hasta convertirse en una profesión que se ocupa de cómo crear software y maximizar su calidad. La calidad puede referirse a cuán mantenible es el software, su estabilidad, velocidad, usabilidad, comprobabilidad, legibilidad, tamaño, costo, seguridad y número de fallas o «bugs», así como, entre muchos otros atributos, a cualidades menos medibles como elegancia, concisión y satisfacción del cliente. La mejor manera de crear software de alta calidad es un problema separado y controvertido cubriendo el diseño de software, principios para escribir código, llamados «mejores prácticas», así como cuestiones más amplias de gestión como tamaño óptimo del equipo de trabajo, el proceso, la mejor manera de entregar el software a tiempo y tan rápidamente como sea posible, la «cultura» del lugar de trabajo, prácticas de contratación y así sucesivamente. Todo esto cae bajo la rúbrica general de ingeniería de software.

  • Características del software.

Características del Software

El software tiene tres características principales:
1) Características operativas
2) Características de transición
3) Características de revisión

 

  • Mitos del software.
  • Los mitos del software-creencias acerca del software y de los procesos empleados para construirlo- se pueden rastrear hasta los primeros días de la computación. Los mitos tienen ciertos atributos que los convierten en insidiosos.

 

2.5 Capas de la ingeniería de software.

el enfoque de ingeniería del software cuenta con un compromiso organizacional con la calidad porque no es posible incorporar la ingeniería del software en una organización que no está centrada en conseguir calidad.
La ingeniería del software es una tecnología multicapa. Se puede ver como un conjunto de componentes estratificados, que reposan sobre ese enfoque de calidad.

 

2.6 El proceso del software.

Un proceso de desarrollo de software es un conjunto de personas, estructuras de organización, reglas, políticas, actividades y sus procedimientos, componentes de software, metodologías, y herramientas utilizadas o creadas específicamente para definir, desarrollar, ofrecer un servicio, innovar y extender un producto de software.

2.7 Software de alta calidad.

Implementamos soluciones de alto valor agregado mediante la transformación de las ideas y necesidades de nuestros clientes. Hacemos más eficiente la automatización de los procesos de negocio y funcionalidades identificadas por nuestros especialistas.

2.8 Factores de calidad y productividad.

La calidad de un sistema, aplicación o producto es tan bueno como los requisitos que describen el problema, el diseño que modela la solución, el código que conduce a un programa ejecutable y las pruebas que ejercitan el software para detectar errores. Un buen ingeniero del software utiliza mediciones que evalúan la calidad del análisis y los modelos de diseño, el código fuente y los casos de prueba que se han creado al aplicar la ingeniería del software.

En las dos décadas pasadas, se definieron un juego de factores de calidad como los primeros pasos hacia el desarrollo de la calidad del software.
Estos factores evalúan el software desde tres puntos de vista distintos:

· Operación del producto (utilizándolo).
· Revisión del producto (cambiándolo).
· Transición del producto (modificándolo para que funcione en un entorno diferente)

 

3.0 Paradigmas de la ingeniería de software.

Esta ingeniería trata con áreas muy diversas de la informática y de las Ciencias de la Computación, tales como construcción de compiladores, Sistemas Operativos, o desarrollos Intranet/Internet, abordando todas las fases del ciclo de vida del desarrollo de cualquier tipo de Sistema de Información y aplicables a infinidad de áreas (negocios, investigación científica, medicina, producción, logística, banca, control de tráfico, meteorología, derecho, Internet Intranet, etc.).

Una definición precisa aun no ha sido contemplada en los diccionarios, sin embargo se pueden citar las enunciadas por algunos de los más prestigiosos autores:

  • 1 – Ingeniería de Software es el estudio de los principios y metodologías para el desarrollo y mantenimiento de sistemas software (Zelkovitz, 1978)
  • 2 – Ingeniería de software es la aplicación práctica del conocimiento científico al diseño y construcción de programas de computadora y a la documentación asociada requerida para desarrollar, operar y mantenerlos. Se conoce también como Desarrollo de Software o Producción de Software ( Bohem, 1976).
  • 3 – Ingeniería de Software trata del establecimiento de los principios y métodos de la ingeniería a fin de obtener software de modo rentable, que sea fiable y trabaje en máquinas reales (Bauer, 1972).
  • 4 – Es la aplicación de un enfoque sistemático, disciplinado y cuantificable al desarrollo, operación y mantenimiento del software; es decir, la aplicación de la ingeniería al software (IEEE, 1993).
    • El enfoque estructurado.

En el Enfoque Estructurado se usan los DFD (Diagrama de Flujo de Datos) como principal herramienta para entender al sistema antes de plasmarlo a código fuente. DFD es un diagrama en el que participan procesos (métodos), flujo de datos (argumentos) y archivos (Base de datos). Hay de diferentes niveles dependiendo la complejidad del sistema que se analiza, hablando de lenguajes tiene muchas diferencia con la orientada a objetos, un mínimo cambio en el código puede llegar alterar al resto del programa cosa que en la orientada a objetos eso no sucede lo cual es una ventaja porque así no se pierde tiempo en arreglar cosas ya hechas. Una desventaja es que una porción de código en lenguaje estructurado es difícil que pueda servir en otros proyectos, esto si es habitual en lenguaje orientada a objetos, con solo importar clases ya hechas se escribe menos código y se ahorra tiempo.

  • Diagramas de flujos de datos.

Un diagrama de flujo de datos o DFD (sus siglas en español e inglés), se utiliza para hacer varias cosas entre ellas trabajos y tareas. Es una representación gráfica del flujo de datos a través de un sistema de información

  • Diccionarios de datos.

En un diccionario de datos se encuentra la lista de todos los elementos que forman parte del flujo dedatos en todo el sistema. Los elementos más importantes son flujos de datos, almacenes de datosy procesos. El diccionario guarda los detalles y descripciones de todos estos elementos.

  • Diseño de módulos.

Fundamentos del Diseño II Módulo y Estructura

El Módulo Es un elemento adoptado como unidad de medida para determinar las proporciones entre las diferentes partes de una composición y que se repite sistemáticamente en el espacio.

 Los Módulos son formas idénticas o similares que aparecen más de una vez en un diseño.

 La presencia de módulos tiende a unificar el diseño.

 Los módulos pueden ser descubiertos fácilmente y deben de ser simples o si no se perdería el efecto de repetición.

 Repetición de módulos Si utilizamos la misma forma más de una vez usamos la repetición. Este es el método mas sencillo de diseño, esta suele aportar una inmediata sensación de armonía

 

 

  • Descomposición en procesos.

Un equipo de software debería tener un grado significativo de flexibilidad en la elección del paradigma de ingeniería del software que resulte mejor para el proyecto y de las tareas de ingeniería del software que conforman el modelo de proceso una vez elegido.

  • El enfoque orientado a objetos.

se basa en cuatro principios que constituyen la base de todo desarrollo orientado a objetos. Estos principios son: la Abstracción, el Encapsulamiento, la Modularidad y la Herencia.

  • Análisis.

Un Análisis es un estudio profundo de un sujeto, objeto o situación con el fin de conocer sus fundamentos, sus bases y motivos de su surgimiento, creación o causas originarias. Un análisis estructural comprende el área externa del problema, en la que se establecen los parámetros y condiciones que serán sujetas a un estudio más específico, se denotan y delimitan las variables que deben ser objeto de estudio intenso y se comienza el análisis exhaustivo del asunto de la tesis.

  • Diseño.

se define como el proceso previo de configuración mental, «prefiguración», en la búsqueda de una solución en cualquier campo. Utilizado habitualmente en el contexto de la industria, ingeniería, arquitectura, comunicación y otras disciplinas creativas.

  • Modelos de proceso de software.

El proceso es el conocimiento incorporado, y puesto que el conocimiento esta inicialmente disperso, el desarrollo de software implícito, latente e incompleto en gran medida es un proceso social de aprendizaje. El proceso es un dialogo en el que se reúne el conocimiento y se incluye en el software para convertirse en software. El proceso proporciona una iteración entre los usuarios y los diseñadores, entre los usuarios y las herramientas de desarrollo, y entre los diseñadores y las herramientas de desarrollo (tecnología). Es un proceso interactivo donde la herramienta de desarrollo se usa como medio de comunicación, con cada iteración del dialogo se obtiene mayor conocimiento

  • Modelo de cascada.

En Ingeniería de software el desarrollo en cascada, también llamado modelo en cascada (denominado así por la posición de las fases en el desarrollo de esta, que parecen caer en cascada “por gravedad” hacia las siguientes fases), es el enfoque metodológico que ordena rigurosamente las etapas del proceso para el desarrollo de software, de tal forma que el inicio de cada etapa debe esperar a la finalización de la etapa anterior. Al final de cada etapa, el modelo está diseñado para llevar a cabo una revisión final, que se encarga de determinar si el proyecto está listo para avanzar a la siguiente fase. Este modelo fue el primero en originarse y es la base de todos los demás modelos de ciclo de vida

  • Modelo de espiral.

El desarrollo en espiral es un modelo de ciclo de vida del software definido por primera vez por Barry Boehm en 1986, utilizado generalmente en la Ingeniería de software. Las actividades de estemodelo se conforman en una espiral, en la que cada bucle o iteración representa un conjunto de actividades

 

  • Modelo incremental.

Desarrollo del incremento: posteriormente se realizan las tareas previstas y se desarrollan los incrementos establecidos en la etapa anterior. Validación de incrementos: al término de cada iteración, los responsables de la gestión del proyecto deben dar por buenos los incrementos que cada una de ellas ha arrojado.

  • Proceso de desarrollo unificado.

El Proceso Unificado de Desarrollo Software o simplemente Proceso Unificado es un marco dedesarrollo de software que se caracteriza por estar dirigido por casos de uso, centrado en la arquitectura y por ser iterativo e incremental.

  • Proceso software personal.

El proceso personal de software, PSP, es un conjunto de prácticas disciplinadas para la gestión del tiempo y mejora de la productividad personal de los programadores o ingenieros de software, en tareas de desarrollo y mantenimiento de sistemas, mediante el seguimiento del desempeño predicho frente al desempeño real. Está alineado y diseñado para emplearse en organizaciones con modelos de procesos CMMI o ISO 15504. Fue propuesto por Watts Humphrey en 1995 y estaba dirigido a estudiantes. A partir de 1997 con el lanzamiento del libro «An introduction to the Personal Software Process» se dirige ahora a ingenieros juniors.

  • Técnicas , herramientas y estudios previos.

Los analistas utilizan una variable de métodos a fin de recopilar los datos sobreuna situación existente, como entrevistas, cuestionario, inspección de registrosy observación. Cada uno tiene ventajas y desventajas. Generalmente, seutilizan dos o tres para complementar el trabajo de cada una y ayudar aasegurar una investigación completa

  • Técnicas de recopilación de información.

Observacion: es el registro visual de lo ocurrente en un situación real, clasificando y considerando los acontecimientos pretienetes de acuerdo con algún esquema previsto y según el problema que se estudia. La encuesta: es un método por el cual se colecta información de los sujetos bajo estudio mediante, la redacción de opiniones, actitudes o sugerencias. La encuesta comprende dos modalidades de aplicasion que son; la entrevista y el cuestionario. Entrvista: es una forma de conversación y no una Interrogacion. Cuestionario: es el método que utiliza un instruento o formulario impreso, destinado a obtener respuestas sobre el problema en estudio y que el investigado o consultado llena por si mismo.

es una forma de conversación y no una Interrogacion. Cuestionario: es el método que utiliza un instruento o formulario impreso, destinado a obtener respuestas sobre el problema en estudio y que el investigado o consultado llena por si mismo.

 

 

 

Cuestionario: es el método que utiliza un instruento o formulario impreso, destinado a obtener respuestas sobre el problema en estudio y que el investigado o consultado llena por si mismo.

  • Recopilación y análisis de documentos.

a recopilación documental es un instrumento o técnica de investigación social cuya finalidad es obtener datos e información a partir de documentos escritos y no escritos, susceptibles de ser utilizados dentro de los propósitos de una investigación en concreto.  Constituye una tarea ardua y laboriosa y puede resultar, en algunas ocasiones, un desgaste innecesario de energías, especialmente cuando no se ha seleccionado debidamente el material conforme al problema o aspecto que se desea estudiar.

  • Observación y técnica “STROBE”.

ESTRUCTURADA DEL AMBIENTE (STROBE)

Para que el analista de sistemas aprecie la forma en que los gerentes caracterizan su trabajo se usan las entrevistas y cuestionarios, tal como se dijo anteriormente. Sin embargo la observación permite que el analista vea de primera mano cómo los gerentes recopilan, procesan, comparten y usan la información para hacer que el trabajo se realice.

“El método para la observación estructurada del ambiente es llamado STROBE. Es sistemático debido a que:

(1) proporciona una metodología estándar y una clasificación estándar para el análisis de los elementos organizacionales que influencian la toma de decisiones

(2) permite que otros analistas de sistemas apliquen el mismo marco de trabajo analítico a la misma organización

(3) limita el análisis a la organización a como existe durante la etapa actual de su ciclo de vida. ” Kendall & Kendall

 

  • Herramientas CASE.

Las herramientas CASE (Computer Aided Software Engineering, Ingeniería de Software Asistida por Computadora) son diversas aplicaciones informáticas o programas informáticos destinadas a aumentar la productividad en el desarrollo de software reduciendo el costo de las mismas en términos de tiempo y de dinero

La configuración, control y gestión se realiza de forma centralizada, lo que nos permite tener una gestión desasistida  de las soluciones

  • Orientadas a Objetos.
  • Laprogramación orientada a objetos (POO, u OOP según sus siglas en inglés) es un paradigma de programación que viene a innovar la forma de obtener resultados. Los objetos manipulan los datos de entrada para la obtención de datos de salida específicos, donde cada objeto ofrece una funcionalidad especial.
  • Muchos de los objetos pre-diseñados de loslenguajes de programación actuales permiten la agrupación en bibliotecas o librerías, sin embargo, muchos de estos lenguajes permiten al usuario la creación de sus propias bibliotecas.
  • Está basada en varias técnicas, incluyendoherencia, cohesión, abstracción, polimorfismo, acoplamiento y encapsulamiento.
  • Su uso se popularizó a principios de ladécada de 1990. En la actualidad, existe una gran variedad de lenguajes de programación que soportan la orientación a objetos.

 

5.3 Desarrollo de prototipos.

Definición: Prototipos es un proceso en el que un grupo de trabajo modelo o prototipo se desarrolla con el fin de probar los diversos aspectos de diseño como las características, las ideas, la viabilidad, funcionalidad, rendimiento y producción.

6 Diseño y arquitectura de productos de software.

Se refieren a técnicas de ingeniería para crear un portafolio de sistemas de software similares, a partir de un conjunto compartido de activos de software, usando un medio común de producción” (Krueger, 2006) es un conjunto de sistemas de software que comparten un conjunto común y gestionado de aspectos que satisfacen las necesidades específicas de un segmento de mercado o misión y que son desarrollados a partir de un conjunto común de activos fundamentales [de software] de una manera prescrita” Clements and Northrop, 2002 consiste de una familia de sistemas de software que tienen una funcionalidad común y alguna funcionalidad variable

6.1 Descomposición modular.

El diseño modular propone dividir el sistema en partes diferenciadas y definir sus interfaces.

Sus ventajas: claridad, reducción de costos y reutilización

Los pasos a seguir son:

  1. Identificar los módulos
  2. Describir cada módulo
  3. Describir las relaciones entre módulos

Una descomposición modular debe poseer ciertas cualidades mínimas para que se pueda considerar suficiente validad.

 

  1. Independencia funcional
  2. Acoplamiento
  3. Cohesión
  4. Comprensibilidad
  5. Adaptabilidad

 

 

6.2 Arquitecturas de dominio específico.

El reto para el diseño es diseñar el software y hardware para proporcionarcaracterísticas deseables a los sistema distribuidos y, al mismo tiempo, minimizarlos problemas propios a estos sistemas.

Es necesario comprender las ventajas y desventajas de las diferentes arquitecturas de sistemas distribuidos. Aquí se tratandos tipos genéricos de arquitecturas de sistemas distribuidos:

Arquitectura cliente-servidor. En este caso el sistema puede ser visto como unconjunto de servicios que se proporcionan a los clientes que hacen uso de dichos servicios. Los servidores y los clientes se tratan de forma diferente en estos sistemas

 

6.2.1 Diseño de software de arquitectura multiprocesador.

Este sistema consiste de varios procesos que pueden ejecutarse sobre procesadores diferentes (aunque no es necesario), es muy común en sistemas grandes de tiempo real, recolectan información, toman decisiones, con la afirmación, y envían señales a los actuadores que modifican el entorno del sistema.

El uso de múltiples procesadores mejora el rendimiento y adaptabilidad del sistema. La distribución de los procesos de los procesadores se puede predeterminar o puede estar bajo el control de un despachador que decide cuales procesos ubicar en cada procesador. Los sistemas de múltiples procesos no son necesariamente sistemas distribuidos. Si se dispone de más de un procesador, entonces se puede implementar la distribución, pero los diseñadores del sistema no siempre consideran forzosamente cuestiones de distribución mediante el proceso de diseño.

Un ejemplo para este tipo de sistemas es un modelo simplificado de un sistema de control de tráfico. Un conjunto de sensores distribuidos recogen información sobre le flujo de tráfico y la procesan localmente antes de enviarla a una sala de control. Los operadores toman decisiones usando esta información y dan instrucciones a un proceso de control de diversas luces de tráfico

6.2.2 Diseño de software de Arquitectura Cliente/Servidor

Esta arquitectura consiste básicamente en un cliente que realiza peticiones a otro programa (el servidor) que le da respuesta. Aunque esta idea se puede aplicar a programas que se ejecutan sobre una sola computadora es más ventajosa en un sistema operativo multiusuario distribuido a través de una red de computadoras.

En esta arquitectura la capacidad de proceso está repartida entre los clientes y los servidores, aunque son más importantes las ventajas de tipo organizativo debidas a la centralización de la gestión de la información y la separación de responsabilidades, lo que facilita y clarifica el diseño del sistema.

 

6.2.3 Diseño de software distribuido

es un modelo para resolver problemas de computación masiva utilizando un gran número de ordenadores organizados en clústeres incrustados en una infraestructura de telecomunicaciones distribuida.

6.2.4 Diseño de software de tiempo real.

Las computadoras se utilizan para controlar una amplia variedad de sistemas que van desde maquinas domesticas  sencillas hasta plantas enteras de fabricación. Estas computadoras interactuan directamente con dispositivos de hardware. El software de dichos sistemas es software de tiempo real embebido que debe reaccionar a eventos generados por el hardware y emitir señales  de control de respuesta a estos eventos. Esta embebido a sistemas de hardware mas grandes y debe responder, en tiempo real a eventos del entorno del sistema. Los sistemas de tiempo real embebidos son diferentes de otros tipos de sistemas de software. Su correcto funcionamiento depende de que el sistema responda a los eventos dentro de un corto intervalo de tiempo.se puede definir un sistema en tiempo real

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Escuela comercial de la ciudad de México

Trabajo final

 

Seminario de desarrollo de sistemas

Q63-a

Gabriel Urrutia barrera

Alejandra Tzompantzi