Comunidad de diseño web y desarrollo en internet online

como enfrentar proyecto grande

Citar            
MensajeEscrito el 23 Mar 2009 06:20 am
Hola, hasta ahora solo había tenido que hacer cosas pequeñas en flex que se solucionaban con un par de states, pero ahora que estoy pensando en algo mas grande me preguntaba si sería bueno construir toda la aplicación dentro del mismo archivo usando tabs, states, y todo eso o si es mejor usar diferentes archivos.
No quiero usar un framework porque siempre me han hecho la vida demasiado complicada, pero si me gustaría saber como han encarado proyectos de una magnitud mayor a lo que uno ve en los ejemplos de desarrollo en flex.

Por Xyrer

628 de clabLevel

1 tutorial

Genero:Masculino  

Android App Development

firefox
Citar            
MensajeEscrito el 23 Mar 2009 10:46 am
Si no usas un framework para un proyecto grande, es bastante probable que no sea grande o que ya lo estes haciendo sin darte cuenta.
Mirate Cairgorm o PureMVC

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 23 Mar 2009 03:42 pm
Estuve echándole un vistazo a ambos pero para hacer cualquier cosa en cualquiera de los dos debo hacer 3 veces más que haciéndolo solo con flex, por eso no me gustan los frameworks para flex, comenzando con que flex ya es un framework.

Por Xyrer

628 de clabLevel

1 tutorial

Genero:Masculino  

Android App Development

firefox
Citar            
MensajeEscrito el 23 Mar 2009 03:45 pm
Yo siempre pensé lo mismo, hasta que empecé a liarla con mis desarrollos made in casa ... ahí descubrí que estaba haciendo proyectos grandes. Antes (y mientras no te lo exijan) cualquier apaño con el que te sientas cómodo está bien

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 23 Mar 2009 09:56 pm
Bueno, eso con lo de los frameworks, que simplemente digo que no quiero usarlos, pero la pregunta de fondo es: es mejor utilizar diferentes .mxml? o uno solo separando todo en states?

Por Xyrer

628 de clabLevel

1 tutorial

Genero:Masculino  

Android App Development

firefox
Citar            
MensajeEscrito el 24 Mar 2009 04:49 am
Yo no tengo experiencia en proyectos grandes. Pero si he hecho varios programas en los que hacer 1 sólo archivo que abarque todo es algo aparatoso. Te queda una gran pila de código, es preferible hacer, en este caso .mxml separados, te queda algo mucho más fácil de leer. Claro, en este caso no serían states los que usarías, sino un swfloader que vaya cargando el .swf que se vaya necesitando. Bueno es mi opinión.

Por -YO-

27 de clabLevel



 

México

firefox
Citar            
MensajeEscrito el 24 Mar 2009 10:39 am
Ah, eso es una pregunta diferente. Usa mxml distintos y componentes personalizados

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 24 Mar 2009 01:22 pm

solisarg escribió:

Ah, eso es una pregunta diferente. Usa mxml distintos y componentes personalizados

Jorge


Como es eso de los componentes personalizados?

Por Xyrer

628 de clabLevel

1 tutorial

Genero:Masculino  

Android App Development

firefox
Citar            
MensajeEscrito el 24 Mar 2009 01:24 pm
File->New->MXML Component, allí creas tu componente. Luego te aparece en el panel Components Custom, y desde allí lo puedes arrastrar a tu aplicación

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 24 Mar 2009 04:19 pm
Pero para que se usan? donde puedo ver mas info al respecto?

Por Xyrer

628 de clabLevel

1 tutorial

Genero:Masculino  

Android App Development

firefox
Citar            
MensajeEscrito el 24 Mar 2009 04:30 pm

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 24 Mar 2009 05:36 pm
Muy interesante el tema que colocas.
Yo últimamente estoy trabajando solo con ViewStack en el mxml principal, y dentro de cada vista le coloco un componente personalizado. El proyecto queda muy organizado asi... Y a los cambios entre vista y vista, les coloco unas transiciones muy wow y queda muy bonito todo.

Me ha ido muy bien trabajando así, aunque no es la panacea en metodología de trabajo. Trato de no trabajar con estados a no ser que sea la única solución posible porque he visto que da problemas con los efectos entre transiciones de estado a estado, y se queda trancado en un estado o algo raro por el estilo.

En el mxml trato de solo dejar los componentes personalizados. Así por ejemplo hago un formulario largo de lo que sea, ese lo coloco en una Canvas en un componente personalizado, y llamo a esto componente "Formulario 1" o lo que sea, y luego lo arrastro dentro de una vista del ViewStack pricipal. Y dentro de ese componente escribo las funciones que solo le competen a el. Cuando necesito cambiar la vista lo que hago es.

Código :

MiViewStack.selectedIndex = 2;

Para comunicar todos los componentes personalizados utilizo el patron singleton, y en la clase con el patron singleton coloco todas las variables que necesito que sean globales en el proyecto, para que cada componente personalizado pueda acceder a ellas. El patrón singleton es maravillosamente util para comunicar todos los componentes personalizados.

Lo que hago es crear una clase asi:

Código :

package clases
{
   import Lo que se necesite;
   
   [Bindable]
   public class Variables
   {
      private   static var variables:Variables;
      
      public   static function getInstance():Variables
      {
         if (variables == null)
         {
            variables = new Variables();
         }
         return variables;
      }
      // De aca para abajo coloco las variables que necesito que sean globales
      public var funcioncita :Function;
      
      public var variableGlobalLoqueSea :String      = "blablabla";
      
      public var unComponenteLista   :List;

      // Tambien se pueden imagenes Imagenes
      [Embed("imagenes/imagen.png")]
      public var imaTitulo:Class;
      // También coloco funciones 
      public function funcionGlobal(lista:String):void
      {
          LoQueSea();
      }
   }
}

y luego en todos los componentes creo una instancia asi:

Código :

[Bindable]   public var _var:Variables = Variables.getInstance();


De esta manera puedo hacer que cualquier cosa sea global. Variables, Funciones, Eventos y Componentes. Por ejemplo si necesito acceder a una vista que esta en un componente personalizado. En el creationComplete del componente coloco una función asi:

Código :

   private function inicio():void
   {
      unComponenteLista   = _var.unComponenteLista;
   }

De esta manera hago que esta lista pueda accederse desde cualquier parte del proyecto. Y también se pueden crear eventos que se dispersen por todo el proyecto. Algo como:

Código :

_var.dispatchEvent(new MiClaseEventos(LosEventosMios.EVENTO_WOW)); 


Esta es la forma en la que he trabajado, aunque debido a la enorme flexibilidad de Flex, uno se va por la fácil y no se están organizado como a uno le gustaría. También me gustaría perfeccionar esta forma de trabajo, con una buena metodología enfocada a flex, pero hasta ahora no la he encontrado. Esta metodología me parece buena para proyectos medianos. Para proyectos moustrosamente grandes, no se si sea practico..

El tema es muy interesante y me gustaría escuchar, experiencias de otros sobre como encaran sus proyectos para así aprender, y depronto copiar buenos trucos.

Por AXM

Claber

705 de clabLevel

8 tutoriales

Genero:Masculino  

Bogotá

firefox
Citar            
MensajeEscrito el 24 Mar 2009 06:05 pm
A otra cosa. Últimamente he descubierto dos cosas que le dan mucha mucha clase a tu proyecto en flex. Una es utilizar swfaddress para que tu aplicación maneje url personalizadas. Ejemplo. Aunque al comienzo es difícil de cogerle el truco de como utilizar correctamente swfaddress en flex, una vez que lo entiendes y lo aplicas, le da mucha clase a tu proyecto. Aca hay un video tutorial en español que explica como se utiliza .

Si te da pereza utilizar swfaddress tambien puedes utilizar el historyManagementEnabled en los componentes como ViewStack o el TabNavigator, que hacen lo mismo que swfaddress pero mas facil, pero sin tanta personalización.

La otra cosa que le puede dar mucha clase a tu proyecto es hacer que la altura del proyecto sea dinámica según el contenido que esta tenga, asi como en las paginas en html. Para esto yo utilizo un panel principal, que contiene únicamente un ViewStack, y dentro de este coloco mis componentes personalizados.
Al ViewStack le coloco en el evento change

Código :

change="ajustarAlturaPagina()"

Y esa función vendría a ser así.

Código :

   private function ajustarAlturaPagina():void // Cuando se cambia la vista principal
   {   
      panelMadre.height = VistaMadre.y + VistaMadre.selectedChild.height; // Ajusta la altura de la pagina
   }

Y luego al panel principal le coloco resizeEffect = "Resize" para que haga un efecto cada vez que cambia.

Estos dos trucos los utilice para un proyecto en el que estoy trabajando y quede muy contento con el resultado. El proyecto es este.

Por AXM

Claber

705 de clabLevel

8 tutoriales

Genero:Masculino  

Bogotá

firefox
Citar            
MensajeEscrito el 24 Mar 2009 09:42 pm
Supremamente interesante la solución, comenzaré a hacer pruebas, nunca habia molestado mucho con clases pero creo que ya es hora, muchas gracias, probaré con esto.

Por Xyrer

628 de clabLevel

1 tutorial

Genero:Masculino  

Android App Development

firefox
Citar            
MensajeEscrito el 25 Mar 2009 08:02 pm
Hola

Por experiencia propia, les comento

¿Cuando utilizar states?
Cuando se lanza un efecto, por ejemplo ocultar o mostrar un mensaje o un campo en un formulario por intermedio de un efecto.
Si se cambia mucho de interface, hacer un removeItem y un addItem, consume menos recursos al final.

Componentes.
Componentizar todo, nunca usar un solo archivo, siempre varios archivos, tanto componentes como clases utilitarias.

Modulos
En proyectos grandes es obligatorio utilizarlos

Frameworks
Tb practicamente deberia ser un estandar su uso, sobre todo por el orden q provee, tanto en proyectos chicos como engrandes. CUal framework utilizar, pues mucho depende del proyecto. Por ejemplo Caigorn es muy util en proyectos chicos a grandes, PureMVC por sus funcionalidad y comlejidad lo utilizaria en proyectos grandes.



Por otro lado, antes de ver q usar en cuanto a tecnologia, lo q tenes q armar para un proyecto grande es el flujo de trabajo, una metodologia. Lo q yo te recomiendo seria una metodologia incremental, en grandes rasgos, definis ciclos de entrega en donde en cada ciclo pones tiempo para, generar especificaciones, analisis de implmeentacion, codificacion, testing y correcion de bugs. En cada iteracion de ciclos van a venir nuevos pedidos y ademas cambios... de esa manera el proyecto avanza rapido y el cliente ve como avanza la aplicacion, sobre todo si el desarrollo dura no menos de 7 u 8 meses.
Ademas tenes definir el formato de testing, la forma en q se definen los requerimientos, los tiempos de analisis, de prueba y correccion y muchos etc mas.
Te puedo asegurar q un proyecto mas grande donde el tiempo de desarrollo dura meses y hay un equipo de 5 o 6 personas laburando si no definis todo esto antes de comenzar a programar, el desarrollo se vuelve un infierno....


Saludos!

Por alfathenus

833 de clabLevel

5 tutoriales

 

buenos aires || Argentina

firefox
Citar            
MensajeEscrito el 07 Abr 2010 03:28 pm
Hola @Xyrer, creo que es normal las dudas que tienes al respecto y puedo jurar que el 100% que hemos estado en este mundo pasamos por esa crisis. Yo si creo que los frameworks ayudan mucho al desarrollo pensando en aplicaciones medianas o grandes, factorizando muchos problemas de complejidad en la elaboración de nuestros productos y sobre todo aportando buenas prácticas que optimicen la calidad de tu aplicación.

El otro tema que nos amarga constantemente es la curva de aprendizaje. Bueno creo que esto ha sido muy discutido y lo seguirá haciendo, pero en el fondo(Y teniendo un poco de sensatez), nos sonrojamos por que gran parte del costo de esa curva tiene que ver con nuestras bases de conocimiento frente a la Ingeniería de software que si son escasos, sea cual fuese el framework van a ser una piedra en el zapato por que y mas en flex, se apegan totalmente a OOP y patrones de diseño que si bien no los debemos manejar a fondo si deemos tener un entiendimiento minimo para poder hacer uso de los frameworks.

En conclusión te recominedo fortalecer tus conocimientos citados anteriormente si es tu caso y deseas comenzar trabajar proyectos de un mayor alcance, pero igual lo puedes hacer de forma incremental es decir no de primera uno cree tener la solución perfecta es algo que uno va madurando, si quieres comenzar a ver como divides tu aplicación (que ya es un buen comienzo), te dejo unso consejos:
* Mira optimización de aplicaciones en flex.
* Reducción de carga de ficheros
* Aplicaciones modulares
* Identifica en tus aplicaciones flex lo que podria ser tu mvc por ej;
-> Apartar las UI en la vista
-> Los datos que representan tu modelo del negocio separalos en un ModelLocator como tu capa de modelo construida con patrión Singleton
-> Trata de hacer un Bussines Object para representar la logca de negocio como una forma sencilla de representar tu capa controller

Y se que existen muchas mas cosas que debes tener en cuenta pero creo que seria un buen comienzo mientras vas madurado tus soluciones y asi vas aprendiendo al mismo tiempo que vas desarrollando sin tener un costo considerable de tiempo.

En caso tal que ya te sientas con un buen dominio del conocimiento, te aconsejo para proyectos grandes cairngorm de Adobe con buen soporte y/o PureMVC(el que yo utilizo) ambos si bien tiene una complejidad alta de implementación, solucionado la etapa de aprendizaje es bastante asombroso el mejorameinto de construcción.

Y si quieres comenzar con frameworks pequeños y simples están Mate y Guasax que son muy sencillos de implementar el ultimo esta con documentación en español que es el de MadeInFlex.

Espero te pueda servir la respuesta!

Por vanvanero

246 de clabLevel


2 articulos

Genero:Masculino  

chrome
Citar            
MensajeEscrito el 08 Abr 2010 03:37 am
utiliza frk como mate : mate es mucho mejor que carm y que puremvc
ya que ambos utilizan demasiada codigo repetitivo en cambio con mate no
claro es un poco complejo aprenderlo bien
lo bueno es que puede modularizar facilmente atraves del maplocal que es el que utiliza para los modulos
lugo ya puedes usar todos los modulos y llamarlos, el uso de efectos hace que las aplicaciones se
pocan lentas asi que usalos con en donde realmente se necesiten
optimiza tus modulos bueno hay un moton de formas
ok

Por xcom

Claber

530 de clabLevel



 

firefox
Citar            
MensajeEscrito el 08 Abr 2010 04:01 am
Todos estos consejos han sido muy útiles, por ahora no estoy usando un framework pero si utilizo técnicas como el singleton, modulos y componentes, ahora estoy recopilando todo para hacer un post sobre algunos trucos que también funcionan en fb4.

Muchas gracias

Por Xyrer

628 de clabLevel

1 tutorial

Genero:Masculino  

Android App Development

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.