viernes, 27 de junio de 2014

Ejemplo de sistema crítico sencillo

Sistema Informático Crítico

Hay muchos tipos de sistemas informáticos críticos, desde sistemas de control  para dispositivos y maquinarias hasta sistemas de información y comercio electrónico. Éstos podrían ser excelentes casos de estudio  para un libro de ingeniería del software, ya que con frecuencia se usan en su desarrollo técnicas avanzadas de ingeniería del software. Sin embargo, comprender  estos  sistemas puede  resultar  muy  difícil,  puesto  que es necesario comprender las características y restricciones del dominio de la aplicación en el que operan.



La diabetes  es una enfermedad relativamente común  en la cual  el cuerpo  humano  no es capaz  de producir  suficiente cantidad  de una hormona  llamada  insulina.  La insulina  metaboliza  la glucosa  en la sangre.  El tratamiento convencional de  la diabetes  comprende inyecciones frecuentes de insulina  fabricada  genéticamente. Los diabéticos miden sus niveles de azúcar  en la sangre  usando  un medidor  externo  y calculan  la dosis  de insulina  que deberían inyectarse.

El problema de este tratamiento es que el nivel  de insulina  en la sangre  no depende  solamente del nivel de glucosa  en la sangre,  sino que también  depende  del momento en el que se inyectó  la insulina.  Esto puede  conducir  a niveles  muy bajos de glucosa  en la sangre  (si hay demasiada insulina)  o niveles  muy  altos de azúcar en la sangre  (si hay muy  poca  insulina). Una bajada  de azúcar  en la sangre  constituye, a corto plazo,  un problema más serio,  ya que puede ocasionar un mal funcionamiento del cerebro de forma temporal  y, en última instancia, provocar  la inconsciencia y la muerte.  A largo plazo, un nivel alto continuado de azúcar en la sangre  puede conducir  a daños en los ojos, en los ríñones,  y problemas de corazón.



Los avances  de hoy en día en el desarrollo de sensores  miniaturizados hacen posible el desarrollo de sistemas  de suministro automático de insulina.  Estos sistemas  monitorizan el nivel de azúcar  en la sangre  y suministran la dosis  adecuada  de insulina  en el momento en el que se necesita.  Los sistemas de suministro de insulina como el mencionado ya existen  para el tratamiento  de pacientes  en hospitales. En el futuro,  será posible  para muchos  diabéticos llevar dichos  sistemas  de forma  permanente adheridos a su cuerpo.

Un sistema  de suministro de insulina  controlado por software  funciona  utilizando un micro sensor incrustado en el paciente  para medir algún  parámetro de la sangre  que sea proporcional al nivel de azúcar.  Dicha información es enviada  al controlador de la bomba.  El controlador calcula el nivel de azúcar y la cantidad  de insulina que se necesita.  A continuación envía señales a una bomba miniaturizada para suministrar la insulina a través de una aguja adherida  permanentemente en el  paciente.

La siguiente Figura  muestra  los componentes y la organización de  la bomba  de  insulina:
Y esta otra figura  muestra  un modelo  de flujo  de datos  que  ilustra  cómo una entrada  de un nivel  de azúcar en la sangre  se transforma en una  secuencia de comandos de control  de la bomba:
Hay dos requerimientos de alto nivel  de confiabilidad para este sistema  de bomba  de insulina:

  1. El sistema  deberá  estar disponible para suministrar insulina cuando  sea necesario.
  2. El sistema  deberá  funcionar de forma  fiable  y suministrar la cantidad correcta de insulina para contrarrestar el nivel  actual  de azúcar  en la sangre.


Un fallo en el sistema  podría,  en principio, provocar que se suministren dosis excesivas de insulina, y esto constituiría una amenaza para la vida del paciente. Es particularmente importante que no se produzcan sobredosis de insulina.



miércoles, 25 de junio de 2014

Modelando requisitos del sistema

Modelos de sistemas

Sistemas Críticos

Introducción a los Sistemas Críticos



Los fallos de funcionamiento del software son relativamente comunes. En la mayoría  de los casos, estos fallos provocan molestias, pero no daños graves ni a largo plazo.  Sin embargo, en algunos sistemas un fallo de funcionamiento puede ocasionar pérdidas económicas significativas, daño físico o amenazas a la vida humana. Estos sistemas se conocen  como sistemas críticos. Los sistemas críticos son sistemas técnicos  o socio-técnicos de los cuales dependen las personas o los negocios. Si estos sistemas no ofrecen  sus servicios de la forma esperada, pueden provocar graves  problemas y pérdidas importantes.


Hay tres tipos principales de sistemas críticos:

  • Sistemas de seguridad críticos: Son sistemas cuyo fallo de funcionamiento puede provocar perjuicio, pérdida de vidas o daños graves al medio ambiente. Un ejemplo de un sistema de seguridad crítico es un sistema de control  para una planta de fabricación de productos químicos.
  • Sistemas de misión críticos: Son sistemas cuyo fallo de funcionamiento puede provocar errores  en algunas  actividades dirigidas por objetivos. Un ejemplo  de un sistema de misión crítico es un sistema de navegación para una nave espacial.
  • Sistemas de negocio críticos: Son sistemas cuyo fallo de funcionamiento puede provocar costes muy elevados para el negocio que utiliza un sistema de este tipo. Un ejemplo de un sistema  de negocio  crítico  es un sistema  de cuentas  bancarias.


La propiedad más importante de un sistema crítico es su confiabilidad. El término confiabilidad fue propuesto por Laprie  (Laprie,  1995) para hacer referencia a las siguientes propiedades relacionadas de los sistemas: disponibilidad, fiabilidad, seguridad y protección. Estas propiedades están enlazadas fuertemente; por lo tanto, tener un único término  para referirse  a todas  ellas tiene  sentido.(Confiabilidad).

Existen  varias  razones  por las que la confiabilidad es la propiedad más importante de los sistemas críticos:

Los sistemas que son no fiables, inseguros o desprotegidos son rechazados a menudo por sus usuarios. Si los usuarios  no confían en un sistema,  se negarán a utilizarlo. Es más , también  rehusarán comprar o utilizar productos de la misma compañía que  produjo  el  sistema  no confiable, puesto  que  creen  que  éstos  tampoco son confiables.

Los costes de los fallos de funcionamiento del sistema pueden ser enormes. En algunas aplicaciones, como un sistema de control  de reactores o un sistema de navegación aérea, el coste  de un fallo en el sistema  es mayor en varios  órdenes  de magnitud que el coste de dicho  sistema  de control.

Los sistemas no confiables pueden provocar pérdida de información. Es muy cara la captura  y mantenimiento de los datos;  algunas  veces cuesta  más que el sistema  informático  que los procesa.  Se tiene que hacer un gran esfuerzo e invertir  mucho  dinero para duplicar  los datos importantes a fin de protegerlos de cualquier corrupción.

El elevado  coste de un fallo de funcionamiento en los sistemas críticos  implica  que se deben usar métodos y técnicas confiables en su desarrollo. Como consecuencia, los sistemas críticos generalmente se desarrollan utilizando técnicas  muy probadas en lugar de técnicas  novedosas que no han sido objeto de una extensa experiencia práctica. En vez de utilizar métodos y técnicas  novedosas, los desarrolladores de sistemas críticos  son conservadores por naturaleza. Prefieren utilizar técnicas  antiguas  cuyas ventajas  e inconvenientes son muy conocidos, en lugar de nuevas  técnicas  que aparentemente son mejores  pero cuyos problemas a largo plazo se desconocen.




Para el desarrollo de sistemas críticos, a menudo se utilizan técnicas de ingeniería del software que por lo general  no son rentables.  Una razón por la que se usan estos  métodos formales es que ayudan  a reducir  la cantidad de pruebas requeridas. Para sistemas críticos, los costes de verificación y validación generalmente son muy elevados más del 50% de los costes  totales  de desarrollo del sistema.


Si bien un número reducido de sistemas se pueden  automatizar completamente, la mayoría de los sistemas críticos  son sistemas socio-técnicos en los que las personas monitorizan y controlan el funcionamiento de dichos  sistemas informáticos. Los costes  de un fallo de funcionamiento de los sistemas críticos  generalmente son tan altos que es necesario contar  con personal adicional en el sistema  que pueda  hacer  frente  a situaciones inesperadas, y que pueda recuperar el funcionamiento normal  del sistema  cuando  las cosas  van mal.

Desde  luego,  a pesar de que los operadores del sistema  pueden  ayudar  a recuperarlo cuando algo va mal. ellos mismos a su vez pueden  generar  problemas si cometen errores. Existen tres tipos de «componentes de sistemas» susceptibles de generar  un fallo en el sistema:

  • El hardware del sistema  puede  fallar debido  a errores  en su diseño,  también debido  a que los componentes fallan  como resultado de errores  de fabricación, o debido  a que dichos componentes  han llegado  al final  de su vida útil.

  • El software del sistema puede fallar debido a errores en su especificación, diseño o implementación.

  • Los operadores del sistema  pueden  provocar  fallos  en el sistema  debido  a un uso incorrecto del mismo.  Así como el hardware y el software son cada vez más fiables,  hoy en día los fallos debidos a un mal uso del sistema  son probablemente la principal causa de fallos de funcionamiento en el sistema.


Estos  fallos  pueden  interrelacionarse. Un  componente hardware que  deja  de  funcionar puede  implicar que los operadores del sistema  tengan  que afrontar una situación inesperada y una carga de trabajo  adicional. Esto hace que los operadores trabajen en estado  de estrés  y las personas que  sufren  estrés  a menudo cometen errores. Esto  puede  ocasionar que  el software falle, lo que supone  más trabajo  para los operadores, más estrés,  y así sucesivamente.

Como resultado de todo lo anterior, es particularmente importante que los diseñadores de los sistemas críticos  adopten una perspectiva holística del sistema  en lugar de centrarse en un único aspecto  del mismo.  SÍ el hardware, el software y las formas  de utilización del sistema se diseñan de forma  separada sin tener en cuenta  los puntos  débiles  potenciales del resto de las partes  del  sistema, entonces será más  probable que  los errores  se produzcan en las interfaces  entre  las distintas partes  del  sistema.


Importancia

¿Por Qué es Importante el Diseño de la Arquitectura del Software?


El diseño de datos nos facilita la representación de los componentes de datos de la arquitectura. 

El diseño arquitectónico se centra en la representación de la estructura de los componentes del software, sus propiedades e interacciones.

  • Facilitan la comunicación entre todas las partes interesadas en el desarrollo de un sistema basado en computadora.
  • Destaca decisiones tempranas de diseño que tendrán un profundo impacto en todo el trabajo de ingeniería del software.
  • Constituye un modelo relativamente pequeño e intelectualmente comprensible de cómo está estructurado el sistema y de cómo trabajan juntos sus componentes




Diseño de Arquitectura de Software

DISEÑO DE ARQUITECTURA DE SOFTWARE


Es la primera etapa técnica del proceso de Ingeniería del Software, consiste en producir un modelo o representación técnica del software que se va a desarrollar.

La arquitectura nos identifica los elementos más importantes de un sistema, así como sus relaciones. Es decir, nos da una visión global del sistema.

¿CÓMO SE INICIA?


El diseño arquitectónico comienza con el diseño de datos y después procede a la derivación de una o más representaciones de la estructura arquitectónica del sistema.

Variables Principales:

  1. Tiempo.
  2. Satisfacción del cliente.
  3. Costo de los desarrollos.


Modelos de Arquitecturas de Software