lunes, 31 de mayo de 2010

Criterios de Calificacion de software

Cualidades de un producto de software, estos son criterios que debemos considerar al momento de crar un sistema de software o al momento en que nosotros compremos o contratemos un desarrollo.
  1. Correcto: es cuando el software responde de acuerdo a los requerimientos de funcionalidad.
  2. Confiable: medida en que el usuario puede depender del software debido a que funciona correctamente.
  3. Robusto: capacidad de responder bien ante situaciones no previstas al momento de los requerimientos, por ejemplo entradas de datos no validas.
  4. Amigable: cualquier persona sin conocimientos especializados pueda hacer uso del software, cualidad que permite entender facilmente su estructura externa.
  5. Comprensible: cualidad que permite entender su estructura interna facilmente.
  6. Verificable: que el software permite hacer revisiones facilmente (diseño, codigo, uso apropiado de lenguaje).
  7. Mantenible: capacidad para realizarle modificaciones cuando ya ha sido liberado el software, el mantenimiento puede ser correctivo, adaptivo, perfeccionamiento.
  8. Reparable: significa que se puedan corregir errores con minimo esfuerzo, tambien que permite hacer modificaciones en la etapa de implementacion.
    Reutilizable: significa que cuando tengamos la nececidad de generar una version mas nueva del software podamos tomar partes funcionales de la version anterior para acortar el desarrollo.
  9. Portable: cuando el software tiene la capacidad de desempeñarse en diferentes sistemas y en diferentes ambientes.
  10. Productividad: que sea eficaz y eficiente, que haga su funcionalidad con lo minimo de recursos necesarios y logre maximos resultados.
  11. Oportunidad: que se pueda liberar (entregar) el producto de software al cliente justo cuando el lo nececita.

viernes, 28 de mayo de 2010

Preguntas de las empresas antes de adquirir un software

  • Que experiencia tiene la empresa que me ofrece el producto ?
  • Cuales clientes, especialmente conocidos, pueden dar referencia del producto que me estan ofreciendo ?
  • Cuanto es un tiempo razonable de implementacion ?
  • Como es el entrenamiento que se ofrece para el software ?
  • Que tipo de soporte se obtiene una vez implementado el software ?
  • Que capacidad de crecimiento tendria nuestra empresa con el software adquirido ?
  • Cual es la participacion del departamento tecnico antes, durante y despues del proyecto ?
  • Cual es el precio estimado para el software, sin adecuaciones ?
  • Que beneficios ofrece el software para satisfacer mis nececidades operativas y estrategicas?

jueves, 27 de mayo de 2010

Cotizaciones o Estimación de costos

  •  Estimacion de Proyectos NO ES IGUAL a Estimacion de Software.
  • La estimacion debe darse en rangos no en datos puntuales, recordemos que es un aproximado con cierta probabilidad de ocurrencia.
  • Tanto Sub-Estimar como Sobre-Estimar trae consecuencias negativas.
  • Lo que debemos Estimar es: 
DURACION, TAMAÑO, ESFUERZO, COSTO, PERSONAL => PLANIFICACION


Ajuste Alzado
Es una vaga forma de poner precio a  los sistemas de software, la modalidad consiste en base a la experiencia y buscando asociaciones y semejanzas con desarrollos anteriores fijar el precio.
Este precio es lo suficientemente robusto para cumplir todos los caprichos y requerimientos del cliente hasta dejarlo completamente satisfecho, con un sistema de software funcionando y con alta calidad a medida que el cliente lo demande.
Este modelo es propenso a perder los negocios por poner un precio al dearrollo por arriba de la competencia, es decir, subestimar el proyecto. o el caso contrario de ponerle menos costo de lo que en verdad nos va a costar desarrollar el proyecto, es decir, incurririamos en deficit por un mal calculo de costos.
Es una metodologia muy empirica en donde se ponen en juego principalmente las tecnicas de solucion de conflictos y la negociacion con el cliente.

Limite de Costo
Consiste en desarrollar software pero la medida es el costo, es decir, el software que es solicitado se realiza hasta donde el costo alcance.
por ejemplo, una empresa contrata desarrollo de software y los requerimientos dicen que la empresa quiere un sistema de facturacion por el cual ellos van a pagar Q. 10,000.00 en ese sentido los desarrolladores construyen una aplicacion de facturacion en donde el limite son los diez mil quetzales, a lo que la funcionalidad alcance naturalmente.
En este caso los desarrolladores indican que por ese precio pueden construir una GUI y una base de datos unicamente, si quieren lector de barras es un monto adicional o si quieren una plataforma protegida por contraseña, un sistema de multiples facturadores en red, etc, etc eso ya tiene un costo adicional.
La ventaja de este sistema de costos es que el cliente ofrece lo que puede o quiere pagar por el software, ni un poco menos ni un poco mas aunque con esa actitud compromete la funcionalidad y la innovacion. 
Las desventajas es que el desarrollo se ve limitado al igual que la funcionalidad y no se explotan los recursos tecnicos y tecnologicos.

COCOMO
Cocomo por sus suglas en ingles COnstructive COst MOdel, modelo para calcular el costo de construccion y ayudar a comprender la complejidad del proyecto.
El modelo esta basado en lineas de codigo (KLDC miles de lineas de codigo o KLOC miles line of code) y es conveniente destacar que es un aproximado empirico basado en experiencia y estandares de cantidades de lineas utilizadas en casos o proyectos semejantes. Este modelo ha tenido una evolucion en funcion de las nececideades de estimacion de costo del desarrollo de los sistemas de software las cuales son:

COCOMO I: en funcion de la cantidad de lineas de codigo (KLOC) se caclula es lefuerzo necesario para producir el software y el costo de el mismo, dependiendo directamente del lenguaje que se vaya a utilizar.
esta estimacion es aproximada porque debe realizarse antes de la construccion, pero se cuenta con un estandar de lineas para cada funcion especifica a desarrollar por ejemplo guardar un documento en un archivo binario 50 lineas de codigo.

El problema que afronto esta version de cocomo es que no incorpora ninguna metrica que dependa de la funcionalidad del software a desarrollar lo cual lo hace impreciso debido a que las empresas pagan el software segun la funcionalidad que este tenga para la empresa.
otra deficiencia es que en desarrollos orientados a objetos no aplica esta version de cocomo debido a que instanciar e utilizar un objeto que da mucha funcionalidad al software puede representar 5 o hasta 10 lineas de codigo lo cual no es representativo.

COCOMO II: esta version del modelo para estimar costos de desarrollo incorpora la version 1 de cocomo, pero agrega una seccion donde se estima subjetivamente el software, el personal, el hardware del proyecto dandole una orientacion mas acomodada a la realidad de las empresas.

COCOMO III: incorpora la version 2 de cocomo pero ahora en esta version se incluye un analisis del impacto que tiene el software el las etapas de desarrollo del software.

Puntos de funcion
Los puntos de funcion es una metodologia para estimar el software en funcion de la funcionalidad y productividad que este involucra, es decir, existen otros metodos para cuantificar software en base a su numero de lineas de codigo pero esto es impreciso debido a que depende de las tecnicas de cada programador la cantidad de lineas y depende de el lenguaje en que se este desarrollando el software. Tambien hay otros metodos de estimacion basados en el numero de ejecutables que cuenta la solucion, sin embargo esto tambien es impreciso.

Para un programador o un director de desarrollo de software las metricas (lineas de codigo, ejecutables) que hemos mencionado podran ser representativas y con una buena estandarizacion de su equipo de desarrollo lograr que funcione la estimacion sin embargo para personas ajenas al equipo de desarrollo estas estimaciones de esfuerzo y costo no son representativas, por ejemplo para los gerentes, los inversionistas y para los mismos usuarios.

Es en este contexto que toma importancia la metodologia de puntos de funcion, los cuales son una metrica representativa del esfuerzo y el coste del proyecto de software tanto para el equipo de desarrollo como para los stakeholder, gerentes, administradores, usuarios y clientes.

Para llevar a cabo el calculo de puntos de funcion, recordemos que es una medida cuantitativa, debemos sumar LOS PUNTOS DE FUNCION SIN AJUSTAR Y LOS PUNTOS DE FUNCION AJUSTADOS para obtener la cantidad de puntos de funcion total.
PF TOTAL = PF SIN AJUSTAR + PF AJUSTADOS

PUNTOS DE FUNCION SIN AJUSTAR:
1) Archivos Logicos Internos (ALI)
2) Archivos de Interfaz Externa (AIE)
3) Entradas Externas (EE)
4) Salidas Externas (SE)
5) Consultas Externas (CE)

PUNTOS DE FUNCION AJUSTADOS
1) Comunicacion de datos
2) Procesamiento distribuido de datos
3) Rendimiento
4) Configuracion altamente usada
5) Promedio de transacciones
6) Entrada de datos en linea
7) Eficiencia para usuario final
8) Actualizacion en linea
9) Procesamiento complejo
10) Reusabilidad
11) Facilidad de instalacion
12) Facilidad de operacion
13) Varios sitios
14) Facilidad de cambios

A cada uno de estos aspectos se le debe ponderar de acuerdo a la siguiente tabla:
0 = sin influencia
1 = accidental
2 = moderado
3 = medio
4 = significativo
5 = esencial


PUNTOS DE FUNCION TOTAL
Finalmente se deben sumar las dos cifras (Puntos de funcion ajustados + puntos de funcion no ajustados) y el total es la cantidad de puntos de funcion los cuales se evaluan de acuerdo a la siguente tabla:
0 a 100 SENCILLA
101 a 300 MEDIA
301 a 500 DIFICIL

jueves, 20 de mayo de 2010

Licenciamiento

Las licencias de software son  un contrato que se celebra entre los autores del producto de software y el cliente o usuario en el cual establecen las condiciones bajo las cuales se va a utilizar, distribuir, copiar e incluso modificar.
Existen diferentes tipos de licencias desde los mas socialistas hasta los que son lucrativos, por lo tanto tenemos de codigo abierto y propietarios.
  • Codigo Abierto: tambien llamados open source o de codigo libre, estos son los que en general permiten copiar, distribuir y hasta modificar el contenido como su nombre lo indica son de codigo abierto el cual puede ser descargado del sitio y modificado bajo ciertas condiciones que detallamos a continuacion.
  • De Dominio Publico: son productos de software que han caducado los derechos de autor o el autor ha cedido sus derechos por lo cual es posible distribuirlos, modificarlos y copiaralos sin restriccion alguna.
  • Permisivos (BSD): Es libre el codigo y se puede distribuir, modificar y copiar con la unica restriccion que el nombre del autor o del propietario siempre debe ser desplegado, en otras palabras, este software es libre pero con reconocimiento publico para su autor.
  • CopyLeft(GPL): Este software es totalmente libre y permite copiar, distribuir y modificar su codigo fuente y su ejecutable sin embargo cuenta con la restriccion que si obtenemos el software bajo licencia GPL estamos obligados a mantener la licencia GPL inclusive si hemos realizado modificaciones sobre el software.
  • Freeware: Esta licencia implica que el software es gratuito para ser copiado y distribuido sin embargo no es posible realizar modificaciones.
  • Shareware:Esta es la licencia de software que utilizan los programa demo, los cuales dan una funcionalidad limitada o un tiempo de servicio limitado para que se experimente con el software para despues de ese lapso de tiempo se tiene que realizar un pago y compara el software, por lo general cuando tenemos una licencia shareware y pagamos para extender el tiempo o funcionalidad nos sale mas barato por la razon que nos ahorramos gasto de ir a la tienda, empaque, cd.
  • Adware: Es software libre de copiar y distribuir, sin embargo no permite modificar y la caracteristica que lo diferencia del freeware es que este paga su precio con publicidad que instala en nuestra computadora por ejemplo una barra o un banner publicitario.
  • Codigo Propietario: Es software que su autor ha decidido vender a un precio determinado por el mismo y quienes deseen utilizar el producto deberan comprar la licencia que se ve reflejada en un codigo de activacion, estos productos se caracterizan por ser vendidos en las tiendas en paquetes con cd de instalacion.
  • Propietario por Volumen: Esta es una licencia que se compra para cantidades grandes de computadoras por ejemplo licencia de windows para 300 pc, la ventaja es que un mismo numero permite instalar a todas las maquinas autorizadas.
  • Propietario por OEM: son las licencias de software que incluyen los fabricantes por ejemplo cuando compramos una computadora marca Dell, automaticamente nos trae instalado windows con una licencia de fabricante OEM.
  • Propietario por Retail: Son las licencias que se venden individualmente a los usuarios en las tiendas, estas se caracterizan por ser exclusivamente para una computadora y siempre las venden con un cd y con su empaque.

    miércoles, 19 de mayo de 2010

    Sistemas de Informacion y Sus Tipos

    Los sistemas de informacion son un conjunto de componentes que interactuan entre si para alcanzar un objetivo en comun. los elementos de un sistema de informacion se dividen en:
    • Entradas: Son todos los datos que entran de forma automatica o manual por ejemplo, codigos de productos vendidos, codigos de libros.
    • Almacenamiento: Son hardware que ayudan a mantener la informacion guardada de forma no volatil entre ellos encontramos los disket, discos externos, memorias usb, DVD, CD.
    • Recursos: Es todo el hardware y recurso humano que esta disponible y colabora para que se lleve a cabo el objetivo del sistema. por ejemplo computadoras, servidores, impresoras, digitadores, administradores de red, administradores de sistemas.
    • Procesamiento: es la accion que transforma las entradas en salidas, siendo estas el objetivo del sistema y por consiguiente si el sistema cumple con la calidad establecida significa que las salidas satisfacen las nececidades de los usuarios del sistema. por ejemplo calcular ganancias, calcular cuentas por cobrar.
    • Salida: Es toda la informacion que sale del sistema despues de haber sido procesada, estas salidas pueden ser de forma impresa o digital por ejemplo: reporte de ventas, pantalla de consulta de status de clientes.

    Los sistemas de informacion se clasifican en 3 tipos:
    • Sistemas Transaccionales (Transaction Processing System)(TPS): Estos sistemas recolectan los datos y realizan calculos basicos entre ellos (Datos).
    • Sistemas de Manejo(Managment Information System)(MIS): Estos sistemas relacionan los datos ingresados al sistema de tal forma que son los encargados de crear reportes, componer pantallas donde entreguen informacion (Informacion)
    • Sistemas de Toma de deciciones(Decision Support System)(DSS): Representados por los BI (Business Intelligence) este tipo de sistemas a partir de los datos ingresados y de la informacion crea modelos matematicos y estadisticos los cuales pueden predecir un comportamiento basandose en los hechos de tal forma que pueden anticiparse a un resultado (Conocimiento)

    Generaciones de Lenguajes de Programacion

    Existen lenguajes de programacion desde los inicios de la computadora, sin embargo, con el tiempo han ido evolucionando. Es comun que en una temporada se utilizen dos o tres lenguajes de programacion como estandar, debido a que todos los lenguajes tienen sus ventajas y desventajas.
    A la agrupacion de lenguajes de programacion segun su funcionalidad se le llama generacion, actualmente (2,010) existen 5 generaciones de lenguajes de programacion.
    La generacion uno es la menos legible para el usuario y conforme van aumentando las generaciones los lenguajes son mas entendibles con el lenguaje del ser humano.

    LENGUAJES DE BAJO NIVEL
    1ER GENERACION: es la generacion del codigo binario o codigo maquina, este es exactamente un conjunto de ceros y unos que son pulsaciones interpretadas por el procesador. En la actualidad es el unico lenguaje  (lenguaje maquina) el que entienden las computadoras, los programas escritos en lenguajes de generaciones mas altas son finalmente traducidos a este lenguaje para ser ejecutados por la computadora.

    2DA GENERACION: esta generacion contempla al codigo ensamblador, es un codigo donde no se utilizan ceros y unos como el codigo maquina sinose utilizan instrucciones utilizando palabras conocidas de nuestro idioma, la ventaja es que tenemos un conjunto de palabras reservadas las cuales hacen referencia a cierta funcionalidad por ejemplo (add, cpy, mov, goto). en este lenguaje tambien se hace uso de registros para guardar los valores, es decir, aqui no existen variables unicamente registros que guardan la informacion.

    LENGUAJES DE ALTO NIVEL
    3ER GENERACION: Esta generacion de lenguajes es la mas utilizada hoy en dia por los programadores y se divide en varios paradigmas de programacion (servicios, estructurado, procedimientos, objetos) principalmente esta generacion se caracteriza porque se le da  una serie de instrucciones a la computadora, redactadas con palabras reservadas propias de cada lenguaje (por ejemplo: en pascal: write, readln, if. en visual basic: label1.caption, text1.text).

    4TA GENERACION: Esta generacion se distingue porque el lenguaje aparte de ser legible por el ser humano, no indica como ejecutar las sentencias sino que indica que resultados quiere (por ejemplo: SQL, Select * from tabla) esta indicando que quiere todo de la tabla pero no esta especificando como va a obtener ese resultado, tambien en estos lenguajes estan los que generan codigo automaticamente a partir de selecciones visuales y la programacion grafica donde se puede detallar rutas o limetes.

    5TA GENERACION: se le conoce a los lenguajes de programacion de inteligencia artificial, en donde los sistemas tienen capacidad de aprender a partir de vivencias que va teniendo el sistema, aparte, el lenguaje es capaz de inferir y llegar a conclusiones basado en la logica.

    Diagramacion

    Vista Logica
    Diagrama de Casos de Uso:
    El diagrama de casos de uso muestra graficamente las relaciones y las dependencias de los casos de uso y los actores que estan involucrados en ellos, este diagrama se utiliza a nivel de analisis no de diseño y ayuda principalmente a identificar las actividades que realiza cada actor.
    El diagrama de casos de uso aborta el QUE DEBE HACER EL SISTEMA y no el COMO LO DEBE HACER.  Por lo cual es facil identificar el funcionamiento externo y no la estructura o funcionamiento interno del sistema.
    Es importante que los casos de uso son los requerimientos funcionales de un proyecto de software, debido a que unicamente se identifican los casos de uso y se identifican a los actores pero ya queda a discrecion del equipo de desarrollo como se va a estructurar la solucion.
    Casos de Uso: actividad o grupo de actividades que producen un resultado concreto. Cada caso de uso debe estar relacionado como minimo con un actor. Cada caso de uso lleva un valor asociado, un valor intrinseco para la empresa u institucion. Los casos de uso pueden relacionarse con otros casos de uso mediante la herencia, include (el caso incluye al otro caso) y extend (que el caso se extiende).
    Actores: Los actores son entidades externas que interactuan con el sistema por ejemplo  personas, usuarios, clientes. Los actores estan asociados a uno o a varios casos de uso. Es importante destacar que los actores no representan a sistemas ni a personas directamente sino al rol que manejan dentro del sistema.

    Diagrama de Clases:
    Estos diagramas son muy utilizados en la diagramacion orientada a objetos, cada objeto es una clase a nivel conceptual. Cuando hablamos de objetos es importante destacar que el mundo esta compuesto de objetos, cada cosa tangible o intangible es un objeto por ejemplo (tangible: carro, salon, computadora. Intangible: idea, sentimiento, motivacion) todos los objetos tiene atributos (variables), metodos (acciones) y un nombre que los identifica de forma unica aunque en la realidad existe la ambiguedad.

    Por ejemplo el objeto con Nombre: carro, Atributos: color, marca, puertas. Metodos: arrancar, frenar, acelerar. 

    Las clases tienen propiedades por ejemplo: Herencia, Polimorfismo, Abstraccion.

    Cuando se trata de herencia es una flecha vacia.
    La herencia consiste en que una clase hijo comparte metodos y atributos de su clase padre.
    Por ejemplo:

    Cuando la relacion es de compocicion(flecha llena) o de agregacion(flecha vacia). La Agregacion es cuando el objeto se agrega al objeto que esta siendo relacionado pero no forma parte de el por ejemplo el piloto tiene una relacion de agregacion con su automovil. La Compocicion es cuando el objeto forma parte del objeto al cual se esta relacionando por ejemplo la clase motor y la clase automovil.
    Ejemplos de Agregacion y Compocicion:


    Modelo E/R:
    Los diagramas entidad relacion son utilizados para mostrar graficamente a nivel conceptual la estructura de una base de datos, recordemos que una base de datos tiene un nivel interno, conceptual y externo.
    Este modelo a cada objeto del cual queremos guardar informacion se le llama entidad y estos estan relacionados entre si. Cada entidad es caracterizada por tener sus atributos (variables).
    Las relaciones conceptualmente pueden ser de tres tipos (uno a uno, uno a muchos y muchos a muchos) aunque en la practica unicamente deben existir relaciones de tipo (uno a muchos).
    Para llevar a cabo las relaciones de una base de datos es necesario determinar las llaves primarias y llaves segundarias, las llaves primarias son conocidas por ser el campo que identifica una tupla de forma unica de tal modo que no se repita (placa de los carros, numero de cedula, carne universitario) y la llave extranjera o secundaria son las llaves que se crean cuando existe una relacion de uno a muchos, en ese caso la llave primaria de la tabla que tiene uno asignado para a ser llave extranjera de la tabla donde la relacion tiene muchos.

    Vista Implementacion
    Diagrama de Secuencia
    El diagrama de secuencia es utilizado para representar graficamente la sucecion de actividades en orden cronologico pudiendo llevarse a cabo multiples actividades de forma paralela.
    Para crear este diagrama debemos crear un actor y los componentes del sistema, verticalmente se dibujan las lineas de tiempo en las cuales hay actividad y con una flecha horizontal entre las lineas de tiempo se establecen los mensajes de comunicacion.
    Diagrama de Estados
    El diagrama de estados muestra los estados de un proceso especifico y en sus lineas de cambio se escribe la accion que provoca que el proceso cambie de estado, por ejemplo tenemos el estado de movimiento de un carro (este se debe dibujar en un circulo), posteriormente lo que hace que cambie su estado es aplicar frenos (trancicion de estados se coloca en la flecha de transicion) finalmente cuando pasa esta trancicion se coloca nuevamente en un estado de reposo(nuevo estado).

    Diagrama de Actividades
    El diagrama de actividades es una variacion directa del diagrama de estados, unicamente que el diagrama de actividades esta enfocado unicamente a las actividades y a los eventos que hacen cambiar de actividad y no como en el diagrama de estados que no precisamente son actividades los nodos sino pueden ser estados.
    Por ejemplo en un diagrama de estados, los nodos son: encendido, funcionando, reiniciado, apagado, como lo ven son estados mientras que en un diagrama de actividades los nodos son encender, poner en funcionamiento, reiniciar o apagar, como lo notan son actividades que implican accion.



    Diagrama de Colaboracion
    Los diagramas de colaboracion son una modificacion directa del diagrama de secuencia, en donde se utilizan los objetos utilizados y sus relaciones para entender la interaccion de unos con otros.
    Los diagramas de colaboracion estan conectados y hacen explicito la forma de comunicacion, enviando mensajes y recibiendo mensajes de sincronizacion.
    Muestran las interacciones especificas de las clases que trabajan juntas para conseguir un objetivo en comun.
    Implementa las asociaciones del diagrama de clases mediante el paso de mensajes de un objeto a otro.


    Vista Conceptual
    Modelo de Dominio
    El diagrama de dominio discrepa en lo minimo en cuanto a diagramar software, actividades o hardware como los diagramas que hemos visto, el modelo de dominio relaciona conceptos del negocio los cuales nos ayudan a entender la logica de el mismo.
    El modelo de dominio relaciona conceptos utilizados en el negocio y sus lineas de coneccion son las acciones con las cuales se hace uso de el termino.


    Vista Fisica
    Diagrama de Componentes a nivel de Hardware
    Este diagrama modela los componentes de hardware que se utilizan en un sistema, en este diagrama cada cuadro representa un servidor o un cliente, tambien se deben modelar los usuarios y a travez de que computadoras hacen uso del sistema.
    Es importante destacar que las lineas de comunicacion son la forma en que se comunican los equipos haciendo uso de las diferentes tecnologias de redes (fibra optica, cableada, inalambrica) y de los diferentes protocolos de comunicacion a nivel capa transporte y sesion.

    lunes, 10 de mayo de 2010

    Relacion entre Datos, Informacion, Conocimiento e Inteligencia

    Los sistemas de informacion son herramientas fundamentales que utilizan las empresas e instituciones para alcanzar los objetivos previstos, son elementos que funcionan conjuntamente con la administracion y la gerencia para lograr un objetivo especifico.

    Los sistemas de Inteligencia o Business Intelligence son sistemas de informacion que utilizan las empresas e instituciones para ayudarse y apoyarse en la toma de deciciones claves para aclanzar los objetivos, los BI (Business Intelligence) involucran la recoleccion de datos, la contextualizacion de los datos para lograr informacion, especificamente los BI relacionan la infomracion para encontrar patrones los cuales ayuden a predecir el comportamiento de un negocio y pronosticar cualquier dato que la gerencia solicite.

    Los sistemas de informacion se dividen en 3 tipos (TPS, MIS y DSS) Transaction Processing System, Managment Information System y Decision Support System respectivamente.
    Los  TPS estan enfocados a la recoleccion de datos y calculos entre ellos por lo cual pertenecen al segmento de datos, los MIS son reportes donde se relacionan los datos ya sea de forma simple (reportes de datos simples) o de forma compuesta (reportes de datos calculados) y los DSS son los que ilustran emblematicamente los sistemas de Business Intelligence. Estos permiten explorar las relaciones que existen entre datos (informacion) y encontrar modelos que permitan predecir los resultados de un negocio basandonos en la informacion existente.
    .


    Se ha escrito sobre datos, informacion, conocimiento, aprendizaje, inteligencia pero que son estos terminos que frecuentemente causan ambiguedad y como se relacionan.
    • Datos: Valores recolectados del mundo real, estos no tienen contexto ni relacion entre si Ej: 90, Matematica, Audie.
    • Informacion: Cuando los datos son sometidos a un proceso el cual los relaciona entre si Ej. Audie gano el curso de matematica con 90 puntos.
    • Conocimiento: Se genera cuando la informacion es sometida al uso y hay experiencia gracias a la vivencia. Ej. Audie es buen estudiante porque saco 90 puntos en matematica, deberia estudiar un poco mas para llegar a los 100 puntos.
    • Inteligencia: Nace gracias a que tenemos conocimiento sobre el tema y podemos predecir o imaginarnos con un grado aceptable de certeza hacerca de acontecimientos futuros, esta relacionada directamente con la capacidad de aprender. Ej. Como Audie estudia matematica los sabados y saca 90, yo voy a estudiar matematica todos los dias asi saco 100 en el curso.
    • Aprendizaje: Es cuando tomamos riesgos y les agregamos nuestros errores, es decir, aprender es el resultado entre perder el miedo y arriesgarnos a salir del estado estable en el que nos encontramos y pasar a un estado de insertidumbre de cambios y no tememos a equivocarnos, despues de todo el problema no es equivocarse sino el problema es no aprender de los errores.

      viernes, 7 de mayo de 2010

      Metodologia Agil Dynamic System Development Method DSDM

      La metodologia DSDM es caracterizada por su rapidez de desarrollo atendiendo a las demandas de tecnologia de forma eficaz y eficiente previendo que transcurra mucho tiempo y la tecnologia cambie.
      Es una metodologia agil situada dentro de las RAD(rapid aplication development), es ideal para proyectos de sistemas de informacion cuyos presupuestos y agendas son muy apretadas.
      DSDM consiste en tecnicas de desarrollo y gestion del proyecto en la misma metodologia.
      Las caracteristicas de DSDM son:
      • Trabajo en equipo tanto los desarrolladores, los usuarios y los Stakeholders.
      • El equipo de desarrollo puede tomar sus deciciones sin depender de autorizaciones de sus superiores.
      • El desarrollo es iterativo e incremental
      • El equipo de desarrollo debe realizar entregas cortas pero frecuentemente, estas entregas deben ser funcionales.
      • Todos los cambios pueden ser revertibles, es decir, debemos tener una linea base y a partir de ella crear funcionalidad, pero si no tenemos los resultados deseados podemos regresar a la linea base nuevamente.
      • La verificacion de calidad debe existir a lo largo del proceso de desarrollo y no solamente en al final del proyecto.

      Existen consideraciones de importancia las cuales son:
      • Ningun sistema es construido a la perfeccion en el primer intento.
      • La entrega del proyecto debera ser a tiempo, respetando presupuesto y asegurando la calidad.
      • DSDM solo quiere que se complete la iteracion con la funcionalidad suficiente como para que inicie la siguiente iteracion.
      • DSDM es utilizado en sistemas TI pero tambien pudiera ser utilizado para proyectos en donde se requiera cambio de algun sistema aunque no sea TI.
      • La evaluacion de riesgo debe estar enfocada en entregar funcionalidad no en el proceso de desarrollo
      • La estimacion debe estar basada en funcionalidad del negocio.
      Las fases de DSDM son:
      • Estudio de Viabilidad: estudio de requerimientos (humanos, materiales y financieros) y los problemas de la empresa o cliente.
      • Estudio de la Empresa: como planificar las actividades de la empresa.
      • Iteracion del Modelo Funcional: plantear un modelo previo que de solucion aceptable a la problematica, esta es la etapa de diseño.
      • Diseño e Iteracion de Estructura: se realiza la codificacion de la solucion, se prueba paralelamente la calidad del producto y se documenta el manual de usuario y tecnico.
      • Implementacion: entrega del producto al cliente o usuario final.

        jueves, 6 de mayo de 2010

        Metodologia Agil MSF (Microsoft Solution FrameWork)

        La metodologia MSF es del tipo de metodologias agiles, esta enfocada a dirigir proyectos o soluciones de innovacion, en ella no se detalla ni se hace enfasis de la organizacion ni el tamaño del equipo de desarrollo, esta mas bien centrada en la gestion y administracion del proyecto para lograr el impacto deseado.
        Involucra indudablemente la calidad ya que prevee liberar una solucion si esta aun tiene fallos o desperfectos para ello propone seleccionar un grupo de prueba piloto el cual es una VERSION BETA y cumplido un tiempo de prueba ya es liberada la version formal o VERSION ALFA en la cual esta garantizada la calidad.

        Consta de 5 fases:

        • Vision: En esta fase se debe realizar un estudio de lo que pretendemos en el futuro que haga nuestra aplicacion o nuestro proyecto para ello debemos realizar un documento de estrategia y alcande donde debe quedar pactada la nececidad de funcionalidad y servicio que se debe contar en la solucion. Debemos crear los equipos de trabajo junto con el plan de trabajo, Para asegurar el exito del proyecto es importante tener en cuenta el analisis de riesgos y plan de contingencia.
        • Planificacion: En esta fase basicamente debemos concreatar claramente como va a estar estructurada nuestra solucion para ello debemos crear un documento de planificacion y diseño de la arquitectura, diseñar las pruebas de concepto donde se plantean los diferentes escenarios para probar la validez de los criterios utilizados para el diseño, debemos establecer metricas.
        • Desarrollo: En la etapa de desarrollo debemos codificar las aplicaciones y realizar las configuraciones necesarias para que la solucion funcione, es importante hacer pruebas continuamente asi se verifica la calidad del producto continuamente a lo largo del desarrollo y no unicamente al final de el proceso.
        • Estabilizacion: Esta fase debemos seleccionar el entorno de prueba piloto y lo que pretendemos con esto es identifiar las deficiencias con un grupo reducido de usuarios para corregirlas y asi en el futuro no tener problemas cuando se use la solucion por todos, ocacionalmente a esta etapa se le llama BETA, debemos crear un plan de gestion de incidencias, realizar una revision de documentacion final de la arquitectura y Elaboracion de plan de despliegue o implementacion.
        • Despliegue o Implementacion: En esta etapa final ya se ha comprobado la calidad de la solucion por lo cual esta lista para ser publicada, en este sentido debemos liberar la solucion y crear un registro de mejoras y sugerencias, revisar las guias y manuales y entrega de proyecto final.
        Este ciclo se puede llevar a cabo de forma iterativa, de manera que cuando liberamos una solucion podemos iniciar nuevamente la metodologia para darle mas funcionalidad.

        martes, 4 de mayo de 2010

        Metodologia Agil Proceso Unificado de Rational RUP

        • Rup, tambien conocido como Proceso Unificado de Rational no es una metodologia con pasos permanentes y rigidos sino es un conjunto de metodologias adaptables al contexto y a las nececidades de cada proyecto.
        • Rup trabaja conjuntamente con UML y es la metodologia estandar y mas utilizada para analisis, diseño, implementacion y documentacion de DESARROLLOS ORIENTADOS A OBJETOS.
        • Es una implementacion del ciclo de desarrollo en espiral, lo que quiere decir es que esta organizado en fases e iteraciones guiadas por CASOS DE USO.
        • Anteriormente se le conocia como Proceso Unificado UP, pero desde que IBM detallara mas las actividades paso a ser RUP propiedad de Rational IBM.
        RUP ES APROPIADO PARA PROYECTOS GRANDES, REQUIERE EQUIPO CAPAZ DE ADMINISTRAR PROCESOS COMPLEJOS EN VARIAS ETAPAS. RUP ESTA DIRIGIDO POR CASOS DE USO, CENTRADO EN LA ARQUITECTURA Y ES UN PROCESO ITERATIVO INCREMENTAL.



        Son 4 Fases
        Iniciacion (analisis): definir y acordar los alcances y limitaciones, identificar riesgo, proponer arquitectura, planificar fases e iteraciones {Conocer Vision y Especificacion de requerimientos.}
        Elaboracion (diseño): casos de uso para definir arquitectura base, elaborar solucion preliminar (casos de uso)
        Construccion: completar la funcionalidad de la iteracion 
        • Vista Logica: Diagrama de Clases y Modelo E/R
        • Vista Implementacion: Diagrama de Secuencia, Diagrama de Estados y Diagrama de Colaboracion
        • Vista Conceptual: Modelo de Dominio
        • Vista Fisica: Diagrama de Componentes a nivel de Hardware.
        Transicion: asegurar que el software este disponible para usuarios finales, ajustar errores y defectos, capacitar a los usuarios, verificar que el producto cumpla con las especificaciones pactadas.

        Principios
        Adaptar el Proceso: El proceso debe adaptarse a las caracteristicas, tamano y condiciones del proyecto
        Equilibrar Prioridades: Encontrar equilibrio entre los deseos de todos (en ocaciones tenemos requerimientos encontrados o contradictorios).
        Demostrar Valor Iterativamente: Los proyectos se entregan en etapas iteradas en cada una se analizan opiniones, estabilidad calidad del producto y se reafina la direccion del proyecto y los riesgos involucrados.
        Colaboracion Entre Equipos: El software debe ser desarrollado por un equipo el cual debe alinear sus intereses con los intereses del proyecto.
        Elevar Nivel de Abstraccion: Uso de patrones de software, 4GL, Marcos de referencia (FRAMEWORK) para reducir el codigo.
        Enfocarse en la Calidad: El control de calidad se debe realizar a lo largo del desarrollo del software y no unicamente al final de cada iteracion, es decir, la calidad debe formar parte de los procesos de desarrollo y no ser un proceso aparte.

        Metodologia Agil SCRUM

        Scrum es una metodologia agil para el desarrollo de software, esta basada en la comunicacion con el cliente pero sobre todo con la dinamica de equipo de trabajo.
        • Es un proceso de desarrollo iterativo e incremental, se basa en entregas o iteraciones utilizables para el usuario.
        • Equipos de trabajo de 5 a 9 integrantes.
        A continuacion algunas definiciones de la notacion Scrum:
        • ScrumMaster: Director de proyecto
        • ProductOwner: Es el dueño del software que se esta desarrollando
        • Team: Equipo de desarrollo
        • Sprint: Iteracion bien definida que dura de 15 a 30 dias, durante el sprint no se puede cambiar el sprint backlog que es el documento que contiene los requerimientos del software que se esta desarrollando en el sprint.
        • Product Backlog: Documento corto y concreto donde se describe el sistema y el software en general, este puede tener cambios a lo largo del desarrollo.
        • Sprint Backlog: Documento que realiza el ProductOwner, el Team y los StakeHolder al inicio de cada sprint para determinar los requerimientos, el sprint backlog pueden ser historias de usuarios pero una vez iniciado el sprint no se puede cambiar este documento.
        • Sprint Planning: Actividad donde se planifica y se pacta en el sprint backlog los requerimientos de la iteracion que se va a trabajar (sprint).
        • Daily StandUp: Actividad  donde se reune el Team para dialogar sobre el sprint que estan llevando a cabo, esta debe ser puntual, a la misma hora y en el mismo lugar todos los dias (quien no cumpla se imponen castigos), todos son bienvenidos pero unicamente puede hablar el Team, ProductOwner y el ScrumMaster. la reunion debe tardar 15 minutos y para garantizar que sean 15 minutos la reunion es de pie (nadie sentado). Los programadores responden ¿que haz hecho desde ayer?¿que planes para hoy?¿que problemas haz tenido para alcanzar objetivos?
        • Sprint Planning Meeting: Actividad donde se planifica el sprint (iteracion) seleccionando el trabajo a realizar, debe realizarse por consecuencia al inicio del sprint.se prepara el sprint backlog, participa el equipo completo y no debe durar mas de 8 horas.
        • Sprint Review Meeting: Actividad realizada al finalizar el sprint donde se discuten las funcionalidades completadas y las no completadas durante el sprint, las funcionalidades completadas son mostradas al ProductOwner (demo). Esta actividad debe durar 4 horas maximo.
        • Sprint Retrospective: Actividad realizada por el Team para compartir sus experiencias sobre el sprint, esto es crear un ciclo de mejora contnua para mejorar la calidad. debe durar 4 horas fijo.
        • Burn Down: Grafica donde se inicia una barra al 100% de f uncionalidad pendiente de desarrollar y conforme van cumpliendose los sprint esta barra debe ir disminuyendo, si en algun caso se aumenta funcionalidad en el proceso la barra debera crecer nuevamente. Esta barra no se reemplaza, por cada sprint se crea una nueva barra de grafica para poder visualizar graficamente el progreso del desarrollo.

          La metodologia SCRUM clasifica los roles basandose en la historia del cerdo y la gallina que dice:
          Una gallina le dice a el cerdo ¿Porque no abrimos un restaurante?, el cerdo le dice "Me parece muy buena idea, pero ¿Como se llamara?" la gallina contesta "Pongamosle huevos con jamon", el cerdo le contesta "definitivamente no me gusta la idea, porque YO ESTARIA COMPROMETIDO Y TU ESTARIAS INVOLUCRADA".
          Esto quiere decir que en el desarrollo de software agil Scrum, hay roles que unicamente estan involucrados mientras que otros roles estan comprometidos.
          El Team, ScrumMaster y ProductOwner estan comprometidos(cerdos) y deben dejar incluso la vida para sacar adelante el proyecto.
          Los clientes, usuarios (StakeHolder) unicamente estan involucrados (gallinas) y para ellos no es gran importancia si el proyecto sale o no sale adelante, ellos solo aportan sus historias y lo utilizaran.

          lunes, 3 de mayo de 2010

          Metodologia Agil Extreme Programming XP

          La metodologia Extreme Programming XP, es una metodologia agil para el desarrollo de software, basada en la comunicacion interna entre programadores y la comunicacion externa entre el equipo de programacion y el usuario o cliente. 
          Para que se cumpla lo anterior debemos tener un buen clima dentro del equipo de trabajo, trabajo en equipo (parejas de programadores para verificar en tiempo de desarrollo errores), aprendizaje continuo por parte de los programadores y imprescindiblemente buenas relaciones interpersonales para dialogar y negociar con el cliente.

          XP ES IDEAL PARA PROYECTOS CON REQUISITOS IMPRECISOS, MUY CAMBIANTES Y DONDE HAY ALTO RIESGO TECNICO.

          La metodologia consiste en:
          • Exploracion: El cliente define todas las funcionalidades del software a trabajar.
          • Planificacion de Entrega: el programador estima el esfuerzo, tiempo y costo de la realizacion de cada funcionalidad (release).
          • Iteraciones: El cliente selecciona basado en la estimacion la funcionalidad a desarrollar.
          • Produccion: El programador construye y configura lo necesario para la funcionalidad requerida.
          • Mantenimiento: Debemos mantener el sistema estable, por lo cual se crean tareas para no perder la funcionalidad.
          • Muerte del proyecto: Cuando toda la funcionalidad (historias de usuario) han sido cubiertas y el cliente esta satisfecho, los ciclos que involucran el proyecto de desarrollo se dan por finalizados y resultado de esto es un nuevo sistema ajustado a la realidad y funcionalidad demandada por el cliente.
          Hisrotias de usuarios:
          Las historias de usuarios son un metodo utilizado en la metodologia XP para captar los requerimientos del sistema basandonos en la narracion de los usuarios quienes son los que interactuan directamente con el sistema.
          Estas historias de usuario deben ser descripciones sencillas, con el lenguaje tradicional del usuario, en media hoja carta lo que quiere decir es que son resumidas, en estas narraciones debe el usuario escribir a detalle moderado como se realiza la funcion, cuales son los datos de entrada y los datos de salida.
          Es importante destacar que las historias de usuarios son unicamente una base para el programador, esto quiere decir que en dialogo directo con el usuario se pueden modificar, eliminar o crear nuevas funcionalidades.
          En el manifiesto agil claramente dice que este tipo de metodologias utilizan poca documentacion, por lo tanto para el caso de XP las historias de usuarios son la unica documentacion que se genera y deben ser sencillas y nunca descripciones largas.
          Una guia para crear las historias de usuarios es:
          COMO (rol) QUIERO (algo) PARA PODER (beneficio)

          Los Roles dentro de la metodologia XP son:
          • Programador: Creacion de software
          • Cliente: Escribe historias de usuario para generar el codigo.
          • Encargado de pruebas: Ayuda al cliente a elaborar las historias de usuario y prueba cada iteracion (historia).
          • Encargado de seguimiento: Gestiona la calidad de la historia de usuario que se este trabajando.
          • Entrenador: Experto en metodologias de desarrollo el cual guia al equipo a seguir la metodologia correctamente.
          • Consultor: Ayuda en un tema especifico.
          • Gestor: Coordina la comunicacion y cooperacion entre el cliente y los programadores.