Preguntas frecuentes... dejen su opinion

Hola amigos navegando por ahi me encontre con unas preguntas que supongo para quien desarrollan grandes proyectos son muy frecuentes y me entro la curuosidad por saber las respuestas.. estas son las preguntas

supongamos que me van a desarrollar un sistema para una empresa ¿que responderian?

¿Qué metodología de desarrollo de software usarás para desarrollar el sistema?
¿En qué lenguaje lo harás? ¿Qué framework si es el caso?
¿Antes de empezar el desarrollo, con tu propuesta económica, presentarás una especificación formal del sistema a desarrollar?

¿El código fuente y derechos serán de (empresa a la que se hace el desarrollo)?
¿Qué tiempo tienes calculado para el desarrollo?
¿Tienes pensado hacerlo en una sola entrega o varias?¿Qué penalizaciones habría en caso de retrasos con las entregas?
¿Qué tipo de soporte darás, durante cuánto tiempo y qué pasará con los bugs que se encuentren después de echar a andar el sistema?

de antemano gracias a quienes respondas se que no todas tienen respuesta simple pero almenos podrian comentar alguna anecdota en el caso de que se hayan retrasado en un proyecto como los penalisaron y cosas asi, sera interezante saberlo jeje.. gracias..

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de ezamudio

Mis respuestas

Antes que nada, quiero decir que las respuestas que vamos a dar todos los que contestemos esto no deben ser tomadas muy en serio porque no hay nada de información respecto al supuesto sistema. No hay una piedra filosofal en el software, es decir una combinación de herramientas (lenguaje, plataforma, metodologías, frameworks, etc) que sean siempre lo mejor para solucionar cualquier problema.

Personalmente yo antes de contestar cualquier pregunta haría varias preguntas como por ejemplo:
- Qué es el sistema que se desea tener?
- Cuál es el problema que se pretende solucionar con dicho sistema? (hay que evaluar si realmente va a servir, para evitar desarrollar sistemas que son defectuosos por diseño porque no resuelven realmente el problema que se tiene)
- Quiénes lo van a usar? Desde dónde lo van a usar? qué sistema operativo/plataforma/dispositivo van a utilizar para interactuar con el sistema?
- Con qué otros sistemas se necesitan desarrollar interfaces? es raro un sistema que exista en completo aislamiento y es importante conocer el ecosistema donde va a existir el nuevo sistema.
- Hay restricciones externas al sistema que afecten la fecha de entrega? (marketing ya anunció que está para enero, etc)
- Con qué presupuesto se cuenta?

Las respuestas corresponden al mismo orden en que están tus preguntas.

1. Me inclino por algo como Scrum.
2. Java (Qué sorpresa recibir esta respuesta, en un foro llamado JavaMexico).
3. Suponiendo una aplicación web, pues Spring, Tapestry 5, probablemente Hibernate, y no sabemos qué más se necesite o se pueda aprovechar de librerías existentes.
4. Se entrega un estimado de costo y tiempo, detallando las partes principales del desarrollo y las alternativas posibles cuando hay varias opciones en cuanto a módulos, funcionalidad, etc. Para llegar a esto generalmente hay algunas iteraciones previas para resolver dudas, etc.
5. El código fuente y derechos del mismo serán del cliente. Los involucrados podemos firmar cartas de cesión de derechos si es que lo van a registrar en INDAUTOR.
6. Ya se contestó en el punto 4.
7. Dependiendo del tamaño y naturaleza del sistema, puede ser una sola entrega o varias. Pero una sola sería solamente si es algo muy rápido que se termine en un par de meses; para cualquier proyecto de más tiempo, hay que programar desde el principio entregas parciales, si no para poner en producción, al menos para demostrar el avance llevado hasta la fecha y tener retroalimentación del cliente y usuarios, para hacer correcciones y modificaciones a esa etapa antes de continuar con las demás.]
8. Nuevamente, depende del tipo de sistema y de lo que el cliente esté dispuesto a pagar. Tal vez se la quieren jugar y/o confían mucho en mí y en que el sistema va a funcionar perfecto a la primera y entonces no pagan ningún tipo de soporte. En cuanto a defectos encontrados posteriores a la entrega, si se demuestra que realmente son defectos en el software, se deben arreglar sin costo.

Imagen de paranoid_android

Fase de anteproyecto

Ese es el tipo de cosas que yo pondría en una fase de anteproyecto.

Considerar software y hardware que permitirán obtener el mejor provecho del sistema.

En ese aspecto preparar un sistema implica que tenemos donde y con que instalarlo desarrollo, pruebas, producción.
¿Crecimiento?
Revisión de contratos licencias y permisos.
Revisar quien lo va a operar y que va a necesitar
Estimación inicial de costos, tiempos, nueva tecnología y capacitación.
El esquema de trabajo (Personal interno, externo, fábrica, expertos), iteraciones. (entregas)
Si es muy grande proveedores, viáticos.

Imagen de benek

Sigo...

En mi caso sería así...

¿Qué metodología de desarrollo de software usarás para desarrollar el sistema?

Me gustaría ocupar eXtreme Programming con Scrum, se complementan muy bien, el manejo del proyecto con Scrum y el desarrollo de software basado en los principios de XP.

¿En qué lenguaje lo harás? ¿Qué framework si es el caso?

Java. Me gustaría hacer un proyecto mediano con Scala pero aún no tengo todo el skill en este lenguaje para hacerlo. :-)

De frameworks si estamos hablando de web seguramente ocuparía JSF o T5, aunque este último apenas lo comienzo a aprender. Ocuparía Spring core y para acceso a datos Hibernate.

¿Antes de empezar el desarrollo, con tu propuesta económica, presentarás una especificación formal del sistema a desarrollar?

Normalmente presento una propuesta económica con la funcionalidad detallada del sistema valorada en complejidad y esfuerzo en horas por cada funcionalidad, además de los detalles de los consultores que participarán en el proyecto.

¿El código fuente y derechos serán de (empresa a la que se hace el desarrollo)?

Claro, el cliente es quien paga el desarrollo, ergo, los derechos le pertenecen y él ya sabrá de qué manera protegerlo o liberarlo.

¿Qué tiempo tienes calculado para el desarrollo?

Depende del proyecto en sí, de la cantidad de consultores que lo desarrollarán y de la disponibilidad del cliente.

¿Tienes pensado hacerlo en una sola entrega o varias?¿Qué penalizaciones habría en caso de retrasos con las entregas?

Según Scrum el proyecto debe estar en constante entrega, en cada sprint, así que el cliente podría tener una versión 'usable' en una etapa muy temprana del proyecto.

¿Qué tipo de soporte darás, durante cuánto tiempo y qué pasará con los bugs que se encuentren después de echar a andar el sistema?

Lo ideal es que haya una fase de mantenimiento después de la entrega del proyecto. Con respecto a bugs y defectos en el sistema se ofrece una garantía de 6 meses.

:::

Interesante tema. :-)

Javier Ramírez Jr.

urgente

necesito Hacer un programa que lea desde teclado de manera repetitiva un número entero y deberá dejar de pedir un número al usuario hasta que el usuario escriba -1. Con los tres ciclos.(while, do while y for) soy nuevo en la programacion en java.

Imagen de jiturbide

Plop

Que manera de romper el thread

Imagen de ezamudio

sólo en java?

El poner este comentario aquí, pidiendo ayuda en vez de abrir un tema en el foro, me hace pensar que no sólo eres nuevo en la programación en java sino también en usar foros en internet. Por otra parte no encuentro ningún " por favor necesito ayuda" en el comentario, solamente la descripción de un problema.

si puse la descripcion del

si puse la descripcion del problema es porque necesito ayuda, y asi es soy nuevo usando foros en internet creo que nadie nace sabiendo.

Imagen de benek

Lineamientos

Te recomiendo que a cualquier lugar que entres a pedir ayuda busques los lineamientos del sitio en cuestión, es con el objetivo de preservar el orden.

Los lineamientos de esta comunidad los encuentras aquí:

Saludos.

Javier Ramírez Jr.

Comprate un libro

Si realmente deseas aprender comprate un libro para que al menos aprendas lo basico, si solo quieres que te resuelvan la tarea de seguro habra alguien en tu grupo o salon que si sepa programar y necesite dinero.

Imagen de jiturbide

Estas son las mias,

Mmm

Imagen de jiturbide

Estas son las mias

Hola

Estoy de vacaciones y hasta ahora he encontrado un tiempo para participar en este thread.

¿Qué metodología de desarrollo de software usarás para desarrollar el sistema?
Depende del cliente, del tipo de proyecto y del tiempo de ejecución del proyecto, el cliente puede solicitar que se siga su metodologia o si nos da la oportunidad se puede seguir la de la consultoria. En tal caso usaria la de mi empresa actual, que esta basada en UP y convive con las practicas de Administracion de Proyectos con CMMI. En comparación a una metodologia agil es pesada pero hace estandar el proceso de desarrollo y no queda a elección de un desarrollador sino de los lineamientos de la empresa.

¿En qué lenguaje lo harás? ¿Qué framework si es el caso?
Esto depende de los requerimientos no funcionales, de las restricciones tecnologicas, de presupuesto y del tiempo disponible, primero obtengo esta informacion y despues elaboro alternativas de solución. Un requerimiento puede llegar a resolverse con el desarrollo de un sistema, la reutilización de un servicio existente o la adquisición de un producto.

Si las alternativas de solucion apuntan al desarrollo de un sistema web entonces antes de pensar en frameworks analizo los requerimientos de concurrencia, alta disponibilidad, transaccionalidad y seguridad, estos determinan muchas veces la tecnologia que debes usar en cada capa para que no te lleves sorpresas.

¿Antes de empezar el desarrollo, con tu propuesta económica, presentarás una especificación formal del sistema a desarrollar?
Solamente una propuesta de solución.
Si el cliente quiere algo mas puede elaborarse una prueba de concepto y se explica de manera general el funcionamiento de la solución. Algo que aprendes con la experiencia es que no debes dar informacion de mas por que a veces el proyecto ya ha sido ganado por otra consultoria que no tiene idea de como hacerlo.

¿El código fuente y derechos serán de (empresa a la que se hace el desarrollo)?
El codigo es de la empresa.
Cuando se trata de Open Source solo elijo frameworks con licencia que no sea GPL para no meter en problemas futuros al cliente.

¿Qué tiempo tienes calculado para el desarrollo?
Depende de la estimación.
A parte del tiempo que se debe dedicar a las fases de analisis, diseño, construcción, pruebas, liberación y estabilización tambien hay que considerar los tiempos muertos de reuniones, VoBos, tiempos de liberación de la propia empresa.

¿Qué penalizaciones habría en caso de retrasos con las entregas?
En Gobierno hay que tener mucho cuidado por que ahi nos penalizan por cada día de retraso en entregables (Documentos, Codigo, VoBos). Tuve la mala experiencia de participar en un desarrollo donde el tipo de trabajo era Proyecto y no Asignacion y aun así el area de T.I. queria controlar el plan de trabajo, la administración y la metodologia de desarrollo y por otra parte en las bases del contrato se nos penalizaba por cada dia de retraso. Esto ocasionó que como los tiempos de entrega los determinó la dependencia y no nosotros tuvieramos varias penalizaciones por retraso en entregas. Mucho cuidado en Gobierno, ustedes deben tener el control total del proyecto.

Al final si el sistema va bien puede hacerse una negociación.

Y hablando de gobierno, en las bases el alcance frecuentemente de ciertos requerimientos esta muy abierto, por ejemplo: "El sistema proveera de todos los reportes necesarios para el cliente" El requerimiento esta muy abierto de tal manera que pueden ser 1 o 100 reportes. Por lo tanto si el alcance esta muy abierto lo que se puede hacer es que en la propuesta se aclarare que solo se consideran X numero de horas para el desarrollo de X, Y o Z.

En General no me gusta trabajar para Gobierno, muy lentos, mucha grilla y muchos minireinos.

¿Qué tipo de soporte darás, durante cuánto tiempo y qué pasará con los bugs que se encuentren después de echar a andar el sistema?
Dentro de la propuesta le da mucha seguridad a tu cliente un periodo de garantia sin costo, que realmente si esta incluido dentro de la propuesta economica, en el peor de los casos tendras a 1 desarrollador resolviendo las incidencias del sistema durante el periodo de garantia que ofrezcas, el costo de este recurso debe contemplarse en la propuesta economica.

Es todo.
Felices fiestas!

Imagen de ezamudio

GPL

Hijole tocaste un nervio ahí... en qué problemas crees que se puede meter la empresa si usa una librería GPL? Entiendo que al usar una librería GPL, todo lo que sea derivado de dicha librería debe continuar siendo GPL. Pero no todo el sistema se vuelve GPL por usar una librería GPL, solamente el código donde uses dicha librería (que puede ser mucho, o puede ser un módulo, o una clase dentro de un módulo, etc).

Y si la aplicación completa del cliente se vuelve GPL, cuál es su problema? Solamente si pensaba venderla después como software propietario... pero si es una aplicación para uso interno de una empresa no le veo al problema a que sea GPL.

Re: GPL

Si el cliente quiere redistribuir la aplicación, sin que sea su intención abrir el código fuente.

Saludos

Javier Castañón

Imagen de jiturbide

Re GPL

Hola.
De regreso a la cruda realidad respondo.

Hasta donde entiendo, todo el sistema se vuelve GPL por usar codigo con licencia GPL, y eso implica mantener el codigo del producto final abierto y disponible a la comunidad. Por ello surgio LGPL como alternativa para poder incluir codigo libre en software comercial o a la medida.

Actualmente y aqui en Mexico tal vez no haya tanto problema legal, y tienes razon ¿Cual es el problema de usarla si va a ser para un sistema a la medida? Tal vez ninguno cuando estes consiente de que usas GPL y no hay problema (en un caso remoto) por que alguien externo a una empresa te solicite el codigo por que sabe que dentro tiene partes de codigo GPL y tiene derecho a echarle un ojo por que es de la comunidad. Pero si vas a crear un producto que probablemente se va a distribuir (dado su exito) comercialmente entonces no deberias usar GPL.

En algunas empresas con matrices fuera de Mexico tienen prohibido usar ciertos frameworks opensource y de cierto tipo de licencias por que como sabemos el codigo se proporciona tal cual y por ello no tiene garantia, no hay obligacion de soporte y algunas les obligaria a abrir el codigo. Me ha tocado en algunos casos que las politicas internas prohiben el uso de herramientas tipicas de desarrollo por que les harian perder certificaciones de seguridad informatica.

Saludos

He aqui un link mejor explicado:

Saludos

Imagen de ezamudio

Distribución no es obligatoria

La licencia GPL no te obliga a distribuir software. Si una empresa tiene una aplicación de uso interno con licencia GPL y es la única copia, no hay ningún problema. Pero si le da copias a alguien y ese alguien le pide el fuente, entonces está obligado a entregarlo.

Puedes vender software GPL; no hay impedimentos para cobrar por la copia binaria. Pero si te piden el fuente estás obligado a entregarlo. A mucha gente no le interesa tenerlo porque lo que quieren es el soporte, y es lo que deberías estar vendiendo, a menos que vivas en una cueva y no estés enterado del problema de la piratería y creas que por vender software en una caja con algún mecanismo de protección, la gente lo va a respetar y no van a hacer copias ilegalmente.

Re: Re: GPL

Como bien apunta ezamudio, GPL no obliga a abrir el código *excepto* si se distribuye.

Si una taquería construye su punto de venta con software GPL, de ninguna manera está obligada a abrir el código. Si lo sube a internet para que otros lo puedan utilizar, entonces sí está obligada a abrir el código. Si abre franquicias y les instala el punto de venta, está obligada a abrir el código a los franquiciatarios. Entonces a lo mejor cambia de opinión, elimina el código libre y usa LGPL o código abierto.

Saludos

Javier Castañón

Imagen de ezamudio

O alrevés...

O tal vez la taquería tiene su punto de venta propietario y decide abrirlo, liberarlo y subirlo a internet, para que otros lo puedan usar (taquerías de la competencia incluso). De este modo otros pueden también encontrar defectos en el software, reportarlos y/o arreglarlos, y la taquería que subió el software original se beneficia de dichas correcciones. Finalmente nadie prefiere una taquería sobre otra por el software que usan; preferimos una taquería por los tacos, salsas, servicio, etc, de modo que el negocio de la taquería realmente no depende del software de punto de venta y por lo tanto no importa si otras taquerías usan el mismo software, no le perjudica a la taquería que liberó el software, pero sí le puede beneficiar.

Solamente no conviene hacer algo así cuando tienes un negocio que depende directamente del software que mandaste hacer. Por ejemplo Microsoft sigue vendiendo software como si fuera un producto (bueno, licenciando, no vendiendo) y por lo tanto no le conviene abrir Windows ni Office ni nada. Ni creo que a Facebook le convenga abrir todo el código para que al rato haya un sitio igualito pero con otro look, quitándole usuarios y anunciantes.

Pero cuántos negocios son de ese tipo y cuántos se asemejan más a la taquería? A cuántas empresas realmente les perjudicaría liberar su sistema de nómina por ejemplo? Les va a quitar ventaja competitiva el que al rato haya varias empresas usando ese mismo sistema?

Imagen de benek

Re: O al revés...

Un ejemplo claro de lo que apuntas es software para aspectos de nómina, contabilidad, recursos humanos, etc. Que bien podrían ser proyectos de software libre en lugar de que cada compañía pague por un paquete diferente a cada empresa desarrolladora. Un sistema de software libre para nómina por ejemplo el cual cada empresa pueda ocupar o hasta tomar para generar un fork ahora sí a la medida, modificándolo solo en los detalles en los que necesita diferencia.

Lo malo del asunto es que todavía no hay esa apertura en las empresas como para que pueda suceder a gran escala.

Imagen de paranoid_android

Re: O alrevés ...

Eso significa que lo que no convendría GPL en: paquetes o videojuegos.

Pero ...

Aunque casi siempre para estos efectos se puede hacer un plan de doble licenciamiento una licencia gpl y una comercial si tu cliente lo debe distribuir de manera cerrada.
Lo cual me parece bien ya que de algo debe vivir un proyecto de software libre.

Y la pregunta sería ¿Tendrían los desarrolladores la suficiente conciencia para agregar esa licencia al costo del sistema?
¿O al menos para indicarle al cliente que se debe de pagar, para incluirla en el plan de costo del sistema?
Piénsalo es bastante justo. Así ya no se viola ninguna política anti software libre.

Imagen de Shadonwk

suena interezante... aver

suena interezante... aver que dicen los expertos..