martes, 5 de marzo de 2013

Glosario


Método: Camino a segur mediante una serie de operaciones, reglas y procedimientos dirigidos de antemano de manera voluntaria y reflexiva, para alcanzar un determinado fin que puede ser material o conceptual.

Herramienta de software: producto CASE que da soporte a una tarea concreta dentro de las actividades de desarrollo de software. Dicho soporte consistirá en una serie de servicios, cada uno de los cuales automatiza una operación individual.

Procedimiento: en el enfoque de programación es un bloque de instrucciones que realiza un cierto número de operaciones, pero no devuelve valor alguno
En general es un conjunto de acciones u operaciones que tienen que realizarse de la misma forma, para obtener siempre el mismo resultado bajo las mismas circunstancias

Paradigma: La RAE lo define a “paradigma”como derivada de las palabras griegas “mostrar” y “manifestar” y la define como el ejemplo a seguir o entidad ejemplar de un conjunto

Un paradigma de programación: es un modelo básico de construcción de programas. Un modelo que permite producir programas conforme unas directrices específicas, tales como diseñar un programa mediante una secuencia de instrucciones que operan sobre unos datos de entrada y producen un resultado de salida.

Ingeniería de Software: La IEEE la define como la aplicación de un enfoque sistemático, disciplinado y cuantificable al desarrollo, operación y mantenimiento de software, y el estudio de estos enfoques,

Ciencias de la Computación: son aquellas que abarcan las bases teóricas de la información y la computación, así como su aplicación en sistemas computacionales.
Calidad: La Real Academia de la Lengua Española: “Propiedad o conjunto de propiedades inherentes a una cosa que permiten apreciarla como igual, mejor o peor que las restantes de su especie”.

Modelo de procesos: define como solucionar la problemática del desarrollo de sistemas de software.

Proceso de software: define quien hace que, cuando y como para alcanzar cierto objetivo
Es un conjunto de procedimientos o funciones que tienen uno o más objetivos.

Modelos de Procesos

Tabla comparativa de los Modelos de Procesos






Evolución sobre la Ingeniería de Software

Inicialmente la programación de las computadoras era un arte que no disponía de métodos sistemáticos en los que poder basarse para la realización de productos software. Se realizaban sin ninguna planificación.

 Evolución y Perspectivas de la Ingeniería del Software Posteriormente, 

desde mediados de los 60 hasta finales de los 70 se caracterizó por el establecimiento del software como un producto que se desarrollaba para una distribución general. 

En esta época nació lo que se conoce como el mantenimiento del software que se da cuando cambian los requisitos de los usuarios y se hace necesaria la modificación del software. El esfuerzo requerido para este mantenimiento era en la mayoría de los casos tan elevado que se hacía imposible su mantenimiento.

A continuación, surge una etapa que se caracteriza por la aparición de una serie de técnicas como la Programación Estructurada y las Metodologías de Diseño que solucionan los problemas anteriores. A finales de esta etapa aparecen las herramientas CASE, aunque como podemos imaginar eran muy rudimentarias.

Lineamientos generales para la mejora de procesos


Los lineamientos generales que  ayudan a la mejora de procesos se organizan en las siguientes cinco características, mismas que constituyen atributos que indican si la implantación y la institucionalización de un proceso clave es efectivo, repetible y duradero (RUP):

El compromiso para realización: Se refiere a las acciones que la organización debe adoptar para asegurar que el proceso se establezca y sea permanente. Normalmente, abarca el establecimiento de políticas y liderazgo a nivel de la organización.

La capacidad de realización: Es el conjunto de condiciones previas que deben existir en el proyecto, o la organización, para poder aplicar el proceso de desarrollo de software en forma efectiva. Normalmente, considera los recursos, las estructuras de la organización, el entrenamiento y las condiciones previas que deben existir.

Las actividades realizadas: Son los procedimientos necesarios para implantar un área clave del proceso con responsables asignados. Habitualmente, abarcan el establecimiento de planes y procedimientos, la ejecución del trabajo, el seguimiento del mismo, el control de las salidas del proceso, y las acciones correctivas que deben tomarse.

Las mediciones y su análisis: Se refiere a la medición del proceso y al análisis de las mediciones resultantes. Por lo general, son éstas las que ayudan a determinar el estado y la eficacia de las actividades realizadas.

La verificación de la implementación: Son las acciones que se deben realizar para asegurar que las actividades se llevan a cabo de acuerdo con el proceso establecido. Típica mente  abarca las revisiones y las auditorias efectuadas por la alta gerencia, los jefes de proyecto y el grupo encargado de la garantía de calidad de software. 

Calidad del Proceso de Desarrollo de Software

Se puede ver como una colección estructurada de prácticas que describen las características de un proceso efectivo.

Se usa para:
  • Definir las prioridades y objetivos de mejora.
  • Guía para la mejora.
  • Definir un lenguaje común.
Áreas del proceso relacionadas con la gestión de la calidad:
  1. Aseguramiento de la calidad en el proceso y en el producto.
  2. Verificación del proceso.
  3. Validación del proceso.
"El proceso de Software define como se organiza, gestiona, mide, soporta y mejora el desarrollo, independientemente de las técnicas y métodos usados.
(Derniame et al, 1999)"

Antecedentes:

Tanto en el desarrollo de varios proyectos en diferentes dominios de aplicación como en la práctica, se ha comprobado el gran impacto que el proceso de desarrollo de software tiene en el éxito de un proyecto. Pero, sobre todo, en la satisfacción del cliente que utiliza dicho producto.

Así, la certificación de sistemas de calidad se ha convertido en un requisito fundamental  para poder competir con amplias posibilidades de éxito. En términos prácticos, es el requisito de entrada al mercado mundial.

El mejoramiento de procesos  de software usa metodologías prácticas basadas en la experiencia colectiva de la industria de software internacional, tales como CMM, SPICE e ISO9001:2000.

Sin embargo, la aplicación de estos métodos formales, siguiéndolos al pie de la letra, no garantiza el objetivo de mejorar la calidad percibida por el usuario, incluso podría obstaculizarla. De aquí la importancia de evaluar, adaptar, implantar o mejorar los procesos que eleven y garanticen las posibilidades de éxito de un grupo de desarrollo específico, dentro de un entrono particular.

Los tres grandes componentes del desarrollo de productos de software son:

Capital Humano: Incorpora el conocimiento y la experiencia que crea y sostiene la evolución  del producto. Sin el personal competente y experimentado, es imposible crear productos que satisfagan las necesidades de los clientes.

Tecnología: Proporciona la posesión de las tecnologías que sustentan el producto y las herramientas utilizadas en su desarrollo.

Proceso: Es el saber como utilizar el conocimiento del capital humano y la tecnología en forma eficiente para lograr productos de alta calidad que satisfagan las necesidades de los clientes. Ello se engloba en costos y plazos aceptables.

Al considerar que los dos primeros componentes son, cada vez más caros, el proceso de desarrollo de software se hace más critico. Ello se debe a que representa una fuerte inversión en recursos y tiempo. Se ha observado que la construcción del proceso implica una larga incubación, estrechamente ligada a la cultura de la organización, y un enorme esfuerzo de pruebas y errores.

Un proceso inadecuado tiene asociadas graves consecuencias y acarrea costos elevados, esto puede significar la diferencia entre el éxito y el fracaso. De igual forma, es importante destacar que el mejoramiento del proceso de software se basa en el principio de mejoramiento continuo, por que las mejoras de propuestas deben ser graduales y aplicadas, primordialmente, en las áreas de mayor impacto. 

Calidad de un Producto de Software


La calidad de un Producto de  Software es un término bastante difícil de definir, es un concepto un poco escurridizo. 

Cada autor lo enfoca de una forma diferente, en general todos coinciden en que no es sólo un factor el que indica la calidad del mismo, sino que es una mezcla de muchos factores.

Se pueden considerar que un software es de calidad si cumple los siguientes objetivos:

1.- Concordancia del Software con los requerimientos: el cliente desea que el software satisfaga una serie de requisitos o metas iniciales, y si ni siquiera alcanzamos estos objetivos, nuestro producto de software carecerá por completo de calidad.

2.- Desarrollo coherente, aplicando correctamente los criterios de la ingeniería de software: uno de los objetivos de la ingeniería de software es mejorar la calidad. 

Luego, está claro que debemos seguir una metodología correcta y apropiada a nuestro proyecto, si queremos aumentar la calidad del resultado final.

3.- Desarrollo de requerimientos implícitos al proyecto: siempre existen una serie de requerimientos que nuestro cliente no específica, pero que son deseables. Por ejemplo, que nuestro software sea fácil de mantener, que sea fácil de usar, etc, Si no se alcanzas estos requerimientos, nuestro software carecerá de calidad.



domingo, 3 de marzo de 2013

Calidad de un buen Software



La calidad del software es el grado con el que un sistema, componente o proceso cumple los requerimientos especificados y las necesidades o expectativas del cliente o usuario. [IEEE, Std 610-1900]

Concordancia del software producido con los requerimientos explícitamente establecidos, con los estándares de desarrollo prefijados y con los requerimientos implícitos no establecidos formalmente, que desea el usuario. [Pressman, 1998]

Existen algunos Modelos propuestos, los cuales tienen una guia para poder "medir" la calidad del Software, los cuales son el modelo de McCall y el modelo de Boehm que son los más conocidos:

Modelo McCall


El modelo de Jim McCall, desarrollado inicialmente para la Fuerza Aérea de los EE.UU en 1977, es uno de los más renombrados actualmente. 

Busca reducir la brecha entre usuarios y desarrolladores enfocándose en un número de factores de calidad que reflejen las prioridades de ambos. 

El modelo establece una jerarquía de Perspectivas (3), Factores (11), Criterios de Calidad (23) y Métricas (41).


El modelo establece tres perspectivas para definir e identificar la calidad de un producto software:

1. Revisión del producto
      1.1 Mantenibilidad
      1.2 Flexibilidad
      1.3 Verificabilidad

2. Transición del producto
      2.1 Portabilidad
      2.2 Reusabilidad
      2.3 Interoperabilidad

3. Operaciones del producto
     3.1 Corrección 
     3.2 Confiabilidad
     3.3 Eficiencia en ejecución y almacenamiento
     3.4 Integridad
     3.5 Usabilidad

Los 23 criterios de calidad del modelo son: 

1.-Facilidad de operación
2.- Facilidad de comunicación
3.- Facilidad de aprendizaje
4.-Control de accesos
5.- Facilidad de auditoría
6.- Eficiencia en ejecución
7.- Eficiencia en almacenamiento
8.- Precisión
9.-Consistencia
10.- Tolerancia a fallos
11.- Modularidad
12.-Simplicidad
13.- Completitud
14.- Trazabilidad 
15.-Auto descripción 
16.-Capacidad de expansión
17.- Generalidad
18.- Instrumentación
19.- Independencia del Sistema Operativo
20.- Independencia del Hardware
21.-Compatibilidad de comunicaciones
22.- Compatibilidad de datos y 
23.-Consición.


Modelo Boehm


El modelo de Boehm (1978) agrega algunas características a las existentes en el modelo de  McCall y representa una estructura jerárquica de características, cada una de las cuales contribuye a la calidad total.

Consiste en un modelo de descomposición de características de calidad del software en 3 niveles (usos principales, componentes intermedios y componentes primitivos) previos a la aplicación de métricas. 

Este modelo plantea factores 140 de calidad formados por criterios de calidad y métricas respectivas 

El modelo de Boehm tiene como finalidad que a través de la calidad del software, el 
software: (1) realice lo que desea el usuario, (2) utilice recursos informáticos de manera correcta y eficiente, (3) sea fácil de utilizar y aprender; y (4) sea bien diseñado, codificado, probado y mantenido.

Este modelo es similar al de McCall ya que presenta una jerarquía de características, está basado en una amplio rango de características e incorpora 19 criterios que incluyen características de performance del hardware.