Taller PHP5: "Semana 2 - Ingeniería Inversa"

Esta es la letra de la Semana2 del Taller sobre PHP5:

La "empresa" SurForce, entendiendo que el postulante ha estudiado cabalmente el material que se le sugirió como base, solicita que se apliquen los conceptos aprendidos y resuelva los siguientes requerimientos:

Preparar el entorno de trabajo
  1. Bajar el "proyecto base" desde el repositorio SVN: usando las herramientas instaladas obtener los fuentes del proyecto que se encuentra actualmente alojado en el servicio Google Code.
  2. Reconstruir la base de datos que necesita el sistema (subdirectorio "sql").
  3. Probar todas las opciones del sistema

Documentar el sistema

Se necesita hacer "ingeniería inversa", es decir, usted recibe un sistema que desconoce y que no cuenta con documentación. Se le solicita que analice el sistema y presente una documentación que contenga los siguientes diagramas UML.
  1. Diagrama de "Casos de Uso"
  2. Diagrama de "Paquetes" (presentación, dominio y persistencia)
  3. Diagrama de "Clases" de cada paquete.

Cuestionario

Contestar el siguiente cuestionario (en caso afirmativo indicar claramente en que parte del fuente, en caso negativo, justificarlo de forma detallada)
  1. ¿En qué parte del sistema se realiza "herencia"?
  2. ¿En alguna parte del sistema se usa "polimorfismo"?
  3. ¿Si tuviera que agregar otro tipo de usuario, como un Administrador, qué haría?
  4. Obtenga un ejemplo de "encapsulamiento" y explíquelo detalladamente.

Forma y límite de la entrega

Tienen una semana para investigar, experimentar, y aplicar los conocimientos. El plazo de entrega es el próximo lunes sin prórroga.

Para la documentación deberá usar las siguientes herramientas:
  • Google Docs - deberá realizar un documento "formal" con toda la información que se le solicita. Luego de finalizado, deberá compartir el documento con el Gerente de Proyectos. El documento deberá llamarse "semana2-nombredeusuario".
  • Gliffy - se usará para hacer todos los diagramas UML, que luego deberá grabarlos en un archivo gráfico y agregarlos al documento base (punto anterior).
IMPORTANTE: El desarrollador que exceda de esta fecha límite (lunes 5 de marzo) o que en la documentación falte alguno de los requerimientos, será descartado del taller.

PD: todas las dudas sobre los requerimientos podrán hacerse en los comentarios de esta entrada.

38 comentarios:

Enrique Place dijo...

Estimado Mario:

Todavía estoy organizando la metodología y a los líderes. El momento que tengan acceso a ellos será cuando estén prontos y se les asigne un sistema para desarrollar.

Sobre las consultas, sí, envíalas aquí.

PD: Medita tus preguntas, si es algo que se desprende de la letra o de la información que se asignó en las semanas anteriores, no se responderá.

Unknown dijo...

Hola, quise inscribirme al curso pero al parecer llegue tarde a las inscripciones, me gustaria que centralizaran toda la información que generen de las semanas y las pongan en una web, a fin de hacer publico el acceso al curso, yo entiendo que seria imposible para ti responder dudas de todos los usuarios que entran a tu web pero considero que liberar toda esa información ayudaria a muchisima gente(quizas unos foros ayudarian en esa tarea), ojala en un futuro volvieras a reabrir otro curso igual este, de antemano gracias y saludos desde México.

Anónimo dijo...

Perdonen por moletsar, pero me apetece escribir algo antes d eirme a trabaja ry para dejar constancia de que 'seguimos por aquí':

Esta tarde me pongo con ello. ¿Y no hay opción de corrección? :| Nada, que se intentará hacer lo mejor que se pueda, todo sea por permanecer en la empresa (la cual veo que da poco margen de error... ¡que estamos empezando!)

David, Las Palmas.

HispaFred dijo...

Hola buenas.
Estoy intentando seguir el curso, aunque no llegue a tiempo para el registro fui uno de los 100 en adelante, y me quede sin oportunidad, al ver todo lo que esplicas y buscar informacion de cosas que no sabia, me doy cuenta de lo poco que se.
Asi y todo encuentro que si mas adelante abriras otra vez lo de los registros seria bueno para los que podamos tener la oportunidad de hacerlo desde el principio ya que si hay algo mal de lo que hacemos ahora despues lo arrastraremos.
Sin animo de meter prisa.

Un saludo y adelante.

Dolors Reig (@dreig) dijo...

Buenas noches:
No sé si estoy o no en el taller pero por lo que veo, el tema dependerá en parte de los resultados de esta primera actividad. Aunque muchos temas son nuevos para mi, voy consiguiendo pequeñas cosas. Lo que no me queda claro es:
-Si debemos probar smarty (de hecho, en local me aparece el siguiente error: Fatal error: Class 'TemplateSmarty' not found in C:\wamp\www\surforce-proyectobase\presentacion\PresentacionFachada.class.php on line 17). No lo entiendo, porque sí tengo el archivo TemplateSmarty. Creo que sin poder acceder al sitio, a partir de código, podría intentar crear los diagramas UML. ¿Es así?
Muchas gracias por adelantado.

Enrique Place dijo...

Estimado Erick:

> Hola, quise inscribirme al
> curso pero al parecer llegue
> tarde a las inscripciones, me

Ya avisamos en el blog que se volverán a abrir en cualquier momento.

> gustaria que centralizaran toda
> la información que generen de las
> semanas y las pongan en una web,
> a fin de hacer publico el acceso
> al curso, yo entiendo que seria

También se comentó en el blog, se construirá un Wiki para centralizar y formalizar toda la información.

> imposible para ti responder dudas
> de todos los usuarios que entran
> a tu web pero considero que

Sí, hace un año podía, pero veo que "no soy escalable" como los servidores ;-)

> liberar toda esa información
> ayudaria a muchisima gente(quizas
> unos foros ayudarian en esa
> tarea), ojala en un futuro

También se comentó en el blog, se crearon foros pero no se usarán para resolver consultas. Cada uno debe poner su esfuerzo para superar los desafíos. Los foros se usarán para comunicarse entre los integrantes de los equipos de desarrollo, asignación que se hará durante el mes de marzo.

> volvieras a reabrir otro curso
> igual este, de antemano gracias y
> saludos desde México.

Sí, no sé como vamos a terminar ni en cuantos sub-proyectos nos iremos a abrir, pero será tenido en cuenta. ;-)

Enrique Place dijo...

Estimado DavidDiaz:

> Esta tarde me pongo con ello.
> ¿Y no hay opción de corrección? :|
> Nada, que se intentará hacer lo
> mejor que se pueda, todo sea por
> permanecer en la empresa (la cual
> veo que da poco margen de
> error...
> ¡que estamos empezando!)

Estimado, aprende a leer entre líneas. Vuestro "gerente" nunca dijo que "serán descartados" por los errores que se puedan cometer, solo por no cumplir en la fecha asignada o porque existan faltantes en los requerimientos.

Estoy dejando en claro, constantemente, que lo importante es equivocarse y aprender de los errores, pero obviamente que se castigará la falta de compromiso con el proyecto.

Si se aceptan participantes que no tengan voluntad para cumplir con las asignaciones, eso repercutirá en el grupo que se le asignará en el futuro.

¿Se entiende? ;-)

Enrique Place dijo...

Estimado Oscar:

> Estoy intentando seguir el curso,
> aunque no llegue a tiempo para
> el registro fui uno de los 100 en
> adelante, y me quede sin
> oportunidad, al ver todo lo que
> esplicas y buscar informacion de
> cosas que no sabia, me doy cuenta
> de lo poco que se.

No te olvides que hay dos partes, y van corriendo las semanas de autocapacitación con las directivas que va dictando la "empresa".

> Asi y todo encuentro que si mas
> adelante abriras otra vez lo de
> los registros seria bueno para
> los que podamos tener la
> oportunidad de hacerlo desde el
> principio ya que si hay algo mal
> de lo que hacemos ahora despues
> lo arrastraremos.

No te has perdido nada aún. Estoy haciendo pruebas con algunos líderes para ver como organizarme y empezar a definir nuevos grupos. Los desarrolladores aún no están trabajando en nada que no sea las semanas de autocapacitación.

Unknown dijo...

Hola Enrique, saludos, mi duda es al tratar de bajar "proyecto base" por medio tortoiseSVN y al poner la ruta de http://surforce-proyectobase.googlecode.com/svn/trunk/
empieza a descargar pero me pide el usuario y la contraseña, esta la proporsionas tu o hay otra forma de bajar el proyecto base sin que pida el Pass ni el nombre de usuario, mil gracias Enrique...

Enrique Place dijo...

Estimada Dreig:

> No sé si estoy o no en el
> taller pero por lo que veo, el

Te busqué y estás en la lista de desarrolladores, pero no estás habilitada aún. Sigue trabajando en las semanas de autocapacitación y cuando se habilite nuevamente el sistema de registro recibirás probablemente una confirmación.

> -Si debemos probar smarty (de
> hecho, en local me aparece el
> siguiente error: Fatal error:
> Class 'TemplateSmarty' not found
> in
> > C:\wamp\www\surforce-proyectobase\presentacion\PresentacionFachada.class.php
> on line 17). No lo entiendo,
> porque sí tengo el archivo
> TemplateSmarty.

El sistema está probado y funciona. Los demás usuarios confirmarán si han tenido problemas también o si es un caso aislado.

Si es un caso aislado, deberás resolverlo por tus medios. No te olvides que la "empresa" te está evaluando.

> Creo que sin poder acceder al
> sitio, a partir de código, podría
> intentar crear los diagramas
> UML. ¿Es así?

Lee con atención los requerimientos. De todas formas, si no lo necesitaras funcionando ahora, lo vas a necesitar en un futuro inmediato.

Nota: aprendan a ser "autosuficientes".

Enrique Place dijo...

Estimado nanomedia77:

> empieza a descargar pero me
> pide el usuario y la contraseña,

Creo que estás mal entendiendo el sentido del taller, mi misión y tú misión.

La empresa te dio esos requerimientos y tú estas volviendo a preguntar algo que se desprende leyendo.

Lo peor que puede suceder es que fracasemos en la "comprensión lectora", o por lo pronto, en leer superficialmente sin entender.

Iñaki Abete dijo...

Enrique, una rapida:

Soy de usar otro programa para los diagramas UML, el "Enterprise Architect".
Ahora, en las herramientas a usar dice que usemos "Gliffy" pero que luego se deberan guardar en formato grafico. Esto mismo lo puedo hacer desde el "EA", ¿es lo mismo? o ¿si o si debo usar el "Gliffy" para guardarlo en formato grafico?

Gracias.

Iñaki Abete dijo...
Este comentario ha sido eliminado por el autor.
Anónimo dijo...

Bueno, he sacado un rato para mirar por encima las tareas de esta semana :) He descargado el repositorio que nos has indicado y confirmo el mismo error que le ha dado a dreig. En las mismas condiciones (WAMP) me da el error:

template_dir = 'templates'; $this->config_dir = 'config'; $this->cache_dir = 'cache'; $this->compile_dir = 'templates_c'; $this->left_delimiter = ''; } } ?>
Fatal error: Class 'TemplateSmarty' not found in C:\wamp\www\tallerphp5\surforce-proyectobase\presentacion\PresentacionFachada.class.php on line 17

Creo que hay un error en el fichero PRE.'TemplateSmarty.class.php' en la primera línea:

require_once("Smarty/libs/Smarty.class.php");

Creo que se debería sustituir por:

require_once("configuracion.php");
require_once(SMARTY."/libs/Smarty.class.php");

Omito la explicación porque resulta obvia (en el directorio de la presentación no se encuentra el directorio de Smarty. Éste se encuentra un nivel superior, definido en los configure.php)

De todos modos, haciendo este cambio sigue dándome el mismo error :) Estoy cansado y reconozco no haber investigado mucho, así que seguiré hasta encontrarle la lógica al asunto.

Por cierto, he modificado el fichero config.txt, y el TemplateSmarty.class.php. Para config.txt es obvia la respuesta pero para el resto (php, html, css, tpl) ¿Hago bien al modificar el código o me estoy adelantando?

Un saludo

--
Juanjo Ortiz

Enrique Place dijo...

Estimado inakiabt:

> Ahora, en las herramientas a
> usar dice que usemos "Gliffy"
> pero que luego se deberan guardar
> en formato grafico. Esto mismo

La empresa es medio necia en ese sentido y su estrategia es usar fundamentalmente herramientas web y a su vez, que permitan la colaboración de personas de forma remota.

¿Se entiende la respuesta? ;-)

Iñaki Abete dijo...

Se entiende la respuesta, aunque mi pregunta era si lo importante era la el archivo grafico como una imagen JPEG.

Saludos

colombiansoe dijo...

Hola como están.. bueno yo estoy tratando de realizar el trabajo, aun no estoy muy segura de haber quedado registrada luego del dichoso ataque pero bueno...

La cuestión es que al igual que los dos casos presentados anteriormente, a mi me aparece el mismo error he tratado de seguirle la lógica a las cosas y no se en realidad como solucionarlo, pues el archivo que es solicitado según el error, este está en el directorio aparentemente adecuado.. Pero en realidad no se.. Estoy armando los paquetes y las clases que hay en cada uno.. Está un poco exigente la cuestión pero con toda… pa' lante es pa' ya...

P.D. Este es el error al ejecutar el index que por cierto cuando yo descargué el proyecto esto no estaba, ahoritas volví a descargarlo porque modifique algo y entonces fue cuando apareció…

template_dir = 'templates'; $this->config_dir = 'config'; $this->cache_dir = 'cache'; $this->compile_dir = 'templates_c'; $this->left_delimiter = ''; } } ?>
Fatal error: Class 'TemplateSmarty' not found in C:\Archivos de programa\Apache Group\Apache2\htdocs\surforce-proyectobase\presentacion\PresentacionFachada.class.php on line 17

P.D.D. Se me olvidaba el backup de la bd que está en el proyecto también me sale error al tratar de cargarlo, yo tengo instalada la versión 5 de mysql y el este proceso de carga lo realizo con MySQL Administrator … pues opte por crear nuevamente la base de datos.. pero de todas maneras lo informo…

Bueno hasta una proxima… seguiré con mi análisis y diseño.

Anónimo dijo...

Juanjo dijo...
>... Fatal error: Class
>'TemplateSmarty' not found in
>C:\wamp\www\tallerphp5\surforce-proyectobase\presentacion\PresentacionFachada.class.php on line 17

Coloca el directorio "surforce-proyectobase" en "www" no dentro de "tallerphp5". Si ves el archivo de configuración que esta en la raíz del sitio dice:

// Configuracion base
define('SRV', $_SERVER['DOCUMENT_ROOT']);
define('APP', SRV."/surforce-proyectobase");


NO dice:

define('APP', SRV."/tallerphp5/surforce-proyectobase");

¿Ves la diferencia?

Espero haber sido de ayuda.

Que pasen bien.

Dolors Reig (@dreig) dijo...

Gracias, a Juanjo y a todos los que intentan dar claves para solucionar el error, pero en mi caso, todo sigue igual. Creo que es un problema en la instalación de Smarty (los guiones en la c de templates no terminan de coincidir) pero hasta donde he podido, he intentado arreglarlo sin éxito. El cambio de directorio, en mi caso, no ha funcionado.
Gracias, de todos modos, por la ayuda. Por mi parte, si logro encontrar la solución, os la comunico.
Saludos

Dolors Reig (@dreig) dijo...

Compañeros....solucionado. A pesar de que no me convence demasiado la solución, si instalo Xampp y la carpeta surforce-proyectobase en htdocs, todo funciona. Si alguien "descubre" porqué no hay forma con Wamp, el tema ya es casi de orgullo.

Saludos.

Anónimo dijo...

Dreig,
mira en el fichero de configuración (configuracion.php) hay una linea que define el directorio de la aplicación

define('APP', SRV."proyectobase")

Si cambias el nombre puedes instalarlo bajo ese nombre (por lo menos a mi me ha pasado)

Anónimo dijo...

Anónimo dijo:
> Coloca el directorio
> "surforce-proyectobase" en "www" no
> dentro de "tallerphp5".
>
> NO dice:
> define('APP', > SRV."/tallerphp5/surforce-proyectobase");

Hola, en mis pruebas sí lo dice :) es decir, cambié el fichero de configuración para que quedara de ese modo.

Hasta esta noche no podré probar pero lo que haré es probarlo en linux que seguramente sea desde donde seguiré el taller.

Un saludo

--
Juanjo Ortiz

Luis Luevech dijo...

Buenos dias, pues a mi descargandolo tal cual y creando la base de datos me funciona todo, ahora empieza el trabajo de verdad.

Dolors Reig (@dreig) dijo...

Conseguido....eso sí, al conectar con la base de datos me aparecían varios errores:
El primero se soluciona cambiando la línea 93 de BasedeDatosclass.php por la siguiente:
$this->conexion = mysql_connect($this->servidor,$this->usuario,$this->n)

(soluciona el tema de la conexión si no hemos establecido password para el acceso a SQL)

Otro detalle es que debemos llamar a la base "proyectobase" en sql.

Me callo ya. Problemas resueltos.
Espero haber ayudado a quien estuviera igual.

Gracias por vuestra ayuda.

Saludos.

edrop14 dijo...

Hola a todos ayer en la noche fue q pude por cuestion de tiempo descargar la miniaplicacion.

Me funciono perfectamente en mi servidor local q lo instale con appserv lo que hice fue descargar la aplicacion directament en la carpeta www modificar el archivo configuracion.txt para colocar pasword a la db crear la db en mysql y funciona perfectamente no toque ningun archivo .php eso para los que tengan instaldo appserve en window.
Bueno la "tarea" es larga a ver como saco el tiempo saludos a todos .

Alfonso Sevilla dijo...

Hola:

Veo que varios han tenido problema con el asunto de Wamp, pues en lo personal prefiero la instalación de cada software por separado, hasta el momento no he tenido ningún problema y todo funciona bien.

Saludos

Danilo Domínguez P. dijo...

Yo solamente cambié esta linea

define('APP', SRV."/surforce-proyectobase/surforce-proyectobase");

debido a que cuando lo descargue del repositorio en mi carpeta de htdocs el queda una ruta mas abajo como dijeron algunos

Dolors Reig (@dreig) dijo...

Gracias, Mario. Lo he hecho como dices, sin arruinar la reutilizabilidad de la clase y continúa funcionando.
Saludos.

Danilo Domínguez P. dijo...

Una pregunta para Enrique:
Cuando dices que el documento hay que entregarlo al Gerente de Proyecto, quienes serían esos Gerentes de Proyectos.

Burzak dijo...

Danilo, ten en cuenta que hay un Gerente de Proyecto y ese es Enrique, los demás (donde nace tu confución) son Lideres de Grupos que no es lo mismo... y el trabajo tendrá que ser entregado al gerente (a Enrique).

Saludos.

Danilo Domínguez P. dijo...

Ok gracias dario

Anónimo dijo...

Hola, buenos días.

Quiero apoyar las palabras de Mario Benavides Jurado. Fíjensen bien en todo el sistema antes de estar tocando nada. Se supone que la empresa nos ha entregado el código plenamente funcional. Lo primero es mirar los archivos de configuración y, en caso de dudas, mejor preguntar ;-)

Lo segundo quiero decir que ya ayer saqué tiempo para comenzar las actividades, aunque quizás hasta el domingo no sea cuando pueda darle dedicación exclusiva y terminarlo. Pero antes de que llegue ese momento me gustaría saber con exactitud la estructura de un documento "formal" ¿podrías darnos alguna pista Enrique? (perdona si ya debería de saber esto, pero la verdad... no me quedó claro).

Y, si no es molestia, ¿qué tal un pequeño "Cómo compartir los documentos con el gerente..."?

Saludos y gracias.

Unknown dijo...

El error que nos ha dado a algunos, y que provocaba la salida siguiente:
template_dir = 'templates'; $this->config_dir = 'config'; $this->cache_dir = 'cache'; $this->compile_dir = 'templates_c'; $this->left_delimiter = ''; } } ?>
Fatal error: Class 'TemplateSmarty' not found in C:\Archivos de programa\Apache Group\Apache2\htdocs\surforce-proyectobase\presentacion\PresentacionFachada.class.php on line 17

Se debe, al menos en mi caso, a que el archivo TemplateSmarty.class.php , a excepción de todos los demás, empieza con la etiqueta corta de php (< ?>, en vez de la larga (< ?php). Esto sólo da problemas si en el php.ini tenemos la directiva short_open_tag como Off (no permitiendo la etiqueta corta). Por eso sale por pantalla código php sin interpretar al inicio. No tiene nada que ver con los require_once.
La solución está en permitir la etiqueta corta en el php.ini (short_open_tag = On), lo cual no se recomienda por portabilidad, o modificar el código de TemplateSmarty.class.php para añadir la etiqueta < ?php, que supongo que es como debería estar.

Saludos..

jelarrosa dijo...

Hola amigos, como no he podido aun bajar el proyecto base,pienso que el lunes quedare sin trabajo. Por si a alguien se le ocurre algo en tortoise me da este error.
Saludos y bena suerte a todos.
jose

Error: PROPFIND request failed on '/svn/trunk'
Error: PROPFIND of '/svn/trunk': Could not resolve hostname `surforce-proyectobase.googlecode.com': The requested name is valid, but no data of the requested type was found. (http://surforce-proyectobase.googlecode.com)

Unknown dijo...

Para los que tienen clave de acceso a su phpmyadmin; el sitema por defecto entra con usuario root, pero la mejor solucion es modificar estos parametros, en la carpeta de framework encontraran un archivo llamado BaseDeDatos.class.php esta clase base de datos tiene una funcion llamada
private function getConfiguracion
la cual toma los parametros para conectarse a la base de datos mediante un archivo, que si no existe lo crea y en este archivo se encuentra dicha configuracion, el archivo se llama confing.txt y lo encuentran en la carpeta de persistencia, dicho archivo contiene estos parametros por defecto:

usuario = root
clave = root
host = localhost
base = proyectobase

Dado que al conectarse a la base de datos pedira todos estos campos y si estos son diferentes a los que tenemos en nuestra configuracion, pues bingo, dara error lo mejor y mas practico es modificar este archivo cambiando los valores que nosotros tengamos configurados, por ejemplo si tenemos otra clave entonces cambiariamos ese campo en ves de la clave que se maneja por defecto en el archivo config.txt

clave = root
clave = propia

Espero haberles ayudado en algo y no confindirlos, saludos a todos...

Federico dijo...

magalay, el enlace que estas utilizando es incorrecto. Entra a dicho enlace y en la parte de source veras el correcto.

Saludos.

Diego Alberto dijo...

Hola, tengo una pregunta sobre los diagramas. ¿estos deben hacerse basándose en todos los elementos disponibles en el código? o sobre los que son inmediatamente funcionales para el usuario. Gracias

Diego Alberto dijo...

en la pregunta anterior me refiero más específicamente al de casos de uso. (Opciones vistas en páginas vs los métodos disponibles en la clase PresentacionFachada por ejemplo)

Entradas populares