jueves, 18 de agosto de 2016

PLATAFORMAS PARA EL DESARROLLO DE APLICACIONES WEB



Diana Shirley Sanchez Hernandez
Electiva Profesional A3
FUSM - Fundación Universitaria San Martin
Palmira-Colombia
preciosanchez@gmail.com



ResumenEste ensayo nos dará una idea general acerca de las plataformas utilizadas para crear y/o desarrollar aplicaciones web, identificaremos los principales lenguajes de programación  (o plataformas de desarrollo) para la implementación aplicaciones web y los servidores (de aplicaciones) en los cuales se instalan dichas aplicaciones (por lenguaje de programación).

Índice de Términos: Plataforma de desarrollo, Aplicaciones web, programación, implementación.


I.                    INTRODUCCIÓN

En la actualidad Internet es la mayor fuente de contenidos donde los usuarios pueden buscar información sobre lo que necesitan. Los motores de búsqueda Como Google son los encargados de esta actividad, que generalmente dan como resultado un exagerado volumen de información, tan grande que encontrar la que se ajuste a las necesidades personales podría consumir mucho tiempo del cual no se dispone.
Los sistemas de búsqueda basan su proceso en fórmulas matemáticas y las coincidencias de las palabras escritas por el usuario en el texto de los documentos encontrados.

El objetivo de este trabajo es estudiar la tecnología necesaria que propone una Solución a los problemas que hoy aquejan nuestro sistema obsoleto a la hora de realizar cualquier actividad de la vida diaria.

Este trabajo inicia con una pequeña introducción sobre conceptos de Lenguajes de  programación,
Luego la unidad 2 muestra la implementación de las diferentes aplicaciones web, y los servidores en los que se instalaran dichas aplicaciones.

CRITERIOS PARA EVALUAR UNA PLATAFORMA DE DESARROLLO.

A continuación las 5 plataformas más populares de lado servidor: Java, PHP, Microsoft .NET, Python y Ruby On



Rails. Las plataformas se evaluaran en base a los siguientes Criterios:

         Grado de madurez.
         Tamaño y grado de actividad de la comunidad.
         Disponibilidad de librerías y aplicaciones de terceros.
         Disponibilidad y coste salarial de los programadores.
         Dificultad de la curva de aprendizaje.
         Compatibilidad con el resto del ecosistema.
         Rendimiento y escalabilidad.

La productividad como ya es sabido si se usan bien, todas ellas ofrecen un grado de productividad equivalente, o, al menos no lo bastante diferente como para que debiera ser relevante.

¿POR QUÉ?

LA MADUREZ

 Hay proyectos, como por ejemplo node.js que se crearon para resolver problemas específicos. En el caso de node.js el tratamiento de peticiones AJAX desde las nuevas aplicaciones HTML5. Node.js ofrece una modalidad de procesamiento asíncrono junto con la propuesta de programar en JavaScript igualmente en el lado cliente y en el servidor
Es más complicado  de aprender y de codificar en Tomcat, ciertamente, pero a cambio se tiene una plataforma mucho más madura, eficiente y compatible que node.js. Más madura implica, por ejemplo, casi siempre mejor documentada. Las carencias de la documentación, por cierto, son un mal endémico en las librerías JavaScript cliente incluso en las más maduras como Dojo o YUI.

EL TAMAÑO

Es relevante porque cuanto mayor sea la comunidad más probable es que hay alguien que se haya topado con el mismo problema que nosotros y lo haya resuelto. Más probable que en Stack Overflow o en cualquier otro sitio de preguntas y respuestas hallemos la solución a un problema que nos mantiene atascados.


LA DISPONIBILIDAD

De aplicaciones y librerías de terceros. El framework de desarrollo es sólo la herramienta base para construir una aplicación. Justo a continuación de elegir la plataforma hay que elegir las librerías. Por ejemplo, Java domina absolutamente el entorno financiero y bancario porque su middleware es el mejor. Lo hay para todos los gustos desde JBoss a TIBCO, pasando por Informatica UM. Los frameworks más modernos de todos los lenguajes han ido incorporando librerías de serie. Java apareció en 1995 y, más que un lenguaje para aplicaciones web estaba pensado con filosofía WORA (Write Once Run Anywhere) y para tener la menor cantidad de dependencias posible. Ruby On Rails apareció 10 años después e incorporaba en su arquitectura el paradigma Modelo Vista Controlador (MVC) y mecanismos como ActiveRecord que permiten que las clases tomen de la base de datos los nombres de la columnas sin necesidad de definirlas explícitamente en el código. Para conseguir con Java un framework funcionalmente similar a Ruby on Rails se necesita, al menos, una librería MVC como Struts, una capa de persistencia como Hibernate, soporte de servicios REST como Jersey, una librería de tags como JSTL y JavaMail. La cantidad de librerías Java es tal que existen empresas como Black Duck en EE.UU. Autentia en España especializadas en evaluarlas y dar formación a los clientes corporativos.

DISPONIBILIDAD Y COSTE

 Si se estima que el proyecto requerirá 40 o 50 desarrolladores entonces encontrar y contratar personas puede llegar a ser muy difícil y costoso. Si se estima que el proyecto necesitará más de 50 desarrolladores, entonces es que se ha hecho mal el plan y bien hay que partir el proyecto en trozos de menos de 50, bien sería mejor cancelarlo y tirarlo todo a la basura antes de que se queme una burrada de dinero en producir un monstruo.

DIFICULTAD DE LA CURVA DE APRENDIZAJE.

Todas las plataformas son igualmente buenas en cuanto a productividad. Pero no todas son igualmente fáciles de aprender. Si se tiene cuenta el tiempo que requiere un programador novato para aprender cómo funciona el invento, entonces sí que existen diferencias entre unas y otras. El orden de más fácil a más difícil es: PHP, Ruby On Rails, .NET, Python y Java.

COMPATIBILIDAD CON EL RESTO DEL ECOSISTEMA.

Rara vez las aplicaciones existen de forma aislada e independiente unas de otras. En general, las diferentes plataformas no son fácilmente interoperables unas con otras. Existen muchas herramientas de integración y formatos de representación de datos independientes del lenguaje como Protocol Buffers, pero lo más común, por fácil, es que las plataformas en dos lenguajes diferentes se acaben integrando vía base de datos relacional, XML o ficheros de texto delimitado.

RENDIMIENTO Y ESCALABILIDAD.

A grosso modo, si se tiene una base de datos con tablas que no superan el millón de registros y un sitio web que no supera las cien mil visitas al día, entonces la escalabilidad no será una cuestión relevante se use lo que se use a menos que el programador sea realmente malo, pues cualquier servidor quad-core medio moderno puede atender tal volumen de trabajo sobre una base de datos relacional.


II.                   LENGUAJES

JAVA

Java es la plataforma más extendida en el entorno corporativo. Se trata de una tecnología muy madura y popular que cuenta con innumerables herramientas de todo tipo y es bastante sencillo encontrar programadores. Casi todo el mundo que desarrolla en Java usa Eclipse o Netbeans como IDE. Ambos son bastante pesados y a mi personalmente me gusta más JCreator, aunque en un portátil con 4Gb de RAM tanto Eclipse como Netbeans corren perfectamente. La principal pega de Java para el desarrollo de aplicaciones web es que la plataforma no se concibió originalmente para eso, sino que fueron apareciendo proyectos como Tomcat en 1999. Las extensiones a la plataforma se acuerdan mediante el Java Community Process (JCP) compuesto por más de mil miembros que trabajan sobre más de 300 Java Specification Requests (JSR) Estas especificaciones tienden a ser muy densas y a veces salen cosas realmente retorcidas como JavaMail. Algunos presuntos gurús han difundido el mito de que una startup no debería basar su tecnología en Java. Esto es radicalmente falso pues Java es perfectamente compatible con el modelo lean en boga. La curva de aprendizaje de Java no es suave.

PHP

También conocido popularmente como LAMP (Linux+Apache+MySQL+PHP). PHP (acrónimo recursivo de Hypertext Pre-processor) es coetáneo de Java. Apareció también en 1995, pero, a diferencia de Java, estaba pensado desde el principio como un lenguaje que se pudiera incorporar en documentos HTML. La gran ventaja de PHP es que resulta sencillo empezar con él y existe mucha documentación online. Es más fácil aprender PHP que Java, y todos los ISP proprocionan algún tipo de stack LAMP preconfigurado. Es por consiguiente sencillo encontrar programadores PHP a precios asequibles. PHP no proporciona un sistema MVC por defecto pero existen muchas opciones para ello. A mi me gusta CakePHP mas se pueden contar las alternativas por decenas siendo Zend probablemente la más popular. Hay muchas startups de éxito basadas en PHP, incluídas algunas de las de mayor tráfico como Wikipedia, Yahoo o Facebook entre ellas. El lenguage en sí mismo presenta algunas limitaciones importantes. No se pueden crear de forma natural pools de conexiones, no hay sesiones, el módulo mod_php para Apache permite mantener sesiones pero mucha gente lo considera intrínsecamente inseguro. La propia facebook acabó desarrollando su propio compilador just in time (JIT) HHVM para poder alcanzar el rendimiento que necesitaban con PHP.

.NET

Si Sun no hubiese creado Java probablemente .NET dominaría ahora mismo todo el panorama de software empresarial. El punto fuerte de plataforma de Microsoft es el grado de integración entre el escritorio y las aplicaciones web. Si yo tuviese que desarrollar una Intranet a sabiendas de que los usuarios van a tener todos Windows no lo dudaría y la desarrollaría sobre .NET. Mas para una startup yo nunca elegiría .NET no por problema alguno con la tecnología sino simplemente porque el software de Microsoft no es Open Source. .NET sólo puede correr en servidores distintos de Microsoft Internet Information Server si se usa Mono y los servidores Windows son más caros de alojar que los Linux. Además usar SQL Server (la elección natural para .NET) también es bastante más caro que elegir PostgreSQL o MySQL.

PYTHON

Python para la web es sinónimo de Django. Django apareció en 2005 como framework para la creación de sitios web de contenidos dinámicos, y, si eso es lo que hay que hacer, puede ser una excelente elección. Python es un lenguaje interpretado, no usa bytecodes como Java, y aunque existen versiones de Python que pueden correr sobre JVM yo no conozco a nadie que las use en producción. El tipado dinámico y los tipos de alto nivel hacen que el código Python sea más corto que Java. Como RoR, Django incluye un subsistema MVC (aunque algo ecléctico) y también mapeador objeto-relacional, un sistema extensible de plantillas basado en etiquetas, un despachador de URLs basado en expresiones regulares y middleware para cacheo, compresión de la salida, normalización de URLs, protección Cross-Site Request Forgery (CSRF) y soporte de sesiones. Lo normal es ejecutar Python con el mod_python de Apache 2. Aunque gracias al soporte WSGI se puede correr también sobre Lighttpd. En general es de esperar que el rendimiento de Python sea inferior al de Java y, por consiguiente, ello puede ser un obstáculo si se pretende llevar el tráfico hasta el límite. Algunos sitios web de alto tráfico como Instagram o Pinterest están desarrollados con Django, aunque ellos mismos han reconocido que tuvieron problemas con la escalabilidad debido a su vertiginoso crecimiento, no sólo por Python sino también en gran parte por llegar al límite de las tecnologías de almacenamiento de datos. My experiencia personal con Python/Django es que es muy bueno como como “lenguaje pegamento”, es como un “Perl con esteroides”, pero no es tan bueno como lenguaje para una plataforma, porque permite programar muy sucio y porque es fácil embarullar la capa del Controlador en el MVC de Django. Python es relativamente sencillo de aprender, y a la mayoría de los programadores profesionales les gusta cuando llegan a conocerlo, pero, debido a que existe menos demanda de programadores Python que de Java, .NET o PHP estos son más difíciles de encontrar.


RUBY ON RAILS

Ningún framework de los anteriores levanta tantas pasiones a favor y en contra que Ruby On Rails. Como Django, RoR es un framework que se pensó desde el principio para el diseño de aplicaciones web. Es un framework de pila completa, lo que significa que trata de integrarlo todo desde la base de datos hasta el código que corre en el navegador cliente. RoR incorpora de serie el paradigma MVC, el mapeo objeto-relacional, infraestructura para crear recursos REST y otras funcionalidades propias del desarrollo web como un detector de inyección de JavaScript y SQL. RoR también incorpora JQuery, y se pueden conseguir herramientas de terceros como Aptana para el desarrollo de las páginas HTML5. Los críticos de RoR argumentan que es lento y que no escala bien en webfarms. Es cierto que las sesiones sólo se pueden compartir en Ruby a través de la base de datos. Pero es que yo soy partidario de que las aplicaciones no deben mantener nada en una sesión de lado servidor sino que se deben usar cookies para mantener las credenciales del usuario y luego cachear el resto. El sitio web más grande basado en RoR probablemente es Twitter. Otra crítica común es que, debido a la integración transparente entre el lenguage y la base de datos, no se puede usar Ruby fácilmente contra un modelo de datos que ya esté creado o siga unas normas de programación del estilo de sólo poder acceder a la información vía procedimientos almacenados, o, más bien, sí se puede, pero entonces se le mata la magia de ActiveRecord al lenguaje. Ruby es relativamente fácil de aprender, más o menos como PHP sólo que la documentación de Ruby no es tan extensa ni detallada. Hay muchos menos programadores de Ruby que de Java o de PHP. Sus defensores argumentan que los programadores de Ruby son pocos porque son todos unos gurús, mas creo que leyendo este artículo ya se sabe lo que opino de los gurús.

TECNOLOGÍAS FRONT-END

La compatibilidad entre navegadores web ha sido desde siempre una merienda de negros y con la llegada de HTML5 y CSS3 la situación no ha mejorado para nada. La oveja negra es Internet Explorer sobre todo las versiones anteriores a la 10. Es virtualmente imposible desarrollar una aplicación HTML5 cross-browser sin una librería de compatibilidad como Modernizr. CSS también tiene tantas sutiles diferencias que prácticamente nadie desarrolla sin un paraguas como YUI. Y para el desarrollo en JavaScript es totalmente común encontrar JQuery o Dojo. Existen decenas de otras librerías como Bootstrap, Backbone, CoffeeScript, Datejs, RequireJS, PhantomJS, etc. O frameworks como Ext.js. Incluso se puede desarrollar en Java Swing y convertirlo a JavaScript con GWT o, aún más exótico, desarrollar en Dart y compilarlo a JavaScript. Una herramienta muy útil para componer CSS es LESS aunque hay que precompilar siempre los scripts puesto que a Rhino le puede costar 2 segundos compilar un archivo .less de ~30Kb lo cual es un tiempo muy significativo en la carga de una página web.


  
  


CONCLUSIÓNES

         Ninguna plataforma es óptima para todas las necesidades. Para concluir con algunas reglas sencillas, mi propuesta es la siguiente:

         Si tienes que desarrollar un sitio web para una multinacional, o hacer integraciones complejas con otras plataformas o realmente vas a crecer mucho tanto en tráfico como en número de desarrolladores, entonces elige Java sobre PostgreSQL.

         Si quieres tener presencia online eficaz y asequible, incluso e-commerce, pero tu website no es el factor crítico exclusivo de tu negocio, entonces elige LAMP.

         Si tienes que desarrollar una intranet o un sitio web corporativo a sabiendas de que los usuarios tendrán Internet Explorer y tecnologías Microsoft entonces elige .NET sobre SQL Server

         Si necesitas una web con contenidos dinámicos mantenida por un equipo compacto y eficiente de programadores entonces elige Django sobre PostgreSQL o RoR sobre MySQL.


REFERENCIAS

         MONTORO, Sergio, “pastilla roja” octubre 2013.

         GONZÁLEZ,  Javier A, Presidente Rama IEEE Universidad Pedagógica y Tecnológica de Colombia
2002
http://aulavirtual.tecnologicocomfenalcovirtual.edu.co/aulavirtual/mod/resource/view.php?id=31881



ELABORADO POR:
Shirley Sanchez
Ingeniera de Sistemas (formación)
FUNDACION UNIVERSITARIA SAN MARTIN









jueves, 14 de junio de 2012

AUTOEVALUACIÓN FORMATIVA FASCÍCULO No 16

1.    Explique con sus propias palabras la importancia del trabajo en equipo dentro del proceso de desarrollo de software.

En el equipo, todos y cada uno de sus miembros son importantes, si bien es cierto que no todo el mundo encaja en todos los grupos. El reto está en encontrar la sinergia perfecta, para lograr un desarrollo de calidad.

2.    ¿Cuáles son las características de los equipos de trabajo? ¿Cree usted que son relevantes dentro del proceso TSPi? ¿Por qué?

Algunas características importantes son:
o   El liderazgo es compartido por varios.
o   La responsabilidad es tanto individual como conjunta
o   Se desarrollan productos que son fruto del trabajo colectivo
o   Se fomentan las discusiones abiertas y las reuniones; cuyo objetivo es la resolución de problemas de manera activa.
o   Se discute, se decide, y se trabaja conjuntamente

Creo que si son relevantes ya que es importante que cada quien tome el papel de líder, la actitud de liderazgo tomando en cuenta el equipo.

3.    Enumere y explique con ejemplos, las etapas dentro del proceso de organización de los equipos de trabajo.

Etapa 1. ORIENTACION
Aclarar el propósito del trabajo a cada uno de los miembros, para trabajar de manera personal las metas globales.

Etapa 2. CONFIANZA
Generar condiciones para hablar y expresar con tranquilidad y espontaneidad sus preocupaciones.

Etapa 3. METAS Y ROLES
Es necesario tener metas generales bien definidas, los roles claro, para saber cuál es la función de cada uno para cumplir esas metas.

Etapa 4. COMPROMISO
Realizar los cambios en el pensamiento de cada uno con tal de lograr el objetivo deseado, y este se logra creando un sentido de pertenencia.

Etapa 5. CONCRETAR
Pasar del planteamiento a los cambios en la forma de trabajar.

Etapa 6. CONSENSO
Un buen líder cambia su posición, se ajusta al momento y a los otros miembros del equipo.

Etapa 7. RENOVACION
Convocar y orientar a los nuevos líderes, repasar fortalezas y debilidades, etc.


4.    ¿Cuáles son los elementos a tener en cuenta para realizar un trabajo efectivo de equipo? ¿Pueden aplicarse dentro del proceso de TSPi que usted está desarrollando?

o   Comunicación entre sus miembros
o   Realizar compromisos en las reuniones del equipo
o   Participar en las actividades del equipo.

En mi caso no hay un equipo por lo tanto no puede aplicarse dentro del proceso TSPi.

5.    ¿Cuáles son las barreras que pueden afectar la comunicación del equipo? De ejemplos de cada una de estas.

o   Subjetividad
o   Percepción
o   Control de emociones
o   Sentimientos
o   Actitudes
o   Prejuicios
o   El ego

o   Apego a roles tradicionales.

miércoles, 13 de junio de 2012

AUTOEVALUACIÓN FORMATIVA FASCÍCULO No 15

1.    Las metas del líder de soporte.

·         Ayudar a usar de manera apropiada las herramientas y métodos.
·         Establecer y administrar l control de la línea base del producto.
·         Reportar cada semana todos los riesgos y problemas del equipo en el sistema de seguimiento de errores.
·         Responsable de la estrategia de reutilización.

2.    Habilidades y destrezas.

·         Que se interés por las herramientas y métodos para solucionar problemas
·         Que tenga capacidad frente a un computador y sienta que pueda asistir al equipo con las necesidades d soporte.
·         Que tenga experiencia con varias herramientas y sistemas de soporte, y que esté familiarizado con las herramientas que más se utilizan en estos proyectos.

3.    ¿Cualquier persona puede ser líder de soporte?

En realidad podría ser cualquier persona que tenga la disposición para hacerlo, pero sería una persona que tenga la capacidad para manejar herramientas de software para poder crear y solucionar problemas de este tipo, una persona que pueda socializar su conocimiento y se pueda dar a entender, responsable para que pueda dar fin a sus proyectos efectivamente.

4.    Importancia del líder del equipo.

Es importante debido a que su mayor responsabilidad s el control de los cambios del producto, evaluarlos y recomendar a su equipo que cambios se pueden realizar, es la persona encargada netamente del desarrollo del software el que mira que problemas pueden aparecer y socializarlos con el grupo para las soluciones él es que está ligado al software de una manera muy directa sin quitar participación de los demás del grupo.

5.    Actividades que debe desempeñar un líder de soporte.

·         Liderara al equipo en la determinación de sus necesidades se soporte y en la obtención de las herramientas necesarias, debe extraer las experiencias y capacidades de todos los miembros que pueden ser útiles dentro del proyecto.
·         Asumir la responsabilidad del tablero de control de configuración y manejar el sistema de control de cambios, se debe establecer un procedimiento para administrar los cambios, debe cargar con esta responsabilidad del manejo de la tabla de cambios.
·         Manejar el sistema de control de configuraciones, elaborar el plan revisarlo y que está aprobado por el equipo, establecer procedimiento para registrar la base del producto y versiones, administrar el sistema para el manejo de cambios a la base de los elementos del producto.
·         Mantener el glosario del sistema, quiere decir el listado de todos los nombres del sistema.
·         Mantener el sistema de seguimiento de riesgos y problemas, debe registrar todos los riesgos o problemas, debe saber el problema, cuando fue identificado, quien es responsable de manejarlo y fecha de cuando apareció y cuando se solucionó. reporta en la reunión semanal para establecer cómo se van a solucionar.
·         Actuar como defensor de la reutilización en el equipo, se debe asegurara que los miembros del equipo piensen en la reutilización para cada programa y que pueden darse cuenta de las partes disponibles para ser utilizadas, se debe considerar el uso de estas partes en los diseños, mantenerse informado de las partes que se reutilizaron, crear una lista y reportar el progreso de las mismas y darlas a conocer en las reuniones.
·         Participar en la elaboración del reporte del ciclo de desarrollo la tarea final es preparar sus secciones del ciclo del reporte, debe ir el trabajo desde la perspectiva del soporte, como fue el apoyo del equipo la efectividad del proceso de manejo para el control de productos del equipo y el nivel de reutilización conseguido.


martes, 12 de junio de 2012

AUTOEVALUACIÓN FORMATIVA FASCÍCULO No 14

1.    ¿Cuáles son las metas que debe tener un líder de calidad dentro del grupo?

o   Meta 1. Ayudar al equipo para desarrollar un trabajo de calidad como está definido en el proceso TSPi y en el plan de calidad.
o   Meta 2.  Guiar al equipo en el desarrollo de un producto de calidad, brindando soporte a todos los miembros del equipo.
o   Meta 3.  Moderar y reportar todas las inspecciones del equipo.
o   Meta 4.  Reportar apropiadamente las reuniones del equipo.

2.    Enumere y explique las habilidades o destrezas más importantes que usted considere debe tener un líder de calidad. Justifique su respuesta.

o   Estar interesado en todo lo concerniente a la calidad de software.
o   Conocer todas las formas disponibles para el proceso, así como elaborarlas y utilizarlas.
o   Realizar cuidadosamente estructuradas y ejecutadas las revisiones en las que liderara al grupo.
o   Habilidad para dirigir revisiones constructivas.

3.    ¿Cualquier persona puede ser líder de calidad? Justifique su respuesta

Sí, siempre y cuando cumpla con los conocimientos, habilidades y destrezas antes descritas.

4.    ¿Cuál es la importancia de tener un líder de calidad dentro del equipo? Explique brevemente. De un ejemplo

El líder de calidad es importante en un equipo ya que es quien evalua las metas de los otros líderes, y direccional el equipo en el plan de calidad definido para el proyecto.

5.    ¿Cuáles son las actividades que debe desempeñar un líder de calidad dentro del equipo? Explique cada una.

o   Identificar las pruebas que se requiere llevar a cabo 
o   Identificar el  acercamiento más apropiado para implementar una prueba dada 
o   Implementar pruebas individuales 
o   Preparar y ejecutar las pruebas 
o   Registrar   resultados   y   verificar   que  las pruebas hayan sido ejecutadas
o   Analizar y recuperar de errores de ejecución.

o   Comunicar los resultados de las pruebas al equipo 

domingo, 10 de junio de 2012

AUTOEVALUACIÓN FORMATIVA FASCÍCULO No 13

1.    ¿Cuáles son las metas que debe tener un líder de planeación dentro del grupo?

El líder de planeación del grupo de trabajo debe tener como principal meta la de producir un plan preciso y completo para cada uno de los miembros del equipo. Otra meta importante es presentar reportes precisos sobre el avance del proyecto semanal para cada uno de los miembros del equipo.

2.    Enumere y explique las habilidades o destrezas más importantes que usted considere que un líder de planeación deba tener.

·         Un líder debe saber pensar lógicamente y ordenadamente para poder brindarle a los compañeros una herramienta muy importante como la administración del tiempo y así llevar a cabo el proyecto en la fecha determinada.
·         Debe ser un buen entendedor y manejador de tiempo para ayudar a sus compañeros para ordenar su trabajo teniendo en cuenta la disponibilidad de cada uno.
·         Debe ser organizado para llevar la información de sus compañeros y la propia porque la base del líder de planeación es la organización.
·         Debe ser cumplido con sus obligaciones para dar ejemplo a sus compañeros y estricto al entregar la documentación en las fechas propuestas con anterioridad.

3.    ¿Cualquier persona puede ser líder de planeación?

Pienso que desde que la persona tenga disponibilidad para hacer el trabajo y quiera hacerlo lo puede llevar a cabo teniendo en cuenta que las habilidades que se necesitan son muy importantes y si no las tiene debe trabajar con base en esas habilidades para entregar el trabajo bien hecho y oportunamente. Si pienso que lo puede hacer cualquier persona porque cada compañero podría colaborar con la labor de los demás haciéndole el trabajo no sencillo pero si un poco más cómodo para llevar a cabo.

4.    ¿Cuál es la importancia de tener un líder de planeación en el equipo?

El líder de planeación es muy importante porque es el que distribuye el tiempo y las actividades de cada persona, es el que verifica que el trabajo se está haciendo en el tiempo debido para no tener contratiempos más adelante por falta de tiempo o por trabajo sin cumplir. El líder de planeación es quien debe responsabilizarse en que el trabajo sea entregado cumpliendo con su deber semanal para orientar a sus compañeros.

5.    ¿Cuáles son las actividades que debe desarrollar el líder de planeación dentro del equipo?

·         Liderar al equipo en la producción de la planeación de tareas para el siguiente ciclo de desarrollo: Él es el encargado de planear la obra distribuir el tiempo suyo y de cada integrante del grupo.
·         Liderar al equipo en la elaboración de la programación del siguiente ciclo de desarrollo: Es quien está al tanto de la evolución del proyecto y está a cargo de planear cada paso siguiente dentro del proyecto.
·         Liderar al grupo en la elaboración dela planeación balanceada: Esta labor consiste en organizar de la mejor forma posible el tiempo y las actividades de cada integrante del grupo para que no vayan a quedar más cargas sobre una persona y todos trabajen por igual.
·         Registrar el progreso del equipo contra lo planeado: Esta actividad es la segunda más importante porque luego de planear el proyecto el líder de planeación deberá trabajar en el seguimiento del proyecto para que los demás integrantes se den cuenta de que es lo que están haciendo y que parte del proyecto llevan avanzado.
·         Participar en la elaboración del reporte del ciclo de desarrollo: Debe preparar sus secciones para el reporte del ciclo, debe finalmente comentar como él y el equipo efectuaron el trabajo de planeación y registro, y como lo podrían mejorar la próxima vez.
·         Actuar como ingeniero de desarrollo: Además del rol que cada integrante del grupo desempeña, también se debe desempeñar el rol de desarrollador.



viernes, 8 de junio de 2012

AUTOEVALUACIÓN FORMATIVA FASCÍCULO No 12

1.    ¿Cuáles son las metas que debe tener un líder de desarrollo dentro del grupo?

·         Ser colaborador y efectivo.
·         Desarrollar un producto superior.
·         Utilizar al máximo las habilidades y destrezas de cada uno de los miembros de equipo.

2.    Enumere y explique las habilidades o destrezas más importantes que usted considere que un líder de desarrollo deba tener. Justifique.

·         Que le guste construir cosas: El de desarrollo debe ser una persona creativa, para lograr llevar a cabo un buen plan de desarrollo y diseño del proyecto.
·         Quiere ser un ingeniero de Software y quiere ganar experiencia en el liderazgo del diseño y desarrollo de un proyecto: Con este rol, no solo aprende y conoce de nuevos temas, a la vez transmite este conocimiento a su equipo.
·         Ser un diseñador competente y siente que debe liderar un equipo de desarrollo: Le gusta crear nuevas cosas, pero que se realicen bien y se conecta con el equipo para obtener un producto con éxito.
·         Generalmente se familiariza con los métodos de diseño: Tiene en cuenta los pasos para el diseño y creación de software y le gusta innovar.
·         Estar con muchos deseos de escuchar las ideas de diseño de otras personas y puede comparar objetivamente y lógicamente la calidad de las ideas de los demás: Ser una persona que escucha, para que todo el equipo colabore con ideas para el diseño, pero recuerde que usted es el que tiene la idea final de cómo se van a hacer las cosas.

3.    ¿Cualquier persona puede ser líder de desarrollo? Justifique su respuesta.
Si, mientras tenga la actitud, el manejo de varios programas (aunque los puede aprender de igual forma) y la imaginación para crear cosas que le brinden solución a problemas que se presenten en una comunidad, igualmente que le guste crear, diseñar y escuchar.

4.    ¿Cuál es la importancia de tener un líder de desarrollo dentro del equipo? Explique brevemente y dé un ejemplo.

La importancia de tener un líder de desarrollo dentro del equipo, es de tener las cosas más organizadas hacia un objetivo, ya que este rol brinda al equipo un plan de desarrollo, el cual describe como, cuando y que se va a hacer, para llevar a cabo un proyecto.
Ejemplo: En la construcción de un edificio, el plan de desarrollo describe lo que se va a llevar acabo.

5.    ¿Cuáles son las actividades que debe desempeñar un líder de desarrollo dentro del equipo? Explique cada una.

·      Actividad 1. Liderar al equipo en la elaboración de la estrategia de desarrollo: La estrategia de desarrollo guía el diseño del producto y el trabajo de desarrollo, esta es producida para brindar una base para realizar un plan y una estimación.
·         Actividad 2. Liderar al equipo en la producción de los tamaños preliminares y tiempos para los productos que van a ser desarrollados: Como parte de la fase de estrategia, usted hace una estimación preliminar de tamaño y el tiempo de desarrollo para cada función del producto principal.
·         Actividad 3. Liderar el desarrollo de la especificación de requerimiento: Participar en el desarrollo e inspección de la forma SRS.
·         Actividad 4. Liderar al equipo en la elaboración del diseño de alto nivel: El equipo debe discutir la estructura del producto, considerar maneras alternativas para distribuir las funciones de los componentes, e identificar las interconexiones entre los componentes.
·         Actividad 5. Liderar al equipo en la producción de la especificación de diseño del software: El SDS es uno de los documentos más simples e importantes que el equipo debe producir. Este especifica el diseño del producto, y debe ser apropiado, completo y preciso. Para producir un diseño de calidad, el equipo debe usar las prácticas de diseño más conocidas y seguir de manera apropiada los estándares de diseño.
·         Actividad 6. Liderar al equipo en la implementación del producto: El primer paso para la implementación es definir las tareas a ser realizadas durante dicho proceso, para que el líder del equipo pueda distribuir estas tareas entre los miembros del equipo.
·
·         Actividad 7. Liderar al equipo en el desarrollo, integración y planes de prueba: Para la fase de pruebas, divida al equipo en dos grupos: un grupo se encargara de hacer la planeación de las pruebas y la ejecución de las mismas y el otro grupo se encargará de producir la documentación del usuario.
·         Actividad 8. Liderar al equipo en el desarrollo de materiales de prueba y correr las pruebas: Los miembros del equipo desarrollan códigos de pruebas, datos de pruebas y programas de soporte de pruebas. Para cada prueba, ellos deben estimar la cantidad de pruebas que están libres de error en tiempo de ejecución y los resultados anticipados de dichas pruebas.
·         Actividad 9. Liderar al equipo en el desarrollo de la documentación del producto para el usuario: En el desarrollo de la documentación, de nuevo se sigue la estrategia PSP/TSP estándar para producir primero el diseño conceptual del documento. Escriba las funciones que usted completará con este ciclo de desarrollo y aquellas en las que usted cambiará o aumentara en los posteriores.
·         Actividad 10. Participar en la producción del reporte del ciclo de desarrollo: Como líder de desarrollo, su tarea final es preparar sus secciones del reporte del ciclo.

·         Actividad 11. Actuar como ingeniero de desarrollo: Además del rol que cada ingeniero del grupo desempeña, también se debe desempeñar el rol de ingeniero de desarrollo.

jueves, 7 de junio de 2012

AUTOEVALUACIÓN FORMATIVA FASCÍCULO No 11

1.    ¿Cuáles son las metas que debe tener un líder dentro del grupo?

·         Construir y mantener un equipo efectivo.
·         Motivar a todos los miembros del equipo para trabajar fuertemente en el proyecto.
·         Resolver los asuntos de cada uno de los de los miembros del equipo le compete.
·         Entregar un informe detallado y completo al profesor sobre el progreso del equipo.
·         Realizar efectivamente la labor como coordinador del as reuniones del equipo.

2.    Enumere y explique las habilidades o destrezas más importantes que usted considere que un líder de equipo debe tener. Justifique.

·         Disfruta de su papel de líder, y cuando esta con el grupo, asume de manera natural su posición como líder. Como bien estamos hablando de un líder, que es la cabeza del equipo, esta persona tiene que ser capaz de dirigir u orientar a su equipo dentro del proyecto, y aún más importante que se sienta a gusto desempeñado este papel.

·         Identifica los principales temas y toma de decisiones objetivas. Esta habilidad es importantísima en un líder, puesto que toma sus decisiones de una manera imparcial u objetiva, aunque respetando los puntos de vista de sus compañeros. Si bien esta habilidad ayuda en gran medida a que el grupo no desperdicie tiempo en temas no importantes.

·         No presta atención a posiciones hostiles tomadas por otro miembro del equipo y siempre está dispuesto a presionar a la gente para que cumpla con sus tareas que sean complejas y requeridas. Es quizás una de las más importantes habilidades del líder, puesto que frente a la negativa u oposición de algunos miembros se debe velar por la finalidad del trabajo y no entrar en discusiones sin sentido que podrían estropear el trabajo del grupo.

·         El respeto a los miembros de su grupo: está siempre atento a escuchar sus puntos de vista, y a ayudarlos a que desarrollen mejor sus habilidades. A mi parecer la más importante de las habilidades, porque ser un líder significa respetar a nuestros compañeros, escucharlos de una manera objetiva sus propuestas que van encaminadas al buen trabajo en equipo.

3.    ¿Cualquier persona puede ser líder? Justifique su respuesta.

Si, puesto que para ser un líder no se necesitan demasiados requisitos, además, como dice por ahí, “no hay nada imposible solo personas incapaces”, y eso es lo que pasa con la gran mayoría de la gente se siente incapaz de dirigir, que es una cuestión muy diferente a la de no poder serlo. Bueno, pero también debemos que tener en cuenta aquellas características que debe tener nuestro líder, que aunque en un momento no se posean, son fáciles de adquirir dentro del proceso.

4.    ¿Cuál es la importancia de tener un líder dentro del equipo? Explique brevemente y de un ejemplo.

La importancia de tener un líder en el equipo, es que, es la persona que va a guiar u orientar a los demás miembros del equipo dentro del proyecto, puesto que el coordina, organiza, dirige y divide los trabajos a realizar dentro de un plan de desarrollo, con una finalidad ya estipulada. Para encontrar un ejemplo claro de líder, simplemente nuestra historia colombiana, hablemos de Simón Bolívar una persona que aunque no siendo una de aquí, tenía una convicción, que era liberar a este pueblo de la tiranía a la cual estábamos siendo sometidos por los españoles, enfrentándose a la adversidad, y con un ejército de hombres del campo, dirigió y organizo para derrotar a un ejército entrenado. Y liberando una nación.

5.    ¿Cuáles son las actividades que debe desempeñar un líder dentro del equipo? Explique cada una.

·         Motivar a los miembros del equipo para que realicen sus tareas asignadas. Es necesario que el líder de equipo motive a sus compañeros porque de esa manera desarrollan mejor sus habilidades.
·         Cada semana, antes de comenzar, haga una reunión del equipo. Estas reuniones ayudan que los miembros actúen como un verdadero equipo. Además se manejan algunos aspectos referentes al proyecto.
·         Cada semana, entregue el reporte del equipo.
·         Ayudar al equipo en la distribución de las tareas y resolver los problemas.
·         Actuar como coordinador y persona que lleva el tiempo en todas las reuniones del equipo.
·         Mantener el libro de apuntes del proyecto.
·         Liderar al equipo en la producción del reporte del ciclo de desarrollo.

·         Actuar como ingeniero de desarrollo.