Buscar este blog

miércoles, 13 de noviembre de 2013

¿Es económicamente factible realizar actividades o procesos del ciclo de vida del software?

¿Es económicamente factible realizar actividades o procesos del ciclo de vida del software?
El siguiente articulo esta conformado por las experiencias y opiniones de su autor, Silicio mantiene una posición neutra al respecto de los argumentos debatidos.
Las actividades o procesos del ciclo de vida del software son: requerimientos, diseño,construcción,pruebas y mantenimiento, en ese mismo orden.
Estas actividades principales se dividen y definen de la siguiente forma:
Requerimientos: 
“Un requerimiento es definido como una propiedad que debe ser exhibida a fin de resolver algún problema del mundo real” [SWEBOK]
  • Levantamiento
  • Análisis
  • Especificación
  • Validación
Diseño: 
El diseño es tanto el proceso como el resultado de definir la arquitectura, componente, interfaces y otras características de un sistema o componente [IEEE 610.12-90]
  • Arquitectura
  • Métodos y Estructura
  • Documentación
  • Evaluación
Construcción:
La creación detallada de software funcional mediante una combinación de codificación, verificación, pruebas unitarias, pruebas de integración y depuración
  • Gestión de la construcción
  • Aspecto Prácticos
Pruebas:
Verificación dinámica del comportamiento de un programa sobre un conjunto finito de casos de prueba contra su comportamiento esperado
  • Niveles
  • Técnicas
  • Mediciones
  • Procesos
Mantenimiento:
Aplicación de cambios al software para corregir defectos, acomodar nuevos requerimientos o cambios a requerimientos existentes y/o al ambiente operativo
  • Procesos
  • Técnicas
Ya teniendo conocimiento sobre de que se trata este proceso es bueno considerar la siguiente pregunta:

¿Es económicamente factible realizar actividades o procesos del ciclo de vida del software?

Para tomar en cuenta la factibilidad económica que tiene realizar el ciclo de vida del software, también hay que tomar en cuenta el tipo de aplicación que se está desarrollando, se toma en cuenta el lugar, las circunstancias, el equipo,  necesidades, etc. Por ejemplo, no es lo mismo desarrollar una aplicación personal, que una aplicación para un cliente.
Para una aplicación personal sería indiferente realizar el ciclo de vida del software completo o no, porque no tienes tiempo de entrega, tu nombre no está en juego, puedes terminarla o no a gusto e incluso tendría más costo en tiempo realizar el ciclo de vida completo, por ende no tiene factibilidad económica realizarlo en este caso. Todo esto puede variar si quieres convertir la aplicación en unaaplicación como producto, hacer esa transición podría costar 3 veces más, es decir que en muchas ocasiones cuando te saltas pasos como el de Documentación o Diseño, y tu aplicación cambia su objetivo, te costará más de lo que te ahorraste por no hacerlo al principio, así que si aspiras a que tu aplicación evolucione, es factible económicamente realizar el ciclo de vida del software.
Otro caso particular es cuando estás en contra del tiempo, cuando te piden desarrollar una aplicación en corto tiempo y debes elegir entre entregar a tiempo o entregar una aplicación con todas sus pruebas y documentación como es debido. Cuando es un cliente exigente, o es para un jefe que no conoce de desarrollo de software, donde pierdes el proyecto o te despiden del trabajo, es obvio que lo factible en este caso es entregar a tiempo y las consecuencias del costo la pagaran el cliente o jefe.
Por lo visto en todos los casos, sea uno mismo o el cliente, alguien debe pagar el costo de no haber completado el ciclo de vida, aunque en los casos que no somos nosotros es factible porque es a nosotros a quien nos deben pagar más. Como dije antes, esto es cuando se hace una aplicación contendencia a evolucionar o ser modificada, no pasa en aplicaciones que tienen una sola finalidad y no se planea una evolución o modificación de esta, aunque en muchos casos nunca se hace lo que se planea y sucede lo anterior ya explicado.
Un paso del ciclo de vida es hacer un prototipo de la aplicación, este me parece factible económicamente porque puedes mostrar al cliente cómo será su aplicación y de esa manera te evitas que quieran cambios después de haber completado el trabajo o durante su elaboración. En contra de esto está el factor tiempo que puede convertir un prototipo en la fase final y entregar algo inestable que costará mucho hacerle cambios.
Hacer el ciclo de vida completo implica aplicar ingeniería al software, ¿Por qué aplicar ingeniería al software?, porque el software o el concepto de ingeniería de software es de los más jóvenes entre todas las ingenierías y es de las ingenierías que más se les exige. La diferencia está en que si un ingeniero civil dice: “yo termino este proyecto en 5 años y costará una cantidad ‘X’ ”, simplemente le responden con un “está bien”, ahora, si el ingeniero en software dice lo mismo le responden: “Lo quiero en 5 meses y solo puedo darte la mitad del dinero que pides”, en ese caso tienes 2 opciones, aceptar la oferta y olvidarte de todo el ciclo de vida para poder entregar el proyecto como lo quieren, o no aceptarlo, y es aquí donde los ingenieros de software fallamos porque siempre habrá uno que acepte y empezamos a desvalorizar nuestro trabajo, por ende este es otro caso donde no es factible económicamente saltarse estos paso y aceptar ofertas de este tipo.
De todo lo que les he hablado es de aplicaciones donde no se involucran vidas humanas, en este caso es muy diferente, no hay peros que valga, ya que un simple error puede costar la vida de cientos de personas,aquí es hacer el ciclo de vida completo sí o sí. En estos tipos de trabajos se aplica la ingeniería al software de manera correcta y económicamente es más factible hacerlo porque un simple error puede costar tu confianza como desarrollador al hacer una aplicación que involucre vidas humanas.
Todos estos aspectos hay que considerarlos a la hora de decidir si realizar el ciclo de vida del software o no.
En conclusión, personalmente considero que en todos los casos donde sea posible hacerlo(a ‘posible’ me refiero que el cliente o jefe te permitan hacerlo), debes realizar las actividades o procesos del ciclo de vida del software, porque como demostré en cada uno de mis ejemplos, en cada caso hay alguien que siempre termina pagando los costos de no realizar este tipo de actividades, aunque parece que no cuesta o que es más sencillo no hacer estas actividades, al final cuando quieres que tu aplicación crezca, el costo por no hacerla es mucho mayor, ya que al final tendrás que realizarlas y será mucho más complicado.

Métodos de estimación, medición y cuantificación del Software

Métodos de estimación, medición y cuantificación del Software
Una de las mayores razones por la cual muchos programas fracasan es por no medir el software o por no medirlo de manera correcta. Usualmente medimos la cantidad de software por debajo de la cantidad real que tendrá el mismo y por ende también estimamos un tiempo menor para realizarlo, que como consecuencia nos trae mayor costo.
Dice el libro Software Estimation, Measurement, and Metrics:
“La clave para dar credibilidad al dimensionamiento de software es utilizar una variedad de técnicas de clasificación de software, y no depender de una única fuente o método para la estimación.”
Esto es porque si tenemos una única fuente que nos valide el dimensionamiento de software, tenemos más riesgos a equivocarnos, pero con varias técnicas que nos den resultados aproximados podríamos tener más éxito en nuestro programa a la hora de estimar su tamaño.

Estimación

Para poder estimar el tamaño del software que vamos a desarrollar, hay que tomar en cuenta la cantidad de requerimientos que este necesita, los tipos de herramientas a utilizar, si sabemos utilizar o no estas herramientas, nuestra experiencia – si ya hemos realizado algún software de este tipo – y el tipo de interfaz que este requiere.
Una forma de medir el software es con las líneas de código, ya que es lo único que se puede contabilizar dentro del software, pero como no somos muy buenos estimando eso, se recomienda que se controle el tamaño del software mientras se vaya desarrollando e ir revisando y dando seguimiento al tamaño del software contra las estimaciones ya antes realizadas.

Medición

Entre los distintos métodos de medición de software, se encuentran el SLOC (Source Line of Code), Function Points, y Feature Points.
El método SLOC cuenta cada instrucción ejecutable y las declaraciones de datos, excluye los comentarios, líneas en blanco y líneas de continuación. Para poder estimar el tamaño de un software usando este método, hay que usar referencias de algún otro software que utilice métodos o funciones parecidos. En caso de que no tengamos un software parecido al que vamos a desarrollar, resulta casi imposible estimar el tamaño del software usando este método, partiendo solamente de los requerimientos.
El método Function Points consiste en cuantificar las entradas, salidas, lógica de archivos, consultas e interfaz que requiere el software, clasificando estas cantidades en simple, promedio y complejo. Al igual que el método SLOC, las experiencias pasadas son de mucha ayuda para poder clasificar de manera correcta la complejidad de cada cosa que necesitas o para poder saber que tantas entradas, salidas, etc. necesitas.
Como podrán notar estas técnicas son útiles cuando ya se tiene experiencia previa, es muy difícil que sin haber hecho un software parecido al que vayas a realizar, sepas el tamaño que tendrá, el nivel de dificultad y el tiempo que te tomara realizarlo.
En esto cabe la frase: “La práctica hace al maestro”, si no has realizado muchos softwares no podrás predecir con exactitud o aproximación cuanto medirá el software que estás realizando.
A la hora de medir tu software, después de haberlo terminado, estás técnicas son las mejores y te ayudaran a poder predecir mejor para la próxima vez que estés desarrollando un programa. Esta es una práctica muy importante para que el software sea de calidad o poder mejorar su proceso, la medida del software nos da un objetivo claro de lo que vamos hacer y nos sirve de guía para saber si nos estamos desviando o vamos por el camino correcto. Como decía DeMarco:
“¡No se puede gestionar lo que no se puede medir!”.
La medición del software se utiliza para saber la cantidad de cualquier aspecto del software o su proceso. Estas cantidades se utilizan para comparar productos o como había mencionado antes para controlar el producto que se está realizando. Con estos números podemos monitorear los requisitos, predecir los recursos de desarrollo, dar seguimiento al progreso del desarrollo y entender los costos del mantenimiento. Todo esto nos sirve para comparar el estado actual del programa con su estado pasado, nos dice si el programa va ascendiendo o descendiendo y a partir de ahí poder tomar medidas para que el software mejore.
Ademas es una manera de poder saber el costo de tu trabajo y así utilizar estas medidas para estrategias comerciales, así a través del tiempo invertido, dinero invertido, proceso de software, mano de obra, etc. podemos saber cuánto cuesta el software que estás realizando.
En conclusión no podrás medir el software de manera correcta si no tienes experiencia previa en esto o mejor dicho experiencia realizando distintos tipos de software. Si eres de los que no tienen experiencia se recomienda que busques ayuda de expertos para que te estimen cuanto podrá medir el software que estás realizando, luego con la experiencia podrás hacerlo tú mismo y mejoraras la manera en que desarrollas un software.

Animación Japonesa de IE, ¿Estrategia publicitaria de Microsoft?



Desde hace un tiempo atrás, viene corriendo a través de la Internet un interesante vídeo en el cual -la filial de Microsoft en Singapur- hace uso de la reconocida ‘Animación Japonesa’, Anime, para crear un audio-visual publicitario para Internet Explorer.
Este enigmático vídeo fue presentado durante el evento, AFA, Anime Festival Asia. El vídeo no fue más que 2:09 minutos en los cuales una chica (tomando un rol parecido al de una súper-heroína) tiene que enfrentarse a un grupo de enemigos. En el traje que porta la chica pueden distinguirse los logos y colores tanto de Internet Explorer como de Microsoft. Después de ser subido a YouTube por la cuenta oficial de Internet Explorereste vídeo ha desatado una gran controversia dentro de las redes sociales con diferentes usuarios opinando sobre por qué Microsoft ha optado por utilizar la animación japonesa para hacer publicidad.
(La siguiente sección de este articulo esta conformada por las experiencias y opiniones de su autor, Silicio mantiene una posición neutra al respecto de los argumentos debatidos.)
Desde mi punto de vista, pienso que este vídeo puede, o más bien, es el inicio de una nueva campaña publicitaria por parte de Microsoft, quizás hasta sea una especie de beta para el inicio de su propia serie anime con el fin de atraer más público hacia su navegador. Algo que sinceramente parece una misión imposible.
¿En qué baso mi opinión? 
Básicamente en dos cosas:
  1. El vídeo en si mismo: El trabajo audio-visual que se ha realizado en esta publicidad ha sido muy original. La música fue compuesta por Teo Wei Yong de Gray Note Productionsla súper-heroína ha sido un personaje creado específicamente para este trabajo (por cierto, tiene hasta fanpage propia en Facebook, Inori Aizawa / 藍澤 祈) y, nos da un final que -en cierta forma- alude a una continuación.
  2. Los sucesos posteriores: Hay una frase que dice: “Al cliente siempre hay que darle lo que quiere”. Viendo el éxito que ha generado esta producción dentro del público cibernetico y la buena acogida que este le ha dado, resultaría incomprensible que Microsoft no tome en cuenta el darle seguimiento a esto en forma de campaña publicitaria, incluso me atrevería a decir que Inori Aizawa -con un buen seguimiento- podría llegar a convertirse en la nueva imagen de la compañía.
También, para reforzar un poco mi teoría, cabe destacar que esta no seria la primera vez que se viera un personaje de animación japonesa representar un producto digital, aquellos que conocen este mundo del anime seguro recordarán a la tan famosa Miku Hatsune, esta fue un personaje -dibujado con el estilo de animación japonesa- que representó al software sintetizador de voz: Vocaloid, desarrollado por Yahama Corporation. Hay que mencionar que gran parte del éxito de este producto fue provocado por el singular encanto de Miku, el cual fue tan grande que dicho personaje se ha vuelto cara pública en representación del anime a nivel mundial.
Curiosidad: A lo largo del vídeo podemos notar tres acciones en particular: CorrerCaerse yRecuperarse. ¿Les parece haber visto esto en otro lado? Lo mismo que hace Internet Explorer cuando lo abres.
Con todo esto dicho, creo que quedan clara las altas posibilidades que existen de que veamos una serie animada con Inori Aizawa. Por ahora solo queda esperar por la decisión de Microsoft al respecto. ¿Tú que crees que pasará?
Algunos usuarios ya hasta se han dedicado a crear parodia con este vídeo:

Herramientas en línea para crear logos adquieren relevancia en sector de diseño

Herramientas en línea para crear logos adquieren relevancia en sector de diseño



Hoy en día la creación de un logo es uno de los primeros pasos a tomar por un negocio en su etapa inicial, pero este proceso puede ser un poco difícil, es decir, solo hay que pensar en la búsqueda de un buen diseñador que comprenda tus ideas, el tiempo que te tomará explicar y aclarar lo necesario, a parte de la suma de dinero que te costará todo.
Debido a la tecnología y la interactividad que puede ofrecer la Internet en la actualidad todo este proceso puede ser manejado de una manera mucho más sencilla y ‘directa’ gracias a la utilización de herramientas denominadas como “creadoras de logos” o “logo maker”.

¿Qué son estas herramientas?

Este tipo de aplicación web, por llamarla de alguna manera, permite al usuario seleccionar un símbolo de entre los disponibles en su base de datos, y personalizarlo de manera fácil y rápida. Una vez terminado el diseño, y dependiendo de la que se escoja para trabajar, se pueden descargar directamente los archivos del documento, o recibirlos vía correo electrónico en formato PNG, PDF o .AI; estos son los archivos de diseño que por lo general son utilizados por la industria para la impresión o colocación web.

¿Cuál elegir?

Existe una vasta cantidad de sitios web que se dedican a ofrecer este tipo de servicio, pero en nuestra opinión, si eres principiante en el ‘asunto’, uno de los más recomendables es DesignMantic.com.
El mencionado sitio web basa su tecnología en HTML5, lo cual reduce el tiempo de procesamiento de manera significativa en el diseño del logotipo. Hablando con mayor detalle, al entrar a DesignManticpuedes comenzar inmediatamente a crear/modificar el futuro diseño de tu marca, te aparecerá un recuadro en donde puedes escribir el nombre de tu marca, luego de presionar ‘Enter’ se te mostrará un listado de posibles imágenes de marca con tu nombre debajo. Para obtener resultados más específicos en cuanto a lo que quieres ‘decir’ o ‘mostrar’ con la nueva marca puedes especificar la industria a la que pertenece y agregar un slogan o lema.
Luego de decidirte por un diseño puedes cambiar los colores y personalizar un poco más el icono que escogiste, así mismo como cambiar la tipografía que se haya empleado en la pre-visualización por una que se acomode mas a la marca, si así lo deseas.
En cuanto al precio, uno de los factores que mayor preocupación genera, podemos decir queDesignMantic.com mantiene un rango medio de USD$29. ¿Interesado? Qué esperas para probarlo por ti mismo, cuéntanos tu experiencia en los comentarios.

Goole Lanza Nexus 5

Luego de varias filtraciones y rumores, algunas por parte del mismo equipo de Google a través de su tienda virtual, hoy finalmente es presentado y lanzado el Nexus 5.

Características Técnicas

El nuevo teléfono inteligente tal como sugiere su nombre posee una pantalla de 5 pulgadas y corre sobre la última versión de Android KitKat 4.4. De manera más detallada esto es lo que podemos encontrar dentro del dispositivo:
  • Pantalla Full HD – 445ppi – Corning Gorilla Glass 3
  • Procesador Snapdragon 800, 2.3GHz
  • GPU: Adreno 330, 450MHz
  • 4G/LTE y Wi-Fi doble banda
  • NFC (Android Beam), Bluetooth 4.0
  • 16GB o 32GB de almacenamiento interno y 2GB de RAM
  • Cámara frontal 1.3MP, cámara trasera 8MP con Estabilizador Óptico de Imagen
  • Batería de 2300 mAh (17hrs hablando, 300hrs en ‘Stand by’, 8.5hrs usando internet Wi-Fi, 7hrs usando LTE)
  • Cargador Inalámbrico incorporado

Precio – Disponibilidad

El Nexus 5 se encontrara disponible en dos colores, blanco y negro, con las capacidades de 16GB y 32GB, USD$349 y USD$399 respectivamente. Google lanzara dos modelos: uno para Norteamérica y Europa, y un segundo para Asia.