Está en la página 1de 16

APLICACIONES DISTRIBUIDAS

ENTREGABLE 3
Barragán García Ricardo Josué

FELIPE SALAZAR VARGAS


16/03/20
HERRAMIENTA CASE

Las herramientas CASE (Computer Aided Software Engineering, Ingeniería de Software


Asistida por Computadora) son diversas aplicaciones informáticas o programas
informáticos destinadas a aumentar el balance en el desarrollo de software reduciendo el
costo de las mismas en términos de tiempo y de dinero.

Las herramientas CASE alcanzaron su techo a principios de los años 90. En la época en
la que IBM había conseguido una alianza con la empresa de software AD/Cycle para
trabajar con sus mainframes, estos dos gigantes trabajaban con herramientas CASE que
abarcaban todo el ciclo de vida del software. Pero poco a poco los mainframes han ido
siendo menos utilizados y actualmente el mercado de las Big CASE ha muerto
completamente abriendo el mercado de diversas herramientas más específicas para cada
fase del ciclo de vida del software.

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 a la
hora de construir software.
Case Integrados

Las aplicaciones CASE tienen un gran potencial para ayudar a los encargados del
desarrollo de software a realizar sus tareas de una manera más automatizada y eficiente.
Pero para poder obtener de manera óptima las ventajas de ellas lo ideal es tenerlas en un
Ambiente Integrado, donde no se desperdicie el esfuerzo en traspasar la información de
un proyecto desde una fase de desarrollo de software a la siguiente. Hay todo un espectro
de tipos de integración que puede tener un grupo de herramientas CASE, y para que se
puedan considerar como realmente integradas, deben estar en el último nivel de este
rango. Así, para explicar comprensiblemente lo que es un Ambiente Integrado de
herramientas CASE (I-CASE) o un Entorno de Apoyo de Proyectos Integrado (EAPI)
debemos entender lo que no lo es para poder diferenciarlos. A continuación se describirán
los distintos tipos de integración, desde el nulo hasta un EAPI.

Tipos de Integración

Herramienta Individual: Su nombre las describe, pues son las herramientas que se
utilizan exclusivamente para una fase del desarrollo de software. No tienen manera de
recibir información más que la que proporcione el usuario al momento de utilizarlas, y la
que den los proyectos creados anteriormente con tal herramienta. La figura nos muestra
cómo podríamos representar dos herramientas individuales, sin conexión ni relación la
una con la otra.

Intercambio de Datos: Este se


realiza cuando las herramientas guardan su información en ciertos formatos que podrían
ser leídos por otras herramientas CASE que acepten dicho formato. Este intercambio de
datos se puede ver con una flecha, ya sea unidireccional o bidireccional, como la que se
muestra en la figura.
Puente: Estos se crean cuando hay intercambios de datos específicos para herramientas
que se complementan por cubrir fases consecutivas en el desarrollo de software, como se
ve en la figura 3.3. También se utilizan los puentes para todo un grupo o serie de
herramientas, en lo que se denomina un consorcio de estándares, como se muestra en la
figura.

Fuente Única: Esta es una suite (conjunto de programas) de aplicaciones CASE de un


mismo proveedor. La ventaja de este enfoque es que el traspaso de información suele ser
transparente entre las herramientas. Desafortunadamente por lo general solamente
pueden interactuar entre ellas, y no es posible añadir otra herramienta para complementar
las necesidades específicas del usuario. En la figura podemos apreciar una
representación de una suite de herramientas CASE de fuente única.
EAPI: El Entorno de Apoyo a Proyectos Integrado se construye mediante estándares de
traspaso de información y metadatos alrededor de un depósito de datos, lo cual permite
añadir herramientas que se ajusten a los estándares, aunque sean de distintos
proveedores, con las ventajas que proporcionan las bases de datos.

Capas de la arquitectura de integración

Para definir la arquitectura de integración de un I-CASE, la dividiremos en distintos niveles


de acuerdo a sus funciones, a los que llamaremos capas. La figura nos presenta una
arquitectura con cuatro capas bien definidas, cada una con su propósito y actividades
específicas, como se explica a continuación.

Capa de interfaz de usuario

Esta capa está compuesta por los mecanismos para la comunicación entre el usuario y la
máquina. Más específicamente, es el software que compone las interfaces y que permite
que se utilicen las herramientas CASE.
Capa de herramientas

Aquí se encuentran en sí las herramientas CASE, las cuales se integran entre sí con la
ayuda del resto de la Arquitectura de Integración. Esta capa es la que tiene los servicios
que administran y regulan el comportamiento de cada una de las herramientas con la
interfaz común.

Capa de gestión de objetos

El software de esta capa es el que contiene los servicios de integración en sí. Estos son
los módulos que sirven como estándares a las herramientas CASE para conectarse a el
depósito de proyectos. También contiene la gestión de la configuración de elementos
como control de cambios y versiones.

Capa de depósito

Esta capa es la base de datos de los proyectos generados con las herramientas. Esta
capa se encarga de almacenar y proveer los datos, así como de su seguridad e
integridad, del control del acceso de los usuarios y en general de las funciones que
permiten que se comunique la base de datos con las capas superiores.
Depósito CASE

Depósito CASE, repositorio, compartido o de proyectos; se le puede llamar de cualquiera


de estas formas a la Base de Datos en la cual se almacena la información acerca de un
proyecto de desarrollo de software que sea generado por, y utilice, herramientas CASE
integradas en un Entorno de Apoyo a Proyectos Integrado. La anterior es una definición
que envuelve muchos términos, ya que la creación y especificación de un deposito CASE
compartido cubre muchos conceptos distintos.

Beneficios del Depósito CASE:

•Compartir información entre aplicaciones y herramientas


•Permitir un ambiente multiusuario de herramientas de software
•Mejorar la comunicación y compartir información entre usuarios
•Consolidar datos y eliminar redundancia
•Incrementar seguridad del sistema
•Simplificar mantenimiento del sistema
•Combinar herramientas de distintos proveedores
•Re-uso de información en distintos etapas del ciclo de desarrollo
•Simplificar conversiones/migraciones

Funciones

El Depósito de un I-CASE sirve no sólo para contener varios tipos de información, sino
que también contiene las relaciones entre los diferentes elementos de información , así
como las reglas para usar y validar dichos elementos.
Herramientas de Ingeniería Inversa

La ingeniería inversa (en inglés, reverse engineering) es el proceso o técnica de descubrir


los principios tecnológicos de un producto, herramienta, dispositivo o sistema.

Este descubrimiento se puede realizar mediante el razonamiento abductivo (haciendo


conjeturas) de su estructura, función y operación.

Los productos más típicamente sometidos a esta técnica son los programas para
ordenador pero cualquier producto puede ser objeto de análisis de ingeniería inversa.

Se denomina así porque avanza en dirección opuesta a las tareas habituales


de ingeniería, que consisten en utilizar datos técnicos para elaborar un producto
determinado.

Aplicar ingeniería inversa a algo supone profundizar en el estudio de su funcionamiento,


hasta el punto de que podamos llegar a entender, modificar y mejorar dicho modo de
funcionamiento.

La aplicación de ingeniería inversa nunca cambia la funcionalidad del producto objeto de


la aplicación sino que permite obtener productos que indican cómo se ha construido
el mismo.

Su realización permite obtener los siguientes beneficios:

1. Reducir la complejidad del sistema


2. Generar diferentes alternativas
3. Recuperar y/o actualizar la información perdida (cambios que no se documentaron
en su momento
4. Detectar efectos laterales
5. Facilitar la reutilización

Existen los siguientes tipos de ingeniería inversa:

 Datos
 Lógica o proceso
 Interfaces de usuario
Herramientas para ingeniería inversa

Cuando un desarrollador crea un programa, comienza escribiendo el código fuente en el


lenguaje de programación seleccionado para acabar compilándolo y crear un programa
ejecutable.

Llegado este punto, nadie podría editar el programa sin disponer del código fuente inicial
para realizar una nueva compilación del mismo, y en esto es precisamente en lo que se
basa el cracking.

La técnica de ingeniería inversa constituye la piedra angular del cracking.

Se basa en la descompilación, o compilación inversa, de un programa a un lenguaje de


programación, generalmente, el más básico que existe que es el lenguaje ensamblador.

A continuación veremos las principales herramientas utilizadas para este proceso:

Depuradores

Un depurador es un programa utilizado para controlar a otros programas.

Permite analizar un código paso a paso y establecer puntos de control para buscar
posibles fallos.

Lo más interesante de los depuradores son los puntos de ruptura (breakpoint) ya que
permiten detener la ejecución de un programa cuando se cumpla una condición y ver el
estado de todas las variables y la memoria en dicho momento.

Los principales depuradores para Windows son:

 OllyDbg: Depurador de código ensamblador de 32 bits para sistemas operativos


Microsoft Windows. Pone especial énfasis en el análisis del código binario, esto lo
hace muy útil cuando no está disponible el código fuente del programa.
 WinDBG: es una pieza de software gratuita de Microsoft que puede ser usada
para depuración local en modo usuario, o incluso depuración remota en modo
Kernel.
 Visual DuxDebugger: Desensamblador depurador de 64 bits para Windows,
especialmente útil cuando el código fuente no está disponible.
 GNU Debugger (gdb): Es un depurador portable que se puede utilizar en varias
plataformas Unix y funciona para varios lenguajes de programación como C, C++ y
Fortran. GDB ofrece la posibilidad de trazar y modificar la ejecución de un
programa. El usuario puede controlar y alterar los valores de las variables internas
del programa.
 SoftICE: Es un depurador en modo kernel propietario y de pago para Microsoft
Windows. SoftICE es capaz de suspender todas las operaciones en Windows
cuando se desee, lo cual resulta útil para depurar drivers, ya que es importante
conocer cómo se accede al hardware así como las funciones del sistema
operativo.

Desensambladores

Un desensamblador es exactamente lo contrario de un ensamblador.

Tal como un ensamblador convierte código escrito en ensamblador en código máquina


binario, un desensamblador invierte el proceso e intenta recrear el código en ensamblador
partiendo del código máquina binario.

Los desensambladores intentan por tanto mostrar el código del lenguaje de la máquina en
un formato más amigable a los ojos de los humanos.

A continuación indicaremos los principales desensambladores según el sistema operativo:

 Windows
o IDA Pro
o PE Explorer
o W32DASM
o IDA 6.6
o IDA Pro Freeware 5.0
o BORG disassembler
o HT Editor
o diStorm64

 Linux
o Bastard Disassembler
o Ciasdis
o Objdump
o GDB
o LDasm

 Mac OS
o GDB
o Machonist
o Otool
o Ndisasm

Compiladores Inversos

Un decompilador es un programa de ordenador que realiza la operación inversa a un


compilador, es decir, traduce código de bajo nivel de abstracción a un lenguaje de mayor
nivel de abstracción.

Por lo tanto, un decompilador toma el código binario ejecutable e intenta recrear el código
fuente de alto nivel partir de él.
A continuación vemos algunos de los decompiladores más utilizados:

 DCC Decompiler: Sólo permite decompilar ejecutables DOS basados en el 80286


y lenguaje C. El enfoque usado por DCC en la decompilación se basa en la teoría
y técnicas de optimización de grafos adoptadas por los compiladores.
 Boomerang Decompiler Project: Es programa de código abierto para decompilar
programas en C. Altera la semántica de cada instrucción en ensamblador e
implementa el análisis estático de flujo de datos.
 Reverse Engineering Compiler (REC): Decompila código ensamblador a una
representación del código semejante a C, que requiere la edición manual para
volver a compilar. El código está a medio camino entre ensamblador y C, pero es
mucho más legible que el ensamblador puro.
Herramientas de prueba y gestión de la configuración

La gestión de configuración del software es un conjunto de actividades diseñadas para


identificar y definir los elementos en el sistema que probablemente cambien, controlando
el cambio de estos elementos a lo largo de su ciclo de vida, siendo uno de los procesos
clave para toda organización dedicada a la ingeniería del software.

En la actualidad existe una gran variedad de herramientas que apoyan a este proceso
cada una de ella con características propias y que se adaptan a diferentes metodologías
de desarrollo.

Control de versiones

Realizar a mano el control y seguimiento de las versiones del código fuente trae muchos
conflictos como ser:

 Tener muchas copias del mismo proyecto y luego olvidar cual es la copia que
funciona.
 Si el dispositivo donde está guardado el proyecto deja de funcionar todo el
esfuerzo habrá sido en vano.
 Si estás trabajando con un equipo donde todos modifican el código, será un dolor
de cabeza integrar el código de cada uno al proyecto principal.

Por ello el desarrollo de software es una tarea que requiere de buenas prácticas y
herramientas adecuadas que permitan a un equipo o persona realizar la construcción del
software de la mejor manera teniendo el control de las versiones del código fuente.

Git y BitBucket, dos herramientas que combinadas hacen que el versionado del código
fuente sea una tarea más organizada y fácil de controlar y hace que la integración al
proyecto principal sea una tarea simple y en un corto tiempo.
Ventajas

 Simplicidad y el aprovechamiento de los permisos preexistentes de acceso.


 Preparar un repositorio es muy sencillo, simplemente pones el repositorio básico
en algún lugar donde todos tengan acceso a él y ajustas los permisos de
lectura/escritura según proceda, tal y como lo harías para preparar cualquier otra
carpeta compartida.
 Puedes disponer del código fuente en cualquier lugar, y también recuperar
rápidamente el contenido del repositorio de trabajo de alguna otra persona.
 Integrar el proyecto cuando se trabaja en equipo ahora es más sencillo y reduce el
tiempo de integración.

Desventajas

 Se necesita de internet que no sea muy lento para poder subir los cambios al
repositorio de bitbucket.

Gestión de incidencias

Los cambios y errores son inevitables, por más que de decidamos adoptar todas las
previsiones necesarias, monitoreos exhaustivos o establezcamos los controles más
rígidos y estrictos posibles. Lo único que nos queda es estar preparados y registrar todas
las incidencias para tener el control sobre ellos.

Para esta actividad la herramienta elegida es MANTIS BUG TRACKER (MantisBT) es una
herramienta de gestión de incidencias de código abierto que proporciona un delicado
balance de sencillez y poder.

Ventajas

 Es multiplataforma, basada en PHP y con soporte para bases de datos MySQL,


PostgreSQL y MS SQL.
 Facilidad de uso e intuitiva.
 Licencia gratuita, ya que es GPL v2 esta define a la aplicación como software libre,
con libertad de uso, modificación y distribución.
 Soporte disponible
 Documentación de instalación en diferentes formatos.
 Variedad de plugins disponibles en la web.

Desventajas

 Es una herramienta demasiada sencilla para ciertas empresas, sobre todo para
grandes empresas y multinacionales.
Gestión de Documentación

La documentación de un proyecto de software es muy importante mantenerla actualizada


y que todos los miembros del equipo trabajen en ella desde su última versión.

Este tipo de herramientas nos ayuda a organizar la documentación generada, de forma


que sea accesible para todos los miembros del equipo. Para esta actividad la herramienta
elegida es MediaWiki.

Ventajas

 Cualquiera puede editar.


 Fácil de usar y aprender.
 No tiene una estructura determinada, por lo tanto es una herramienta flexible que
puede utilizarse para una amplia gama de aplicaciones.
 Hace un seguimiento de cada nueva edición y es un proceso simple el de volver a
una versión anterior de un documento.
 Personas situadas en diferentes partes del mundo pueden trabajar en el mismo
documento.

Desventajas

Las ventajas en un contexto, puede ser desventaja para otro.

 Cualquier persona puede editar esto puede ser demasiado abierto para algunas
aplicaciones, donde se tiene que la documentación sea confidencial. Sin embargo
se puede regular el acceso a los usuarios.
 Requiere una conexión a internet para colaborar.
Conclusión
El conjunto de herramientas que se pueden emplear en el mantenimiento de sistemas es tan
amplio o más que la diversidad misma de los sistemas susceptibles de ser mantenidos. Incluso, de
forma recursiva, buena parte de las herramientas utilizadas en el mantenimiento requieren a su
vez de mantenimiento para continuar siendo operativas.

Por mencionar un ejemplo raro, el instrumento más adecuada para identificar un dilema en un
analizador lógico restringiéndonos a los sistemas informáticos, la variedad de las herramientas y la
complejidad hacen que intentar detallarlas o simplemente presentarlas todas, sea una tarea
imposible. Desde elementos tan simples como unas pinzas, un destornillador o un soldador para
reparar circuitos o cableados hasta una cámara blanca para la fabricación de una nueva versión de
un circuito integrado, pasando por un sistema JTAG compuesto de hardware especifico, software y
un ordenador, todo son herramientas válidas para mantener sistemas electrónicos digitales. En el
caso de los sistemas informáticos sobre todo, aunque no solamente, en los ordenadores se da
además la circunstancia de que tanto el sistema a mantener como la herramienta pueden ser
hardware, software y recordemos que el software no tiene existencia física o una mezcla de
ambos, lo que da todavía mayor diversidad a las herramientas.
Bibliografía

También podría gustarte