Buscar este blog

Mostrando entradas con la etiqueta Software. Mostrar todas las entradas
Mostrando entradas con la etiqueta Software. Mostrar todas las entradas

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.

jueves, 8 de agosto de 2013

Microsoft impulsa Project Spark para unir Windows 8.1 y la Xbox One

Microsoft impulsa Project Spark para unir Windows 8.1 y la Xbox One

Microsoft ha mostrado su denominado Project Spark para su nueva consola Xbox One en procura de integración con un PC y una tablet Surface Pro con Windows 8.1.

Todo esto se dio a conocer durante la actividad del keynote de Microsoft celebrada ayer, y donde se presentaron diversas novedades del nuevo sistema Windows 8.1, el cual conectará todos los dispositivos bajo dicha plataforma. Eso incluye a la a Xbox One por supuesto.
En definitiva el Project Spark es una herramienta para crear juegos, que permite generar de la nada mundos enteros, vivos, llenos de fauna y flora, así como personajes cada cual más pintoresco vía gestos y comandos de voz con Windows 8.1 y la interacción entre PC y dispositivos móviles como smartphones y tablets, y la Xbox One, con la que podremos compartir todo el contenido creado en Project Spark en el PC, modificarlo en una Surface Pro, guardarlo en la nube y jugarlo en Xbox One al instante.

lunes, 5 de agosto de 2013

League of Legends, un nuevo enfoque deportivo


League of Legends, de la mano con el deporte.
Quien pudo haber imaginado décadas atrás que la humanidad podría desarrollar dispositivos de comunicación avanzada, como son los Smartphone… O que se alcanzarían unidades de almacenamiento superior a los 1024 gigabyte.
Ahora piensen en algo menos probable, un deporte, totalmente virtual.
Así es, la empresa de videojuegos online Riot Games ha hecho su debut con el famoso juego en auge creciente “League of Legends” (2006). Bajo la directiva de Brandon Beck y Marc Merrill el juego ha logrado llegar a los más altos estándares de popularidad, y es que su estrategia comercial no solo beneficia a sus creadores sino que da paso a un sistema económico lleno de posibilidades, puesto que los usuarios tiene la opción de no solo jugar por diversión o para invertir su tiempo ( como es de costumbre en la red ) ahora también podrán optar por ser jugadores de grandes ligas y competir en el torneos mundiales reconocidos por la EA Sports Games.
Este nuevo deporte ha centrado su atención en la interactividad entre los diferentes usuarios que a diario se dan de alta en esta plataforma virtual, con el objetivo de enfrentar a los mejores oponentes y así poner a prueba sus propias habilidades de combate.

Sobre League of Legends

El juego consiste en la formación de equipos aleatorios constituidos por cinco personas, cada bando, permitiendo dos grupos por partidas, cada uno tiene como objetivo superar las adversidades en el campo o arena de combate y lograr alcanzar el “nexus” enemigo, para destruirlo y de esa manera ganar la batalla. Este juego no solo está basado en movilidades de teclas más bien es un juego comparable al ajedrez, por su complejidad a la hora de realizar estrategias que permitan obtener un mejor resultado, o porque no, la victoria.
Cada partido tiene un promedio de duración entre cuarenta o cincuenta minutos, lo que lo asemeja aún más a los juegos de fútbol o basketball. Como todo deporte, también tienen reglas que deben ser cumplidas dentro del partido o sufrir las consecuencias penales.
Riot Games realiza un trabajo excepcional dando un seguimiento constante tanto a los “Campeones” o avatares del juego, como a los invocadores (rol de los usuarios). Y todo esto con el fin de mantener un nivel justo en la temática del juego, para que todos tengan las mismas posibilidades de ganar y entrar en las finales mundiales. Entre las actividades realizadas por Riot podemos citar, desde eventos promocionales donde se reúnen miles de seguidores, hasta torneos nacionales e internacionales.
Actualmente Latinoamérica ha pasado a formar parte de los servidores establecidos por Riot Games, mejorando la jugabilidad para todos los latinos que ya forman parte de este innovador deporte, así que los espero, ahora entraré a jugar una partida con Wukong el rey de los simios. :D

sábado, 22 de junio de 2013

Alienware trae grandes noticias para la E3

Alienware trae grandes noticias para la E3
A solo semanas de que las tres grandes compañías de videojuegos pongan un punto final a la batalla de consolas de próxima generación en el próximo E3, Alienware busca llamar la atención y acapararla si es posible, en dicho evento, y para esto ha invitado a personas de compañías como Intel, NVIDIA, y uno que otro creador de juegos.
Para esto dicha línea de Gaming Pc planea mostrar nuevos equipos el mismo día que Microsoft y Sony hagan su presentación, a pesar de que hay muchas incógnitas, desde ya se especula la presentación de nuevos equipos y actualizaciones para el repertorio vigente que tiene la empresa, puesto que hace poco tiempo Alienware lanzó la línea de Gaming Pc x51 y recientemente recibió varios upgrades.

viernes, 10 de mayo de 2013

Facebook y Twitter podrían causar trastornos mentales


Según una investigación realizada por científicos israelíes, Facebook y Twitter podrían estar asociados a síntomas psicológicos semejantes a los que padecen las personas con adicción al Internet, lo cual puede provocar que la persona alucine.
“Dado que el acceso a Internet es cada vez más generalizado, con más frecuencia vemos patologías mentales, y las redes sociales como Facebook son parte importante en la aparición de estos trastornos”, dijeron los investigadores de la Universidad de Tel Aviv.
Para realizar la investigación buscaron personas solitarias que nunca habían había tenido problemas de psicosis. Se descubrió, que la mayoría de las personas que participaron en el estudio buscaban relacionarse a través del Facebook o Twitter y, aunque al principio experimentaron una sensación de felicidad, después dieron lugar a sentimientos como menosprecio, traición e invasión de la privacidad.
“En cada caso se descubrió una estrecha relación entre el uso del Facebook o Twitter y el desarrollo progresivo de síntomas psicóticos, tales como el delirio, ansiedad, confusión y el uso excesivo de las nuevas tecnologías informáticas”, explicó el doctor Nitzan, quien encabezó este estudio.

lunes, 6 de mayo de 2013

¿CUAL ES EL SISTEMA OPERATIVO USADO EN LAS PELICULAS IRON MAN?

Un titulo interesante, y es que ayer en la tarde vi la pelicula y me volvio a surgir esta pregunta ¿Cual es? anoche me puse a investigar y como saben el sistema que Tony Stark utiliza es J.A.R.V.I.S. tanto en su casa como en los trajes MK que el posee.



Dejando un poco a J.A.R.V.I.S. de lado y llendo a los que nos interesa la forma en la que Stark utiliza su sistema operativo lleva a muchos amantes de la informatica, inteligencia artificial y robitca a preguntarse que ahy detras de todo esto bueno simple en el comics todo marchiria bien, pero... en las peliculas Iron Man 1, 2, 3 y claro en Advengers el sistema opertivo usado es: Coolsys 8.4 Cutty Sark, de CoolSoft Inc.


Se caracteriza por montar un escritorio UnuseibolGX, el cual permite obviar los comandos introducidos por teclado, utilizar el ratón como adorno o lamparita de mesa (esto último sólo con ratones ópticos y a partir de la versión 7.45 Interlude) y precisa que, para realizar comparaciones de cualquier tipo (sean imágenes o datos abstractos), estos deban superponerse mediante transparencias.
También dispone de uno de los mejores sistemas rebientaclaves del mercado, cuyo algoritmo consiste en mostrar números y/o letras en el campo de entrada de forma aleatoria hasta que alguno coincide [Thomas, Harryson & Xin 1138, pp.14-288, et. al.], muy utilizado por los crackers profesionales. Otro de sus programas más utilizados es el Faustus, una aplicación de análisis gráfico que permite, entre otras cosas, ampliar imágenes a nivel cuántico, lo que permite reconstruir una cara o la matrícula de un automóvil a partir de cuatro únicos píxeles. También permite generar escenas 3D a partir de una única foto, aislar figuras independientemente de la complejidad de la imagen, detectar y localizar manipulaciones digitales, etc.
Una curiosa característica del núcleo (kernel) es que su rendimiento es directamente proporcional a la velocidad con la que pulsan las teclas, aunque en varias versiones (como en la 8.0.3 Report o la mencionada Cutty Sark) un error de programación producía el efecto contrario, por lo que es ideal para entornos sin teclado.”
A todos nos gustaria hacer esto, si o que?... pero bueno la falta de recursos a veces nos impide el desarrollo. en fin tengo un profesor en la universidad que siempre dice: "El que tiene ideas no muere probre..." -Alan Sanchez-

viernes, 19 de abril de 2013

¿VIDEOSJUEGOS TAN REALES QUE DISTORSIONAN LA REALIDAD?




En los últimos tiempos la tecnología empleada para el desarrollo de videojuegos (generadores de gráficos como Cry Engine, Frostbite y Unreal Engine), ha sido tan eficaz y convincente para los sentidos de los jugadores y espectadores, que en el mundo real se han presentado casos donde establecer diferencias entre un juego y una situación real ha sido casi imposible.
Tal es el caso de que varias cadenas televisivas, principalmente de Europa, se han visto en aprietos al confundir gráficas de videojuegos con situaciones en la vida real, ponemos el ejemplo de la British Broadcasting Corporation (BBC), cadena de transmisión que recientemente confundió el  logo del popular juego de Microsoft, Halo con el de las Naciones Unidas, pero este  no es el único caso, está también el caso de la ITV, que se vio involucrada en una situación difícil al usar un video del juego de género shooter (Arma2) ,en vez de un video de archivo de combates en Afganistán.
A los 2 casos antes mencionados hay que agregar un incidente que involucra a un canal Danés de noticias, específicamente el canal TV2, que utilizo por error una imagen del juego Assassins Creed para ilustrar lo que ellos entendían era la ciudad Bíblica de Damasco hace 720 años atrás, cosa que es correcta pero en esta oportunidad en su versión para video juegos.
Ante el revuelo causado por este incidente el jefe de prensa del canal, Jacob Nybroe, pidió disculpas y confirmo que dicha imagen efectivamente pertenecía a dicho juego, y que la misma había sido suministrada por uno de los investigadores del canal que confundió dicha imagen con la icónica y emblemática ciudad del oriente medio.

*NOTA: Informacion tomada de: http://www.silicio.com.do/