domingo, 2 de diciembre de 2012

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.

Objetivos

  1. Mejorar la productividad en el desarrollo y mantenimiento del software.
  2. Aumentar la calidad del software.
  3. Reducir el tiempo y costo de desarrollo y mantenimiento de los sistemas informáticos.
  4. Mejorar la planificación de un proyecto
  5. Aumentar la biblioteca de conocimiento informático de una empresa ayudando a la búsqueda de soluciones para los requisitos.
  6. Automatizar el desarrollo del software, la documentación, la generación de código, las pruebas de errores y la gestión del proyecto.
  7. Ayuda a la reutilización del software, portabilidad y estandarización de la documentación
  8. Gestión global en todas las fases de desarrollo de software con una misma herramienta.
  9. Facilitar el uso de las distintas metodologías propias de la ingeniería del software.


Clasificacion
Aunque no es fácil y no existe una forma única de clasificarlas, las herramientas CASE se pueden clasificar teniendo en cuenta los siguientes parámetros:
  1. Las plataformas que soportan.
  2. Las fases del ciclo de vida del desarrollo de sistemas que cubren.
  3. La arquitectura de las aplicaciones que producen.
  4. Su funcionalidad.
La siguiente clasificación es la más habitual basada en las fases del ciclo de desarrollo que cubren:
Existen otros nombres que se le dan a este tipo de herramientas, y que no es una clasificación excluyente entre sí, ni con la anterior:
  • Integrated CASE (I-CASE), herramientas que engloban todo el proceso de desarrollo software, desde análisis hasta implementación.
  • MetaCASE, herramientas que permiten la definición de nuestra propia técnica de modelado, los elementos permitidos del metamodelo generado se guardan en un repositorio y pueden ser usados por otros analistas, es decir, es como si definiéramos nuestro propio UML, con nuestros elementos, restricciones y relaciones posibles.
  • CAST (Computer-Aided Software Testing), herramientas de soporte a la prueba de software.
  • IPSE (Integrated Programming Support Environment), herramientas que soportan todo el ciclo de vida, incluyen componentes para la gestión de proyectos y gestión de la configuración activa.
Por funcionalidad podríamos diferenciar algunas como:
En el siguiente video se muestra en resumen la herramienta CASE.


Reingenieria

Reingeniería
Se puede definir como: "modificacion de un producto software, o de ciertos componentes usando para el analisis del sistema existente tecnicas de Ingenieria Inversa y, para la etapa de reconstruccion, herramienta de Ingenieria Directa, de tal manera que se oriente este cambio hacia mayores niveles de facilidad en cuanto a mantenimiento, reutilizacion, compresion o evaluacion.



Entre los beneficios de aplicar reingenieria a un producto existente se puede incluir:

  • Pueden reducir los riegos evolutivos de una organización.
  • Puede ayudar a las organizaciones a recuperar sus inversiones en software.    
  • Puede hacer el software más fácilmente modificable
  • Amplía las capacidades de las herramientas CASE       
  • Es un catalizador para la automatización del mantenimiento del software
  • Puede actuar como catalizador para la aplicación de técnicas de inteligencia artificial para resolver problemas de reingeniería.  
La reingenieria del software involucra diferentes actividades como son:

  • Análisis de inventarios      
  • Reestructuración de documentos
  • Ingeniería inversa              
  • Reestructuración de programas y datos
  • Ingeniería directa
con la finalidad de crear versiones de programas ya existentes que sean de mejor calidad y los mismos tengan una mayor facilidad de mantenimiento.
Análisis de Inventarios
El inventario tal vez no sea más que un modelo en una hoja de cálculo que contenga información que proporcione una descripción detallada (tamaño, edad, importancia para el negocio) de las aplicaciones activas.
El inventario deberá visitarse con regularidad, el estado de las aplicaciones puede cambiar en función del tiempo y, como resultado, cambiarán las prioridades para la reingeniería.

Reestructuración de documentos
Crear documentación consume mucho tiempo, si el sistema funciona vivirá con lo que tenga. La documentación debe actualizarse pero se tiene recursos limitados. Se utiliza un enfoque de “documentar cuando se toque”. El sistema es crucial para el negocio y debe volver a documentarse por completo incluso en este caso un enfoque inteligente es recortar la documentación a un mínimo esencial. Cada una de estas opciones es viable. Una organización de software debe elegir la más apropiada para cada caso.
Ingeniería inversa 
La Ingeniería inversa es un proceso de recuperación de diseño. Con las herramientas de la ingeniería inversa se extraerá del programa existente información del diseño arquitectónico y de proceso, e información de los datos.             

El siguiente video muestra la ocupacion de Ingenieria Inversa con base de datos

Reestructuración de programas y datos
Se puede hacer con módulos individuales que se codifican de una manera que dificultan comprenderlos, probarlos y mantenerlos.  la reestructuración de datos comienza con una actividad de ingeniería inversa. La arquitectura de datos actual se analiza con minuciosidad y se define los modelos de datos necesarios, se identifican los objetivos de datos y los atributos, y después se revisa la calidad de las estructuras de datos existentes.
Ingeniería directa
La ingeniería directa no solo recupera la información de diseño a partir del software existente, también utiliza esta información para alterar o reconstruir el sistema existente con la finalidad de mejorar su calidad global. En la mayoría de los casos el software sometido a reingeniería vuelve a implementar la función del sistema existente y también añade nuevas funciones o mejoras.

sábado, 1 de diciembre de 2012

Metodo Cliente-Servidor

*Servidor (Administrador): Plataforma de software que ofrece otros software para ser ocupados por quien(es) le(s) solicita.

*Cliente (Usuario): Sentencias que un determinado usuario utiliza para solicitar otros software o servicios, sus permisos son utilizados por el administrador.

En base de datos se aplica de la siguiente manera:
*Administrador (SGBD/DBAS): Crea, modifica, borra la BD, modifica la estructura de la BD (Tabla/Red) y modifica el codigo fuente (Tiggers/Vistas).

*Usuario: Tiene permiso para introducir y actualizar datos de la base de datos, puede borrar datos, hacer consultas entre otros.

Los criterios de Calidad que interesan en el metodo de Cliente-Servidor son diversos entre los que estan la Seguridad, Integridad, Velocidad, Atributo de Fiabilidad... entre otros.


Sala Limpia

La tecnología de dotación lógica de Sala Limpia es un acercamiento al desarrollo de Software Lógico que mejora la Calidad y reduce costos. El desarrollo incremental permite la mejora continua del proceso. 

Es un enfoque formal para el desarrollo de software que pueda dar lugar a un software con una calidad alta. Emplea la especificación de una estructura de cajas para el modelado de análisis y diseño. Se aplica una comprobación estadística de uso para desarrollar la información relativa a la tasa de fallos necesarios para certificar la fiabilidad del producto de software.
En el siguiente vídeo se muestra una introducción del creador de este proceso y el funcionamiento de caja negra y caja transparente:


Se diferencia de otros métodos ya que hace uso explicito del control estadístico de calidad, también verifica la especificación de diseño empleando una demostración de corrección basada en las matemáticas u el uso de estadística es para descubrir errores de gran incidencia. 


Se utiliza en la industria electronica para evitar la introduccion de defectos en la fabricaion de circuitos integrados.




Ingeniería Web

Ingeniería Web


Se basa en aplicar varios métodos para la operación y evolución de aplicaciones de alta calidad. 

Sus componentes son varios:

  • Interfaz
  • Estetica
  • Navegacion
  • Contenido
  • Diseño
  • Arquitectura
  • Herramientas para el diseño
  • Personal Especialista, que trabajan en un determinado proyecto de sitio web.

El proceso que debe seguir el equipo de trabajo es cuando la web demanda un proceso de software incremental y evolutivo. por tanto necesita de un marco de trabajo. Este comienza con la formulacion que identifica las metas y objetivos de las webapps y establece el ambito del primer incremento. tambien detallada varios conjuntos de actividades como la Planificacion, Analisis, por Ingenieria, Generacion de Paginas.

Existen varias aplicaciones para realizar Ingenieria Web como Dreamwaver entre otras.















En el siguiente video se muestra la importancia de la Ingenieria Web, los recursos que ocupa, sus atributos y aplicaciones, entre otros.



viernes, 30 de noviembre de 2012

Ingeniería de Sistemas

Origen de la Ingeniería en Sistemas

Durante los últimos 50 años, los sistemas basados en Computadoras han introducido un nuevo orden. Aunque la tecnología ha conseguido grandes avances desde que hablo Maquiavelo, sus palabras siguen siendo la verdad.

Para conseguir el objetivo de un sistema basado en computadoras se hace uso de varios elementos de sistemas, como los mencionados a seguir:


  • Software: Programa de Computadoras, Estructura de Datos y su documentación que sirven para hacer efectivo el método lógico. 
  • Hardware: Dispositivos Electrónicos que proporcionan capacidad de Calculo, dispositivos de interconexion y dispositivos electromagnéticos.
  • Personas: Usuarios y operadores del Hardware y software. 
  • Documentación: Manuales, Formularios y otra información descriptiva que plasma el empleo del sistema.
  • Procedimientos: Son los pasos que definen el empleo especifico de cada elemento del sistema.

Algunos equipos de trabajos pueden encontrar restricciones como las siguientes al momento de construir un modelo de sistema: 
  • Supuestos que reducen el numero de permutaciones y variaciones posibles.
  • Simplificaciones que permiten crear el modelo a tiempo.
  • Limitaciones que ayudan a delimitar el sistema.
  • Restricciones que guían la manera de crear el modelo y el enfoque que se toma al implementar el modelo.
  • Preferencias que indican la arquitectura preferida, para todos los datos, funciones y tecnologías.

Ingeniería de Procesos de Negocio:

Este tipo de Ingeniería define la arquitectura que permitirá a la empresa emplear la información eficazmente.

Ingeniería de Producto

Este tipo de Ingeniería traduce el deseo de un Cliente de un conjunto de capacidades definidas, a un producto operativo.








domingo, 14 de octubre de 2012

Introduccion


En el siguiente blog creado por mi persona, les presento información básica que nos introduce al mundo de la Ingeniería del Software, mas adelante les presentare información un poco mas compleja pero que les servirá de mucho.



Los temas abordados son:
  • Aplicaciones de Software
  • Proceso de Software
  • Fases Genéricas
  • Espectro de Gestión de Software
  • Métrica
  • Riesgo en el desempeño de Software
  • Garantía de Calidad
  • Garantía de Configuración de Software