lunes, 12 de septiembre de 2011

Programas computacion Gracfica

Aplicación Grafica que Grafique una recta ingresando como coordenadas los puntos que serán los extremos de la misma. Utilizando las propiedades de dibujo el JPanel.


Programación del JPalnel (Lienzo)



package labgraficacion01;

import java.awt.*;

public class Lienzo extends javax.swing.JPanel {

private int Xo,Yo;

private int X1,Y1;

//Propiedades Escritura

public void setX1(int X1) {

this.X1 = X1;

}

public void setXo(int Xo) {

this.Xo = Xo;

}

public void setY1(int Y1) {

this.Y1 = Y1;

}

public void setYo(int Yo) {

this.Yo = Yo;

}







Método constructor (Este lo genera por defecto NetBeans)

public Lienzo() {

initComponents();

}

Soberescribimos el Metodo Paint

@Override

public void paint(Graphics g) {

super.paint(g);

g.setColor(Color.red);

g.drawLine(this.Xo, this.Yo, this.X1,this.Y1);

}

Método para dibujar

public void Dibujarlinea()

{

repaint();

}

En la acción del botón Escribimos el siguiente código

private void btngraficarActionPerformed(java.awt.event.ActionEvent evt) {

//Leer cajas de texto

int xo = Integer.parseInt(this.txtX0.getText());

int yo = Integer.parseInt(this.txtY0.getText());

int x1 = Integer.parseInt(this.txtX1.getText());

int y1 = Integer.parseInt(this.txtY1.getText());







// Enviar variables a las variables de instancia

lienzo1.setXo(xo);

lienzo1.setYo(yo);

lienzo1.setX1(x1);

lienzo1.setY1(y1);



//LLamar al metodo paint

lienzo1.Dibujarlinea();

}

Vista de la aplicación ya ejecutada… Se coloco 4 campos de texto para ingresar las coordenadas de los puntos Y 4 etiquetas para indicar que valor se ingresara en los campos de texto, y por ultimo un botón para graficar.




Aplicación Grafica que Grafique una recta ingresando como coordenadas los puntos que serán los extremos de la misma y q además calcule la distancia entre los puntos y el punto medio. Utilizando El algoritmo DDA.



//Codigo de la clase Jpanel (Lienzo).

package appgraficojava;



import java.awt.*;



public class Lienzo extends javax.swing.JPanel

{

//Variables de instancia

private int Xo,Yo,X1,Y1;

//Propiedades de escritura

public void setX1(int X1) {

this.X1 = X1;

}

public void setXo(int Xo) {

this.Xo = Xo;

}

public void setY1(int Y1) {

this.Y1 = Y1;

}

public void setYo(int Yo) {

this.Yo = Yo;

}

public Lienzo() {

initComponents();

}

//Aquí el algoritmo DDA sobre escribiendo el método paint

@Override

public void paint(Graphics g) {

super.paint(g);

int dx = X1-Xo;

int dy = Y1-Yo;

g.setColor(Color.RED);

if(Math.abs(dx)>Math.abs(dy))

{

float m=(float)dy/(float) dx;

float b=Yo-m*Xo;

if(dx<0)

dx = -1;

else

dx=1;

while (Xo!=X1)

{

Xo+=dx;

Yo=Math.round(m*Xo+b);

g.drawLine(Xo, Yo, Xo, Yo);



}



}else

if (dy!=0)

{

float m=(float)dx/(float) dy;

float b=Xo-m*Yo;

if(dy<0)

dy = -1;

else

dy=1;

while (Yo!=Y1)

{

Yo+=dx;

Xo=Math.round(m*Yo+b);

g.drawLine(Xo, Yo, Xo, Yo);



}

}

}

Método para dibujar

public void DibujarLinea()

{

repaint();

}







//Código de la clase Cálculos (donde calcularemos la distancia entre puntos y el punto medio)

package appgraficojava;

public class Calculos

{

private double distancia;



public Calculos()

{

this.distancia=0;

}

public double DistanciaPuntos(int X0,int Y0,int X1, int Y1)

{

distancia=Math.sqrt((Math.pow(X1-X0,2))+(Math.pow(Y1-Y0,2)));

return distancia;

}

public double PuntoMedio()

{

double pm=distancia/2;

return pm;

}

}









//Código del JFrame Donde se visualizara los resultados.

private void btnGraficacionActionPerformed(java.awt.event.ActionEvent evt) {

// TODO add your handling code here:

int xo = Integer.parseInt(txtXo.getText());

int yo = Integer.parseInt(txtYo.getText());

int x1 = Integer.parseInt(txtX1.getText());

int y1 = Integer.parseInt(txtY1.getText());



lienzo1.setXo(xo);

lienzo1.setX1(x1);

lienzo1.setYo(yo);

lienzo1.setY1(y1);



lienzo1.DibujarLinea();



Calculos C =new Calculos();

String d = String.valueOf(C.DistanciaPuntos(xo, yo, x1, y1));

this.txtdistancia.setText(d);

String pm = String.valueOf(C.PuntoMedio());

this.txtpuntomedio.setText(pm);

}


Vista de la aplicación ya ejecutada.





Aplicación Grafica capaz de dibujar una línea ortogonal recibiendo como parámetros un ponto en el cual se da clic con el mouse y el Ancho (Tamaño de la linea), y que además calculara el punto medio de la línea. Ejecutara sobre un navegador web, Gracias a el uso del Formulario JApplet.

//Código del Lienzo

private int Xo,Yo,ancho;

/** Creates new form Lienzo */

public Lienzo() {

initComponents();

Xo=0;

Yo=0;

ancho=0;

}

public void setAncho(int ancho) {

this.ancho = ancho;

}

@Override

public void paint(Graphics g) {

super.paint(g);

g.setColor(Color.white);

g.drawLine(Xo, Yo, Xo, ancho);

Procesos D = new Procesos();

String pm = "Punto Medio = "+ String.valueOf(D.puntomedio(ancho));

g.drawString(pm, 50,200 );

g.drawString(D.CoordenadasPunto2(Xo, Yo, ancho), 50, 220);

}



public void DibujarLineaortogonal()

{

repaint();

}

private void formMousePressed(java.awt.event.MouseEvent evt) {

// TODO add your handling code here:

Xo=evt.getX();

Yo=evt.getY();



}

package aplicacionwebapplet;



public class Procesos

{

public double puntomedio(int ancho)

{

return ancho/2;

}

//Código de la clase procesos para calcular la coordenada del punto Y1

public String CoordenadasPunto2(int Xo,int Yo,int ancho)

{

int Y1 = Yo + ancho;

String cadena = "("+String.valueOf(Xo)+","+String.valueOf(Y1)+")";

return cadena;

}

}

//Código del formulario principal(JApplet).

private void btngraficarActionPerformed(java.awt.event.ActionEvent evt) {

// TODO add your handling code here:

int ancho = Integer.parseInt(txtancho.getText());

lienzo1.setAncho(ancho);

lienzo1.DibujarLineaortogonal();

}

//Código de la pagina web donde se va a ejecutar la aplicacion



Vista de la aplicación Ejecutada en el Navegador web.







Aplicación q grafica líneas utilizando como coordenadas las posiciones (Puntos) donde se da clic con el mouse.

//Coding del JPanel(Lienzo)



package lineaconcllic;

import java.awt.*;



public class Lienzo extends javax.swing.JPanel {



private int Xo,Yo,X1,Y1,c;



/** Creates new form Lienzo */

public Lienzo() {

initComponents();

}

@Override

public void paint(Graphics g) {

super.paint(g);

int dx = X1-Xo;

int dy = Y1-Yo;

g.setColor(Color.BLACK);

if(Math.abs(dx)>Math.abs(dy))

{

float m=(float)dy/(float) dx;

float b=Yo-m*Xo;

if(dx<0)

dx = -1;

else

dx=1;

while (Xo!=X1)

{

Xo+=dx;

Yo=Math.round(m*Xo+b);

g.drawLine(Xo, Yo, Xo, Yo);



}

}else

if (dy!=0)

{

float m=(float)dx/(float) dy;

float b=Xo-m*Yo;

if(dy<0)

dy = -1;

else

dy=1;

while (Yo!=Y1)

{

Yo+=dx;

Xo=Math.round(m*Yo+b);

g.drawLine(Xo, Yo, Xo, Yo);

}

}

}

public void dibujarlinea()

{

repaint();

}











private void formMousePressed(java.awt.event.MouseEvent evt) {

// TODO add your handling code here:

c=c+1;

if (c==1){

Xo=evt.getX();

Yo=evt.getY();

}

if (c==2)

{

X1=evt.getX();

Y1=evt.getY();

c=0;

}

}





//Código del JApplet(Formulario principal)

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

// TODO add your handling code here:

lienzo1.dibujarlinea();

}

//Código de la pagina en la q se ejecutara el Apple




Vista del proyecto ya ejecutado en un navegador web

martes, 17 de agosto de 2010

Herramientas Case mas Utilizadas

ERwin:


PLATINUM ERwin es una herramienta para el diseño de base de datos, que Brinda productividad en su diseño, generación, y mantenimiento de aplicaciones. Desde un modelo lógico de los requerimientos de información, hasta el modelo físico perfeccionado para las características específicas de la base de datos diseñada, además ERwin permite visualizar la estructura, los elementos importantes, y optimizar el diseño de la base de datos. Genera automáticamente las tablas y miles de líneas de stored procedure y triggers para los principales tipos de base de datos.

ERwin hace fácil el diseño de una base de datos. Los diseñadores de bases de datos sólo apuntan y pulsan un botón para crear un gráfico del modelo E-R (Entidad _ relación) de todos sus requerimientos de datos y capturar las reglas de negocio en un modelo lógico, mostrando todas las entidades, atributos, relaciones, y llaves importantes.

ERwin genera automáticamente tablas, vistas, índices, reglas de integridad referencial (llaves primarias, llaves foráneas), valores por defecto y restricciones de campos y dominios.

ERwin soporta principalmente bases de datos relacionales SQL y bases de datos que incluyen Oracle, Microsoft SQL Server, Sybase. Puede ser usado para generar múltiples bases de datos, o convertir una aplicación de una plataforma de base de datos a otra.

HERRAMIENTA easycase

 Es una herramienta que automatiza las fases de analisis y diseño del desarrollo de un proyecto, eliminando algunas de las tareas mas repetitivas y mecanicas.

 Puede usarse para formar estructuras de analisis, diseño de estructuras y modelar informacion y datos.

Soporta los siguientes diagramas:

 Diagrama de flujo de datos

 Diagrama de flujo de datos en tiempo real.

 Diagrama de transicion de estados.

 Diagramas de estructuras.

 Diagramas de entidad relacion.

 Diagramas de estructuras de datos.

 Diagramas de modelos de datos.

 Diagramas historicos de vida de entidades.

 Diagrama de estructura de datos logicos.

Oracle Designer:

Oracle Designer es un conjunto de herramientas para guardar las definiciones que necesita el usuario y automatizar la construcción rápida de aplicaciones cliente/servidor gráficas. Integrado con Oracle Developer, Oracle Designer, que provee una solución para desarrollar sistemas empresariales de segunda generación.

Todos los datos ingresados por cualquier herramienta de Oracle Designer, en cualquier fase de desarrollo, se guardan en un repositorio central, habilitando el trabajo fácil del equipo y la dirección del proyecto.

PowerDesigner

PowerDesigner, la herramienta de modelamiento número uno de la industria, permite a las empresas, de manera más fácil, visualizar, analizar y manipular metadatos, logrando un efectiva arquitectura empresarial de información.

PowerDesigner combina varias técnicas estándar de modelamiento con herramientas líder de desarrollo, como .NET, Sybase WorkSpace, Sybase Powerbuilder, Java y Eclipse, para darle a las empresas soluciones de análisis de negocio y de diseño formal de base de datos. Además trabaja con más de 60 bases de datos relacionales.

System Architect

Esta herramienta posee un repositorio único que integra todas las herramientas, y metodologías usadas. En la elaboración de los diagramas, el System Architect conecta directamente al diccionario de datos, los elementos asociados, comentarios, reglas de validaciones, normalización, etc.

Posee control automático de diagramas y datos, normalizaciones y balanceamiento entre diagramas "Padre e Hijo", además de balanceamiento horizontal, que trabaja integrado con el diccionario de datos, asegurando la compatibilidad entre el Modelo de Datos y el Modelo Funcional.

SNAP


SNAP es un CASE para el desarrollo de aplicaciones en Sistemas AS/400 de IBM. Proporciona el ambiente integral de trabajo,brindando la posibilidad de construir sistemas de inmejorable calidad, adheridos a los estándares S.A.A de IBM., totalmente documentados y ajustados a los requerimientos específicos de la organización, en una fracción del tiempo y coste del que se invertiría, si se utilizaran herramientas tradicionales.

SNAP se ha consolidado como el CASE más poderoso y con mejor historial de resultados, disponible para desarrollo de sistemas en el AS/400 de IBM. Genera los programas nativos de mejor rendimiento en AS/400. Así mismo, proporciona dos ambientes de trabajo y genera aplicaciones nativas y/o Cliente/Servidor con el mismo esfuerzo de desarrollo.

En su arquitectura, SNAP implementa, de manera adecuada, el esquema metodológico de ENTIDAD-RELACION, facilitando las herramientas y guías necesarias para construir aplicaciones que exploten al máximo las virtudes y potencial del AS/400 en su modalidad nativa, siguiendo los lineamientos técnicos y de presentación que propone la filosofía S.A.A. de IBM.

SNAP se compone de cuatro grandes áreas: Modelo de Datos, Método de Desarrollo

Acelerado (MDA), Utilitarios y Seguridad.

domingo, 8 de agosto de 2010

Ciclo de Vida del Software

Definición de un Modelo de Ciclo de Vida


Un modelo de ciclo de vida de software son las actividades que deben ocurrir durante el desarrollo del software, la idea es determinar el orden de las etapas involucradas y los tiempos intermedios entre estas etapas. Además describir las fases principales de desarrollo de software, definir las fases que se deben ejecutar primero dentro de esas fases, ayuda a administrar el progreso del desarrollo, y proveer un espacio de trabajo para la definición de un detallado proceso de desarrollo de software.

Las etapas principales a realizar en cualquier ciclo de vida son:

1. Análisis: Construye un modelo de los requisitos

2. Diseño: A partir del modelo de análisis se deducen las estructuras de datos, la estructura en la que descompone el sistema y la interfaz de usuario.

3. Codificación: Construye el sistema. La salida de esta fase es código ejecutable.

4. Pruebas: Se comprueba que se cumplen criterios de corrección y calidad.

5. Mantenimiento: En esta fase, que tiene lugar después de la entrega se asegura que el sistema siga funcionando y adaptándose a nuevos requisitos.

Las etapas constan de tareas. La documentación es una tarea importante que se realiza en todas las etapas. Cada etapa tiene como entrada uno o varios documentos procedentes de las etapas anteriores y produce otros documentos de salida según se muestra en la figura.

Alternativas de Modelos de Ciclo de Vida
 El ciclo de vida de un software se puede ver de muchas maneras, dependiendo del autor del software q se desee desarrollar a continuacion veremos algunos:
  • Modelo cascada y Cascada Con Realimentacion
Modelos evolutivos
  •  Modelo iterativo incremental

  •   Modelo espiral
  •  Ciclo de vida en V
Modelo cascada

Este, aunque es más comúnmente conocido como modelo en cascada es también llamado "modelo clásico", "modelo tradicional" o "modelo lineal secuencial".

El modelo en cascada puro difícilmente se utilice tal cual, pues esto implicaría un previo y absoluto conocimiento de los requisitos, la no volatilidad de los mismos (o rigidez) y etapas subsiguientes libres de errores; ello sólo podría ser aplicable a escasos y pequeños desarrollos de sistemas. En estas circunstancias, el paso de una etapa a otra de las mencionadas sería sin retorno, por ejemplo pasar del Diseño a la Codificación implicaría un diseño exacto y sin errores ni probable modificación o evolución: "codifique lo diseñado que no habrán en absoluto variantes ni errores". Esto es utópico; ya que intrínsecamente el software es de carácter evolutivo, cambiante y difícilmente libre de errores, tanto durante su desarrollo como durante su vida operativa.
Sin embargo, el modelo cascada en algunas de sus variantes es uno de los actualmente más utilizados10 , por su eficacia y simplicidad, más que nada en software de pequeño y algunos de mediano porte; pero nunca (o muy rara vez) se lo usa en su forma pura, como se dijo anteriormente. En lugar de ello, siempre se produce alguna realimentación entre etapas, que no es completamente predecible ni rígida; esto da oportunidad al desarrollo de productos software en los cuales hay ciertas incertezas, cambios o evoluciones durante el ciclo de vida. Así por ejemplo, una vez capturados (elicitados) y especificados los requisitos (primera etapa) se puede pasar al diseño del sistema, pero durante esta última fase lo más probable es que se deban realizar ajustes en los requisitos (aunque sean mínimos), ya sea por fallas detectadas, ambigüedades o bien por que los propios requisitos han cambiado o evolucionado; con lo cual se debe retornar a la primera o previa etapa, hacer los pertinentes reajustes y luego continuar nuevamente con el diseño; esto último se conoce como realimentación. Lo normal en el modelo cascada será entonces la aplicación del mismo con sus etapas realimentadas de alguna forma, permitiendo retroceder de una a la anterior (e incluso poder saltar a varias anteriores) si es requerido.


De esta manera se obtiene un "modelo cascada realimentado", que puede ser esquematizado como lo ilustra la figura 3.


Modelos evolutivos


El software evoluciona con el tiempo. Los requisitos del usuario y del producto suelen cambiar conforme se desarrolla el mismo. Las fechas de mercado y la competencia hacen que no sea posible esperar a poner en el mercado un producto absolutamente completo, por lo que se debe introducir una versión funcional limitada de alguna forma para aliviar las presiones competitivas.


Los evolutivos son modelos iterativos, permiten desarrollar versiones cada vez más completas y complejas, hasta llegar al objetivo final deseado; incluso evolucionar más allá, durante la fase de operación.


Los modelos “Iterativo Incremental” y “Espiral” (entre otros) son dos de los más conocidos y utilizados del tipo evolutivo.

Modelo iterativo incremental


En términos generales, podemos distinguir, en la figura 4, los pasos generales que sigue el proceso de desarrollo de un producto software. En el modelo de ciclo de vida seleccionado, se identifican claramente dichos pasos. La Descripción del Sistema es esencial para especificar y confeccionar los distintos incrementos hasta llegar al Producto global y final. Las actividades concurrentes (Especificación, Desarrollo y Validación) sintetizan el desarrollo pormenorizado de los incrementos, que se hará posteriormente.

 
 Modelo espiral


Es un modelo evolutivo que conjuga la naturaleza iterativa, con los aspectos controlados y sistemáticos del Modelo Cascada. Proporciona potencial para desarrollo rápido de versiones incrementales. En el modelo Espiral el software se construye en una serie de versiones incrementales. En las primeras iteraciones la versión incremental podría ser un modelo en papel o bien un prototipo. En las últimas iteraciones se producen versiones cada vez más completas del sistema diseñado.

El modelo se divide en un número de Actividades de marco de trabajo, llamadas "regiones de tareas". En general existen entre tres y seis regiones de tareas (hay variantes del modelo). En la figura se muestra el esquema de un Modelo Espiral con 6 regiones. En este caso se explica una variante del modelo original de Boehm, expuesto en su tratado de 1988; en 1998 expuso un tratado más reciente.

 
 
Ciclo de vida en V


Tiene las mismas fases que el modelo en cascada pero se considera el nivel de abstracción de cada una. Una fase además de utilizarse como entrada para la siguiente, sirve para validar o verificar otras fases posteriores. Su estructura está representada en la figura.