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



Segunda Guía




*Espectro de Gestión
*Métricas
*Riesgos de Software
*Garantía de Calidad
* Gestión de Configuración de Software





¿Que es el Espectro de Gestión? 
La gestion eficaz de un proyecto de software se centra en las cuatro P's: Personal, Producto, Proceso y Proyecto. El orden no es arbitrario. El gestor que se olvida de que el trabajo de ingenieria de software es un esfuerzo humano intenso nunca tendra exito en la gestion de proyectos.


  • Personal: Modelo de madurez. Define algunas claves de el personal que desarrolla software, como por ejemplo Reclutamiento, Selección, Rendimiento, etc.
  • Producto: El desarrollador de Software y el Cliente deben reunirse para definir objetivos del Producto y sus ámbitos.
  • Proceso: Proporciona la estructura desde la que se puede establecer un detallado plan para el desarrollo del Software.
  • Proyecto: En esta deben eludirse ciertas señales de peligros comunes donde se vea que se pueda dañar nuestro Software.



El proceso de métrica se le aplicara a un proyecto elaborado por un determinado grupo de estudiantes con los siguientes diagramas elaborados.



Diagrama de Caso de Uso
Diagrama de Clases 



Diagrama de Objetos


Diagrama de Componentes 

Diagrama de Despliegue

Diagrama de Estado (Disponibilidad de Producto)




Diagrama de Estado (Disponibilidad de Pedido)




Diagrama de Secuencia (Validación de Pedido)


Diagrama de Secuencia (Venta--Facturación) 


Resolviendo por el sistema de métricas se presenta de la siguiente manera:

Dada la tabla de Riesgos presentar ejemplos de cada una.


¿Que condiciones son necesarias para que el Software que realizamos sea con Garantía de Calidad?
Son varias condiciones las que tiene que cumplir pero las principales son: 
  • Portabilidad: Que se puede portar en cualquier medio de almacenamiento extraible.
  • Fácil de usar

Proceso que se realiza durante la Gestión de Configuración de Software. 

La GCS tiene que ver con el etiquetado, seguimiento y Control de los Cambios en los elementos de Software de un Sistema.

  • Identificación de Objetos: Se pueden identificar de dos maneras: 
* Básicos: Es una unidad de texto creada durante el análisis.
*Compuesto: Es una colección de objetos básicos y de otros tipos de objetos compuestos.
  • Control de Versiones: Combina procedimientos y herramientas para gestionar las versiones de los objetos de  configuración creados. 
  • Control de Cambios: Combina los procedimientos humanos y herramientas automáticas.
  • Auditorias de Configuración: Complementa la revisión técnica formal al comprobar características que generalmente no tiene en cuenta la revisión.
  • Informes de Estados: Desempeña un papel vital en el desarrollo de proyecto, y responde a las siguientes preguntas: ¿Que paso?, ¿Quien lo hizo?, ¿Cuando paso?, ¿Que se vio afectado?.



Primera Guia

 1. Sabiendo las características de software. Ejemplifique, como se aplicaría a un software contable?

Se dice que el Software no se desactualiza sino que se mejora, así sucede con un software contable, en el cual se presenta la información detallada de como va económicamente una empresa. 

Este se encuentra en continua mejora cada vez que el cliente se lo pide al programador, para un mejor funcionamiento y una mejor presentación.


 2. Mencione los diferentes tipos de Software y otros de los estudiados en clase.

  • Software de Sistema: 
  • Procura al usuario y programador adecuadas interfaces de alto nivel, controladores, herramientas y utilidades de apoyo que permiten el mantenimiento del sistema global.
  • Software de Programación: 
  • Es el conjunto de herramientas que permiten al programador desarrollar programas informáticos  usando diferentes lenguajes de programación.
  • Software Empotrado: 
  • Es el que depende de otro sistema operativo.
  • Software de Inteligencia Artificial: 
  • Hace uso de algoritmo no numérico.
  • Software de Aplicación: 
  • Permite al usuario llevar a cabo una o mas tareas especificas. 


   3. A través de la siguiente ilustración  explique las Capas del Proceso de Software.


  • La flecha azul que seria nuestra velita representa a los involucrados en el desarrollo del Software.
  • Herramientas: Son las que se utilizan para hacer un Software.
  • Métodos: Con los que se realiza el Software.
  • Procesos: Son los que se siguen para realizar el Software.
  • Calidad: Por ultimo se hace la verificación de la Calidad.


4. A través de un cuadro sinoptico, explique las Fases Genéricas del Proceso de Software.


5. Modelos 

  • Cascada:
  •  Ordena las etapas de manera sucesiva.
  • Prototipo:
  • Construido en poco tiempo sin muchos recursos.
  • Espiral:
  • Cada iteracion representa una actividad.
  • Incremental:
  •  Consiste en dar respuestas a las debilidades del modelo de Cascada.