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”

¿Qué es el software libre?

Como profesional fuera del área de sistemas, el tema de software libre nunca llamó mi atención, la única vez que tuve que ver con el tema fue cuando en el 2006 en la empresa en donde trabajo trataron de cambiar el software de cartografía con que trabajo por unos libres. Esto como consecuencia de un coletazo que recibimos a raíz de la aprobación del decreto 3390 aprobado en el año 2004 en Venezuela. Dicho decreto promueve que: “La Administración Pública Nacional empleará prioritariamente Software Libre desarrollado con Estándares Abiertos, en sus sistemas,  proyectos y servicios  informáticos. A tales fines, todos los órganos y entes  de la Administración Pública Nacional iniciarán los procesos de migración gradual y progresiva de éstos hacia el Software Libre desarrollado con  Estándares Abiertos” Como ven, el decreto dice muy claro gradual y progresivamente, pero como es típico en la administración pública todo se interpreta como se quiere e hicieron las cosas mal. En la actualidad seguimos usando software propietario y no se ven ningunos trabajos en el desarrollo de software libre. A raíz de estos sucesos decidí que sería muy nutritivo  comenzar a conocer un poco a cerca de qué es eso que en los últimos tiempos a sonado tanto.

Tomando en cuenta esto lo primero que hay que hacer es definir ¿qué es software libre?
Al revisar cualquier definición de software libre siempre se hace referencia a la libertad que tiene el usuario de ejecutar, copiar, distribuir, estudiar, cambiar y mejorar el software. Definiéndose en cuatro libertades esenciales:

1.-La libertad de ejecutar el programa, para cualquier propósito (libertad 0).
2.-La libertad de estudiar cómo trabaja el programa, y cambiarlo para que haga lo que usted quiera (libertad 1). El acceso al código fuente es una condición necesaria para ello.
3.-La libertad de redistribuir copias para que pueda ayudar al prójimo (libertad 2).
4.-La libertad de distribuir copias de sus versiones modificadas a terceros (la 3ª libertad). Si lo hace, puede dar a toda la comunidad una oportunidad de beneficiarse de sus cambios. El acceso al código fuente es una condición necesaria para ello.

El software libre no obligatoriamente es gratuito, esta confusión se debe principalmente a su traducción de free software que generaba enredo al  interpretarse como software gratuito.
“El «software libre» es una cuestión de libertad, no de precio. Para entender el concepto, debería pensar en «libre» como en «libre expresión», no como en «barra libre».” (1)

Fuentes:
http://www.hispalinux.es/SoftwareLibre

Comenzando de Nuevo

Bueno en esta oportunidad el blog estará enfocado a tocar temas del software libre. ¿A qué se debe este repentino cambio? Bueno a que comencé a ver otra materia de forma virtual, pero esta vez está enfocada a este tema tan popular en nuestros días. A partir de ahora iré sintetizando en mi blog todos los temas que vaya viendo en la materia.
Espero les agrade    =)