Desventajas de la ingenieria inversa


1-Tareas de los sistemas expertos
Diagnosis:
consiste en obtener la causa de un fallo a partir de características observables: síntomas, sensores, etc.
Predicción: consiste en deducir posibles consecuencias a partir de una situación dada
Interpretación: consiste en transformar la información proveniente de sensores físicos a una descripción lógica
Planificación: consiste en elaborar una secuencia de acciones que se han de ejecutar en un determinado orden temporal
Monitorización: consiste en contrastar las soluciones obtenidas de un sistema experto con las salidas previstas
Enseñanza: consiste en la diagnosis, depuración y reparación del comportamiento de aprendices o alumnos ante determinadas situaciones. Ejemplo simuladores de vuelo
Control: Consiste en gobernar el comportamiento general del sistema en todos sus aspectos
Diseño: consiste en configurar o crear objetos bajo ciertas restricciones
Depuración y reparación: consiste en proporcionar sin aplicar una solución a un fallo (depuración) y en generar un plan para aplicar la solución

2-Componentes de un sistema experto
Base de conocimiento:
Contiene el conocimiento de la tarea de un experto mediante algún lenguaje de conocimiento. Su función es almacenar el conocimiento del problema en algún lenguaje declarativo.
Es habitual almacenar el conocimiento del problema en un formato de reglas, de forma que para que una circunstancia sea cierta otra serie de circunstancias deben ser ciertas.
Base de hechos: contiene en todo momento toda la información que se ha ido obteniendo del SE. Conforme pasa el tiempo de ejecución del Sistema Experto se obtienen hechos o circunstancias que se deben ir almacenando. La base de hechos contiene en todo momento el estado actual del problema en un formato de hechos verdaderos y hechos falsos.
Motor de inferencias: Se encarga de contrastar la información de los hechos conocidos de la base de hechos con el conocimiento del problema almacenado en la base de conocimiento. De esta interrelación surge la decisión de cual será el siguiente paso a tomar en la búsqueda la solución
Modulo de adquisición de conocimiento: No es obligatorio Es el encargado de normalizar los datos que introduce el usuario en la base de datos .Valida según ciertas reglas las típicas operaciones de altas bajas y modificaciones
Modulo de explicación: Su función es informar al usuario de cuales han sido las situaciones que se han dado y cuales han sido los pasos que se han dado para llegar a la solución
Interface con el usuario: interactuar con el usuario de una manera sencilla y simplificada

3-Ventajas del sistema experto y comparativamente con el experiencia humana
-Refleja fielmente la experiencia humana
-Es la única herramienta que existe actualmente para capturar, formalizar y documentar de forma automática la experiencia de un ser humano para solucionar un problema

Experiencia HumanaSistema expertoSe pierde con el tiempoPermanenteDifícil de documentarFácil de documentarDifícil de transferirFácil de transferirImpredecible puede fallarConsistente si conoce la solución no fallaCostosa de adquirirAsequible

4Modelo DRA
Se basa en modelo lineal secuencial
Introduce un nuevo elemento denominado componente
Trata de dividir el proyecto en partes independientes de manera que se puedan desarrollar individualmente
Cada una de estas partes es asignada y desarrollada por un grupo de personas que trabajan de forma paralela con otros equipos
Cada componente se desarrolla mediante el modelo lineal secuencial
Desventajas .Descomponer y componer el proyecto -Esfuerzo de coordinación
Ventajas -Gran velocidad en el desarrollo del proyecto

5Modelo de métodos formales
Se trata de un modelo teórico
El cual se basa en pasar los requisitos del proyecto a un tipo de simbolismo o notación matemática. Una vez descrito el problema a través de símbolos se desarrolla y verifica la calidad del proyecto a través de operaciones y métodos matemáticos. Si se produce algún fallo se corrige automáticamente (matemáticamente)
Desventajas:-Costoso, formación del ingeniero, comunicación y validación con el cliente, que el tipo de proyecto permita este modelo
Se usa en entornos de gran seguridad y complejidad (programas espaciales) y sobre todo en sistemas científicos

6Actividades de la reingeniería
Análisis de inventario: Las empresas de software deberían disponer de un inventario exhaustivo de las aplicaciones desarrolladas. Este inventario estaría compuesto por 16 elementos entre los que destacan:
-Nombre de la aplicación, año de creación-Numero de cambios esfuerzo empleado en los cambios
-Fecha del último cambio, esfuerzo-Sistema en el que reside, aplicaciones relacionadas
-Bases de datos a las que tiene acceso-Numero de errores en los últimos 18 meses
-Numero de equipos en los que esta instalado-Baremo de mantenibilidad, y de importancia
-Estimación de longevidad-Coste anual de mantenimiento y funcionamiento
Este inventario debería actualizarse un mínimo de 2 veces al año. Algunos campos deberían actualizarse instantáneamente cuando sea necesario

Restructuración de documentos En aplicaciones antiguas en las cuales exista una escasa o nula documentación se dan alguno de los siguientes casos:
Caso 1: sistema demasiado complejo y viejo. Además al sistema no le queda vida útil. En estos casos no merece la pena generar nueva documentación
2. Caso.- Estamos ante un caso en el que únicamente se va a generar nueva documentación del mantenimiento a realizar (documentación del nuevo software que se creará). Respecto a lo que existía antes, se puede ir poco a poco completando.
3. Caso.- Obligatoriamente es necesario crear una documentación completa del sistema. Se intentará realizar de forma resumida y con lo más esencial.

Ingeniería inversa Es el mecanismo que nos permite, haciendo un estudio del código de la aplicación ya desarrollada, extraer una representación abstracta, que nos permita describir su funcionamiento.
Esta representación abstracta, será en realidad los distintos modelos del análisis y del diseño.

Reestructuración del código Esta actividad siempre existe cuando se decide realizar un mantenimiento (es la actividad más común en procesos de Reingeniería).
Consiste en analizar el código existente en aplicaciones sólidas pero que tienen deficiencias en algunos módulos, se analizarán los problemas detectados y se comprobará la posibilidad de corregirlos, reestructurarlos, mejorarlos o hacerlos más eficientes cambiando su código.
La arquitectura de la aplicación se presupone sólida y lo que se necesita es mejorar algunos módulos de código.
A la hora de cambiar el código habrá que comprobar la no-existencia de efectos laterales para asegurar el correcto funcionamiento del sistema global.

Reestructuración de datos Un programa con una estructura de datos débil o mal diseñada será muy difícil de adaptar y mejorar.
Para muchas aplicaciones, la arquitectura de los datos resulta a medio y largo plazo mucho más importante que el propio código.
A diferencia de lo que ocurre con el código, para reestructurar los datos es obligatorio subir un nivel de abstracción para conocer exactamente las características del problema. Esto motiva la necesidad de usar ingeniería inversa (si no existe documentación de análisis) y de ese modo, deducir el análisis y el diseño de esa aplicación. A partir de aquí, se pueden conocer todas las estructuras de datos y atributos necesarios.
Un ejemplo clásico de reestructuración de datos son las aplicaciones antiguas en las que se utilizaban los llamados ficheros planos. Se trataban de líneas compuestas por tiras de caracteres separadas por un carácter especial o marca que delimitaba los distintos campos. También es muy habitual tener que añadir campos en algunas tablas e incluso crear tablas nuevas.
La reestructuración de datos pasa por crear una arquitectura completa de entidades y relaciones. Debido a la fuerte influencia de los datos sobre el programa, una reestructuración de datos conllevará obligatoriamente una reestructuración de código, e incluso un cambio en la arquitectura del programa.
Ingeniería progresiva Esta actividad trata de recopilar mediante un proceso automático todos los requisitos de un determinado producto software o aplicación.
A través de estos requisitos y de forma automática, el proceso es capaz de mejorar el software de esa aplicación.
La ingeniería progresiva se aplica a dominios muy concretos, siempre asociados a herramientas CASE por ejemplo la generación de bases de datos y de los procesos necesarios en dicha base de datos a través de una herramienta automática e incluso la mejora de la base de datos construida a través de otra herramienta.

Dejar un Comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *