Ingeniería VS Afición

Buenas!

El otro día visitando la página de O'Reilly, me encontré con un artículo que hablaba sobre la seguridad del software. Éste artículo relflejaba que el "open source" no tiene por qué, y de hecho no es, más seguro que el propietario. Lo argumentaba porque decía que en el software de código abierto, al colaborar tanta gente, había mucha gente aficionada, mientras que en el software propietario participaban los ingenieros pagados por las empresas. La conclusión venía a decir algo así como que esa falta de ingeniería y diseño, empobrecía la calidad del software.

Siento no poder poner el link al artículo, pero no lo almacené, y a pesar de haberme metido ahora mismo en la página, ya no lo encuentro :S.

Aún así, ¿qué pensáis?

Yo la verdad que lo pensé un poquito... y puede ser cierto que le falte algo de diseño al SL, pero desde luego no a todos los programas. Es decir... con mis humildes conocimientos (muy muy muy muym muy limitados), creo que para tener un buen proyecto antes de nada hay que pensar muchas cosas, antes de ponerse a programar. Diseñar esquemas UML, redactar cierta documentación interna... etc etc. Y por lo que veo en los proyectos, ó no ponen esta parte del proyecto, ó es que directamente no se hace. La verdad que lo que decía el artículo, de todas formas, sólo lo veo a pequeñas aplicaciones desarrolladas por "aficionados" que desarrollen libremente. En fin, no tengo dudas de que los participantes en los grandes proyectos estarán má sque cualificados para ello. Y aún así, en las empresas de software propietario tengo entendido que muchas veces tampoco se dan todos los pasos debidos, ya que el tiempo apremia y al final ya sabemos, las cosas rápido y mal.

Pero en fin, que como yo entiendo poco de esto, me gustaría saber la opinión al respecto de todos vosotros.

Un saludo.
mmm.....

El OpenSource y el SoftwareLibre heredan su modelo de desarrollo de los primeros días de Unix cuando lo creó Ken Thompson en Bell Labs. La cultura Unix nunca se ha basado en hacer diagramas UML y esas cosas. No digo que no existan.... pero nunca ha existido esa cultura.

Por otro lado, en M$ tienen ingenieros muy cualificados y hacen software MUY inseguro. El proyecto Apache lo hacen muchos ingenieros y muchos no-ingenieros y es una de las mejores aplicaciones. La Free Software Foundation tambien tiene muchos programadores que no son ingenieros y produce un software de buenísima calidad.

Creo que generalizar es malo, sin embargo, el código abierto al poder ser visto por muchos, suelen descubrirse antes las vulnerabilidades y, además, se suele seguir un código de "ética" de reportar a los desarrolladores antes que dar "proof-of-concepts" y cosas así.

Just my .02 ¤

PD: te recomiendo The Art Of Unix Programming de Eric S. Raymond.
FuckingFreaky escribió:Buenas!

El otro día visitando la página de O'Reilly, me encontré con un artículo que hablaba sobre la seguridad del software. Éste artículo relflejaba que el "open source" no tiene por qué, y de hecho no es, más seguro que el propietario. Lo argumentaba porque decía que en el software de código abierto, al colaborar tanta gente, había mucha gente aficionada, mientras que en el software propietario participaban los ingenieros pagados por las empresas. La conclusión venía a decir algo así como que esa falta de ingeniería y diseño, empobrecía la calidad del software.

Siento no poder poner el link al artículo, pero no lo almacené, y a pesar de haberme metido ahora mismo en la página, ya no lo encuentro :S.

Aún así, ¿qué pensáis?

Yo la verdad que lo pensé un poquito... y puede ser cierto que le falte algo de diseño al SL, pero desde luego no a todos los programas. Es decir... con mis humildes conocimientos (muy muy muy muym muy limitados), creo que para tener un buen proyecto antes de nada hay que pensar muchas cosas, antes de ponerse a programar. Diseñar esquemas UML, redactar cierta documentación interna... etc etc. Y por lo que veo en los proyectos, ó no ponen esta parte del proyecto, ó es que directamente no se hace. La verdad que lo que decía el artículo, de todas formas, sólo lo veo a pequeñas aplicaciones desarrolladas por "aficionados" que desarrollen libremente. En fin, no tengo dudas de que los participantes en los grandes proyectos estarán má sque cualificados para ello. Y aún así, en las empresas de software propietario tengo entendido que muchas veces tampoco se dan todos los pasos debidos, ya que el tiempo apremia y al final ya sabemos, las cosas rápido y mal.

Pero en fin, que como yo entiendo poco de esto, me gustaría saber la opinión al respecto de todos vosotros.

Un saludo.


Yo pienso mas o menos como tu.

Sta claro k muxos programillas, pueden tener muxos bugs o falta de funcionalidades al hacerlo programadores aficionados en su tiempo libre y tal, pero no dudo en absoluto de la capacidad de la gente de KDE, Mandrake, Debian, Gentoo, o el propio kernel... no lo dudo... mas k nada porke demuestran dia a dia k son capaces de hacer autenticas maravillas de soft
Yo lo veo una tontería.
Si yo programo con el culo y hago un programa propietario cuyo código sólo yo conozco, desde luego no va a ser mejor software que si pongo el código a disposición de la gente para que lo pueda revisar y corregir.

Un saludo.
Pues nos e yo que decir... imaginate una comunidad muy grande de gente reportando y corrigiendo bugs... ya me dirás tu a mi lo que eso supone para un programa.

Además, si tu puedes tener una release del programa X cada poco tiempo, esa release seguro que corregirá fallos. Y yo creo que será más efectivo corregirlos poco a poco que sacar cada 2 años una nueva versión del programa que corrige los 2000 fallos que tenía, pero que tiene otros 2000 nuevos.

Además eso de el "factor ingeniero" no se lo cree nadie. Hay tios muy preparaos y muy "ingenieros" trabajando en proyectos de open source.

Y para terminar... quien siga dudando del open source que le heche un ojo a apache... y me diga porqué un proyecto open source es el servidor web más utilizado... o que compare el numero de bugs de Windows XP con el de alguna distro actual de linux y el tiempo que se tardan en corregir estos bugs...

En fin... un faludo a todos!!! y como es la primera vez que posteo este año... feliz 2005 :D
Se me olvidaba comentar que la filosofía y el modelo de desarrollo Unix ha sido históricamente el de seguir estándares y escribirlos. Prueba de ello es que Linus escribió Linux "leyendo estándares".

Salu2.Ferdy
Ferdy escribió:PD: te recomiendo The Art Of Unix Programming de Eric S. Raymond.
Síp! Ese lo tengo pendiente para después de los exámenes desde el otro hilo que pusiste. Al final creo que lo pediré por Amazon, porque leerlo en linea... puf! ¿El libro en sí es libre? Supongo que sí.

Sobre le hilo, pues decir que.. creo que el tío éste atacaba más a la falta de diseño y proyecto, que otra cosa. Como ya digo yo no entiendo mucho, más bien nada de esto. No sé hasta qué punto es importante tener todo un proyecto para un programa organizado con UML y otros métodos que seguro que existen... pero es que mucho me temo que eso, aún en el caso de que fuera lo mejor, que no lo sé, creo que no lo cumple tampoco el 90% del software propietario.

Ferdy escribió:Se me olvidaba comentar que la filosofía y el modelo de desarrollo Unix ha sido históricamente el de seguir estándares y escribirlos. Prueba de ello es que Linus escribió Linux "leyendo estándares".
Esto me interesa... Es que ahora que estoy aprendiendo a programar, me doy cuenta de que si sabes ANSI-C, no sabes nada. El mundo de la informática, y en concreto el del software, parece saltarse los estándares con una ligereza asombrosa. Éste tema me interesa mucho. ¿Realmente se respetan tanto los estándares en la filosofía UNIX? Es que ya después de todo, me cuesta mucho pensar que Unix ó el opensource, lleven a rajatabla los estándares.

Gracias por todo.

Un saludo!
A mi cada día me asombra más las afirmaciones que se hacen por pura ignorancia. Afirmar eso acerca del SL demuestra claramente un total desconocimiento del OpenSource, Software Libre, FSF...

En fin, desde que leí "Linux es una versión Freeware de Unix", ya casi nada me sorprende... bueno, que me llamen comunista por usar GNU/Linux si me sorprendió. Salu2
Éste tema me interesa mucho. ¿Realmente se respetan tanto los estándares en la filosofía UNIX? Es que ya después de todo, me cuesta mucho pensar que Unix ó el opensource, lleven a rajatabla los estándares.


Hasta el punto de que el código que no los sigue suele considerarse una P.M.

A mi cada día me asombra más las afirmaciones que se hacen por pura ignorancia. Afirmar eso acerca del SL demuestra claramente un total desconocimiento del OpenSource, Software Libre, FSF...


Esa fue mi primera reacción al leer el comentario del artículo [ el artículo no lo he buscado porque debe ser para vomitar... ], sin embargo, es cierto que ese fenómeno existe. Pero existe en el OpenSource y en el software propietario y cerrado. Así que, no nos está contando nada nuevo.

Salu2.Ferdy
¿Y por qué no van a desarrollar software libre los ingenieros? Vaya gilipollez más grande.

IBM y otras grandes empresas han pagado mucho dinero a desarrolladores para que escriban codigo de linux. Al fin y al cabo, les interesa. Por ejemplo, el soporte para SMP. Hay una web de Gnome o Ximian, no recuerdo ahora el enlace, donde te pagan implementar lo que ellos te piden (liberando el codigo como open source, claro).
Ferdy escribió:Por otro lado, en M$ tienen ingenieros muy cualificados y hacen software MUY inseguro. El proyecto Apache lo hacen muchos ingenieros y muchos no-ingenieros y es una de las mejores aplicaciones.


Es que no creo que aplicar un proceso de ingeniería al desarrollo de software implique que se va a lograr un software seguro y de calidad, pero lo que está claro es que ayuda en gran medida. Un software puede ser muy bueno, seguro y fiable, pero si no tiene una documentación asociada de un análisis, un diseño y una arquitectura bien definida, será muy dificil de mantener, ampliar y mejorar, y eso es quizás lo que pueda ser criticable. Llegar a entender un sistema leyendo el código fuente no digo que no sea posible, pero si muy tedioso, y para facilitarnos esto es para lo que estan los modelos y diagramas, sean del tipo que sean (DFD, UML, etc). Los modelos no son mas que abstracciones que nos facilitan la visión y comprensión del problema y de la solución, y por ello sería conveniente que todo proyecto los incorporará, independientemente de que se trate de software libre o propietario. Puede que seguir un estándar de programación no sea suficiente.
Vale, veo que en general, pensáis lo msimo que pensé yo al leerlo; y es que hay gente que ya no sabe qué decir. Pero bueno, prefería asegurarme...

Hasta el punto de que el código que no los sigue suele considerarse una P.M.
Esto quizá debería preguntarlo en otro hilo, pero aprovecho... ¿Sabes hasta qué punto se puede seguir los estándares? Es decir... ¿por qué la gente se los salta?
Es que éste tipo de cosas, realmente no sé cómo averiguarlas, ó cómo buscarlas, y es algo que me interesa. Me gustaría aprender a programar, y hacerlo bien desde el principio.

A todo esto... lo de O'Reilly no acabo de entender qué es. He visto que publica un momntón de cosas sobre linux y demás, y creo que algunos los ofrece en línea, pero por otra parte siempre te manda a comprarlos... ¿Qué hace exactamente esta editorial?

En fin... yo al menos espero (algún día y con suerte) ser ingeniero mientras programo open source...

Gracias!

Un saludo!
bueno, que me llamen comunista por usar GNU/Linux si me sorprendió.

Pues no tanto, hasta Miguel de Icaza dice cosas parecidas:

"Queremos que linux sea un éxito total en el escritorio, que remplace a Windows... una cosa medio anarquista y socialistoide :)"

Hay que ver cómo han fastidiado estas declaraciones:
"There are some new modern-day sort of communists who want to get rid of the incentive for musicians and moviemakers and software makers under various guises. They don't think that those incentives should exist"
"Hay algunos que son una especie de "comunistas modernos" que pretenden desacerse de los incentivos para músicos, cineastas y desarrolladores usando diferentes pretextos. Piensan que esos incentivos no deberían existir."

Y yo no veo dónde dice que los que usan soft libre sean comunistas.
Un claro ejemplo de tergiversación de declaraciones (y por que no quiero pensar que es directamente manipulación)


PD: Icaza se refiere -IMO- al aspecto romántico de que linux (libre) desbanque a linux (capitalista) no dice que él o los que desarrollan linux son comunistas. Por si acaso.
Es que no creo que aplicar un proceso de ingeniería al desarrollo de software implique que se va a lograr un software seguro y de calidad, pero lo que está claro es que ayuda en gran medida. Un software puede ser muy bueno, seguro y fiable, pero si no tiene una documentación asociada de un análisis, un diseño y una arquitectura bien definida, será muy dificil de mantener, ampliar y mejorar, y eso es quizás lo que pueda ser criticable. Llegar a entender un sistema leyendo el código fuente no digo que no sea posible, pero si muy tedioso, y para facilitarnos esto es para lo que estan los modelos y diagramas, sean del tipo que sean (DFD, UML, etc). Los modelos no son mas que abstracciones que nos facilitan la visión y comprensión del problema y de la solución, y por ello sería conveniente que todo proyecto los incorporará, independientemente de que se trate de software libre o propietario. Puede que seguir un estándar de programación no sea suficiente.


Bueno, yo me refería no a seguir un estándar solo de programación, si no seguir los estándares de lo que se implementa [ protocolo HTTP, SMTP, ... ].

Por otro lado, los proyectos de Software Libre suelen tener una buena documentación, sobre todo las APIs y librerías. Yo personalmente no creo que al software libre le falte de eso...

Esto quizá debería preguntarlo en otro hilo, pero aprovecho... ¿Sabes hasta qué punto se puede seguir los estándares? Es decir... ¿por qué la gente se los salta?


Depende de lo que vayas a programar... si te refieres a los estándares de C, digamos que lo ideal sería ANSI C. Pero en la práctica el C99 o el GNU C están perfectamente soportados en la mayoría de 'Unixes' [ no solaris pero bueno ].

Y la gente se los salta porque es más fácil a veces utilizar funciones que no son estándar porque te quitan de otros 'dolores de cabeza'; otras veces por desconocimiento de causa. Todo esto en caso de que quieras escribir código portable, limpio y bien aceptado; claro :P

Si te refieres a estándares de internet, por ejemplo. Pues antes de ponerte a implementar NADA, ni el '--help', empieza por leer el/los RFC de turno.

A todo esto... lo de O'Reilly no acabo de entender qué es. He visto que publica un momntón de cosas sobre linux y demás, y creo que algunos los ofrece en línea, pero por otra parte siempre te manda a comprarlos... ¿Qué hace exactamente esta editorial?


Esta editorial se gana la vida vendiendo libros, como todas :P O'Reilly publica libros técnicos, tanto de Linux, como de Open Source, como de tecnologías libres o propietarias.

Los libros libres los pone disponibles en internet, los no libres pues los puedes leer en 'Safari' [ online ] por un módico precio. Personalmente prefiero tenerlos en papel, además todos los que tengo merecen lo que he pagado por ellos...

zheo ese tema es de un hilo cerrado... por otro lado, no creo que linux desbanque a linux :D

Salu2.Ferdy
no creo que linux desbanque a linux
Si eso sucediera... tendría que aparecer alguien gritando: "¡Esto puede afectar a acontecimientos futuros!" y otro diciendo "¡Dios mio, no naceré!" o algo así...

De todas formas, en el mundo del OpenSource y del Software libre, poco código llega a hacerse grande si es un troncho: hay tanta gente mirandolo, que en dos días habrían aparecido miles de críticas y comentarios sobre lo mal que está hecho... y nadie lo usaría. En el software propietario no pasa eso: Si es malo, te lo comes con patatas y con todas sus consecuencias. ¿Que hace lo que quieres? ¿Si, pero como sabes que el que vaya tan lento es porque no es una basura? ¿o que el "crash" ese que pasa cada vez que llegas al 89% del recuento de asientos (cof cof, programa de contabilidad) no es intencionado?

Si, hay mucho aficionado, pero si el programa lo vale y es útil, enseguida habrá alguien que <> colaborando. Y si no, seguro que le echan un ojo.

Saluuudos!
Si eso sucediera... tendría que aparecer alguien gritando: "¡Esto puede afectar a acontecimientos futuros!" y otro diciendo "¡Dios mio, no naceré!" o algo así...
LOL

OK Ferdy por el tema del hilo, lo que pasa que a mi entender allí se habló de todo menos de las declaraciones de Gates, que no veo tan insultantes, y menos al soft libre.
Dagaren escribió:Es que no creo que aplicar un proceso de ingeniería al desarrollo de software implique que se va a lograr un software seguro y de calidad, pero lo que está claro es que ayuda en gran medida. Un software puede ser muy bueno, seguro y fiable, pero si no tiene una documentación asociada de un análisis, un diseño y una arquitectura bien definida, será muy dificil de mantener, ampliar y mejorar, y eso es quizás lo que pueda ser criticable. Llegar a entender un sistema leyendo el código fuente no digo que no sea posible, pero si muy tedioso, y para facilitarnos esto es para lo que estan los modelos y diagramas, sean del tipo que sean (DFD, UML, etc). Los modelos no son mas que abstracciones que nos facilitan la visión y comprensión del problema y de la solución, y por ello sería conveniente que todo proyecto los incorporará, independientemente de que se trate de software libre o propietario.
Ya, esto es lo que me pregunto yo. Es decir... yo en la carrera tengo varias asignaturas sobre "ingeniería del software", que tratan sobre todo, de todo eso que has comentado... diagramas, organización, documentación, etc etc... Entonces qué pasa, ¿es una bazofia esto que me van a meter? ¿No sirve para nada? ¿Está bien pero no es necesario?¿Realmente es así como se deberían hacer las cosas?

Ferdy escribió:Depende de lo que vayas a programar... si te refieres a los estándares de C, digamos que lo ideal sería ANSI C. Pero en la práctica el C99 o el GNU C están perfectamente soportados en la mayoría de 'Unixes' [ no solaris pero bueno ].
Si, claro, supongo que cada lengauje tendrá su propio estándar. La cosa es saber cuál de cada estándar de cada lenguaje es "EL ESTÁNDAR". De verdad que sé poquito, pero cada evz veo ma´s lo que decía RaUlEx, de que el mundo del software es un puto caos... aquí falta organización e igualación de criterios... que nos harían la vida más fácil, creo yo.
¿Para C++ cuál es el estándar?¿ANSI-C tb?
¿Cómo puedo saber qué acepta cada estándar?

Ferdy escribió:Y la gente se los salta porque es más fácil a veces utilizar funciones que no son estándar porque te quitan de otros 'dolores de cabeza'; otras veces por desconocimiento de causa. Todo esto en caso de que quieras escribir código portable, limpio y bien aceptado; claro
That's the point!;).

Ferdy escribió:Esta editorial se gana la vida vendiendo libros, como todas O'Reilly publica libros técnicos, tanto de Linux, como de Open Source, como de tecnologías libres o propietarias.

Los libros libres los pone disponibles en internet, los no libres pues los puedes leer en 'Safari' [ online ] por un módico precio. Personalmente prefiero tenerlos en papel, además todos los que tengo merecen lo que he pagado por ellos...
Okis... es que viendo unos en línea y otros que no... pues me estaba haciendo la cabeza un lío- Yo creo que tb, que un libro en linea puede ayudarte de forma puntual, pero que si realmente prefieres sacarle jugo... el papel es el papel!

Rurouni escribió:De todas formas, en el mundo del OpenSource y del Software libre, poco código llega a hacerse grande si es un troncho: hay tanta gente mirandolo, que en dos días habrían aparecido miles de críticas y comentarios sobre lo mal que está hecho... y nadie lo usaría. En el software propietario no pasa eso: Si es malo, te lo comes con patatas y con todas sus consecuencias. ¿Que hace lo que quieres? ¿Si, pero como sabes que el que vaya tan lento es porque no es una basura? ¿o que el "crash" ese que pasa cada vez que llegas al 89% del recuento de asientos (cof cof, programa de contabilidad) no es intencionado?
Gran observación. Otra falta de otro tipo de seguridad, en el software propietario.

Aunque son muchas preguntas algo raras las que he hecho... me interesa saberlo. La gente a menudo no se suele preocupar por esas cosas, por lo que veo, y a mí me parecen muy importantes.

Gracias a todos!!!

Un saludo!
FuckingFreaky escribió: Ya, esto es lo que me pregunto yo. Es decir... yo en la carrera tengo varias asignaturas sobre "ingeniería del software", que tratan sobre todo, de todo eso que has comentado... diagramas, organización, documentación, etc etc... Entonces qué pasa, ¿es una bazofia esto que me van a meter? ¿No sirve para nada? ¿Está bien pero no es necesario?¿Realmente es así como se deberían hacer las cosas?


Personalmente creo que son de gran utilidad y podría decirse que casi esenciales, y se puede resumir en la frase de Barry W.Boehm: "se hacen planos para una casa tanto si ésta es grande como si es pequeña".
Ya, esto es lo que me pregunto yo. Es decir... yo en la carrera tengo varias asignaturas sobre "ingeniería del software", que tratan sobre todo, de todo eso que has comentado... diagramas, organización, documentación, etc etc... Entonces qué pasa, ¿es una bazofia esto que me van a meter? ¿No sirve para nada? ¿Está bien pero no es necesario?¿Realmente es así como se deberían hacer las cosas?


Yo también las considero bastante importantes, para proyectos minimamente serios ( osea cualquier programa que necesite más de 5 ó 6 ficheros de código fuente).
Más que nada porque yo creo que hay que seguir la máxima ingenieril de "el ingeniero que empieza/crea el proyecto debe ser sustituible" y suele ser enormemente engorroso sino se hacen estas cosas.

Otro tema sería comentar que la mayoría de los ingenieros ( no informáticos por supuesto ) suelen tener unos conocimientos tendentes a 0 en estos temas ( por lo menos , lo que yo conozco , de teleco en todas sus vertientes e industriales ).
Eso, unido a que todo el mundo puede programar y programa ( je vale,con algo de intrusismo laboral [angelito] ) , lleva a programas con mala doc , violación de estandares (también habría que hablar de la ética profesional en estos días modernos en este tema), etc

Salu2

Pd: Joder, jodío friky, al final siempre consigues hacerme pensar :p :p :p

Salu2
Si, claro, supongo que cada lengauje tendrá su propio estándar. La cosa es saber cuál de cada estándar de cada lenguaje es "EL ESTÁNDAR". De verdad que sé poquito, pero cada evz veo ma´s lo que decía RaUlEx, de que el mundo del software es un puto caos... aquí falta organización e igualación de criterios... que nos harían la vida más fácil, creo yo.
¿Para C++ cuál es el estándar?¿ANSI-C tb?
¿Cómo puedo saber qué acepta cada estándar?


Sobre lo del 'puto caos', en mi opinión los estándares están ahí, esto pasa como con el XHTML, el estándar existe, navegadores que lo implementen y diseñadores que se ciñan al mismo, "haberlos haylos". Pero siempre hay otros navegadores y diseñadores que se los pasan por el forro de sus caprichos. En el mundo del software e internet, igual.

Por otro lado, para C++ si no recuerdo mal ISO C++99 existe, pero creo que no hay ningún compilador que lo soporte 100% aunque hablo de memoria.

Para C/C++ las man son tu mejor aliado.

Salu2.Ferdy
Es eso... los estándares están ahí, pero uno se los puede saltar sin problema. Si no existieran navegadores que admitieran las barbaridades que se admiten, si hiciera falta compilar el XHTML baja un estricto estándar, y lo mismo con todo el software, no sería más fácil todo? Claro que se requeriría un conocimiento mayor, pero es la única desventaja que veo. Por otra parte, si yo no puedo operar a nadie, in hacer de psicólogo, ni hago máquinas industriales... por qué la programación se "degenera" para ponerla al servicio de cualquiera? En parte creo que dykstra se refería a lo mismo.

Sobre lo demás... gracias por los consejillos. La verdad es que nunca he programado nada en linux, pero he visto como tiras de man algunas veces. Supongo que por internet habrá algún manualcillo para aprovechar los man para programación. El tener esa fuente de información a tu disponibilidad siempre... es algo que se agradece.

dykstra escribió:Joder, jodío friky, al final siempre consigues hacerme pensar
Es que me gusta joder...[666].

Un saludo!
A ver, yo me fio mas de una aplicacion desarrollada por un ingeniero que de una desarrollada por un no-ingeniero. Pero me fio mas de una aplicacion desarrollada por un millon de no ingenieros que de una desarrollada por 100 ingenieros.
21 respuestas