martes, febrero 22, 2005

OO: el desafío de "Muchos a Muchos"

Costin Cozianu trae a discusión un desafío del SQL y las bases de datos relacionales hecho al mundo de Orientación a Objetos: resolver en forma sintética algunas acciones sobre una relacion de muchos a muchos (en el ejemplo, usuarios asociados a grupos -un usuario en más de un grupo-). El enlace al problema en el título de esta nota.
El desafío:
  • Model the relationship between Users and Groups (many to many)
  • For all domain objects (Users and Groups), handle:
    • creation of new objects
    • updating of existing objects
    • deleting of existing objects (including cascading: if a group is deleted, any relationships are invalidated)
  • Querying for a set of objects which match a simple but arbitrary condition
  • Creating a relationship between any two instances
  • Removing a relationship between any two instances (including deletion as a result of deleting a member of the relationship)
  • Navigating the relationship both ways in better than linear time
  • If solution is not SQL, supply the entire implementation.
  • Make it thread safe and deadlock safe (this is functionality provided out of the box by SQL DBMSes).
El objetivo: "demostrar que SQL mantiene funcionalidad que no está rápidamente disponible, ni trivialmente implementable" en ambientes OO:

The challenge was intended to demonstrate that SQL has useful functionality that is not readily available, nor trivially implementable in OO environments. This is in contrast to claims of OO developers (DbasGoneBad, PrevalenceLayer, etc) that if we could only get SQL databases out of the picture then we'd have all milk and honey. Since many books on OO talk quite a lot and quite without substance about OO "relationships" (aggregation, composition, ownership, directionality, etc), and since I know from experience that managing OO relationships is a frequent source of bugs in OO programs, I put this challenge with the intent to make some OoWeenie?s out there painfully aware of the limitations of their own tools. In particular this page debunks a pervasive misconception (see quotes in ObjectRelationalPsychologicalMismatch) that RelationalModel is not as good at representing "relationships" as object models. Which claim should be judged ridiculous on the face of it, but it is amusing how many "important names" in the OO camp make it.

jueves, febrero 17, 2005

Java y C++, errores históricos?

El 3 de mayo de 1997, Bertrand Meyer escribió en un grupo Google:
Ten years ago or so, when object technology first captured the industry's attention, projects moved en masse to C++. This was not the right decision. Not that everything was bad with C++ (then it would not have attracted so many
people); it was simply not appropriate for serious software engineering. C++ was a transition technology, useful to make C developers and their managers object-aware, but not appropriate for the development of durable, high-quality software systems. Interestingly enough, this was clear to many people; virtually
every object-oriented expert would privately concede that C++ was an inadequate solution - but carefully refrain from saying so in public, for fear of appearing to go against the tide.
This is happening again with Java. Once again we have an approach that has some major contributions to make but is hyped as the solution to everything - and is not. (sigue...)
Con estas revulsivas ideas se inició una discusión valiosa, con decenas y decenas de participantes, algunos de ellos fundamentales, como Bjarne Stroustrup o el mismo Bertrand Meyer con sólidos argumentos, que, cualquiera sea la posición de cada uno, sirve para aprender. Estamos en 2005, y la línea de discusión sigue: C++ y Java siguen en foco, sus puntos débiles son conocidos, y Eiffel también sigue en un segundo plano de adopción...
Si le interesa seguir la línea de discusión, o aportar su criterio...
http://groups-beta.google.com/group/comp.object/browse_frm/thread/2c6139ce13be9980/649217656063dab8


Un problema de arquitectura?

Un artículo de Builder.com (link en el título de esta nota), recoje la crítica de James Gosling, de Sun, sobre la decisión de Microsoft de soportar C y C++ en el esquema de ejecución de .NET . Gosling, "padre del lenguaje Java", dijo en Sydney en la primera semana de febrero, que esto crea un agujero de seguridad, y que éste es "one of the biggest and most offensive mistakes that they could have made", uno de los más ofensivos errores que hubieran podido cometer. ¿Por qué?:
(...) the security hole is based upon the fact that several features of the older languages are ambivalent with regards to security: "C++ allowed you to do arbitrary casting, arbitrary adding of images and pointers, and converting them back and forth between pointers in a very, very unstructured way.
(...) Gosling is concerned about "unsafe" code, which is produced by traditional languages like C and C++. Unsafe code is old code that does not strictly follow the rules of type safety that .NET defines, and this sort of code requires additional permissions to execute.
(...)
An important point is that the so-called unsafe code does have the potential to run faster than "managed" code due to some languages' ability to include machine-specific features that may sacrifice platform portability for speed.
Charles Sterling, del lado de Microsoft, sostiene que .NET define distintas clases de código, dentro de las cuales el "código manejado" o "administrado", corre bajo el control de .NET y sus reglas de seguridad. Sterling reconoce que el código "inseguro" tiene la ventaja de estar adecuado a la plataforma, por lo que puede correr más rápido en una plataforma específica. Así, la decisión de usar código seguro o inseguro, es una decisión de cuánto riesgo se quiera aceptar:
the choice between the two platforms is all about risk: if developers are willing to "accept the risk" of unsafe code then they may gain access to "the best performance system on the planet."

sábado, febrero 12, 2005

Más sobre educación primaria: reportaje a Juan Carlos Tedesco

La Nación publica un reportaje a Juan Carlos Tedesco, especialista en educación, que refirma y describe en mayor detalle el empobrecimiento de la educación básica en Argentina, apuntando al desinterés de los dirigentes, y la importancia del soporte de la familia y la sociedad. Frente a la indolencia y la confianza en que "ya se solucionará", es importante su opinión sobre qué es tocar fondo:

-¿En América latina hay que tocar fondo para advertir que un área necesita ser fortalecida?

-Ojalá fuera así. A veces ni siquiera tocando fondo se ha hecho. Si no, no estaríamos donde estamos. Porque uno podría decir que aquí hemos tocado fondo varias veces. ¿Qué significa tocar fondo? Cuando volvió la democracia, después de tantos años de dictadura, desaparecidos, uno pensaba que habíamos tocado fondo. La experiencia demostró que no. Tuvimos que sufrir otra crisis profunda, la de 2001, igual que en otros países de América latina. Esto tiene que ver con el umbral de tolerancia que tenemos. Y nuestros umbrales de tolerancia han descendido mucho. Uno podría haber dicho hace muchos años que la Argentina no iba a tolerar un índice de desempleo mayor del siete por ciento.
Llegamos al 20 por ciento y se lo toleró. ¿Podemos tolerar tener el 50 por
ciento de la población por debajo de la línea de pobreza? ¿Cuál es el fondo?
América latina y la Argentina tienen que entender que tenemos que levantar mucho los umbrales. Hay que reaccionar antes de que sucedan estas cosas.

miércoles, febrero 09, 2005

La educación básica es el futuro (hay que decirlo todavía?)

La revista América Economía , (número 293) trae en su portada un artículo sobre la educación básica en América Latina, con observaciones a un informe de la OCDE, que muestra muy pobres resultados de la enseñanza en general:
Los bochornos se sucedieron en diciembre cuando se publicaron los resultados de las dos pruebas internacionales más importantes de calidad educativa. El primero fue cuando la Organización para la Cooperación y Desarrollo Económico (OCDE) publicó los últimos resultados del Programme for Internacional Student Assessment. Conocido como el Pisa, el programa consiste en la aplicación de exámenes de conocimiento a entre 4.500 y 10.000 alumnos de 15 años de cada país participante. En total, 415.000 niños fueron evaluados por sus aptitudes en matemáticas, capacidad de lectura, ciencias y resolución de problemas. En su última versión, participaron los 30 países de la OCDE y 11 países voluntarios. México tomó parte como miembro de la alianza. Brasil y Uruguay, como voluntarios. El resultado no pudo haber sido peor para nuestros representantes regionales: los tres pelearon los peores lugares del ranking. Y en todas las variables estudiadas.

Es un déjà vu de lo sucedido con el Pisa 2000. Entonces, los cinco países latinoamericanos evaluados (Argentina, México, Chile, Brasil y Perú) se repartieron consecutivamente los últimos lugares, junto a Macedonia. En el informe presentado entonces por la OCDE, los países latinoamericanos destacaron por su mínima comprensión de lectura, alto nivel de repitencia y la enorme disparidad entre la capacidad de lectura de los estudiantes de familias pobres y con recursos. Los mismos puntos se destacan este año.
(...)
De la tendencia tampoco escapa Chile, el país de la región que ha puesto más esfuerzos para llevar a cabo una reforma educativa desde los 90. En diciembre se publicó el Estudio Internacional de Tendencias en Matemáticas y Ciencias 2003 (TIMSS, su sigla en inglés), otra prueba internacional que evalúa la calidad de enseñanza. Chile, el único país latinoamericano examinado, obtuvo magros resultados. No sólo alcanzó la posición 39 entre los 46 países participantes: lo preocupante es que el nivel de progreso fue mínimo frente a los resultados obtenidos en la versión anterior del TIMSS, de 1999.
Qué se afirma en el artículo:
  • Aumenta la masa de estudiantes en nivel primario y medio en todo el continente, pero no aumentan los recursos dedicados, ni el nivel curricular.
  • En las comparaciones mencionadas, los países que más avanzan, son los que tenían ya antes mejor nivel educativo, con lo que se ensancha la distancia entre los casos americanos y el resto.
  • En muchos casos los estudiantes no entienden lo que leen, y se confunden con nociones básicas de matemáticas.
  • Aumenta la diferencia de resultados entre alumnos de bajos recursos y de altos o medianos.
  • La enseñanza está divorciada de los requerimientos de la vida real, en particular del trabajo y las empresas.
  • En muchos casos, los recursos se orientan hacia la enseñanza privada, en lugar de ir a la pública (se menciona a Brasil), creando mayor diferencia entre la enseñanza pública y la privada.
  • La desigualdad es aún mayor entre grupos raciales y étnicos.
  • Los educadores se ven como empleados públicos, y adoptan los vicios de la burocracia.
  • A los distritos pobres nadie quiere ir a trabajar, por lo que los alumnos quedan en manos de los menos experimentados o capacitados, por descarte.
  • No es posible establecer un consenso de continuidad de un plan de mejora de la educación, y los planes cambian cada vez que los gobiernos cambian.
Una anécdota contada al inicio da la real dimensión del problema:
Un empresario de Rio Grande do Sul, Brasil, estaba a punto de estampar la firma que cambiaría de nivel su negocio de calderas. Había convencido a una empresa estadounidense para invertir dinero en su planta. No obstante, el inversionista extranjero le puso una condición inesperada: antes de poner un dólar, todos los empleados de la fábrica debían tener educación secundaria completa. El empresario gaúcho no sólo no lo podía creer. Tampoco lo podía cumplir: muchos de sus empleados tenían apenas entre cuatro y cinco años de escolaridad. Al ver cómo el negocio del año se escapaba de sus manos, no le quedó más que rendirse ante la evidencia: sin educación no hay competitividad.
Puedo enumerar decenas de síntomas avalando este diagnóstico, sólo acudiendo a la memoria de hechos de Argentina; otros podrán hablar de sus países: por ejemplo, las reformas educativas. Desde que recuerdo, Argentina va de reforma en reforma, al menos una por cada cambio "filosófico" de gobierno (la dictadura militar de Onganía, el gobierno peronista de 1973, la nueva dictadura posterior, el gobierno radical, y el nuevo gobierno peronista) cada uno su reforma educativa, en donde los maestros deben aprender un nuevo sistema de enseñanza, y los estudiantes en transición pasan de un sistema de aprendizaje al otro durante su ciclo en curso. Y, debiera decirse, cada vez, un sistema más degradado.
En fin, Latinoamérica no parece querer comprender el problema. Contrariamente a lo que podemos observar en los países asiáticos, que potenciaron su educación básica con el aval y respaldo de sus comunidades completas, ya sea la familia que sigue la educación de sus hijos, el Estado que actúa con continuidad a pesar de los cambios de administraciones, los maestros que son competentes, o las empresas que apoyan la capacitación.
Seguimos participando de comunidades disociadas, que, al anteponer el interés particular o de grupo al colectivo, están conduciéndose indolentemente hacia el mayor suicidio posible: la degradación social.

Global Tester: SQA, Metodos de manejo de la Calidad

Jeff Nyman sostiene Global Tester, un sitio dedicado al manejo de calidad en la construcción de software, con énfasis en el testeo. Qué dice sobre el concepto:
GlobalTester is a repository of open content information regarding subjects related to Quality Assurance, Quality Control, and Quality Testing. To state what GlobalTester is, it is helpful to consider its goals. One goal of GlobalTester is to provide a wide variety of information about various aspects of a quality initiative that can be used in a variety of organizations that act to bring a product to market, whether that product is hardware, software, Web sites, or anything else within the domain of the Information Technology (IT) industry. On a practical side, a goal of GlobalTester is to be two things simultaneously: (1) a diverse toolbox and repository of methodologies, methods, and practices for a robust quality initiative, and (2) a testing solution framework that emphasizes a broad view of testing to include non-exectuable and executable elements of a development lifecycle and that seeks to promote ways of thinking as well as ways of doing. Another goal of GlobalTester is to be as independent as possible of different management structures, specific tools and software, and staffing realities so as to present a large selection of topics that one can pick and choose from based on relevance and interest.
Qué dice sobre sí mismo Jeff:
Any time a site like this pops up it is logical and prudent to ask what makes the author of the site (and its contents) claim to be an expert in the field that they are talking about. In my case the answer is: absolutely nothing. In general, there is nowhere that I will claim to be an "expert", whatever that truly might be in the context of Quality Assurance. In fact, like everyone else in the industry, I am in a constant state of learning. Thus, even when I learn something there is always the corollary that tells me I have a lot more to learn. The only claim I will categorically make is that I am an individual that is committed to Quality Assurance in my professional life (and even my personal one to a large extent) and that I am committed to disseminating as much information as I can about Quality Assurance to the widest possible audience. I also make the claim that anything I present on this site has had the potential to save me a lot of time and effort at various organizations with which I have been employed. Perhaps more importantly, anything I present on this site has led to improvements in the overall quality efforts and initiatives of which I have been a part.
Adhiero a su punto de vista...( también puedo decir, "especialista en nada, e interesado en todo")

domingo, febrero 06, 2005

Un Blog de Arquitectura de Software

IASA (International Association of Sofware Architects) mantiene un blog más o menos institucional, que puede servir como enlace rápido a sus novedades. IASA es un reciente emprendimiento destinado a discutir conceptos de la arquitectura, de un modo abierto y no sujeto a posiciones tomadas. No dejar de visitarlo...
(El blog, enlazado en el título de esta nota, como en general sucede)