martes, 25 de septiembre de 2007

Ingenieria del Software: Ingenieria Inversa

Introducción sobre la utilización de la Ingeniería Inversa o Reverse Engineering.

En este caso y razón del motivo por el que fue creado este blog, trataré el tema de la Ingeniería Inversa sobre aplicaciones en Java. Es decir, veremos como a través de un proyecto Java obtendremos su UML.

Utilizaremos la nueva versión de NetBeans IDE 6.0, este entorno de desarrollo ha introducido una serie de herramientas que se utilizan para la creación de proyectos de software como son las siguientes:

- Diagrama de Paquetes
- Diagrama de Secuencia
- Modelo del Dominio
- Diagrama de Casos de Uso
- Diagrama de Clases
- Diagrama de Comunicación
- Diagrama de Clases de Diseño

A parte de estas versátiles herramientas de desarrollo de software, a través de la herramienta de ingeniería inversa obtendremos los diagramas creados a partir de un proyecto de una aplicación de Java existente.

En este caso la aplicación existente será una aplicación bancaria, crearemos un nuevo proyecto de UML escogiendo la opción de Reverse Engeened Java-Model Platform

Después de crear nuestro proyecto de UML mediante la Ingeniería Inversa tendremos la opción de generar los diferentes diagramas, en projects nos encontraremos con Model, aquí encontraremos las clases obtenidas en bankpack (en mi caso) y generaremos un diagrama en cualquiera (click derecho de ratón sobre la clase, new y elegir diagrama) en nuestro caso escogeremos un diagrama de clases de diseño de bankaccount:

Y una serie de diagramas de la aplicación en conjunto, simplemente seleccionando las clases que queremos representar en nuestro proyecto de UML y voilá


Al mismo tiempo y una gran ventaja, podemos generar también código fuente para un proyecto de Java que hayamos creado previamente, simplemente escogiendo la opción generate code y creará un archivo o archivos con código fuente en nuestro nuevo proyecto.

ej: BankAccount.java
package bankpack;


/**
* @author Administrator
*/

abstract class BankAccount implements Account {
private double balance;
private String accountNumber;
private double interestRate;
private History mHistory = new History();

/**
* Creates a new instance of BankAccount
*/

public BankAccount () {
}

public BankAccount (String accNumber, double initialAmount) {
}

public BankAccount (String accNumber, double initialAmount, double rate) {
}

public double getBalance () {
return 0.0;
}

public String getAccountNumber () {
return null;
}

public void withdraw (double val) throws bankpack.NoAvailableFundsException {
}

public void deposit (double val) {
}

public void setAccountNumber (String val) {
}

public boolean equals (Object o) {
return true;
}

public int hashCode () {
return 0;
}


public String toString () {
return null;
}

public History getHistory () {
return null;
}

public void setHistory (History val) {
}

public String getMessage () {
return null;
}

public double getInterestRate () {
return 0.0;
}

public void setInterestRate (double val) {
}

private void setBalance (double val) {
}

private void noAvailableFunds () throws bankpack.NoAvailableFundsException {
}

}



Un saludo a todos y espero que aprovechéis esta herramienta de Netbeans para crear proyectos UML de vuestras aplicaciones o otras como JEnigma...

One sign of a good programmer is their absolute need to understand



3 comentarios:

Anónimo dijo...

I am just making a blog related to this. If you allow, I would like to use some of your content. And with full refernce of course. Thanks in advance.

- Andre

Unknown dijo...

Hello

No problem you can take the information you need.

I would like to know your blog and see what I can contribute to your article.

Regards

calindaulsh dijo...

Gambling and casino - Dr.MCD
Our experts at the gambling 진주 출장샵 establishment found that the majority of the casino deposit 안성 출장안마 offers a casino bonus 용인 출장마사지 bonus. With this bonus, 계룡 출장샵 we'll give 속초 출장안마 you free spins.