martes, 5 de julio de 2011

Retos y oportunidades que tiene el software libre en Venezuela

Académico: unos de los principales retos a nivel académico es la masificación del software libre. Considero que el ámbito académico es una de las áreas donde el software libre tiene mayores oportunidades de arraigarse. Si se lograra que a nivel básico todos los estudiantes comenzaran a trabajar con SL acabaríamos con la costumbre que tenemos ya todos de usar software privado.
Con respecto a las oportunidades, la principal de ellas es el apoyo que está prestando el gobierno nacional con respecto al SL. Un ejemplo de esto es el proyecto Canaima educativo, el cual  tiene como objetivo apoyar la formación integral de las niñas y los niños mediante la dotación a cada uno de ellos de una computadora portátil escolar, siendo un  factor importante en el alcance de la independencia tecnológica, ya que los contenidos educativos, aplicaciones y funciones son totalmente desarrollados en Software Libre por talento venezolano. 

Técnico: el principal reto se encuentra en poder acaparar a esa gran mayoría de usuarios que actualmente se encuentran casados a sistemas operativos privados como Microsoft o Mac OS, y a todas las demás aplicaciones privativas que utilizamos actualmente. Considero que su principal reto es entrar aún más en los jóvenes, desarrollar una interfaz gráfica que se parezca cada vez más a los que estamos acostumbrados para así poder captar al usuario común y luego hacerlo conocer los grandes beneficios que se obtienen con el uso del mismo. También es importante lograr la compatibilidad con la mayoría del hardware existente, ya que muchas personas se limitan de la utilización de mismo por “fastidio” dada la falta de compatibilidad con cualquiera de los elementos de uso cotidiano como cámaras, teléfonos, etc.
Estratégico: desde el punto de vista estratégico el Estado Venezolano está realizando una serie de trabajos    para lograr la democratización del conocimiento y la independencia tecnológica de la información. Vemos como actualmente se trata de introducir estos avances en todos los ámbitos existentes. ¿Cuál sería el gran reto? Reconocer que el Estado no es el único responsable de este tipo de desarrollo, ciertamente es el responsable del marco legal, en el cual estuvo y se encuentra trabajando, pero es importante el apoyo y participación de todos los sectores del país, sin distinción de partido político, lugar de trabajo, ámbito privado, etc. Debemos romper esas barreras que se encuentran actualmente en nuestro país.

Legal: El principal reto desde el punto de vista legal es el efectivo cumplimiento de las leyes, ya que siempre he considerado que una  gran debilidad que poseemos es que nos jactamos de poseer leyes justas, de inclusión, participación, respecto, etc, pero del dicho al hecho hay un largo trecho como dice el refrán.  Es necesario el cumplimiento de las leyes y decretos, es necesario acabar con la piratería en el país para poder tener esa necesidad que nos lleve a la utilización y mayor desarrollo del SL. En cuanto a los beneficios tenemos todo un marco regulatorio en comparación con otros países que fomentan el desarrollo y uso del SL.

Voluntariado: en la actualidad Venezuela cuenta con muchas comunidades que van en pro del desarrollo del software libre en el país, considerándose esto como su principal oportunidad. El principal ente encargado del tema del SL en el país en el CNTI (Centro Nacional de Tecnologías de la Información), pero podemos encontrar otras ofertas como son: Comunidad venezolana de software libre, Grupo de Usuarios de GNU/Linux de  Portuguesa, El Centro Nacional de Desarrollo e Investigación en Tecnologías Libres (CENDITEL) softwarelibre.gob.ve, PlanetaLinux, turpial, mozilla Venezuela, proyecto GNU Venezuela. Y como estas muchas más organizaciones, comunidades, etc. dispuestas a por el desarrollo del SL en el país.

Institucional: desde el punto de vista institucional la principal oportunidad nuevamente se encuentra en todas las leyes y decretos establecidos por el Estado Venezolano, en donde el decreto 3.390 expone cómo las instituciones públicas deben ir migrando a la utilización de SL mientras las ofertas existentes cubran las necesidades de las mismas. De manera que podemos apreciar cómo varias instituciones del Estado han migrado poco a poco a la utilización de SL, principalmente en la utilización de correos, implementación de SO y aplicaciones como openOffice. Entre los principales retos que se presentan en este ámbito encontramos el de utilización de aplicaciones libres que cumplan con todos los requerimientos que se satisfacían con las antiguas aplicaciones, es importante mencionar que estos procesos de migración dentro de la administración pública o cualquier tipo de organización no son nada fáciles, ya que requieren fuertes inversiones de tiempo y dinero para lograr esos grandes cambios y adecuaciones.

Referencias:

¿Cómo migrar a Software libre?


En el libro de Fernando de la Rosa y Federico Heinz se exponen nueve (9) aspectos importantes relacionados con la migración del software propietario al software libre. Siendo estos los siguientes:


1.- Lo ideal sería partir de cero, pero al hablar de migración se hace referencia que estas pasando de la existencia de un software propietario para pasar a un software libre. Y estas migraciones poseen sus características especiales y problemáticas específicas.

2.-Considerar la serie de inconvenientes que se presentan a lo largo de la migración, ya que los productos privados vienen diseñados para evitar la migración y lograr una “fidelización forzosa” con el cliente.

3.-Para la lograr una migración con éxito se debe contar con un buen equipo que apoye el cambio, así como del apoyo de los usuarios. Es importante antes del cambio realizar charlas explicativas del por qué de la migración. Involucrar positivamente a los usuarios es fundamental.

4.-Realizar un claro diagnóstico de la situación de partida. Que incluye: arquitectura del sistema, configuración de la red, hardware y software utilizado, además de las características de los usuarios del sistema.

5.- Definir con la misma precisión la situación que esperamos encontrar al terminar la migración.

6.-Justificar el por qué de la migración

7.-Decribir el plan de migración

8.-Tener en consideración el procesamiento de los datos

9.-Contar con un equipo técnico que pueda brindar asesoramiento a los usuarios luego de la migración.

Según los autores, se proponen dos formas de migrar al software libre: uno es el paso a paso y el otro es de una sola vez. A continuación se describen ambos:

1.- Paso a paso:

-Comenzar a usar software libre en el sistema operativo privativo que estamos utilizando, Se puede comenzar sustituyendo aplicaciones de software privativo que utilizamos por sus contrapartidas en software libre.

-Una de las principales ventajas de esta forma de migración es que se pueden ir pasando los formatos cerrados a formatos abiertos de forma progresiva y sin cambiar el entorno operativo.

-Una vez que los usuarios se han familiarizados con las aplicaciones libres de uso cotidiano, se puede comenzar la migración del sistema operativo.

-La meta de este cambio gradual es terminar siendo 100% software libre.

2.-De una sola vez: sustituyendo de entrada el sistema operativo y todas las aplicaciones por software libre. Esta es la opción más rápida, pero la más riesgosa, necesita de personal capacitado muy convencido del cambio y una mayor planificación

Fuentes:

Fernando da Rosa y Federico Heinz. “Guía Práctica sobre Software Libre. Su selección y aplicación local en América Latina y el Caribe”. Unesco. Montevideo. 2007. páginas 37-50

domingo, 26 de junio de 2011

Comunidades de software libre en Venezuela

Anexo presento un resumen de algunas de las principales comunidades que trabajan en pro del desarrollo del software libre en Venezuela:

1.- Comunidad venezolana de software libre: http://covesolib.org/: esta comunidad  pretende hacer presencia en la web dando espacio para  agrupar ideas, conocimientos, soluciones y  el impulso del uso de Software Libre en Venezuela.

2.- - Grupo de Usuarios de GNU/Linux de  Portuguesa: http://www.plug.org.ve/. : es un grupo de usuarios muy jóvenes que están encargados de hacer conocer al Software Libre en el Estado  Portuguesa

3.- El Centro Nacional de Desarrollo e Investigación en Tecnologías Libres (CENDITEL) http://www.cenditel.gob.ve/: surge como una iniciativa para impulsar los procesos necesarios que  permitan transitar el camino hacia el verdadero rol que  deben cumplir la ciencia, la tecnología y la innovación  para alcanzar el desarrollo económico, social y político  de la nación.

4.- http://www.softwarelibre.gob.ve/index.php: Es una página impulsada por el Ministerio del Poder  popular para Ciencia, tecnología e industrias  intermedias, siendo otro ejemplo de cómo ha sido el  estado venezolano uno de los principales  patrocinadores del estudio y desarrollo de aplicaciones  libres a nivel nacional. La misión que posee esta  comunidad es la de “constituirse en la guía de  referencia oficial para la ciudadanía nacional e  internacional, del uso, desarrollo y apropiación del  software libre en la sociedad venezolana, representada  en sus tres aspectos fundamentales, como lo son las  Instituciones de Gobierno, las sociedades mercantiles  y la sociedad en general

5.-http://planetalinux.org/ve/: PlanetaLinux es una comunidad de usuarios, desarrolladores y activistas iberoamericanos de software libre, GNU/Linux y similares. A través de los blogs, de cada uno de los miembros de esta comunidad, se entera de lo que pasa, de primera mano, a nuestro alrededor de una forma divertida y actualizada al día por día

6.-turpial.org.ve: esta comunidad se enfoca en el desarrollo de Turpial. “Un cliente alternativo para microblogging con múltiples interfaces. Está escrito en Python y tiene como meta ser una aplicación con bajo consumo de recursos y que se integre al escritorio del usuario pero sin renunciar a ninguna funcionalidad.” Turpial, las imágenes y los sonidos han sido publicados bajo la licencia GPLv

7.- http://wiki.velug.org.ve/ : La misión principal de esta comunidad es dar soporte a todos los usuarios Linux del país, sin importar la distribución de Linux que están utilizando.

8.- http://mozillavenezuela.org/: esta comunidad tiene como principal objetivo promover las tecnologías de la web y poder llevar el mensaje de la Fundación Mozilla, la cual  vela por crear estándares web para que sea más  semántica, menos monopolizada, y más cool.

9.-  Proyecto GNU Venezuela http://gnu.org.ve/: es un ente generador y articulador de proyectos donde se integran todo tipo de actores del movimiento del Software Libre junto a las demás áreas del quehacer nacional, con el objetivo de promover y defender la libertad del conocimiento en materia de ciencia y tecnología.

10.- Grupo de Usuarios de GNU/LINUX del Instituto Universitario  de Tecnología de Yaracuy http://iutyglug.org.ve : es la comunidad de Usuarios de Software Libre del Instituto Universitario de Tecnología  de Yaracuy que tiene como objetivo promover el uso de  Software Libre y motivar a las personas a su utilización y participación del libre conocimiento, brindando asistencia técnica  y asesoramiento al momento de elegir alguna distribución, o sobre  software libre.

Además de estas, existen muchas más comunidades de software libre en el país.

sábado, 25 de junio de 2011

Software libre en Venezuela

Como ya he mencionado anteriormente el software libre tiene sus primeras manifestaciones en los años 80 donde se sientan los fundamentos éticos del software libre, en Venezuela no es hasta pasado el siglo XXI que se logra generar un interés mayor por el desarrollo y adopción del software libre. Ciertamente antes de esta fecha existían personas trabajando dentro de este ámbito, pero no es hasta la aparición del decreto 3390 (en 2004)  que el país y en principal la administración pública pone todo su interés en conocer más sobre esta concepción de software que contrapone el paradigma del software propietario existe en la mayoría del país.

A nivel nacional el Centro Nacional de Tecnologías de Información (CNTI), adscrito al Ministerio de Ciencia, Tecnología e Industrias Intermedias, es el ente encargado de acelerar el proceso de migración de la Administración Pública al Software libre.  El CNTI tiene como visión Consolidar un sistema de tecnologías de información del Estado, que apoye la gestión de la Administración Pública, a la comunidad organizada y al ciudadano; y haber contribuido a la creación de una fuerte industria nacional de software, todo ello en concordancia con los principios de soberanía  Por lo tanto el CNTI, funge como el ente rector de las tecnologías de información y como principal responsable del cumplimiento del decreto, considerando que la adopción del Software Libre en la Administración Pública, facilitará la interoperabilidad de los sistemas de información del Estado.

Ya han pasado 7 años desde la aprobación del decreto 3390 y aunque los resultados no han sido masivos, tenemos que reconocer que se han hecho grandes trabajos en cuanto a la incorporación de software libre a nivel nacional.

Dentro de la guía de migración a software libre en la administración Pública Nacional (APN) desarrollada por el CNTI, se establecen una serie de ventajas que ofrece el software libre, entre las que se encuentran:

Independencia tecnológica: El Estado deja de depender de terceros (a menudo transnacionales) para el diseño, desarrollo y mantenimiento de sus sistemas de información, retomando el control total de sus procesos, en particular de los procesos críticos y de alta importancia estratégica para el país.

Control de la información: El acceso al código fuente, la libertad de inspeccionar el funcionamiento del software, la libertad de decidir la manera en que almacenan los datos y la posibilidad de modificar cualquiera de estos aspectos queda en manos del Estado, lo cual le permite el control total de la información y por consiguiente el ejercicio de la Soberanía Nacional.

Confiabilidad y estabilidad: El software libre realizado por comunidades está sometido a la inspección de un importante número de personas, este número de verificadores es mucho mayor que el del software propietario. Estas personas identifican los problemas, los resuelven, y comparten las soluciones con los demás. Por tal razón los programas libres de las comunidades gozan de gran confiabilidad y estabilidad.

Seguridad: La información que el Estado maneja generalmente es importante y/o confidencial, puede ser muy peligroso que esta información caiga en manos incorrectas. Por esta razón es imprescindible que el Estado pueda verificar que su software no tenga puertas de entrada traseras, voluntarias o accidentales, y que pueda cerrarlas en caso de encontrarlas; tal control sólo es posible con el software libre.

Economía: contar con normas abiertas para la administración electrónica, el nivel de seguridad que proporciona la plataforma GNU/Linux, la eliminación de las actualizaciones forzosas. Esto permite disfrutar de una mayor economía en el uso y gestión de las Tecnologías de la Información y Comunicación (TIC).

Desarrollo de la industria nacional: al migrar a software libre, existirán requerimientos de aplicaciones específicas que se deben realizar mediante la inversión en materia tecnológica hacia EPS y empresas nacionales  (desarrollo endógeno).

Fuentes:

martes, 14 de junio de 2011

LICENCIAS DE SOFTWARE LIBRE

Continuando con el tema de los aspectos legales del software libre, aquí dejo un resumen de los licenciamientos asociados al tema.

Licencias de software libre robustas: contienen una cláusula que obliga que las obras derivadas o modificaciones que se realicen al software original se deben licenciar bajo los mismos términos y condiciones de la licencia original. Son firmes en el uso del copyleft. A continuación se presenta el ejemplo más representativo de este tipo de licencia:

a.- GNU GPL: (Licencia Pública General de GNU) Está orientada principalmente a proteger las 4 libertades: (1) ejecución y uso, (2) estudio y adaptación, (3) distribución de copias y modificación y (4) su liberación. Al ser un documento que cede ciertos derechos al usuario, asume la forma de un contrato, por lo que usualmente se la denomina contrato de licencia o acuerdo de licencia. La GPL incluye términos de distribución que no permiten a los redistribuidores añadir a su licencia cualquier restricción adicional (a las de la licencia original), ni al software original, ni a obras derivadas. Es la licencia más usada en el mundo del software libre con un 75% del código libre publicado.

Licencias de código abierto robustas débiles (mixtas): Son aquellas con copyleft  débil o híbridas, contiene una cláusula que obliga a que las modificaciones que se realicen en el software original se deban licenciar bajo los mismos términos o condiciones de la licencia original, pero que las obras derivadas que se puedan realizar de él puedan ser licenciadas bajo otros términos y condiciones distintas. Algunos ejemplos son:

a.- Mozilla Public License: Cumple completamente con la definición de software de código abierto de la Open Source Initiative (OSI) y con las cuatro libertades del software libre enunciadas por la Free Software Foundation (FSF). Sin embargo la MPL deja abierto el camino a una posible reutilización de forma comercial no libre del software, si el usuario así lo desea, sin restringir la reutilización del código ni el re-licenciamiento bajo la misma licencia. Aunque el uso principal de la MPL es servir como licencia de control para el navegador Mozilla y el software relacionado con él, esta licencia es ampliamente utilizada por desarrolladores y programadores que quieren liberar su código.
Tiene algunas restricciones complejas que la hacen incompatible con la GNU GPL

b.- LGPL (Lesser General Public Licence): La licencia menor es igual en condiciones y restricciones a la GPL común, con la diferencia que permite enlazar a software privativo, su uso sólo es recomendado en casos puntuales y estratégicos. Esta licencia permisiva se aplica a cualquier programa o trabajo que contenga una nota puesta por el propietario de los derechos del trabajo estableciendo que su trabajo puede ser distribuido bajo los términos de esta "GPL General Public License".

c.- Common Public License:  Se traduce como Licencias Pública Común, tiene el objetivo declarado de apoyar y fomentar el desarrollo colaborativo de software de código abierto al tiempo que conserva la capacidad de utilizar el contenido CPL con software licenciado bajo otras licencias, incluyendo muchas licencias privativas. Se diferencia de la GPL porque carece de compatibilidad con ambas versiones de la GPL ya que  tiene una sección "Cláusula de opción de ley" en la sección 7, que restringe disputas legales para un determinado tribunal. Otra fuente de incompatibilidad son los requisitos del diferente copyleft. La Free Software Foundation y la Open Source Initiative han aprobado los términos de licencia de la CPL.

Licencias de código abierto permisivas: Son aquellas licencias que permiten crear una obra derivada sin que esta tenga obligación de protección alguna, entre estas se encuentran:

a.- Apache software license: Existen tres versiones de la licencia Apache (1.0, 1.1. y 2.0) siendo la 2.0 la más empleada. Las dos primeras versiones carecen de Copyleft. La última versión es considerada una licencia de Software Libre. Incorpora ciertas condiciones extra relacionadas con patentes: exige incluir un permiso de uso de patentes por parte del autor/poseedor de las patentes y además puede rescindirse la licencia por problemas de patentes. Estas características la hacen incompatible con la GNU GPL 2, pero posiblemente no con la GNU GPL 3 en desarrollo, ya que esta contempla el problema de las patentes desde una perspectiva similar.

b.- BSD license: Este tipo de licencias se caracteriza por no tener copyleft. Considera que si el software es libre no debe imponer ninguna restricción en su distribución aunque esto signifique que cualquiera use el software para su propio beneficio y no comparta el código. Uno de los aspectos por lo que las licencias  BSD no eran consideradas libres por GNU era su cláusula de publicidad (también conocida como “4-clause”) que obligaban a hacer mención a la Universidad de Barkeley, lo cual era una restricción adicional. En el año 1999, esta cláusula fue eliminada y a partir de allí la licencia BSD se fragmento en dos tipos: las que incluían la “4-clause” y las que no. Hoy en día muchos proyectos grandes usan licencias del tipo BSD o inspiradas en su filosofía.

Fuentes:

domingo, 12 de junio de 2011

ASPECTOS LEGALES DEL SOFTWARE LIBRE



Las licencias de software libre son las que van a garantizar la ejecución de las libertades de ejecutar, usar, estudiar, adaptar, distribuir copiar, modificar y liberar las modificaciones del software al público. Para la protección de la libertad del software libre, Richard Stallman funda la Free Software Foundation (FSF), para la cual no es suficiente con cumplir las libertades básicas sino que las distribuciones ulteriores del programa continúen con las mismas libertades. Esta fundación establece que el único software realmente libre es aquel que se distribuye con una licencia GPL (con copyleft). Lo que diferencia el software libre de la FSF es precisamente el término de copyleft, ya que existe software libre que se distribuye con otras licencias, denominándolo código abierto (open sourse). El llamado código abierto intenta ofrecer una perspectiva sobre el software libre más pragmática y orientada al mundo empresarial y se le dio este nombre para diferenciarlo del software libre de la FSF que está relacionado con el copyleft. Por lo tanto este se caracteriza por también respetar las cuatro libertades del software libre pero no poseer copyleft. En definitiva queda claro que lo esencial en estas licencias es la distribución del código fuente del programa y que a excepción de la clausula de copyleft las discrepancias entre ambas no son legales sino de postura.

Algunas definiciones:

Copyleft: Es una práctica al ejercer el derecho de autor que consiste en permitir la libre distribución de copias y versiones modificadas de una obra u otro trabajo, exigiendo que los mismos derechos sean preservados en las versiones modificadas. Esta condición particular, establece la imposibilidad legal de capturar el software libre, modificarlo y privatizarlo. Es un término establecido por la Free Software Foundation (FSF).

Dominio público: Es todo aquel software sin copyright, es el modo más simple de hacer un programa libre. Esto permite que la gente comparta el programa y sus mejoras, si así lo desean. Pero también permite a quien no quiera cooperar, convertir el programa en software privativo. Pueden hacer cambios y distribuir el resultado como un producto privativo. Las personas que reciban el programa en su forma modificada no poseen la libertad que el autor original les dio debido a que el intermediario se la ha quitado.

INCompatibilidad de licencias: la incompatibilidad entre licencias se da cuando dos software distintos poseen requisitos contradictorios imposibilitando combinar partes de los mismos para crear uno nuevo. La proliferación de licencias muchas veces resulta problemático ya que conlleva a agravar la incompatibilidad y volver engorroso el proceso de licenciamiento del Software Libre, además de incrementar el número de textos legales que deberían leer los desarrolladores y distribuidores de Software Libre.

Las licencias software libre pueden ser: robustas, robustas débiles y permisivas. Estas las explicaré en una próxima publicación.

Fuentes:

lunes, 6 de junio de 2011

CONTROL DE CALIDAD DEL SOFTWARE

No es más que la realización de pruebas para detectar defectos, tratando de minimizar o eliminar la publicación de software defectuoso y  mejorando el resultado en diferentes iteraciones del ciclo de entrega – certificación.

Es la concordancia con los requerimientos funcionales y de rendimiento explícitamente establecidos, con los estándares de desarrollo explícitamente documentados y con las características implícitas que se esperan de todo software desarrollado profesionalmente”.

En las fuentes consultadas hacen referencia a  3 puntos importantes en definición de calidad de software:
1- Los requerimientos del software son los fundamentos desde los que se mide la calidad.
2- Los estándares específicos definen un conjunto de criterios de desarrollo que guían la forma de aplicación de la ingeniería de software.
3- Existen requerimientos implícitos que no se mencionan

La medición de la calidad del software puede hacerse desde tres grandes dimensiones:

1.-Pruebas de calidad: que pueden ser funcionales, de rendimientos, de estrés, de integración, de usabilidad entre otras.

2.-Gestión de calidad: subdividida en la planificación de la calidad, aseguramiento de la calidad y control de la calidad

3.-Modelos de calidad: CMMI, normas ISO / IEC , mosca , entre otros.

Un producto de alta calidad requiere menos mantenimiento y facilita tanto el desarrollo como el mantenimiento de la productividad. Con la medición de la calidad se pueden lograr estos objetivos. En lo que se refiere al mantenimiento, la medición de la calidad del software ayuda a identificar problemas de confiabilidad y a mejorar las técnicas para identificar las necesidades de mantenimiento.

La garantía de calidad de software engloba:

1.-Métodos y herramientas de análisis, diseño, codificación y prueba.
2.-Revisiones y técnicas formales que se aplican en cada fase de la ingeniería de software.
3.-Una estrategia de prueba multiescalada.
4.-El control de la documentación del software y de los cambios efectuados.
5.-Un procedimiento que asegure un ajuste a los estándares de desarrollo
6.-Mecanismos a medida y de información

Fuente:

Mapa Conceptual sobre la ingeniería del Software

Anexo coloco un mapa conceptual en donde resumí  un poco los principales elementos asociados al desarrollo de la ingeniería del software, pasando desde sus paradigmas, principios y metodologías hasta la medición de su calidad.


viernes, 3 de junio de 2011

Ciclo de vida del Software

Se llama ciclo de vida a las diferentes etapas por las que debe pasar el software desde su inicio (en donde es concebido)  hasta el final de su desarrollo en donde se encuentra listo para usarse.
Las etapas o fases suelen ser llamadas de diferentes maneras y su orden y presencia va a depender del tipo de  modelo acordado para desarrollar.

Las fases suelen ser:

1.-Análisis de los requisitos y su viabilidad: recopilar, examinar y formular los requisitos del cliente y examinar cualquier restricción que se pueda aplicar.

2.-Diseño: requisitos generales y precisos de la arquitectura de la aplicación.

3.-Programación  o desarrollo (programación e implementación): es la implementación de un lenguaje de programación para crear las funciones definidas durante la etapa de diseño.

4.- Prueba de unidad: prueba individual de cada subconjunto de la aplicación para garantizar que se implementaron de acuerdo con las especificaciones.

5.- Integración: para garantizar que los diferentes módulos se integren con la aplicación. Éste es el propósito de la prueba de integración que está cuidadosamente documentada.

6.- Implementación: es la puesta en marcha del sistema

7.-Mantenimiento: para todos los procedimientos correctivos (mantenimiento correctivo) y las actualizaciones secundarias del software (mantenimiento continuo).

Entre los modelos de desarrollo de software más conocidos se encuentran:

-Modelo de cascada
-Modelo incremental
-Modelo evolutivo
-Modelo en espiral

Entre otros

Fuentes:

martes, 31 de mayo de 2011

Lenguaje Unificado de Modelado (UML)

Es un lenguaje de modelado de sistemas de software, que permite capturar las partes esenciales del mismo.
“UML sirve para el modelado completo de sistemas complejos, tanto en el diseño de los sistemas software como para la arquitectura hardware donde se ejecuten.”

Entre los objetivos de UML expuestos por (Hernández) se encuentran:

Visualizar: Permite expresar de una forma gráfica un sistema de forma que otro lo puede entender.

Especificar: Permite especificar cuáles son las características de un sistema antes de su construcción.

Construir: A partir de los modelos especificados se pueden construir los sistemas diseñados.

Documentar: Los propios elementos gráficos sirven como documentación del sistema desarrollado que pueden servir para su futura revisión.

UML cuenta con varios tipos de diagramas, los cuales muestran diferentes aspectos de las entidades representadas, estos diagramas son:

• Diagrama de casos de uso.
• Diagrama de clases.
• Diagrama de objetos.
• Diagrama de secuencia.
• Diagrama de colaboración.
• Diagrama de estados.
• Diagrama de actividades.
• Diagrama de componentes.
• Diagrama de despliegue.

Beneficios de la utilización de UML

-Produce un aumento en la calidad del desarrollo. 
-Mejores tiempos totales de desarrollo (de 50 % o más).
-Modelar sistemas (y no sólo de software) utilizando conceptos orientados a objetos.
-Establecer conceptos y artefactos ejecutables.
-Brinda la posibilidad de obtener un "plano" del sistema. 
-Encaminar el desarrollo del escalamiento en sistemas complejos de misión crítica.
-Crear un lenguaje de modelado utilizado tanto por humanos como por máquinas.
-Mejor soporte a la planeación y al control de proyectos.
-Alta reutilización y minimización de costos.
-Permite especificar la estructura y el comportamiento del sistema y comunicarlo a todos los integrantes del proyecto. 
-Permite dimensionar mejor los riesgos de un proyecto tener un mejor rendimiento antes de construir el sistema.
-Facilita la documentación de las decisiones de la arquitectura del proyecto. 
-Ofrece mayor rigurosidad en la especificación.
-Permite realizar una verificación y validación del modelo realizado.
-Se pueden automatizar determinados procesos y permite generar código a partir de los modelos y viceversa.

Anexo les dejo este video que habla un poco de lo que ES y  NO es UML, así como de sus historia y la definición de los diagramas de clases



Fuente:

lunes, 9 de mayo de 2011

EVOLUCIÓN DE LA INGENIERÍA DEL SOFTWARE

La ingeniería del software, en comparación con otras ramas de la ingeniería aún se encuentra muy joven, en los tiempos actuales aún se está buscando una forma clara de definirla o trabajarla y la búsqueda de estándares que lleven a un mejor perfeccionamiento en el desarrollo del software. De ahí las continuas interrogantes de considerarla ingeniería o no. Algunos autores consideran que sí, que aún se está en la etapa de establecimiento de bases, otros por el contrario no la califican como tal por falta de técnicas y conocimientos generales que se apliquen en el desarrollo del software.

Como disciplina surge en el año 1968 a raíz de la llamada “crisis del software”, de la cual muchos autores consideran que todavía no se ha salido. Este ha evolucionado con respecto a métodos, lenguajes (de alto y bajo nivel), paradigmas en donde se ha pasado de modelo procedimental al funcional, de este al orientado a objetos y más recientemente el orientado a servicios. En los últimos años el software ha mostrado un claro desarrollo de lo que ha sido los procesos y las herramientas a privilegiar a los individuos y los procesos, ayudado por la masificación del conocimiento y la democracia tecnológica Se ha evolucionado de una programación sin métodos, que era vista como un arte, sin planificación, en donde el software era diseñado a medida para cada aplicación y en donde el oficio de programación se aprendía normalmente por ensayo y error a una programación estructurada, donde se consideraba el retorno dentro de la programación, el paso de la creación del prototipo, a una reducción de las expectativas, a una ingeniería del software basada en componentes y un sinfín de conocimientos que aún se siguen probando para tratar de llegar a una estandarización en la medida de lo posible en la ingeniería del Software.
            Casallas (2007) en su artículo ¿Aún en crisis? expone una reflexión acerca de la crisis, que según la autora, aún vive el desarrollo del software, pudiéndose sentir en la cantidad de proyectos que fallan, que sobrepasan los costos y los tiempos estimados. Se plantean diferentes ideas para desmentir mitos en la ingeniería del software, como son: el ver los proyectos de ingeniería del software de forma similar a como se definen proyectos de otras ingenierías. Mitos referentes a los requerimientos de sistemas, el diseño, los planes detallados del proyecto y las personas que trabajan en el mismo. Establece como el desarrollo en ciclos incrementales permite proponer soluciones a estos problemas que se han convertido en mitos dentro del área. Entender los proyectos del desarrollo de software como proyectos de aprendizaje. Es obvio como la escritora realiza una  crítica a los métodos de programar-corregir que aún siguen siendo muy aplicados en la actualidad.


Fuentes:




lunes, 11 de abril de 2011

viernes, 1 de abril de 2011

jueves, 31 de marzo de 2011

Historia del software libre


Continuando con el tema del software libre, anexo les coloco un resumen de la historia del software libre que saqué de la siguiente presentación: http://gsyc.es/~mvidal/docs/FLOSS_history.pdf


Su historia se remonta a los orígenes de la informática


En las décadas de los 50 y 60:

-Durante los años 1960 el software venía como acompañante del hardware, no se considera un elemento independiente.
- El software se distribuía con su código fuente: grupos de usuarios lo comparten, y lo mejoran.
-Código fuente a disposición de quien lo pide: los clientes generalmente no pagan por el software.
- Relación con el software muy parecida a la que hoy tenemos con el software libre.
-Todo cambia con el unbundling de hardware, software y servicios de IBM (1969)

En la década de los 70:

-1969: Ken Thompson inventó Unix (mismo año que Arpanet).
-Surge de los deshechos de Multics, en AT&T (Bell Labs).
-Dennis Ritchie inventa un nuevo lenguaje llamado C para usarlo en el Unix de Thompson.
-Primer sistema operativo portable y modular (KISS), frente a anteriores sistemas incompatibles y costosos.
-Se extiende rápidamente y de forma no oficial por AT&T. Y por Arpanet (hardware distinto, gracias a C).
-Acuerdo judicial (antitrust) de 1956 impide a AT&T comercializar Unix: debe licenciarlo (con fuentes) a quien se lo solicite

En la década de los 80:

-Se extienden los acuerdos de no-divulgación
-Comienza a despegar la gran industria del software privativo, basada en el secreto (binarios), en la venta de licencias y en la privatización de los fuentes.
-Unix e Internet: choca el modelo privativo (AT&T) contra el modelo abierto (BSD)
- Stallman abandona el MIT en 1984 para poder dedicarse al Proyecto GNU (GNU's Not UNIX!).
-1985: Stallman publica el Manifiesto GNU: sienta los fundamentos éticos del software libre
-Meta: construir un sistema completo libre, alternativo a Unix.
-Crea la infraestructura b asica: editor (emacs), compilador (gcc), depurador (gdb), gmake...
-Crea la Fundación de Software Libre (1985) para apoyar el Proyecto GNU.
-Fundamentos legales: la GPL (1989)
-Trabajo muy estructurado y con metas claras.
-A principios de los 1990 GNU tenía su sistema casi completo, faltaba el núcleo.

En los años 90 nacimiento de Linux:

-Linux es un kernel
-Lo inicia Linus Torvalds, en 1991, just for fun (sólo por diversión)
-Existían ya sistemas operativos libres casi completos (GNU y Unix BSD)
-Desde que liberó la primera versión (0.01) se van uniendo cientos de desarrolladores
-Se adopta la licencia GPL
-Marzo 1994: versión 1.

Año 2000:

-El software libre empieza a estar listo para el escritorio (GNOME 2.x,KDE 3.x, OpenOffice), y es simple de instalar por el usuario final.
-El software libre se incorpora a la estrategia de grandes empresas (IBM, HP, Sun)
-Otras (como Microsoft) prefieren una estrategia de enfrentamiento parcial (FUD).
-Dificultades finnancieras como resultado de la crisis de las puntocom
-Comienza la penetración en Administraciones públicas y grandes empresas
-Aumento grande del número de desarrolladores, de la cantidad de software libre disponible, etc

Actualidad:

-Software libre es estratégico para muchas empresas (ej: Google)
-Conjuntos de aplicaciones muy completos para muchos entornos
-Empresas probando nuevos modelos de colaboración (ej: ObjectWeb, Morfeo)
-Software libre como propuesta para dominar mercados (ej: Android, Symbian, Maemo en móviles)
-Nuevos modelos de negocio, modelos para nuevos negocios
-Software libre parte del análisis de competencia en sectores (ej: MySQL en la compra de Sun por Oracle)
-El software libre se va convirtiendo en algo “normal”