jueves, 13 de septiembre de 2012

UML y RUP


¿Qué es UML?


(Unified Modeling Language - Lenguaje Unificado de Modelado). UML es un popular lenguaje de modelado de sistemas de software. Se trata de un lenguaje gráfico para construir, documentar, visualizar y especificar un sistema de software. Entre otras palabras, UML se utiliza para definir un sistema de software.

Posee la riqueza suficiente como para crear un modelo del sistema, pudiendo modelar los procesos de negocios, funciones, esquemas de bases de datos, expresiones de lenguajes de programación, etc. Para ello utiliza varios tipos diferentes de diagramas, por ejemplo, en UML 2.0 hay 13 tipos de diagramas. Estos diagramas se pueden diferenciar en tres categorías:


  • Diagramas de estructura:

Diagrama de clases
Diagrama de componentes
Diagrama de objetos
Diagrama de estructura compuesta (UML 2.0)
Diagrama de despliegue
Diagrama de paquetes

  • Diagramas de comportamiento:
Diagrama de actividades
Diagrama de casos de uso
Diagrama de estados

  • Diagramas de interacción:
Diagrama de secuencia
Diagrama de comunicación
Diagrama de tiempos (UML 2.0)
Diagrama de vista de interacción (UML 2.0)

Algunos programas gratuitos para modelar en UML son:

ArgoUML, Dia, gModeler, MonoUML, StarUML, TCM, Umbrello Herramienta, UMLet.


UML es una herramienta importante para el desarrollo de modelos de programacion se pueden crear varios diagramas dependiendo el tipo de modelo en el que se haya basado y asi poder tener una guía gráfica. Se podría decir que es como cuando un arquitecto crea sus planos para una construcción, asi para desarrollar un software necesita un un plano para saber la estructura de software que esta desarrollando



METODOLOGÍA RUP

El Proceso Unificado Racional, Rational Unified Process en inglés, y sus siglas RUP, es un proceso de desarrollo de software y junto con el Lenguaje Unificado de Modelado UML, constituye la metodología estándar más utilizada para el análisis, implementación y documentación de sistemas orientados a objetos. El RUP no es un sistema con pasos firmemente establecidos, sino que trata de un conjunto de metodologías adaptables al contexto y necesidades de cada organización, donde el software es organizado como una colección de unidades atómicas llamados objetos, constituidos por datos y funciones, que interactúan entre sí.

RUP es un proceso para el desarrollo de un proyecto de un software que define claramente quien, cómo, cuándo y qué debe hacerse en el proyecto

RUP como proceso de desarrollo

• RUP es explícito en la definición de software y su trazabilidad, es decir, contempla en relación causal de los programas creados desde los requerimientos hasta la implementación y pruebas.

• RUP identifica claramente a los profesionales (actores) involucrados en el desarrollo del software y sus responsabilidades en cada una de las actividades.

Fases de desarrollo del software:
  • Inicio
  • Elaboración
  • Construcción
  • Transición
RUP para el desarrollo de software moderno que junto con UML trata de mejorar el desarrollo de software no solo con una serie de pasos establecidos si no combinando  varios modelos, esto dependiendo de las necesidades de la empresa que lo solicite.



martes, 11 de septiembre de 2012

Software libre para generar UML y desarrollo RUP


Existen una serie de software para el modelado UML que son Open Source y otros Freeware, por ejemplo esta lista contiene todos los que he encontrado por ahy en la Web:
ArgoUML
logo_argo_uml
Url : http://argouml.tigris.org/
SO : Cualquiera que soporte Java
Este software resulta interesante por la gran cantidad de subproyectos que tiene, como por ejemplo:
http://argouml-csharp.tigris.org/
Bouml
logo_boul
Url : http://bouml.free.fr/
SO : Unix/Linux/Solaris, MacOS X(Power PC e Intel) y Windows.
Este software es libre y permite generar código C++, Java, Idl, Php y Python.
Día
logo_dia
Url : http://www.gnome.org/projects/dia/
SO : Multiplataforma
Basado en Visio de Microsoft esta hecho con la librería gtk+.
Fujaba
logo_fujaba
Url : http://www.fujaba.de/
SO : Multi – Plataforma
El objetivo de este proyecto es proporcionar una herramienta extensible desde el punto de vista del lenguaje tanto como por plug ins.
gModeler
logo_gmodeler
Url : http://www.gskinner.com/gmodeler/index.html
SO : Multi-Plataforma
Esta herramienta es Web.
Jude
Url : http://jude.change-vision.com/jude-web/index.html
SO : Windows2000 SP1 o superior, WindowsXP Professional / WindowsXP Home, Windows Vista
Este software es comercial pero tiene una versión gratis para la comunidad que no tiene todas las funcionalidades de la versión comercial.


A los altos costos de los desarrolladores UML se fueron creando versiones gratuitas con  las mismas herramientas y entornos, estos son solo algunos ejemplos pero hay muchas que pueden cumplir con nuestras expectativas. Estas herramientas generan diagramas UML  y estos sirven para crear los modelos de desarrollo de software así poder tener una base a lo que se va a desarrollar,

Fuentes: http://www.webadicto.net/mba/post/2010/06/28/GRATIS-Descarga-software-para-crear-diagramas-UML.aspx
http://www.marcosdonoso.cl/?p=156





METODOLOGÍA RUP

El Proceso Unificado Racional, Rational Unified Process en inglés, y sus siglas RUP, es un proceso de desarrollo de software y junto con el Lenguaje Unificado de Modelado UML, constituye la metodología estándar más utilizada para el análisis, implementación y documentación de sistemas orientados a objetos. El RUP no es un sistema con pasos firmemente establecidos, sino que trata de un conjunto de metodologías adaptables al contexto y necesidades de cada organización, donde el software es organizado como una colección de unidades atómicas llamados objetos, constituidos por datos y funciones, que interactúan entre sí.

RUP es un proceso para el desarrollo de un proyecto de un software que define claramente quien, cómo, cuándo y qué debe hacerse en el proyecto

RUP como proceso de desarrollo


• RUP es explícito en la definición de software y su trazabilidad, es decir, contempla en relación causal de los programas creados desde los requerimientos hasta la implementación y pruebas.

• RUP identifica claramente a los profesionales (actores) involucrados en el desarrollo del software y sus responsabilidades en cada una de las actividades.

Fases de desarrollo del software



· Inicio

· Elaboración

· Construcción

· Transición

Modelo V y Modelo en flor, ventajas y desventajas

MODELO V
VENTAJAS:
  • El modelo en V hace más explicita la tarea parte de la iteración de las actividades del proceso.
  • Las pruebas de cada fase ayudaran a corregir posibles errores sin tener que esperar a que sean rectificados en la etapa final del proceso.
  • Con las pruebas unitarias y de integración se consigue obtener exactitud en los programas.

DESVENTAJAS:
  • Al encontrarse errores luego de realizar las pruebas se pierde tiempo y dinero, ya que cada prueba se realiza luego de haber terminado la implementación.
Este modelo esta relacionado con el modelo de cascada, pero el modelo V es mas efectivo ya que puede con las pruebas que se van haciendo durante cada fase hacen menos los errores por que estos se pueden corregir al momento, lo malo de estas pruebas es que generan muchos costos y tambien se pierde tiempo para la entrega al usuario final.


MODELO EN FLOR

El propósito del desarrollo de software es el de desarrollar un producto de software.

Los equipos no deben de estar preocupados por el proceso de desarrollo mismo. 


Deben de desarrollarse todas las etapas un poco al mismo tiempo hasta que el producto final es alcanzado.


Ventajas:
Útiles cuando los requerimientos son cambiables. 
Cuando el usuario no se quiere comprometer con los requerimientos.   
Cuando no se conoce bien la aplicación. 
Cuando se quiere probar una arquitectura o tecnología.
Cuando se requiera rapidez en el desarrollo.

Desventajas
No se conoce cuando tengamos un producto aceptable. 
No se sabe cuántas iteraciones serán necesarias.
Dan una falsa ilusión al usuario sobre la velocidad del desarrollo. 
Se puede volver al producto aun y cando no esté con los estándares.

Vemos que en este modelo es parecido al del modelo V, se enfoca a los requerimientos basado en un diseño rápido, y cuando este terminado el diseño probar y mejorar las fallas en caso de que las haya 

Fuente: http://www.buenastareas.com/impresion/Modelo-En-Flor/3655797.html


martes, 4 de septiembre de 2012

Reticula




Aquí se ve el avance reticular que llevo en la carrera de ITICS lo que en morado es lo que estoy cursando el cuarto semestre y pues cada vez mas se ven mas materias para la programar y complementos electrónicos. y cada vez vamos viendo mas sobre software y también veremos hardware y no están formando para ser unos buenos ingenieros. 




Hitos es una herramienta que administra en forma integrada y centralizada los Requerimientos que llegan a las áreas de soporte de las empresas y facilita la Gestión de Proyectos Corporativos, ayudando a las organizaciones a obtener productos competitivos y de calidad, según lo planeado.

*Infraestructura de procesos:A través de un potente workflow, Hitos permite crear y administrar los procesos definidos por el usuario, brindando una infraestructura integral en donde las organizaciones logran compartir la información, comunicarse y colaborar entre las distintas áreas.

*Soportes para modelos de calidad:Hitos ayuda a ordenar y sistematizar el flujo de los Requerimientos de Software y de los Requerimientos de Cambio que los usuarios realizan a las áreas de Sistemas, asegurando el cumplimiento de modelos como CMMI, para aquellas empresas que desarrollan software.

*Hitos gestión de proyectos:Es una herramienta flexible que permite a la organización lograr una gestión proactiva de los proyectos independientemente de sus dimensiones, colaborando en el cumplimiento de la planificación en tiempo y forma de todas las etapas del ciclo de vida de un proyecto. Tiene como objetivo principal la planificación, asignación de tareas y seguimiento de los recursos humanos y materiales, que intervienen en el desarrollo de un proyecto, a fin de supervisar su progreso y poder corregir desviaciones. Brinda la oportunidad de conocer, en todo momento, los problemas que se producen y resolverlos o paliarlos de manera inmediata, informando sobre el estado de los proyectos a quienes participan en ellos de una manera ágil y práctica.

*Hitos gestion de requerimiento:Hitos Gestión de Requerimientos fue concebido con el propósito de ordenar y sistematizar el flujo de los requerimientos internos/externos que los usuarios realizan en distintos circuitos (Proyectos de envergadura, Help Desk, Defectos, Errores, Soporte, Tareas Internas, etc.), administrando la forma en que sus necesidades llegan a las áreas de soporte y producción. Permite hacer un seguimiento de los requerimientos y de su evolución a través de los distintos estados que pueden asumir, gestionando requisitos para una amplia gama de proyectos, ofreciendo una verdadera ventaja competitiva a todo tipo de organizaciones.

Información obtenida de:

Cibernetica y Cibernauta

Cibernética

La palabra cibernética en griego se refiere a mecanismos precisos de gobierno y control, con Platón y Ampere es usada siempre en su sentido político - social, pero es utilizada por primera vez en referencia a la ingeniería humana por Norbert Wiener.

La cibernética es una disciplina íntimamente vinculada con la teoría general de sistemas, al grado en que muchos la consideran inseparable de esta, y se ocupa del estudio de: el mando, el control, las regulaciones y el gobierno de los sistemas. El propósito de la cibernética es desarrollar un lenguaje y técnicas que nos permitan atacar los problemas de control y comunicación en general. Lo que estabiliza y coordina el funcionamiento de los sistemas complejos como los seres vivos o las sociedades y les permite hacer frente a las variaciones del ambiente y presentar un comportamiento más o menos complejo es el control, que le permite al sistema seleccionar los ingresos (inputs) para obtener ciertos egresos (outputs) predefinidos. La regulación esta constituida por los mecanismos que permiten al sistema mantener su equilibrio dinámico y alcanzar o mantener un estado.

Un concepto muy importante o casi fundamental en cibernética es el de la retroalimentación. La retroalimentación parte del principio de que todos los elementos de una totalidad de un sistema deben comunicarse entre sí para poder desarrollar interrelaciones coherentes. Sin comunicación no hay orden y sin orden no hay totalidad, lo que rige tanto para los sistemas físicos como para los biológicos y los sociológicos.

La retroalimentación puede ser positiva, negativa o compensada. La retroalimentación es negativa cuando su función consiste en contener o regular el cambio, es positiva si amplifica o multiplica el cambio en una dirección determinada y se dice que es compensada cuando un regulador ejerce alternadamente retroalimentaciones positivas y negativas, según las necesidades del mantenimiento de la estabilidad del sistema regulado. (ejemplo Refrigerador, Temperatura Humana).



La cibernética es el estudio del control y comunicación en los sistemas complejos: organismos vivos, máquinas y organizaciones. Especial atención se presta a la retroalimentación y sus conceptos derivados.

También esto puede ser una desventaja para las personas ya que con el desarrollo de nueva maquinaria, puede generar recorte de personal esto genera el desempleo y la gente que no este capacitada para el mantenimiento de estas maquinas no tendrá empleo.
alguna ventaja en las empresas es que con la maquinaria se pude ser mas preciso el trabajo 
ventaja en el ser humano es en la implementación de implantes como brazos, oídos, o hasta órganos como es el caso de México que ya se implanto un corazón artificial.



La cibernética ha desempeñado un papel decisivo en el surgimiento de la actual revolución tecnológica.


Fuente: http://www.aprendizaje.com.mx/TeoriaSistemas/Cibernetica/cibernetica.html

Cibernauta.

En principio es un término aplicable a cualquier persona que utiliza un navegador web y visita sitios web; pero suele utilizarse especialmente para aquellas personas que son expertos navegantes de la WWW, incluso sin saber demasiado sobre computación.

Hoy en día cualquiera pude ser cibernauta pero la ventaja de esto es que se pude compartir demasiada información para conocimiento general ejemplos de estos son los blogs, Google y cualquier pagina web que genere información.. Tambien se puede estar en contacto con personas de diferentes países con las redes sociales como facebook y twitter, todo esto a la creación de Internet y la herramienta para utilizarla que son los navegadores WEB.







lunes, 3 de septiembre de 2012

"No silver bullets"

Dice que la complejidad del diseño de software es fundamental y que no pueden "existir balas de plata" por que seria facil desarrollar software y no se podrá desarrollar software vanguardista, ya que siempre de puede tener un programa funcional pero nunca cumplirá las expectativas del usuario, ya que como se sabe, el hardware cambia constantemente y cambia requisitos para el uso del software.

También habla de las nuevas técnicas de desarrollo de software que no son eficientes al máximo y que se prefiere programar de una manera fácil, lo que ocasiona, falta de productividad, fallas del producto y retrasos en la entrega al cliente, lo que hace quedar mal y que el desarrollo de software vaya decreciendo poco a poco.

Comenta que para tener desarrollo de software eficiente y vanguardista  es preferible ocupar lenguaje de alto nivel ya que la complejidad de estos hace ver las fallas futuras y resolverlas al momento, se menciona el concepto de multiprogramador para tener una eficiencia mas segura, ya que como dicen, "2 cabezas piensan mejor que una", esto hace que se compartan ideas y se programe mas rápido pero eficiente.

para que puedan leer el articulo completo le dejo el link para que lo descarguen traducido al español y en ingles: