sábado, 8 de mayo de 2010

DEFINICIONES IMPORTANTES DE CALIDAD DE SOFTWARE

Es muy importante que se conozca sobre algunas definiciones de CALIDAD DE SOFTWARE que es muy probable que escuchemos de forma muy seguida. Aquí las enumero:

I.- APLICACIONES DISTRIBUIDAS:
Las aplicaciones distribuidas son aplicaciones que están diseñadas como aplicaciones de n niveles. La arquitectura de estas aplicaciones distribuidas favorece el diseño de aplicaciones escalables compartiendo recursos, como bases de datos y componentes empresariales

2.- ESCALABILIDAD:
La escalabilidad de una aplicación requiere una pertenencia equilibrada entre dos dominios distintos, software y hardware.
Para que un sistema sea escalable tiene que cumplir tres condiciones para ajustarse a los cambios:

- Tiene que poder adaptarse a un incremento en el número de usuarios.
- Tiene que poder adaptarse a un incremento en el tamaño de los datos que maneja.
- Tiene que ser mantenible.

Cuanto más fácil sea cumplir estas tres condiciones, más escalable será el sistema. La escalabilidad no es lo mismo que el rendimiento del sistema (performance). Lescalabilidad depende más del diseño de la aplicación que de las tecnologías usadas para implementarla.

La escalabilidad puede avanzar grandes pasos que aumenten la escalabilidad de un dominio sólo para sabotearlos cometiendo errores en el otro. Por ejemplo, la creación de un grupo de servidores Web con equilibrio de carga no beneficiará una aplicación Web que se ha diseñado para ejecutarse un solo equipo. De igual modo, el diseño de una aplicación altamente escalable y su implementación en equipos conectados a una red con poco ancho de bada no controlará bien las cargas pesadas cuando se sature el tráfico en la red.

2.1.- ESCALAR EN VERTICAL:
El escalado en vertical es el término que más se utiliza para lograr escalabilidad utilizando software mejor, más rápido y más caro. El escalado incluye agregar más memoria, más procesadores o procesadores más rápidos o, simplemente, migrar la aplicación a un único equipo más potente. Normalmente, este método permite un aumento en la capacidad sin requerir cambios en el código fuente. Desde el punto de vista administrativo, las cosas permanecen igual puesto que sigue habiendo un único equipo que administrar.

Actualizar un componente de hardware en un equipo sólo mueve el limite de capacidad de procesamiento de un lado a otro. Por ejemplo, una máquina que está al 100 % de uso de la CPU podría mejorar su capacidad agregando otra CPU. Sin embargo, la limitación puede pasar de la CPU a la memoria del sistema. Agregar CPU no aporta rendimiento en un modelo lineal. En su lugar, el rendimiento va disminuyendo cada vez que se agrega un procesador adicional. Para equipos con configuraciones de varios procesadores simétricos (SMP), cada procesador adicional produce una sobrecarga del sistema. Por tanto, un equipo con cuatro procesadores no obtendrá una mejora del 400% en capacidad sobre una versión con un único procesador. Una vez que haya actualizado todos los componentes de hardware al máximo de su capacidad, llegará el momento en que alcance el límite real de la capacidad de procesamiento del equipo. Llegado ese punto, el siguiente paso es escalar en vertical para moverse a otro equipo.


Escalar en vertical conlleva también otros posibles problemas. El uso de un único equipo en el que basar una aplicación crea un único punto de error, lo que disminuye enormemente la tolerancia de errores del sistema. Si bien algunos métodos, como varias fuentes de alimentación, pueden implementar redundancia en un sistema de un único equipo, pueden resultar costosas.

2.2.- ESCALAR EN HORIZONTAL:
Una alternativa a escalar en vertical es escalar en horizontal. Escalar en horizontal aprovecha el ahorro que supone utilizar el hardware de PC activo para distribuir la carga de procesamiento en más de un servidor. Aunque el escalado en horizontal se logra utilizando muchos equipos, la colección funciona esencialmente como un único equipo. Al dedicar varios equipos a una tarea común, mejora la tolerancia de errores de la aplicación. Por supuesto, desde el punto de vista del administrador, escalar en horizontal presenta un desafío mayor de administración debido al mayor número de equipos.

Los desarrolladores y administradores utilizan una gran variedad de técnicas de equilibrio de carga para escalar en horizontal con la plataforma Windows. El equilibrio de carga permite escalar un sitio en horizontal a través de un clúster de servidores, facilitando la adición de capacidad agregando más servidores duplicados. También proporciona redundancia, concediendo al sitio capacidad de recuperación de conmutación por error, de manera que permanece disponible para los usuarios incluso si uno o más servidores fallan (o si es preciso retirarlos del servicio para realizar labores de mantenimiento). El escalado en horizontal proporciona un método de escalabilidad que no se ve mermado por limitaciones de hardware. Cada servidor adicional proporciona una mejora casi lineal de la escalabilidad.
La clave para escalar horizontalmente una aplicación con éxito es la transparencia de ubicación. Si alguna parte del código de la aplicación depende de saber qué servidor está ejecutando el código, no se ha logrado la transparencia de ubicación y será difícil el escalado en horizontal. Esta situación se denomina afinidad de ubicación. La afinidad de ubicación requiere cambios de código para escalar una aplicación en horizontal de un servidor a varios, lo que, en pocas ocasiones, constituye una opción económica. Si diseña la aplicación con transparencia de ubicación en mente, resulta más fácil escalarla en horizontal.


3.- ROBUSTEZ:
Es la capacidad de los productos software de reaccionar apropiadamente ante condiciones excepcionales.
En implementación se cuenta con el mecanismo de excepciones el cual garantiza el correcto flujo de ejecución del código. (Programación por contrato)
Cuando se culmina un software de alta calidad, se presentarán casos o aspectos que no contemplarás y la robustez asegura que no se causarán eventos de índole grave o catastrófica. En detalles técnicos si se presenta errores en tu software, la robustez hará un despliegue de mensajes de error apropiados, en donde se pueda terminar la aplicación de manera limpia y segura para los datos.

4.- PORTABILIDAD:
Es la facilidad con que un sistema software puede ser migrado entre diferentes plataformas hardware o software.

5.- INTEGRIDAD:
Es la característica de un sistema de ser capaz de proteger sus diferentes componentes contra los procesos o elementos que no tengan derecho de acceso a los mismos. La integridad es un factor muy importante en sistemas contables , administrativos y gerenciales ya que de ellos depende el capital de la empresa

6.- COMPATIBILIDAD:
Es la facilidad de combinar diferentes elementos software con el fin de ejecutar una labor en conjunto.

7.- ALTA DISPONIBILIDAD:
Se refiere a la habilidad de la comunidad de para acceder al sistema, consiste en una serie de medidas tendientes a garantizar la disponibilidad del servicio, es decir, asegurar que el servicio funcione durante las veinticuatro horas.

8.- FRONT-END:
Es la parte del que interactúa con el o los usuarios.

9.- BACH-END:
Es la parte que procesa la entrada desde el front-end hasta back-end hace referencia al estado final de un proceso. Contrasta con front-end, que se refiere al estado inicial de un proceso

10.- FAT CLIENT o (Thin Server):
Es el aprovechamiento de datos, donde el cliente ha sido dotado de "inteligencia" y realiza muchos procesamientos locales.
En este esquema de arquitectura el grueso de la aplicación es ejecutada en el cliente, es decir, el nivel de presentación y el nivel de aplicación corren en un único proceso cliente, y el servidor es relegado a realizar las funciones que provee un administrador de base de datos.

11.- THIN CLIENT (Fat Server):
Este es el caso opuesto al anterior, el proceso cliente es restringido a la presentación de la interfaz de usuario, mientras que el grueso de la aplicación corre por el lado del servidor de aplicación. Aquí se posee poco procesamiento local, son más débiles y por supuesto, fáciles de manejar o administrar. La cantidad de datos requeridos por un cliente fat es constante mientras que un cliente más delgado típicamente requerirá de un servidor mayor con mayor capacidad de procesamiento y administración.

No hay comentarios: