sábado, 16 de abril de 2011

(C) 9.- Deteccion de eventos y errores del proyecto

Ejercicio. Detección de eventos, errores y excepciones de mi proyecto.
los evento que he usado hasta ahorita en mi proyecto son:
  1. Hacer click en un botón.
La confirmacion del formulario la busqueda en la  base de datos, y al acceder ala opciones  , serán accesadas por medio de botones. ,


Los errores que pudiera tener el proyecto son:
  1. Cuando una persona ingresa numeros mientras deben de ir letras .
  2. cuando falte un dato en un campo
  • ¿Forma de manejarlos?
Para solucionarlo en el HTML inserte unos campos de validacion asi en el  momento que alguein ingrese un dato erroneo le indique y no lo deje seguir hasta corregirlo

(C) 7 .-Patrones de Diseño

Patrones de diseño "Design Patterns"

Son soluciones simples y elegantes a problemas específicos y comunes del diseño orientado a objetos. Son soluciones basadas en la experiencia y que se ha demostrado que funcionan.

Es evidente que a lo largo de multitud de diseños de aplicaciones hay problemas que se repiten o que son análogos, es decir, que responden a un cierto patrón.


Patrones de creación
  • Abstract Factory. Proporciona una interfaz para crear familias de objetos o que dependen entre sí, sin especificar sus clases concretas.
  • Builder. Separa la construcción de un objeto complejo de su representación, de forma que el mismo proceso de construcción pueda crear diferentes representaciones.
  • Factory Method. Define una interfaz para crear un objeto, pero deja que sean las subclases quienes decidan qué clase instanciar. Permite que una clase delegue en sus subclases la creación de objetos.
  • Prototype. Especifica los tipos de objetos a crear por medio de una instancia prototípica, y crear nuevos objetos copiando este prototipo.
  • Singleton. Garantiza que una clase sólo tenga una instancia, y proporciona un punto de acceso global a ella.
Patrones estructurales
  • Adapter. Convierte la interfaz de una clase en otra distinta que es la que esperan los clientes. Permiten que cooperen clases que de otra manera no podrían por tener interfaces incompatibles.
  • Bridge. Desvincula una abstracción de su implementación, de manera que ambas puedan variar de forma independiente.
  • Composite. Combina objetos en estructuras de árbol para representar jerarquías de parte-todo. Permite que los clientes traten de manera uniforme a los objetos individuales y a los compuestos.
  • Decorator. Añade dinámicamente nuevas responsabilidades a un objeto, proporcionando una alternativa flexible a la herencia para extender la funcionalidad.
  • Facade. Proporciona una interfaz unificada para un conjunto de interfaces de un subsistema. Define una interfaz de alto nivel que hace que el subsistema se más fácil de usar.
  • Flyweight. Usa el compartimiento para permitir un gran número de objetos de grano fino de forma eficiente.
  • Proxy. Proporciona un sustituto o representante de otro objeto para controlar el acceso a éste.

Patrones de comportamiento
  • Chain of Responsibility. Evita acoplar el emisor de una petición a su receptor, al dar a más de un objeto la posibilidad de responder a la petición. Crea una cadena con los objetos receptores y pasa la petición a través de la cadena hasta que esta sea tratada por algún objeto.
  • Command. Encapsula una petición en un objeto, permitiendo así parametrizar a los clientes con distintas peticiones, encolar o llevar un registro de las peticiones y poder deshacer la operaciones.
  • Interpreter. Dado un lenguaje, define una representación de su gramática junto con un intérprete que usa dicha representación para interpretar las sentencias del lenguaje.
  • Iterator. Proporciona un modo de acceder secuencialmente a los elementos de un objeto agregado sin exponer su representación interna.
  • Mediator. Define un objeto que encapsula cómo interactúan un conjunto de objetos. Promueve un bajo acoplamiento al evitar que los objetos se refieran unos a otros explícitamente, y permite variar la interacción entre ellos de forma independiente.
  • Memento. Representa y externaliza el estado interno de un objeto sin violar la encapsulación, de forma que éste puede volver a dicho estado más tarde.
  • Observer. Define una dependencia de uno-a-muchos entre objetos, de forma que cuando un objeto cambia de estado se notifica y actualizan automáticamente todos los objetos.
  • State. Permite que un objeto modifique su comportamiento cada vez que cambia su estado interno. Parecerá que cambia la clase del objeto.
  • Strategy. Define una familia de algoritmos, encapsula uno de ellos y los hace intercambiables. Permite que un algoritmo varíe independientemente de los clientes que lo usan.
  • Template Method. Define en una operación el esqueleto de un algoritmo, delegando en las subclases algunos de sus pasos. Permite que las subclases redefinan ciertos pasos del algoritmo sin cambiar su estructura.
  • Visitor. Representa una operación sobre los elementos de una estructura de objetos. Permite definir una nueva operación sin cambiar las clases de los elementos sobre los que opera.
Ingenieria de software

viernes, 15 de abril de 2011

(C) 6.- Documentacion tecnica

La documentación de los programas es un aspecto sumamente importante, tanto en el desarrollo de la aplicación como en el mantenimiento de la misma. Mucha gente no hace este parte del desarrollo y no se da cuenta de que pierde la posibilidad de la reutilización de parte del programa en otras aplicaciones
La documentación de un programa empieza a la vez que la construcción del mismo y finaliza justo antes de la entrega del programa o aplicación al cliente. Así mismo, la documentación que se entrega al cliente tendrá que coincidir con la versión final de los programas que componen la aplicación.
Una vez concluido el programa, los documentos que se deben entregar son una guía técnica, una guía de uso y de instalación.

HERRAMIENTA

pydoc genera automáticamente la documentación de los módulos de Python. La
documentación puede ser presentada como páginas de teto en la consola, que se sirve a un navegador Web, o guardarse en archivos HTML.

para mi proyecto no pude generar la documentancion tendra que ser manualmente

(C) 4.- Diagrama uml


Aqui les dejo el diagrama de clases
La documentacion no me la genera creo que es porque como lo estoy haciendo para Google apps no me reconoce el framework "appweb"

(C) 3.- Herencia

La herencia de clases es uno de los conceptos básicos de la programación orientada a objeto. Decir que una clase hereda de otra quiere decir que esa clase obtiene los mismos métodos y propiedades de la otra clase. Permitiendo de esta forma añadir a las características heredadas las suyas propias.

Se dice que Poliformismo es la capacidad para que varias clases derivadas de una antecesora utilicen un mismo método de forma diferente. Por ejemplo: Si creamos dos clases distintas: Pez y Ave que heredan de la superclase Animal, la clase Animal tiene el método abstracto mover que se implementa de forma distinta en cada una de las subclases, que los peces y las aves se mueven de forma distinta.

En el proyecto El codigo de la aplicacion cuenta con herencia en las clases Guardar:ya que hereda los atributos de la clase
formulario para poderlos almacenar asi como tambein la clase inscribir manda llamar alos atributos de la clase
formulario para poderlos mostrar en la aplicacion asi como tambien la clase buscar ya que cuando realiza la
busqueda se realiza en formulario buscando coincidencias

(C)1.- Nociones basicas

NOCIONES BASICAS
INTRODUCCION DEL PROYECTO
SEFINDER 

es una aplicación web que proporciona un registro muestra mensajes para
los sobrevivientes, familiares y seres queridos afectados por un desastre natural o siestan desaparecidos esta realizadapara publicar y buscar informaci ón sobre cada unode su condición y su paradero. Muestra su estatus de busqueda asi como aportar informacion que pueda ser de utilidad.

DESARROLLO DE LA APLICACION
Desarrollado para la infraestructura de google apps que es una plataforma para
desarrollar y hospedar aplicaciones web de gestión de centros de datos de
Google. La aplicacion esta desarrollada mediante el lenguaje python

(C) 2.- Diseño con clases

clase Menu :La clase es para integrar el archivo html la  clase
llamada Menu que extiende de webapp.RequestHandler que se encargará
de mostrarla en el servidor y cuenta con atributo para las clases
django que es el framwork que utilizo para la pagina web  que se
encargará de mostrarla en el servidor
class Menu(webapp.RequestHandler):

class Formulario:En la clase Formulario lo que hace es cuando el
usuario ingrese datos en los campos los captura los datos que
almacenara son de tipo string cada atributo lo almacenara los objetos
con propiedades del tipo db  hay un atributo DateTime con el cual
inserta la fecha y hora en que se crea el registro Al momento de
confirmar los datos el formulario envía un post el cual lo
interpretará la clase guardar.
nombre = db.StringProperty()

class index:La clase es para integrar el archivo html la  clase
llamada Menu que extiende de webapp.RequestHandler, que se encargará
de mostrarla en el servidor la clase integra la pagina registro que
es el formulario

class Guardar:La clase es para guardar en la base de datos etambien
llama al método put(). permite guardar el contenido de la petición en el
servidor bajo la URI de la petición.

class confirmacion :En esta clase se utiliza el metodo post que envia
lo que esta almacenados en la clase guardar lo muestra en la pagina
web cuenta

class buscar :En esta clase se realiza la busqueda en la base de
datos cuenta con el parametro txtFullText que busca en toda la BD
busca en los datos que se coincidencias en la clase formulario
se creo un  objeto application del tipo WSGIApplication en el cual en
su contructor se le pasa una lista con  que consta la url a la cual
responde determinado clase del tipo RequestHandler en este caso para
la raiz asignaremos la clase Menu que a su vez apunta al archivo
index.html un metodo main() el cual con la funcion run_wsgi_app crea
una instancia de la aplicación finalmente si el archivo codigo.py no
se lo llama como modulo se ejecuta la aplicación

(T) 6.- Documentacion tecnica

La Herramienta que se utilizo para generar codigo apartir del diagrama de clases fue Umbrello que es una
herramienta para crear diagramas UML que ayudan en la creación de un software, se pueden hacer los
diagramas manualmente o importarlos de códigos como Java, Python, C++ entre otros y al reves es decir ya

creado el diagrama pasarlo al código correspondiente

(T) 5.- Documentacion tecnica

la herramienta que utilize para crear la documentaciontecnica fue SPE que trae integrado PyDoc que es un
generador de documentacion pero no me puede generar automaticamente porque no me reconoce los
modulos de google apps me marca un error intentando independiente pydoc es lo mismo me marca error
anexo una captura de pantalla de la IDE

(T) 4.- Herencia

En esta clase hereda la clase formulario que hay es donde busca
class buscar(webapp.RequestHandler):
def get(self):
txtFullText = self.request.get('txtFullText').upper()
if txtFullText <> '':
formularios = Formulario.all().search(txtFullText)
template_values = {
'formularios': formularios
}
else:
template_values = {}
path = os.path.join(os.path.dirname(__file__), 'busqueda.html')
self.response.out.write(template.render(path, template_values))
En esta clase hereda la clase formulario que hay es donde se guarda
class guardar(webapp.RequestHandler):
def post(self):
formulario = Formulario()
template_values = {
'txtApellidos': self.request.get('txtApellidos').upper(),
'txtNombres': self.request.get('txtNombres').upper(),
'txtCorreo': self.request.get('txtCorreo').lower(),
'tieneCorreo': (formulario.correo != '')
}
path = os.path.join(os.path.dirname(__file__), 'mensaje.html')
self.response.out.write(template.render(path, template_values))

(T) 3.- Codificacion Inicial de las clases

*clase Menu interconecta la pagina html index es la principal de la aplicacion
class Menu(webapp.RequestHandler):
def get(self):
template_values = {}
path = os.path.join(os.path.dirname(__file__), 'index.html')
self.response.out.write(template.render(path, template_values))
*clase Formulario almacena los valores que se le den a cada uno de los modelos
class Formulario(search.SearchableModel):
nombre= db.StringProperty()
apellido = db.StringProperty()
*clase Index interconecta la pagina html de registro que posteriormente se almacena en la clase
formulario
class Index(webapp.RequestHandler):
def get(self):
template_values = {}
path = os.path.join(os.path.dirname(__file__), 'registro.html')
self.response.out.write(template.render(path, template_values))
*clase datosprincipales muestra los datos de la clase formulario
class datosprincipales(webapp.RequestHandler):
def post(self):
template_values = {
'txtedad': self.request.get('txtedad'),
'txtApellidos': self.request.get('txtApellidos').upper(),
*Faltan mas por agregar
}
path = os.path.join(os.path.dirname(__file__), 'datos.html')
self.response.out.write(template.render(path, template_values))
*clase guardar se almacenan en la base de datos de google los datos de la clase formulario
class guardar(webapp.RequestHandler):
def post(self):
formulario = Formulario()
template_values = {
'txtApellidos': self.request.get('txtApellidos').upper(),
'txtNombres': self.request.get('txtNombres').upper(),
'txtCorreo': self.request.get('txtCorreo').lower(),
'tieneCorreo': (formulario.correo != '')
}
path = os.path.join(os.path.dirname(__file__), 'mensaje.html')
self.response.out.write(template.render(path, template_values))
*clase buscar ya almacenado los datos lo que hace esta clase es buscar en la clase formulario
cualquier parecido del texto que se busque mediante un If
class buscar(webapp.RequestHandler):
def get(self):
txtFullText = self.request.get('txtFullText').upper()
if txtFullText <> '':
formularios = Formulario.all().search(txtFullText)
template_values = {
'formularios': formularios
}
else:
template_values = {}
path = os.path.join(os.path.dirname(__file__), 'busqueda.html')
self.response.out.write(template.render(path, template_values))