miércoles, 6 de noviembre de 2019

Escenarios - Representación / Elementos - UML

¿Siglas de UML?
El Lenguaje Unificado de Modelado
¿Qué es y que no es UML?
El UML es un lenguaje para modelar, no un método. El UML no asume la noción de lo que es un proceso, el cual constituye una parte importante de un método.
Los tres amigos están trabajando para fusionar sus procesos, y el resultado se llamara Rational Objectory Process.  
Evolución histórica de UML
En la década de 1980, los objetos comenzaron a alejarse de los laboratorios de investigación y dieron sus primeros pasos hacia el mundo “real”.
Los libros clave sobre el análisis orientado a objetos y los métodos de diseño aparecieron entre 1988 y 1992.
Para la comunidad de los métodos orientados a objetos, la gran noticia en la OOPSLA ’94 fue que Jim Rumbaugh había dejado General Electric para unirse a Grady Booch en Rational Software, con la intención de unificar sus métodos.
Para la OOPSLA ’95, Grady y Jim habían preparado la primera descripción pública de su método integrado. La versión 0.8 de la documentación del Método Unificado (Unified Method). De mayor importancia todavía, anunciaron que Rational Software había comprado Objectory y que Ivar Jacobson se uniría al equipo unificado.
Durante 1996, Grady, Jim e Ivar, ahora ampliamente conocidos como los tres amigos, construyeron su método y le pusieron otro nombre: Unified Modeling Language (UML), lenguaje unificado de modelado.
Características de UML
Es un lenguaje: un lenguaje proporciona un vocabulario y las reglas para combinar palabras de ese vocabulario con el objetivo de posibilitar la comunicación.
Es un lenguaje para visualizar: para muchos programadores, la distancia entre pensar en una implementación y transformar el código es casi cero.
Es un lenguaje para especificar: en este contexto, especificar significa construir modelos precisos, no ambiguos y completos.
Es un lenguaje para construir: UML no es un lenguaje de programación visual, pero sus modelos pueden conectarse de forma directa a una gran variedad de lenguajes de programación.
Es un lenguaje para documentar: una organización de software que trabaje bien produce toda clase de artefactos además de código ejecutable.

Bloques que componen a UML
Elementos
Relaciones
Diagramas
¿Cuáles son los 4 aspectos que considera UML?
Especificaciones
Adornos
Divisiones comunes
Mecanismos de extensibilidad
4 tipos de relaciones en UML
Dependencia
Asociación
Generalización
Realización
9 diagramas que comprende UML
Diagrama de clases
Diagramas de objetos
Diagramas de casos de uso
Diagramas de secuencia
Diagramas de colaboración
Diagramas de estados (statechart).
Diagramas de actividades
Diagramas de componentes
Diagrama de despliegue
¿A que se llama arquitectura de un sistema?
La arquitectura es el conjunto de decisiones significativas sobre:
_La organización de un sistema de software.
_La selección de elementos estructurales y sus interfaces a través de los cuales se constituye en sistema.
_Su comportamiento, como se especifica en las colaboraciones entre esos elementos.
_La composición de esos elementos estructurales y de comportamiento en subsistemas progresivamente más grandes.
_El estilo arquitectónico que guía esta organización: los elementos estáticos y dinámicos y sus interfaces, sus colaboraciones y su composición.
¿Qué es un modelo de arquitectura de sistema?
Es una simplificación de la realidad.
Un modelo proporciona los planos de un sistema. Los modelos pueden involucrar planos detallados, así como planos más generales que ofrecen una visión global del sistema en consideración.
Cuántos y cuáles son los modelos de representación en UML
9 modelos.
Modelo del negocio
Modelo del dominio
Modelo de casos de uso
Modelo de análisis (opcional)
Modelo de diseño
Modelo del proceso (opcional)
Modelo de despliegue
Modelo de implementación
Modelo de pruebas
A qué se le llama requerimientos de un sistema
Un requisito es una característica de diseño, una propiedad o un comportamiento de un sistema. Cuando se enuncian los requisitos de un sistema se está estableciendo un contrato entre los elementos externos al sistema y el propio sistema, que establece lo que se espera que haga el sistema.
Quienes intervienen en obtención de los requerimientos del usuario y cuál es la función de cada uno

¿Qué es modelo de casos de uso?
Un caso de uso es una descripción de un conjunto de secuencias de acciones, incluyendo variantes, que ejecuta un sistema para producir un resultado observable de valor para el actor.
¿Cómo se representa la producción de un modelo de caso de uso?
¿Qué es un diagrama de caso de uso?
Un diagrama de casos de uso es un diagrama que muestra un conjunto de casos de uso, actores y sus relaciones.
¿Cuáles son los elementos que componen a un diagrama de caso de uso?
Normalmente, un diagrama de casos de uso contiene:
Casos de uso.
Actores.
Relaciones de dependencia, generalización y asociación.
¿Qué es un actor?, ¿Cuántos tipos de actores hay?
Se emplea el término actor para llamar así al usuario cuando desempeña ese papel con respecto al sistema.
Normalmente, un actor representa un rol que es jugado por una persona, un dispositivo hardware o incluso otro sistema al interactuar con nuestro sistema.
¿Características de los actores?
Los actores solo se pueden conectar a los casos de uso a través de asociaciones. Una asociación entre un actor y un caso de uso indica que el actor y el caso de uso se comunican entre sí, y cada uno puede enviar y recibir mensajes.
¿Qué es un Caso de Uso?
Un caso de uso describe qué hace un sistema (o un subsistema, una clase o una interfaz), pero no especifica cómo lo hace.
¿Qué es un escenario? ¿Tipos de escenarios? Mencione 5 ejemplos.
Un escenario es una secuencia específica de acciones que ilustra un comportamiento. Los escenarios son a los casos de uso lo que las instancias a las clases, es decir, un escenario es básicamente una instancia de un caso de uso.
Tipos:
Escenario principal: El escenario principal representa el flujo exitoso más simple o habitual para el caso de uso.
Escenario alternativo: Son formas alternativas al camino principal de llegar a las post-condiciones del caso de uso.
Son caminos distintos al principal pero que nos permiten de todas formas alcanzar el éxito.
Escenario de excepción: Un escenario de excepción es una secuencia de pasos alternativos a los del camino principal que lleva a que el objetivo del caso de uso NO sea alcanzado, es decir que no se logre llegar a las post-condiciones el sistema.
Son caminos que hacen que el usuario no pueda cumplir con su objetivo.
Ejemplos:
El sistema muestra el formulario de alta de cliente.a.
a.  condición: Faltan ingresar datos de entrada obligatorios.
b. condición: El usuario no tiene permiso de autorización.

Realice una tabla con los títulos: Nombre del actor, Tipo, Descripción y ejemplifique al menos 5 actores y su descripción

Realice una tabla con los títulos: Actor, Dirección, Casos de uso y ejemplifique al menos 5 actores con sus casos de uso

miércoles, 28 de agosto de 2019

PATRONES SOFTWARE


El desarrollo de software es una tarea complicada, la cual depende en gran medida de la experiencia de las personas involucradas, en particular de los desarrolladores.

1. El 80% de los aportes vienen del 20% del personal.

La comprensión del software es uno de los problemas más complicados en la tarea de mantenimiento y evolución.

El hombre durante su historia ha dominado cierta técnica pasando por un proceso:

 Se realizan las operaciones de una manera artesanal. Los expertos aprenden por un proceso de ensayo y error y por transmisión de otros expertos.
 Se crea una ciencia alrededor de la tarea.
 Se desarrollan las técnicas generalmente aceptadas en el área.
 Se logra un conocimiento común sobre cómo aplicar las técnicas. Hay un metalenguaje común ente los expertos.

La sociedad requiere sistemas más complejos y más grandes. Los recursos para desarrollarlos cada vez son más escasos. Debe existir un mecanismo de reutilización.

2. El 80% del esfuerzo está en el 20% del código desarrollado.

Las Tecnologías Orientadas a Objetos son las más utilizadas en los últimos años para el desarrollo de aplicaciones software. Se ha comprobado como este paradigma de programación presenta muchas ventajas.

Uno de los objetivos que se buscan al utilizar esta técnica es conseguir la reutilización. Entre los beneficios que se consiguen con la reutilización están:

1.      Reducción de tiempos.
2.      Disminución del esfuerzo de mantenimiento.
3.      Eficiencia.
4.      Consistencia.
5.      Fiabilidad.
6.      Protección de la inversión en desarrollos.

Este mecanismo de reutilización, según el modelo de Objetos, debe afectar tanto al personal (con una formación constante a lo largo del tiempo) como a los diseños y especificaciones, así como al código fuente (mediante herencia, genericidad...).


Entre los diferentes mecanismos de reutilización están:

 Componentes: elemento de software suficientemente pequeño para crearse y mantenerse, pero suficientemente grande para poder utilizarse.
 Frameworks: bibliotecas de clases preparadas para la reutilización que pueden utilizar a su vez componentes.
 Objetos distribuidos: paradigma que distribuye los objetos de cooperación a través de una red heterogénea y permite que los objetos interoperen como un todo unificado.  
Patrones de diseño

Sin embargo, los mecanismos de reutilización también presentan algunos obstáculos:

1.      El síndrome No Inventado Aquí: los desarrolladores de software no se suelen             fiar de lo que no está supervisado por ellos mismos.
2.      Acceso a las fuentes de componentes y Frameworks.
3.      Impedimentos legales, comerciales o estratégicos.
4.      Formato de distribución de componentes (CORBA, ActiveX, ...).
5.      Dilema entre reutilizar y rehacer.
6.      Existe una inercia personal a los cambios.

Basándonos en la regla de reutilización (“se debe ser consumidor de reutilización antes de ser un productor de reutilización”), este proyecto trata de ser una guía didáctica de la utilización de patrones de diseño en el desarrollo de aplicaciones. Como veremos en los siguientes puntos los patrones de diseño son un mecanismo de reutilización utilizado en la fase de diseño. Para poder comprender la utilización de los patrones se deben tener unos conocimientos fundamentales del modelo de Objetos. Por esta causa se dan por supuestos ciertos conceptos fundamentales de las Tecnologías Orientadas a Objetos (clase, objeto, encapsulación, herencia, polimorfismo, agregación, ...) que se van a utilizar en los siguientes puntos del tutorial de patrones de diseño.

INTRODUCCIÓN A LOS PATRONES

Los patrones como elemento de la reutilización, comenzaron a utilizarse en la arquitectura con el objetivo de reutilizar diseños que se habían aplicado en otras construcciones y que se catalogaron como completos.

Chistopher Alexander fue el primero en intentar crear un formato específico para patrones en la arquitectura. Alexander argumenta que los métodos comunes aplicados en la arquitectura dan lugar a productos que no satisfacen las demandas y requerimientos de los usuarios y son ineficientes a la hora de conseguir el propósito de todo diseño y esfuerzo de la ingeniería: mejorar la condición humana. Alexander describe algunos diseños eternos para tratar de conseguir sus metas. Propone, así, un paradigma para la arquitectura basado en tres conceptos: la calidad, la puerta y el camino.

La Calidad (la Calidad Sin Nombre): la esencia de todas las cosas vivas y útiles que nos hacen sentir vivos, nos da satisfacción y mejora la condición humana.

La Puerta: el mecanismo que nos permite alcanzar la calidad. Se manifiesta como un lenguaje común de patrones. La puerta es el conducto hacia la calidad. 

El Camino (El Camino Eterno): siguiendo el camino, se puede atravesar la puerta para llegar a la calidad.

De este modo el patrón trata de extraer la esencia de ese diseño (lo que se puede llamar “la calidad sin nombre”) para que pueda ser utilizada por otros arquitectos cuando se enfrentan a problemas parecidos a los que resolvió dicho diseño.

Alexander intenta resolver problemas arquitectónicos utilizando estos patrones. Para ello trata de extraer la parte común de los buenos diseños (que pueden ser dispares), con el objetivo de volver a utilizarse en otros diseños.

Christopher Alexander da la siguiente definición de patrón:

“Cada patrón describe un problema que ocurre una y otra vez en nuestro entorno, para describir después el núcleo de la solución a ese problema, de tal manera que esa solución pueda ser usada más de un millón de veces sin hacerlo ni siquiera dos veces de la misma forma”.

Si nos fijamos en las construcciones de una determinada zona rural observaremos que todas ellas poseen apariencias parejas (tejados de pizarra con gran pendiente, etc.), pese a que los requisitos personales por fuerza han debido ser distintos. De alguna manera la esencia del diseño se ha copiado de una construcción a otra, y a esta esencia se pliegan de forma natural los diversos requisitos. Diríase aquí que existe un patrón que soluciona de forma simple y efectiva los problemas de construcción en tal zona.

Se puede utilizar una metáfora textil para explicar lo que es un patrón: es como la pieza que utiliza el sastre a la hora de confeccionar vestidos y trajes. De esta forma este patrón además de contener las especificaciones de corte y confección del producto final, representa a la vez, una parte de ese producto.

En definitiva, se puede definir un patrón como “una solución a un problema en un determinado contexto”.



Patrones de software


Los patrones para el desarrollo de software son uno de los últimos avances de la Tecnología Orientada a Objetos. Los patrones son una forma literaria para resolver problemas de ingeniería del software, que tienen sus raíces en los patrones de la arquitectura. 

Los diseñadores y analistas de software más experimentados aplican de forma intuitiva algunos criterios que solucionan los problemas de manera elegante y efectiva. La ingeniería del software se enfrenta a problemas variados que hay que identificar para poder utilizar la misma solución (aunque matizada) con problemas similares.

Por otra parte, las metodologías Orientadas a Objetos tienen como uno de sus principios “no reinventar la rueda” para la resolución de diferentes problemas. Por lo tanto, los patrones se convierten en una parte muy importante en las Tecnologías Orientadas a Objetos para poder conseguir la reutilización.

La ingeniería del software, tomando conceptos aplicados por primera vez en arquitectura, intenta construir patrones software para la resolución de problemas en dicho campo. Para conseguir esto debe existir una comunicación entre los distintos ingenieros para compartir los resultados obtenidos. Por tanto, debe existir también un esquema de documentación con el objetivo de que la comunicación pueda entenderse de forma correcta. Esta comunicación no se debe reducir a la implementación, ya que únicamente fomenta el uso del “cortar y pegar”. Pueden referirse a distintos niveles de abstracción, desde un proceso de desarrollo hasta la utilización eficiente de un lenguaje de programación.

El objetivo de los patrones es crear un lenguaje común a una comunidad de desarrolladores para comunicar experiencia sobre los problemas y sus soluciones.

Definiciones


Los diferentes autores han dado diversas definiciones de lo que es un patrón software. Veamos a continuación alguna de ellas:

1.      Dirk Riehle y Heinz Zullighoven:
Un patrón es la abstracción de una forma concreta que puede repetirse en contextos específicos.
2.      Otras definiciones más aceptadas por la comunidad software son:
Un patrón es una información que captura la estructura esencial y la perspicacia de una familia de soluciones probadas con éxito para un problema repetitivo que surge en un cierto contexto y sistema.
Un patrón es una unidad de información nombrada, instructiva e intuitiva que captura la esencia de una familia exitosa de soluciones probadas a un problema recurrente dentro de un cierto contexto.
3.      Según Richard Gabriel:
Cada patrón es una regla de tres partes, la cual expresa una relación entre un cierto contexto, un conjunto de fuerzas que ocurren repetidamente en ese contexto y una cierta configuración software que permite a estas fuerzas resolverse por si mismas.
Esta definición es similar a la dada por Alexander: Cada patrón es una relación entre un cierto contexto, un problema y una solución. El patrón es, resumiendo, al mismo tiempo una cosa que tiene su lugar en el mundo, y la regla que nos dice cómo crear esa cosa y cuándo debemos crearla. Es al mismo tiempo una cosa y un proceso; al mismo tiempo una descripción que tiene vida y una descripción del proceso que la generó.

Características de los patrones software


Hay que tener en cuenta que no todas las soluciones que tengan, en principio, las características de un patrón son un patrón, sino que debe probarse que es una solución a un problema que se repite. Para que se pueda considerar un patrón, éste debe pasar por unas pruebas que reciben el nombre de test de patrones. Mientras tanto esa solución recibe el nombre de proto-patrón.

Según Jim Coplien los buenos patrones deben tener las siguientes características:

 Solucionar un problema: los patrones capturan soluciones, no sólo principios o estrategias abstractas.
 Ser un concepto probado: los patrones capturan soluciones demostradas, no teorías o especulaciones.
 La solución no es obvia: muchas técnicas de solución de problemas tratan de hallar soluciones por medio de principios básicos. Los mejores patrones generan una solución a un problema de forma indirecta.
 Describe participantes y relaciones entre ellos: los patrones no sólo describen módulos sino estructuras del sistema y mecanismos más complejos.
 El patrón tiene un componente humano significativo: todo software proporciona a los seres humanos confort o calidad de vida (estética y utilidad).

Los patrones indican repetición, si algo no se repite, no es posible que sea un patrón. Pero la repetición no es la única característica importante. También necesitamos mostrar que un patrón se adapta para poder usarlo, y que es útil. La repetición es una característica cuantitativa pura, la adaptabilidad y utilidad son características cualitativas. Podemos mostrar la repetición simplemente aplicando la regla de tres (en al menos tres sistemas existentes); mostrar la adaptabilidad explicando como el patrón es exitoso; y mostrar la utilidad explicando porque es exitoso y beneficioso.

Así que aparte de la repetición, un patrón debe describir como la solución salda o resuelve sus objetivos, y porque está es una buena solución. Se puede decir que un patrón es donde la teoría y la práctica se juntan para fortalecerse y complementarse, para mostrar que la estructura que describe es útil, utilizable y usada.

Un patrón debe ser útil porque enseña como el patrón que tenemos en nuestra mente puede ser transformado en una instancia del patrón en el mundo real, como una cosa que añade valor a nuestra vida como diseñadores. Un patrón debe ser también utilizable porque muestra como un patrón descrito de una  forma literaria puede ser transformado en un patrón que tenemos en nuestra mente. Y un patrón debe ser usado porque es como los patrones que existen en el mundo real llegan a ser documentados como patrones de una forma literaria.  

Esto potencia una continua repetición del ciclo desde los escritores de patrones, a los lectores de patrones, y a los usuarios de patrones: los escritores documentan los patrones de forma literaria haciéndolos utilizables para los lectores de patrones, quienes pueden recordarlos en sus mentes, lo cual los  hace ser útiles para los diseñadores, quienes pueden  usarlos en el mundo real, y mejorar la calidad de vida de los usuarios.

Clases de patrones software


Existen diferentes ámbitos dentro de la ingeniería del software donde se pueden aplicar los patrones:

1.      Patrones de arquitectura: expresa una organización o esquema estructural fundamental para sistemas software. Proporciona un conjunto de subsistemas predefinidos, especifica sus responsabilidades, e incluye una guía para organizar las relaciones entre ellos.
2.      Patrones de diseño: proporciona un esquema para refinar los subsistemas o componentes de un sistema software, o las relaciones entre ellos. Describe estructuras repetitivas de comunicar componentes que resuelven un problema de diseño en un contexto particular.
3.      Patrones de programación (Idioms patterns): un idioma es un patrón de bajo nivel de un lenguaje de programación específico. Describe cómo implementar aspectos de componentes o de las relaciones entre ellos utilizando las facilidades del lenguaje de programación dado.
4.      Patrones de análisis: describen un conjunto de prácticas que aseguran la obtención de un buen modelo de un problema y su solución.
5.      Patrones organizacionales: describen la estructura y prácticas de las organizaciones humanas, especialmente en las que producen, usan o administran software.

La diferencia entre estas clases de patrones está en los diferentes niveles de abstracción y detalle, y del contexto particular en el cual se aplican o de la etapa en el proceso de desarrollo. Así, los patrones de arquitectura son estrategias de alto nivel que involucran a los componentes, las propiedades y mecanismos globales de un sistema. Los patrones de diseño son tácticas de media escala relacionados con la estructura y el comportamiento de entidades y sus relaciones. No influyen sobre toda la estructura del sistema, pero define micro arquitecturas de subsistemas y componentes. Los patrones de programación son específicos de las técnicas de un lenguaje de programación que afectan a partes pequeñas del comportamiento de los componentes de un sistema. Los patrones de análisis se refieren a la etapa de análisis del ciclo de vida de construcción de software. Los patrones organizacionales describen la estructuración del personal en el desarrollo de software.

También se puede hablar de otros tipos de patrones software, como pueden ser:

1.      Patrones de programación concurrente.
2.      Patrones de interfaz gráfica.
3.      Patrones de organización del código. 
4.      Patrones de optimización de código.
5.      Patrones de robustez de código.
6.      Patrones de la fase de prueba.

Entre las ventajas que se pueden citar de la utilización de patrones están:

1.      Facilitan la comunicación interna.
2.      Ahorran tiempo y experimentos inútiles.
3.      Mejoran la calidad del diseño y la implementación.
4.      Son como “normas de productividad”.
5.      Facilitan el aprendizaje de los paquetes Java.

miércoles, 14 de agosto de 2019

Patrones en el Proceso de Desarrollo de Software



Patrones de Diseño

Java on Line
  /* Ejemplo uso clase Random()/ 


import java.util.Random; public class Programa {       public static void main(String arg[]) {             float a, b, c; 

 Random rnd = new Random(); 

 a = (rnd.nextFloat() * 10);             b = (rnd.nextFloat() * 10);             c = (rnd.nextFloat() * 10); 

   System.out.println(a);                      System.out.println(b);                      System.out.println(c);                } }    

_____________________________________________

import java.util.Random; public class Programa {       public static void main(String arg[]) {             int a, b, c;

            Random rnd = new Random();

            a = rnd.nextInt(101);             b = rnd.nextInt(101);             c = rnd.nextInt(101);           

            System.out.println(a);                      System.out.println(b);                      System.out.println(c);                } }

_________________________________________________

   /* Ejemplo uso clase Random()/ 
import java.util.Random; public class Programa {       public static void main(String arg[]) {             int a, b, c;

            Random rnd = new Random();

       a = (rnd.nextInt(26) + 65);             b = (rnd.nextInt(26) + 65);             c = (rnd.nextInt(26) + 65);

            System.out.println(a);                      System.out.println(b);                      System.out.println(c);                }}


Integración y Uso en Ambientes Propietarios

 HTML - CSS - JAVASCRIPT





viernes, 10 de mayo de 2019

Medición y Métricas del Software




Cada grupo tiene un proyecto, para ello debe explicar las principales métricas de calidad de código e interpretar los resultados de estas métricas sobre sus proyectos a través de la herramienta SonarQube.

  • Dar ejemplos de uso de diversos tipos de métricas (según el proyecto en desarrollo)
  • Describir la utilidad de las métricas de software
  • Explicar la importancia de la medición en los procesos de calidad
  • Diferenciar las principales métricas de productos de software orientados a objetos
  • Formular metas y planes de calidad
  • Explicar la importancia de los datos históricos en los modelos predictivos
  • Aplicar las métricas de software para asegurar la calidad del producto de manera objetiva.
  • Identificar mecanismos de evaluación y adecuación de un proyecto


Buscar otras herramientas de software libre que permitan realizar métricas de software diferentes a las anteriores. (Por lo menos 3 por grupo)

Enviar al email: nestor.anaya@unicienciabga.edu.co

viernes, 26 de abril de 2019

Calidad del Software - Enfoques

Un enfoque actual sobre la calidad del software

Oscar M. Fernández Carrasco1, Delba García Leóny Alfa Beltrán Benavides3
  1. Investigador Agregado. Centro de Desarrollo Informático. SOFTCAL, SIME.
  2. Especialista en Sistemas de Computación.
  3. Aspirante a Investigador.
Uno de los problemas que se afrontan actualmente en la esfera de la computación es la calidad del software. Desde la década del 70, este tema ha sido motivo de preocupación para especialistas, ingenieros, investigadores y comercializadores de softwares, los cuales han realizado gran cantidad de investigaciones al respecto con dos objetivos fundamentales:
  1. ¿Cómo obtener un software con calidad?
  2. ¿Cómo evaluar la calidad del software?
Ambas interrogantes conllevan amplias respuestas, pero están estrechamente ligadas con el concepto de la calidad del software, que es el resultado de la primera y la fuente de la segunda.

¿QUE ES LA CALIDAD DEL SOFTWARE?


La calidad del software es el conjunto de cualidades que lo caracterizan y que determinan su utilidad y existencia. La calidad es sinónimo de eficiencia, flexibilidad, corrección, confiabilidad, mantenibilidad, portabilidad, usabilidad, seguridad e integridad.
La calidad del software es medible y varía de un sistema a otro o de un programa a otro. Un software elaborado para el control de naves espaciales debe ser confiable al nivel de "cero fallas"; un softwarehecho para ejecutarse una sola vez no requiere el mismo nivel de calidad; mientras que un producto de software para ser explotado durante un largo período (10 años o más), necesita ser confiable, mantenible y flexible para disminuir los costos de mantenimiento y perfeccionamiento durante el tiempo de explotación.
La calidad del software puede medirse después de elaborado el producto. Pero esto puede resultar muy costoso si se detectan problemas deriva dos de imperfecciones en el diseño, por lo que es imprescindible tener en cuenta tanto la obtención de la calidad como su control durante todas las etapas del ciclo de vida del software.

¿COMO OBTENER UN SOFTWARE DE CALIDAD?


La obtención de un software con calidad implica la utilización de metodologías o procedimientos estándares para el análisis, diseño, programación y prueba del software que permitan uniformar la filosofía de trabajo, en aras de lograr una mayor confiabilidad, mantenibilidad y facilidad de prueba, a la vez que eleven la productividad, tanto para la labor de desarrollo como para el control de la calidad del software.
La política establecida debe estar sustentada sobre tres principios básicos: tecnológico, administrativo y ergonómico.
El principio tecnológico define las técnicas a utilizar en el proceso de desarrollo del software.
El principio administrativo contempla las funciones de planificación y control del desarrollo del software, así como la organización del ambiente o centro de ingeniería de software.
El principio ergonómico define la interfaz entre el usuario y el ambiente automatizado.
La adopción de una buena política contribuye en gran medida a lograr la calidad del software, pero no la asegura. Para el aseguramiento de la calidad es necesario su control o evaluación.

¿COMO CONTROLAR LA CALIDAD DEL SOFTWARE?


Para controlar la calidad del software es necesario, ante todo, definir los parámetros, indicadores o criterios de medición, ya que, como bien plantea Tom De Marco, "usted no puede controlar lo que no se puede medir".
Las cualidades para medir la calidad del software son definidas por innumerables autores, los cuales las denominan y agrupan de formas diferentes. Por ejemplo, John Wiley define métricas de calidad y criterios, donde cada métrica se obtiene a partir de combinaciones de los diferentes criterios. La Metodología para la evaluación de la calidad de los medios de programas de la CIC, de Rusia, define indicadores de calidad estructurados en cuatro niveles jerárquicos: factor, criterio, métrica, elemento de evaluación, donde cada nivel inferior contiene los indicadores que conforman el nivel precedente. Otros autores identifican la calidad con el nivel de complejidad del software y definen dos categorías de métricas: de complejidad de programa o código, y de complejidad de sistema o estructura.
Todos los autores coinciden en que el software posee determinados índices medibles que son las bases para la calidad, el control y el perfeccionamiento de la productividad.
Una vez seleccionados los índices de calidad, se debe establecer el proceso de control, que requiere los siguientes pasos:
  • Definir el software que va a ser controlado: clasificación por tipo, esfera de aplicación, complejidad, etc., de acuerdo con los estándares establecidos para el desarrollo del software.
  • Seleccionar una medida que pueda ser aplicada al objeto de control. Para cada clase de software es necesario definir los indicadores y sus magnitudes.
  • Crear o determinar los métodos de valoración de los indicadores: métodos manuales como cuestionarios o encuestas estándares para la medición de criterios periciales y herramientas automatizadas para medir los criterios de cálculo.
  • Definir las regulaciones organizativas para realizar el control: quiénes participan en el control de la calidad, cuándo se realiza, qué documentos deben ser revisados y elaborados, etc.
A partir del análisis de todo lo anterior, nuestro Centro se encuentra enfrascado en un proyecto para el Aseguramiento de la Calidad del Software (ACS), válido para cualquier entidad que se dedique a la investigación, producción y comercialización del software, el cual incluye la elaboración de un Sistema de Indicadores de la Calidad del Software, la confección de una Metodología para el Aseguramiento de la Calidad del Software y el desarrollo de herramientas manuales y automatizadas de apoyo para la aplicación de las técnicas y procedimientos del ACS, de forma tal que se conforme un Sistema de Aseguramiento de la Calidad del Software.

CONCLUSIÓN


Lograr el éxito en la producción de software es hacerlo con calidad y demostrar su buena calidad. Esto sólo es posible con la implantación de un Sistema para el Aseguramiento de la Calidad del Software, directamente relacionado con la política establecida para su elaboración y que esté en correspondencia con la definición internacional ISO de calidad, ampliamente aceptada, y por los estándares del grupo ISO 9000.



A partir del material propuesto como lectura: Enfoques de Calidad, identifique los enfoques de calidad expuestos, analice la información recopilada y elabore un cuadro comparativo donde se encuentren los 4 modelos presentados  para evaluar la calidad de productos software y se evidencie por medio del ejercicio comparativo, características, ventajas y desventajas, de cada uno de ellos.

Enviar al email del docente: nestor.anaya@unicienciabga.edu.co