lunes, 29 de mayo de 2017

COCOMO

COCOMO  (Constructive Cost Model) fue desarrollado por B. W. Boehm a finales de los 70 y comienzos de los 80. Es una jerarquía de modelos de estimación de costes de software que incluye submodelos básico, intermedio y detallado. En ese modelo se establecen ecuaciones matemáticas para describir la relación que existe entre el tamaño del software  y otros factores secundarios que buscan capturar ciertas características del producto, proceso, personas y plataforma. Estos factores se conocen como Cost Drivers.

Una de las principales virtudes de COCOMO II es ofrecer una estimación de plazo y esfuerzo, y a partir de estos sugerir el tamaño del equipo y no lo opuesto.


Para realizar dicha estimaciones del esfuerzo de desarrollo se debe usar la siguiente  ecuacion matemática la cual  tiene la forma: 
                                 E=aisbm(X)
donde: 

  • S es el número de miles de líneas de código fuente
  • m(X) es un multiplicador que depende de 15 atributos
En la siguiente tabla se muestran los coeficientes para los diferentes modos



Básico

Intermedio

              Modo
ai
bi
ai
bi
Orgánico
2.4
1.05
3.2
1.05
Semiencajado
3.0
1.12
3.0
1.12
Empotrado
3.6
1.2
2.8
1.2




El modelo básico: en este modelo se estima el coste del proyecto -pequeño o mediano- en función del número de líneas de código estimados. En su algoritmo establece varios criterios de desarrollo los cuales depende de las posibles dificultades que se pueden encontrar en el desarrollo o limitaciones del hardware usado en el desarrollo del software.



El modelo intermedio es mas utilizado cuando se trata de hacer estimaciones más complejas pues en este se incluyen 15 atributos dentro de 4 categorías que son los que determinaran el coste del proyecto.
Las cuatro categorías son las siguientes: 
  1. Atributos del Producto: se refiere a la garantía de funcionamiento requerida para la creación del software, el tamaño de la base de datos, entre otras cosas.
  2. Atributos del ordenador usado: incluye lo referente a la capacidad de almacenamiento, la rapidez del ordenador, versión del sistema operativo, etc.
  3. Atributos del personal: incluye lo que es la experiencia en el tipo de software a desarrollar, en el lenguaje en que se creará, etc.
  4. Atributos del proyecto: software usado para el desarrollo del proyecto, lenguaje necesario para la creación del software, entre otras cosas.

Todos atributos son tomados en cuenta para hacer la aproximación del coste estimado al real, lo máximo posible.


El modelo detallado se basa en incorporar las características del modelo intermedio ademas de que lleva acabo una evaluación del impacto de los atributos tomados en cuenta para el coste. Introduce 2 características principales
  1. Multiplicadores de esfuerzo sensitivos a la fase que van de acuerdo con cada atributo y de esta manera ayuda a determinar la asignación del personal para cada fase del proyecto.
  2. Jerarquía del producto a tres niveles los cuales son módulo, subsistema y sistema y la cuantificación se realiza al nivel que es más susceptible la variación.

Conclusiones sobre COCOMO.

El modelo COCOMO como ya lo hemos descrito es uno de los sistemas de estimación de costes mas utilizados en proyectos de desarrollo de software debido a que una una aproximación al coste real ademas de que es de fácil aplicación con una buena documentación.






"COCOMO" extraído el 28 de Mayo de 2017 desde la fuente:  https://www.ecured.cu/COCOMO_II

"El modelo COCOMO" extraído el 28 de Mayo de 2017 desde la fuente: http://www.sc.ehu.es/jiwdocoj/mmis/cocomo.htm

"El modelo COCOMO para estimar costes en un proyecto de software" extraído el 28 de Mayo de 2017 desde la fuente: http://www.eoi.es/blogs/cesaraparicio/2012/05/06/el-modelo-cocomo-para-estimar-costes-en-un-proyecto-de-software/

"Estimación de proyectos de software con COCOMO II: La métrica inmersa en un modelo de costos"
extraído el 28 de Mayo de 2017 desde la fuente http://www.fattocs.com/es/cursos/cocomo.html

domingo, 14 de mayo de 2017

¿QUÉ ES BIG DATA?

Se denomina Big Data al conjunto de datos que son tan grandes que no pueden ser manipuladas por una gestión de base de datos tradicional como las que suelen  usarse en los sistemas. Es por eso que los Big Data suelen distinguirse por las cuatro V para tener un mejor entendimiento, es decir, Velocidad, variedad, volumen y valor.



Toda la información que se ha ido acumulando es debido a la que almacenan las compañías para hacer transacciones o para tener la información personal de clientes, proveedores, operaciones, entre otras cosas.
Es por eso que si queremos usar los BigData debemos saber a que se refiere esto.

Volumen: Se refiere a la cantidad de datos. Los Big Data requieren procesar altos volúmenes de datos no estructurados y de baja densidad, es decir, datos con un valor desconocido, de este modo lo Big Data son encargados de convertir estos datos en información valiosa.

Velocidad: Se refiere al ritmo con el que se reciben los datos y se ponen en práctica. Esto es importante pues normalmente los datos que cuentan una velocidad alta fluyen a la memoria en lugar de escribirse en el disco.Es por eso que las experiencias de aplicaciones móviles tienen una mayor cantidad de usuarios, un mayor tráfico de red y la expectativa de una respuesta inmediata.

Variedad: Esta característica hace referencia a los nuevos tipos de datos no estructurados. Debemos entender que los datos no estructurados o semiestructurados como texto, audio y video requieren de un procesamiento adicional para extraer la información y los metadatos de respaldo. Una vez hecho esto los datos no estructurados cuentan con muchos de los requisitos de los datos estructurados como resumen, linaje, auditabilidad  y privacidad. Se debe tomar en cuenta que los cambios de esquema frecuentes o en tiempo real son una carga enorme para los entornos de transacción y análisis 

Valor: Existe una gran variedad de técnicas cuantitativas y de investigación para extraer el valor de los datos; desde descubrir una preferencia u opinión del consumidor o identificar una pieza del equipo que este a punto de fallar. Sin embargo el valor también requiere nuevos procesos de descubrimiento que involucran a analistas, usuarios empresariales y ejecutivos inteligentes.





Como podemos ver con el crecimiento de la tecnología debemos estar al día con las nuevas formas de almacenar datos y pues un ejemplo claro son los Big Data, pues representan un desafío real el cual es aprende a hacer las preguntas correctas, reconocer patrones, formular hipótesis  y predecir comportamiento algo que pues realmente no es sencillo pero con la práctica será fácil de manejar.















"La base de la innovación de datos" extraído el 13 de mayo de 2017 desde la fuente: https://www.oracle.com/lad/big-data/index.html

"¿Qué es el Big Data?" extraído el 13 de mayo de 2017 desde la fuente: http://www.analiticaweb.es/que-es-big-data/

 "¿Qué es BigData?" extraído el 13 de mayo de 2017 desde la fuente: https://www.ibm.com/developerworks/ssa/local/im/que-es-big-data/


domingo, 7 de mayo de 2017

MODELADO WEB

El modelado web nos sirve para garantizar la funcionalidad y calidad en nuestro sitio, prácticamente se basa en tomar en cuenta 3 puntos: Diseño de interfaz, Mapa de navegación y la distribución de contenidos y de que tipo son, es por eso que vamos a analizar 5 sitios web para entender un poco más a lo que se refiere el modelado web.




Sitios Web
Diseño de Interfaz
Mapa de Navegación
Contenidos


El diseño con el que cuenta es muy simple pues con tan solo un scrollbar de lado derecho podemos encontrar lo deseamos, además de que cuenta con un buscador.
Es muy simple pues es fácil de navegar en la página sin tener que andar regresando al inicio ni nada que se le parezca.
Los contenidos están muy bien ordenados y es fácil de encontrar lo que se quiere.


Tiene un carrusel de imágenes que hace más atractivo el sitio, además de que a pesar de que su fondo es blanco no satura tanto sus páginas pues tiene distribuido todo de forma organizada
Se puede visualizar que la manera en que se desarrolló la página fue muy bien estructurada pues es sencillo navegar en esta, puedes visualizar los diferentes contenidos sin perderte, pues está separado por secciones.
Los contenidos están muy bien organizados pues te permite visualizar la información de cada celular, la seguridad, diferentes tipos de tablets entre otras cosas.



Al ser una página visitada por muchos usuarios esta trata de ser amigable aunque su principal atractivo son los videos que muestra en inicio de la página.
Podemos observar que la manera en que distribuyeron los contenidos es muy fácil de entender pues se puede visualizar otras secciones sin salirte de la página de Inicio.
Tiene la información necesaria para que el usuario entienda como hacer uso de este sitio, la divide por secciones según las tendencias, los canales a los que estés suscrito, entre otras cosas.


Aunque es un sitio el cual suele ser visitado por muchas personas su diseño de interfaz se basa en una barra donde muestra la cuenta de la persona que lo está usando y pequeñas imágenes miniaturas de las películas/series/caricaturas que ofrece
El mapa de navegación es demasiado simple pues los contenidos principales se encuentran en una sola página de manera en que puedes navegar en las diferentes secciones sin ningún problema.
Gracias a que divide los contenidos por diferentes secciones es fácil saber dónde podemos encontrar lo que requerimos.


Es un sitio que tiene muy mal diseño pues los colores utilizados en lugar de atraer, lastiman. No se entiende de que es la página y está muy saturada de pequeñas publicaciones
No es sencillo navegar debido a que hay muchas publicaciones, apartados y es difícil saber cómo regresar al inicio o como llegar a lo que la página ofrece.
Los contenidos están un poco organizados pero se tarda mucho en cargarlos debido a todo lo que hay en este sitio, es poco entendible.


Como podemos notar es muy importante analizar el diseño que llevará nuestro sitio web, así como la distribución de los contenidos, pues nuestro sitio web tiene que ser amigable y entendible para el usuario de modo que sea sencillo para él entender que es lo que estamos ofreciendo, sea atractivo a la vista y de esta manera podremos llegar a mas audiencia.

sábado, 29 de abril de 2017

CALIDAD DE LA APLICACIÓN WEB


Existen 5 características principales de calidad  que se toman en cuenta para el desarrollo de las aplicaciones web, el ejemplo para analizar si cumple con todas estas características es: 

https://www.netflix.com

Característica
Descripción
Ejemplo
Facilidad de uso
Hace referencia a que tan navegable es la aplicación de modo que se entienda donde esta cada función, tomando en cuenta factores como la estética, la consistencia y la documentación. Se debe analizar el contenido que va a tener y la audiencia a la que va dirigido.
La página de Netflix al ser consultada por diferentes usuarios, desde niños pequeños hasta adultos debe ser lo suficientemente navegable para que sea fácil encontrar lo que se requiere sin estar batallando con la búsqueda de esto.
Funcionalidad
Se refiere al conjunto de capacidades y características que ofrece la aplicación, lo que esta puede hacer.
Netflix ofrece a los usuarios la facilidad de encontrar el tipo de películas, series caricaturas que desees ordenándolas por géneros, las novedades que hay, según tus gustos mostrándote una vista más personalizada.
Confiabilidad
Se debe evaluar respecto a la frecuencia y gravedad de las fallas, el tiempo que tarda para que ocurra una falla nueva y la capacidad de recuperación ante ésta, contemplando que tan fácil y rápido se soluciona.
Debido a que para el acceso a este servicio se hace uso de la información de la tarjeta de crédito que uses, Netflix debe ser confiable pues de otro modo ocasionaría una gran problema por cargos a cuentas que no sean las correctas
Eficiencia
Se mide con base en la
velocidad con que se puede hacer una tarea, el uso de recursos pues con menos se debe tratar de tener la misma calidad.
No puede tardarse mucho en el tiempo de respuesta al cargar lo que se desea ver, pues al ser consultada por varios usuarios y que principal atractivo sea que puedes ver películas y demás, tiene que actuar con “eficiencia”.
Facilidad de mantenimiento
Se refiere a que tan susceptible es la aplicación de ser corregida, ampliable o adaptable según sea el caso.
La página debe funcionar lo más rápido posible pues si queda mucho tiempo inservible se vería reflejado en la pérdida de clientes.


Como podemos darnos cuenta estas son las principales características que los desarrolladores deben tomar en cuenta para el desarrollo de las aplicaciones web si desean que estas tengan calidad para que así el contenido de estas sea atractivo y llegué una  mayor audiencia.




"Definición de facilidad de mantenimiento" extraído el 29 de abril de 2017 desde la fuente:
http://albertolacalle.com/hci/funcionalidad-usabilidad.htm


"Desarrollo de una aplicación web " extraído el 29 de abril de 2017 desde la fuente: http://bibdigital.epn.edu.ec/bitstream/15000/2158/1/CD-1450%282008-05-21-01-07-04%29.pdf

"Facilidad de uso en sitios web" extraído el 29 de abril de 2017 desde la fuente: 
http://www.visibilidadweb.unam.mx/docs_index/FacilidadDeUso.pdf

"Fiabilidad, disponibilidad y facilidad de mantenimiento (funciones RAS)" extraído el 29 de abril de 2017 desde la fuente: 
https://docs.oracle.com/cd/E19455-01/816-0289-10/6m6pmlk9b/index.html

Pressman, R.. (2010). Conceptos de Diseño. En Ingeniería del Software(p.183). New York: Mc Graw Hill. 

domingo, 9 de abril de 2017

Formulación de Sistemas Basados en Web

La formulación de sistemas y aplicaciones basados en web representa una secuencia de acciones de Ingeniería Web, comienza con la identificación de las necesidades del negocio y de esta manera define las características y funciones ademas de realizar la recopilación de requisitos para al final hacer un modelo de análisis.
Gracias a la formulación es mas sencillo establecer un conjunto de metas en común, entre el cliente y el equipo de ingeniería Web, para la construcción de la WebApp.




Primeramente para iniciar la etapa de formulación se recomienda hacer una serie de preguntas las cuales son:
  • ¿Cuál es la motivación principal para la WebApp?
  • ¿Por qué es necesaria la WebApp?
  • ¿Quién va a utilizar la WebApp?
Ademas se tratan dos categorías de metas en esta etapa:
  • Metas Informativas: indican una intención de proporcionar contenido y/o información específica al usuario final.
  • Metas aplicables: indican la habilidad para realizar alguna tarea dentro de la WebApp.


Después necesitamos trabajar la recopilación de requisitos para WebApps.
En esta parte se tratan algunos objetivos como:
  • Identificar requisitos de contenido.
  • Identificar requisitos funcionales.
  • Definir escenarios de interacción para diferentes de clases de usuarios.
Es por eso que tenemos algunos pasos que seguir para lograr dichos objetivos tales son:
  1. Pedir a los clientes que definan las categorías de usuario y describan cada categoría.
  2. Comunicarse con los clientes para definir los requisitos básicos de la WebApp.
  3. Definir los casos de usuario que describan escenarios de interacción para cada clase de usuario.

Luego de terminar con estas dos etapas debemos seguir con la definición de las categorías de usuario.
La definición de una categoría requiere que primero formulemos un conjunto de preguntas fundamentales como:
  • ¿Cual es el objetivo global del usuario cuando usa la WebApp?
  • ¿Cuáles son los antecedentes y la practica del usuario en relación con el contenido y la funcionalidad de la WebApp?
  • ¿Cómo llegará el usuario a la WebApp?
  • ¿Qué características genéricas de la WebApp le gustan o disgustan al usuario?.
Debemos tener en cuenta que conforme se avanza en la recopilación de requisitos cada diferente clase de usuario debe encuestarse para obtener datos.

Comunicación con los clientes y usuarios finales
Como es de esperarse, la mayoría de las WebApps tiene una amplia población de usuarios finales por lo cual no es recomendables que se emplee información recopilada de una o dos personas como base para la formulación o el análisis, se deben considerar mas puntos de vista.
La comunicación se puede lograr aprovechando alguno de estos mecanismos
  • Grupo muestral tradicional.
  • Grupo muestral electrónico.
  • Entrevistas iterativas.
  • Entrevista de exploración.
  • Construcción de escenarios.

Análisis de la información recopilada
Así como vamos recopilando la información se categoriza en clase usuario y tipo de transacción y luego se valora según su relevancia. El objetivo de realizar esto es desarrollar listas de objetos de contenido, operaciones que aplican a los objetos de contenido dentro de una transacción de usuario específica, requisitos funcionales que aportara la WebApp al usuario final y requisitos no funcionales que sobresalgan en las actividades de comunicación.


Desarrollo de casos de uso.

Los casos de uso tiene la función de describir como se la interacción de la WebApp con una categoría de usuario específica  (llamada actor) y de este modo lograr una acción específica.
Los casos de uso describen la interacción desde el punto de vista del usuario.
  • Proporcionan el detalle necesario para crear un modelo de análisis efectivo.
  • Ayudan a dividir en comportamientos el trabajo de la Iweb
  • Ofrecen una guía importante para quienes deben probar la WebApp




Podemos concluir con que gracias a estas primeras etapas de formulación nos es posible abstraer cual es el negocio, saber de lo que trata pues se analizan a detalle los requisitos específicos de la WebApp que serán modelados a través de los casos de uso y notación UML.






"3.5 Formulación de Sistemas basados en la Web" extraído el 07 de Abril de 2017 desde la fuente: https://sites.google.com/site/talleringesoftware/unidad-3/3-5-formulacion-de-sistemas-basados-en-la-web

"Formulación y planeación para ingeniería Web" extraído el 07 de Abril de 2017 desde la fuente: http://dianaelizabethceliyaguachi.blogspot.mx/

"Formulación y planeación para ingeniería Web" extraído el 07 de Abril de 2017 desde la fuente: https://es.slideshare.net/dfcelix/exp-ingenieria-web

"Ingeniería Web" extraído el 07 de Abril de 2017 desde la fuente:http://navabautista.wikispaces.com/file/view/Wiki.pdf






miércoles, 5 de abril de 2017

MEJORES PRACTICA DE LA INGENIERÍA WEB

La Ingeniería Web es un proceso utilizado para crear , implantar y mantener aplicaciones y sistemas web de alta calidad. Es por eso que para la construcción de estas aplicaciones web se debe aplicar un conjunto de buenas practicas en donde se toman en cuenta los modelos que expone la ingeniería de software.

Algunos ejemplos de estas buenas practicas son:


  • Describir cómo interactuarán los usuarios con la WebApp aplicando un enfoque basado en escenarios.
  • Revisar la consistencia y calidad de los modelos.
  • Utilizar herramientas y tecnología que permitan construir el sistema con tantos componentes reutilizables.
  • No apoyarse en usuarios anteriores para depurar la WebApp pues estarán acostumbrados a la primera versión de la aplicación esperando que funcione de la misma manera
  • Asignar el tiempo necesario para comprender las necesidades del negocio y los objetivos del producto, y colocar especial atención cuando los detalles de las webApps son ligeros, si éstos no  se logran completar el resultado puede ser un buen trabajo técnico pero no ser lo que el usuario precisa
  • .Desarrollar un plan del proyecto, incluso si es muy breve, debe ser exacta, por los plazos cortos, muchas veces el proyecto debe planearse y rastrearse diariamente.
  •  Asignar un tiempo adecuado para el modelado.


Concluyendo con el tema, es necesario que sean  tomadas en cuenta estas "buenas practicas" si es que deseamos que nuestras aplicaciones sean de calidad y sean muy bien acogidas por los usuarios.




García, R.. (2017). GUÍA TÉCNICA DE INGENIERÍA WEB. Abril 5, 2017 Sitio web: http://www.academia.edu/8126688/Gu%C3%ADa_t%C3%A9cnica_de_ingenier%C3%ADa_web

Quelal, B.. (2011). Sistema Web De Información De Pacientes Para La Clínica "Santa Fé". Abril 5, 2017, de Escuela Politécnica Nacional Sitio web: http://bibdigital.epn.edu.ec/bitstream/15000/3879/1/CD-3631.pdf

Pressman, Roger S. Ingeniería del Software. Ed. McGraw Hill. Sexta edición. México. 2005. 

domingo, 2 de abril de 2017

SCRUM

Entre as metodologías ágiles que existen se encuentra una que suele ser muy utilizada la cual es SCRUM.
SCRUM fue desarrollada por Ken Schwaber, Jeff Sutherland y Mike Beedle, Esta especialmente diseñada para proyectos con requisitos que suelen cambiarse de manera rápida. Se caracteriza por realizar el desarrollo de software mediante iteraciones denominadas sprints así como las reuniones a lo largo del proyecto para la coordinación e integración del trabajo. 
También se utiliza cuando no se entrega al cliente lo que necesita en tiempo y forma así como cuando los costes se disparan o la calidad no es la que se esperaba.  


Teniendo esto en claro podemos proseguir para definir como es el proceso que se lleva a cabo en SCRUM



Primeramente se hacen las historias de usuario, que ne base a ellas se realizará el Product Backlog donde se priorizara que se hará primero con el fin de tener un objetivo para el Sprint.
Después se encuentra la planificación donde se decidirá como alcanzar el objetivo del Sprint para así después crear el Sprint Backlog el cual se basara en el Product Backlog, 
en este se identifican las tareas a realizar ademas de darles una estimación (1-16 horas)

Seguidamente se hacen las reuniones diarias las cuales no pueden durar mas de 15 minutos y sirven para ver el avance por equipo, en estas reuniones solo pueden hablar los miembros del equipo, ScrumMaster y Product Owner. Es así que luego viene el Sprint Review en donde el equipo presenta lo realizado durante el Sprint y todo el equipo participa.

Finalmente se hace el Sprint retrospective en donde se revisa que es lo que funciona y no, lo que se va a seguir haciendo así como lo que se va a dejar de hacer. Se realiza después de cada Sprint, todo el equipo participa y dura de 15 a 30 minutos.
 
Cabe resaltar que la duración de los Sprint suele ser de 2 a 4 semanas y no hay cambios en estos.


Podemos concluir que Scrum se centra más en la funcionalidad del sistema, va más orientado a lo que viene siendo la administración del proyecto además de que durante el proceso aunque se tata de seguir el orden de las iteraciones según como las priorizó el Product owner, si el equipo de trabajo se da cuenta que es mejor modificar el orden lo harán para avanzar en el proyecto.

Grafeuille, E. (2008) Una Introducción a Scrum [Diapositivas PowerPoint] Febrero 25, 2017 Sitio Web: https://www.mountaingoatsoftware.com/.../Spanish-Redistributable-Intro-Scrum.ppt

“¿Qué es Scrum?” extraído el 25 de Febrero de 2017 desde la fuente https://proyectosagiles.org/que-es-scrum/

Letelier, P., Sánchez,E.. (2003). Metodologías Ágiles en el Desarrollo de Software. [PDF File] Febrero 25, 2017, de Grupo ISSI Sitio web: http://issi.dsic.upv.es/archives/f-1069167248521/actas.pdf