martes, 20 de mayo de 2014

¿Que es la calidad del software?

¿Que es la calidad del software?

La calidad del software es una preocupación a la que se dedican muchos esfuerzos. Sin embargo, el software casi nunca es perfecto. Todo proyecto tiene como objetivo producir software de la mejor calidad posible, que cumpla, y si puede supere las expectativas de los usuarios.

¿Qué es una herramienta case?

¿Qué es una herramienta case?


Las herramientas CASE (Computer Aided Software Engineering, Ingeniería de Software Asistida por Computadora) son diversas aplicaciones informáticas destinadas a aumentar la productividad en el desarrollo de software reduciendo el costo de las mismas en términos de tiempo y de dinero. Estas herramientas pueden ayudar en todos los aspectos del ciclo de vida de desarrollo del software en tareas como el proceso de realizar un diseño del proyecto, cálculo de costos, implementación de parte del código automáticamente con el diseño dado, compilación automática, documentación o detección de errores entre otras.

Métodos de ingeniería de software


°métodos de ingeniería de software

Son los pasos a seguir para conseguir un software confiable y que cumpla las necesidades y parámetros de calidad necesarios para una empresa
Método del ciclo de vida clásico
Investigación preliminar
Aclaración de la solicitud
Estudio de factibilidad
Factibilidad técnica.
Factibilidad económica.
Factibilidad operacional:
Aprobación de la solicitud 
Determinación de los requisitos del sistema.
Diseño del sistema. (Diseño lógico)
Desarrollo de software (diseño físico).
Prueba de sistemas.
Implantación y evaluación.
Evaluación operacional
Impacto organizacional
Desempeño del desarrollo

Aseguramiento de la calidad


¿A qué se refiere el aseguramiento de la calidad?

El aseguramiento de la calidad (conocido también por el anglicismo Quality Assurance) es el conjunto de actividades planificadas y sistemáticas aplicadas en un Sistema de Calidad para que los requisitos de calidad de un producto o servicio sean satisfechos. Entre estas actividades se encuentran la medición sistemática, la comparación con estándares, el seguimiento de los procesos, todas actividades asociadas con bucles de realimentación de información. Estas actividades contribuyen a la prevención de errores, lo cual se puede contrastar con el Control de Calidad, que se centra en las salidas del proceso.

Principales herramientas CASE del mercado y su uso

Principales herramientas CASE del mercado y su uso


HERRAMIENTAS DE LA INGENIERÍA DE LA INFORMACIÓN.
Estas herramientas CASE modelan la información de negocios cuando ésta se transfiere entre distintas entidades organizativas en el seno de una compañía. El objetivo primordial de las herramientas de esta categoría consiste en representar objetos de datos de negocios, sus relaciones, y ayuda a comprender mejor la forma en que fluyen estos objetos de datos entre distintas zonas de negocio en el seno de la compañía. Estas herramientas proporcionan una ayuda importante cuando se diseñan nuevas estrategias para los sistemas de información y cuando los métodos y sistemas no satisfacen las necesidades de la organización.
MODELADO DE PROCESOS Y HERRAMIENTAS DE ADMINISTRACIÓN.
Se utilizan para representar los elementos clave del proceso de modo que sea posible entenderlo mejor. Estas herramientas también pueden proporcionar vínculos con descripciones de procesos que ayuden a quienes estén implicados en el proceso de comprender las tareas que se requieren para llevar a cabo ese proceso. Las herramientas de administración de procesos pueden proporcionar vínculos con otras herramientas que proporcionen un apoyo para actividades de proceso ya definidas.
HERRAMIENTAS DE PLANIFICACIÓN DE PROYECTOS.
Las herramientas de esta categoría se concentran en dos áreas primordiales:
  • Estimación de esfuerzos de proyecto y de costes de software. Calculan el esfuerzo estimado, la duración del proyecto y el numero recomendado de personas.
  • Planificación de proyectos. Capacitan al administrador para definir todas las áreas del proyecto (la estructura de desglose de tareas), para crear una red de tareas (normalmente empleando una entrada gráfica), para representar las interdependencias entre tareas y para modelar la cantidad de paralelismo que sea posible para ese proyecto.
HERRAMIENTAS DE ANÁLISIS DE RIESGOS
Las herramientas de análisis de riesgos capacitan al administrador el proyecto para construir una tabla de riesgos proporcionando una guía detallada en la identificación y análisis de riesgos.
HERRAMIENTAS DE ADMINISTRACIÓN DE PROYECTOS.
La planificación del proyecto y el plan del proyecto deben seguirse y de monitorizarse de forma continua. Además, el gestor deberá de utilizar las herramientas que recojan métricas que en la ultima instancia proporcionen una indicación de la calidad el producto del software. Las herramientas de esta categoría suelen ser extensiones de herramientas de planificación de proyectos.
HERRAMIENTAS DE SEGUIMIENTO DE REQUISISTOS
Cuando se desarrollan grandes sistemas, el sistema proporcionado suele no satisfacer los requisitos especificados por el cliente. El objetivo de las herramientas de seguimiento de requisitos es proporcionar un enfoque sistemático para el aislamiento de requisitos, comenzando por las especificaciones del cliente. Las herramientas de trazado de requisitos típicos combinan una evaluación de textos por interacción humana, con un sistema de gestión de bases de datos que almacena y categoría todos y cada uno de los requisitos del sistema que se "analizan" a partir de las especificaciones originales.
HERRAMIENTAS DE MÉTRICAS Y GESTIÓN.
Las métricas del software mejoran la capacidad del administrador para controlar y coordinar el proceso del software y la capacidad del ingeniero para mejorar la calidad del software que se produce.
Las herramientas métricas actuales se centran en procesos, proyectos y características del producto.
Las herramientas orientadas a la gestión capturan métricas especificas del proyecto (por ejemplo: LDC/personamos, defectos por punto de función) que proporcionan una indicación global de productividad o de calidad. Las herramientas orientadas técnicamente determinan métricas técnicas que proporcionan una mejor visión de la calidad del diseño o del código. Muchas de las herramientas métricas avanzadas mantiene una base de datos de medidas de medias de la industria.
Basándose en características de proyectos y de productos proporcionados por el usuario, estas herramientas califican los números locales frente a los valore medios de la industria (y frente al rendimiento local anterior) y sugieren estrategias para llegar a mejoras. Estas herramientas utilizan un sistema experto para sugerir el orden en el que se debe llevar a cabo un proyecto.
HERRAMIENTAS DE DOCUMENTACIÓN
Las herramientas de producción de documentos y autoedición prestan su apoyo a casi todos los aspectos de la ingeniería del software, y representan una importante oportunidad de aprovechamiento para todos los desarrolladores del software. La mayor parte de las organizaciones dedicadas al desarrollo de software invierte una cantidad de tiempo considerable en el desarrollo de documentos, y en muchos casos el proceso de documentación en si resulta bastante deficiente. No es raro que una organización de desarrollo de software invierta hasta en un 20 o 30 pro ciento de su esfuerzo global de desarrollo de software en la documentación. Por esta razón, las herramientas de documentación suponen una oportunidad importante para mejorar la productividad.
HERRAMIENTAS DE SOFTWARE DE SISTEMA.
CASE es una tecnología de estaciones de trabajo. Por tanto, el entorno CASE debe adaptase a un software de sistema en redes de alta calidad, al correo electrónico, a los boletines electrónicos y a otras capacidades de comunicaciones.
HERRAMIENTAS DE CONTROL DE CALIDAD.
La mayor parte de las herramientas CASE que afirman que tiene como principal interés el control de calidad son en realidad herramientas métricas que hace una auditoria del código fuente para determinar si es justa o no a ciertos estándares del lenguaje. Otras herramientas extraen métricas técnicas como base para medir la calidad del software que se esta construyendo.
HERRAMIENTAS DE GESTIÓN COMO BASE DE DATOS.
El software de gestión de bases de datos sirve como fundamentos para establecer una base de datos CASE. Dado el énfasis acerca de los objetos de configuración, las herramientas de gestión de bases de datos para CASE pueden evolucionar a partir de los sistemas de gestión de bases de datos relacionales (SGBDR) para transformarse en sistemas de gestión de bases de datos orientadas a objetos(SGBDOO).
HERRAMIENTAS DE CODIFICACIÓN DE CUARTA GENERACIÓN.
Los sistemas de consulta de bases de datos, los generadores de código y los lenguajes de cuarta generación han cambiado la forma en que se desarrollan los sistemas. Idealmente, estas herramientas de generación de código no solo traducen la descripción de un sistema operativo, sino que también ayudan a verificar la corrección de la especificación del sistemas de tal forma que la salida resultante satisfaga los requisitos del usuario.
Los lenguajes de cuarta generación se usan ampliamente en aplicaciones de sistemas de información.
Aunque los lenguajes de cuarta generación, los generadores de código y los generadores de aplicaciones, permiten que un ingeniero de software especifique un sistema a un nivel muy alto de abstracción; cada una de estas herramientas difiere en aspectos importantes.
HERRAMIENTAS DE MANTENIMIENTO
Las herramientas CASE para el mantenimiento de software abarcan una actividad que actualmente ocupa, aproximadamente, el 70% del esfuerzo total dedicado al software. La categoría de herramientas de mantenimiento puede subdividirse de la siguiente forma:
  • Herramientas de ingeniería inversa a especificaciones. Toman el código fuente como entrada y generan modelos de diseño y análisis estructurado, listas de utilización y otra información con el diseño.
  • Herramientas de reestructuración y análisis de código. Analizan la sintaxis del programa, generan un grafo de flujo de control y un programa estructurado.
  • Herramientas interactivas de reingeniería de sistema. Se utilizan para modificar sistemas de base de datos.
Estas herramientas están limitadas a lenguajes de programación específicos y requieren cierto grado de interacción con el ingeniero de software.
HERRAMIENTAS DE GESTIÓN DE CONFIGURACIÓN DE SOFTWARE.
La gestión de configuración de software (GCS) se encuentra en el núcleo de todos los entornos CASE. Las herramientas pueden ofrecer su asistencia en las cinco tareas principales de GCS: identificación, control de versiones control de cambios, auditoria y contabilidad de estados. La base de datos CASE proporciona un mecanismo para identificar todos los elementos de configuración y relacionarlo con otros elementos; un acceso sencillo a los elementos de configuración individuales facilita el proceso de auditoria; las herramientas de comunicación CASE pueden mejorar enormemente la contabilidad de estados (ofreciendo información acerca de los cambios a todos aquellos que necesiten conocerlos).
HERRAMIENTAS DE ANÁLISIS Y DISEÑO.
Las herramientas de análisis y diseño capacitan al ingeniero del software para crear modelos del sistema que haya que construir. Los modelos contienen una representación de los datos, de la función y del comportamiento (en el nivel de análisis), así como caracterizaciones del diseño de datos, arquitectura, procedimientos e interfaz. Al efectuar una comprobación de la consistencia y validez del modelo, las herramientas de análisis y diseño proporcionan al ingeniero del software un cierto grado de visión en lo tocante a la representación del análisis, y le ayudan a eliminar errores antes de que se propaguen al diseño, o lo que es peor, a la propia implementación.
HERRAMIENTAS PRO/SIM.
Las herramientas PRO/SIM (de prototipos y simulación) proporcionan al ingeniero del software la capacidad de predecir el comportamiento de un sistema en tiempo real antes de llegar a construirlo. Además, capacitan al ingeniero del software para desarrollar simulaciones del sistema de tiempo real que permitirán al cliente obtener ideas acerca de su funcionamiento, comportamiento y respuesta antes de la verdadera implementación.
HERRAMIENTAS DE DESARROLLO Y DISEñO DE INTERFAZ.
Las herramientas de desarrollo y diseño de interfaz son en realidad un conjunto de primitivas de componente de programas tales como menús, botones, estructuras de ventanas, iconos, mecanismos de desplazamiento, controladores de dispositivos, etc., Sin embargo, estos conjuntos de herramientas se están viendo sustituidos por herramientas de generación de prototipos de interfaz que permiten una rápida creación en pantalla de sofisticadas interfaces de usuario, que se ajustan al estándar de interfaz que se haya adoptado para el software.
HERRAMIENTAS DE GENERACIÓN DE PROTOTIPOS.
Se puede utilizar toda una gama de herramientas de generación de prototipos. Los generadores de pantallas permiten al ingeniero de software definir rápidamente la disposición de pantalla para aplicaciones interactivas. Otras herramientas de prototipos CASE mas sofisticadas permiten la creación de un diseño de datos, acoplado con las disposiciones de la pantalla y de los informes simultáneamente. Muchas herramientas de análisis y diseño proporcionan extensiones que ofrecen alguna opción de generación de prototipos. Las herramientas PRO/SIM generan un esqueleto de código fuente en Ada y C para las aplicaciones de ingeniería (en tiempo real). Por ultimo, una gama de herramientas de cuarta generación poseen también características de generación de prototipos.
HERRAMIENTAS DE PROGRAMACIÓN.
La categoría de herramientas de programación abarca los compiladores, editores y depuradores que están disponibles para prestar su apoyo en la mayoría de los lenguajes de programación convencionales. Además, los entornos de programación orientados a objetos (OO), los lenguajes de cuarta generación, los entornos de programación gráfica, los generadores de aplicaciones y los lenguajes de consulta de bases de datos residen también en esta categoría.
HERRAMIENTAS DE INTEGRACIÓN Y COMPROBACIÓN.
En su directorio de herramientas de comprobación de software, software Quality Engineering define las siguientes categorías de herramientas de comprobación:
  • Adquisición de datos: herramientas que adquieren datos que se utilizaran durante la comprobación.
  • Medida estática: herramientas que analizan el código fuente sin ejecutar casos de prueba.
  • Medida dinámica: herramientas que analizan el código fuente durante la ejecución.
  • Simulación: herramientas que simulan las funciones del hardware o de otros elementos externos.
  • Administración de comprobaciones: herramientas que prestan su asistencia en la planificación, desarrollo y control de las comprobaciones.
  • Herramientas de funcionalidad cruzada: se trata de herramientas que cruzan los limites de las categorías anteriores.
Debería tenerse en cuenta que muchas de las herramientas de comprobación poseen características que abarcan dos o más de las categorías anteriores.
HERRAMIENTAS DE ANÁLISIS ESTÁTICO.
Las herramientas de análisis estático prestan su asistencia al ingeniero del software a efectos de derivar casos prácticos. Se utilizan tres tipos distintos de herramientas estáticas de comprobación en la industria: herramientas de comprobación basadas en código, lenguajes de comprobación especializados, y herramientas de comprobación basadas en requisitos. Las herramientas de comprobación basadas en código admiten un código fuente (o PDL) como entrada y efectúan un cierto numero de análisis que can lugar a la generación de casos de prueba. Los lenguajes de comprobación especializados (por ejemplo: ATLAS) capacitan al ingeniero del software para escribir detalladas especificaciones de comprobación que describirán todos los casos de prueba y la logística de su ejecución. Las herramientas de comprobación basadas en requisitos aíslan
requisitos específicos del usuario y sugieren casos de prueba (o clases de comprobaciones) que ejerciten estos requisitos.
HERRAMIENTAS DE ANáLISIS DINáMICO.
Las herramientas de análisis dinámico interactúan con un programa que se esté ejecutando, comprueban la cobertura de rutas, comprueban las afirmaciones acerca del valor de variables especificas y en general instrumentan el flujo de ejecución del programa. Las herramientas dinámicas pueden ser bien intrusivas, bien no intrusivas. Las herramientas intrusivas modifican el software que hay que comprobar mediante sondas que se insertan (instrucciones adicionales) y que efectúan las actividades mencionadas anteriormente. Las herramientas de comprobación no intrusivas utilizan un procesador hardware por separado que funciona en paralelo con el procesador que contenga el programa que se está comprobando.
HERRAMIENTAS DE GESTIÓN DE COMPROBACIÓN.
Las herramientas de gestión de comprobación se utilizan para comprobar y coordinar la comprobación de software para cada uno de los pasos principales de comprobación. Las herramientas de esta categoría administran y coordinan la comprobación de regresiones, efectúan comparaciones que determinan las diferencia s entre la salida real y la esperada, y efectúan comprobaciones por lotes de programas con interfaces interactivas entre hombre y maquina. Además de las funciones indicadas anteriormente, muchas herramientas de gestión de comprobaciones sirven también como controladores de comprobación genéricos. Un controlador de comprobación lee uno o mas casos de prueba de algún archivo de pruebas, da formato a los datos de prueba para que se ajusten a las necesidades del software que se esta probando, e invoca entonces al software que sea preciso comprobar.
HERRAMIENTAS DE COMPROBACIÓN CLIENTES/SERVIDOR.
El entorno C/S existe unas herramientas de comprobación especializadas que ejerciten la interfaz gráfica de usuario y los requisitos de comunicaciones en red par el cliente y el servidor.
HERRAMIENTAS DE REINGENIERíA.
La categoría de herramientas de reingeniería se pueden subdividir en las funciones siguientes:
  • Herramientas de ingeniería inversa para producir especificaciones: se toma el código fuente como entrada y se generan modelos gráficos de análisis y diseño estructurados, listas de utilización y otras informaciones de diseño.
  • Herramientas de reestructuración y análisis de código: se analiza la sintaxis del programa, se genera una gráfica de control de flujo y se genera automáticamente un programa estructurado.
  • Herramientas de reingeniería para sistemas en línea: se utilizan para modificar sistemas de bases de datos en línea (por ejemplo: para convertir archivos IDMS o DB2 traduciéndolos a un formato de entidades y relaciones).
Muchas de las herramientas anteriores están limitadas a lenguajes de programación específicos (aun cuando se abarcan la mayoría de los lenguajes principales) y requieren un cierto grado de interacción con un ingeniero del software.
Las herramientas de ingeniería inversa y progresiva de la próxima generación harán un uso mucho mayor de técnicas de inteligencia artificial, aplicando una base de conocimientos que se a especifica del dominio de la aplicación (esto es, un conjunto de reglas de descomposición que se aplicarían a todos los programas de una cierta zona de aplicación tal como el control de fabricación o la aviónica). El componente de inteligencia artificial asistirá en la descomposición y reconstrucción del sistemas, pero seguirá requiriendo una interacción con un ingeniero de software a lo largo del ciclo de la reingeniería.

Herramienta CASE

HERRAMIENTAS CASE
 
 
Concepto de las herramientas CASE
 
La herramienta CASE (Computer-Aided Systems Engineering ) cuyo significado en español es ingeniería de sistemas asistida por ordenador, es la aplicación de tecnología informática a las actividades, las técnicas y las metodologías propias de desarrollo de sistemas y al igual que las herramientas CAD (Diseño Asistido por Computadora) o CAM (Manufactura Asistida por Computadora) su objetivo es acelerar el proceso para el que han sido diseñadas, en el caso de CASE para automatizar o apoyar una o mas fases del ciclo de vida del desarrollo de sistemas. La primera herramienta CASE como hoy la conocemos fue Excelerator en 1984, era para PC. Actualmente la oferta de herramientas CASE es muy amplia y tenemos por ejemplo el EASYCASE o WINPROJECT.
 
Tecnología de las herramientas CASE
 
La tecnología CASE supone la automatización del desarrollo del software, contribuyendo a mejorar la calidad y la productividad en el desarrollo de sistemas de información. Para mejorar la calidad y la productividad de los sistemas de información a la hora de construir software se plantean los siguientes objetivos :
  • Permitir la aplicación práctica de metodologías estructuradas, las cuales al ser realizadas con una herramienta conseguimos agilizar el trabajo.
  • Facilitar la realización de prototipos y el desarrollo conjunto de aplicaciones.
  • Simplificar el mantenimiento de los programas.
  • Mejorar y estandarizar la documentación.
  • Aumentar la portabilidad de las aplicaciones.
  • Facilitar la reutilización de componentes software.
  • Permitir un desarrollo y un refinamiento visual de las aplicaciones, mediante la utilización de gráficos.
Componentes de una herramienta CASE
De una forma esquemática podemos decir que una herramienta CASE se compone de los siguientes elementos:
  • Repositorio (diccionario) donde se almacenan los elementos definidos o creados por la herramienta, y cuya gestión se realiza mediante el apoyo de un Sistema de Gestión de Base de Datos (SGBD) o de un sistema de gestión de ficheros.
  • Metamodelo (no siempre visible), que constituye el marco para la definición de las técnicas y metodologías soportadas por la herramienta.
  • Carga o descarga de datos, son facilidades que permiten cargar el repertorio de la herramienta CASE con datos provenientes de otros sistemas, o bien generar a partir de la propia herramienta esquemas de base de datos, programas, etc. que pueden, a su vez, alimentar otros sistemas. Este elemento proporciona así un medio de comunicación con otras herramientas.
  • Comprobación de errores, facilidades que permiten llevar a cabo un análisis de la exactitud, integridad y consistencia de los esquemas generados por la herramienta.
  • Interfaz de usuario, que constará de editores de texto y herramientas de diseño gráfico que permitan, mediante la utilización de un sistema de ventanas, iconos y menús, con la ayuda del ratón, definir los diagramas, matrices, etc. que incluyen las distintas metodologías.
Estructura general de una herramienta CASE
La estructura CASE se basa en la siguiente terminología :
  • CASE de alto nivel son aquellas herramientas que automatizan o apoyan las fases finales o superiores del ciclo de vida del desarrollo de sistemas como la planificación de sistemas, el análisis de sistemas y el diseño de sistemas.
  • CASE de bajo nivel son aquellas herramientas que automatizan o apoyan las fases finales o inferiores del ciclo de vida como el diseño detallado de sistemas, la implantación de sistemas y el soporte de sistemas.
  • CASE cruzado de ciclo de vida se aplica a aquellas herramientas que apoyan actividades que tienen lugar a lo largo de todo el ciclo de vida, se incluyen actividades como la gestión de proyectos y la estimación.
 
Futuro de las Herramientas CASE
 
Las herramientas CASE evolucionan hacia tres tipos de integración:
  1. La integración de datos permite disponer de herramientas CASE con diferentes estructuras de diccionarios locales para el intercambio de datos.
  2. La integración de presentación confiere a todas las herramientas CASE el mismo aspecto.
  3. La integración de herramientas permite disponer de herramientas CASE capaces de invocar a otra herramienta CASE de forma automática.
Clasificación de programas de herramientas CASE
de acuerdo a su aplicación y fabricante.
Ada
Analysis
Back-end
Benchmarking
C++
Cartography
Client/server
COBOL
Code generation
Cooperative processing
CORBA
CORBA IDL
Debugging
Development environment for embedded systems
Distributed systems
Embedded real time systems
Formal object oriented requirements
FORTRAN
FORTRAN
Front -end
I-CASE
Informix 4GL
Java
Macintosh
Open source
ORACLE
Parallel programming
Porting Unix programs to Windows NT
Smalltalk
SQL code generation
UML