viernes, 29 de enero de 2016

ANDROID

¿Qué hace de Android especial?

En la actualidad existen muchas plataformas para móviles (iPhone, Symbian, Windows Phone, BlackBerry, Palm, Java Mobile Edition, Linux Mobile), sin embargo Android presenta una serie de características que lo hacen diferente. Es el primero que combina en una misma solución las siguientes cualidades:

  • Plataforma realmente abierta: Es una plataforma de desarrollo libre basada en Linux y de código abierto. 
  • Adaptable a cualquier tipo de hardware: Actualmente podemos encontrar el S.O Android en dispositivos como teléfonos, tabletas, relojes, cámaras, electrodomésticos y gran variedad de sistemas empotrados que se basan en este sistema operativo. La aplicación ha de funcionar correctamente en dispositivos con gran variedad de tipos de entrada, pantalla, memoria, etc. Contrastando con la estrategia de Apple. En iOS tenemos que desarrollar una aplicación para iPhone y otra diferente para iPad.
  • Portabilidad asegurada: Las aplicaciones finales son desarrolladas en Java lo que nos asegura que podrán ser ejecutados en cualquier tipo de CPU, tanto presente como futuro. Esto se consigue gracias al concepto de máquina virtual.
  •  Arquitectura basada en componentes inspirados en internet: El diseño de la interfaz de usuario se hace en XML, lo que permite que una misma aplicación se ejecute en un móvil de pantalla reducida o en TV.
  •  Filosofía de dispositivos siempre conectado a internet
  •  Gran cantidad de servicios incorporados: La localización basada en GPS como en redes, bases de datos con SQL, reconocimiento y síntesis de voz, navegador, multimedia, etcétera.
  •  Aceptable nivel de seguridad: Los programas se encuentran aislados unos de otros gracias al concepto de ejecución dentro de una caja que hereda de Linux. Además, cada aplicación dispone de una serie de permisos que limitan su rango de actuación.
  • Optimizado para baja potencia y poca memoria: Android utiliza una máquina virtual Dalvik. Se trata de una implementación de Google de la máquina virtual de Java optimizada para dispositivos móviles.
  • Alta calidad de gráficos y sonido: Gráficos vectoriales suavizados, animaciones inspiradas en Flash, gráficos en 3 dimensiones basados en OpenGL. Incorpora codecs estándar más comunes de audio y vídeo.   

Tomás Girones, J. (2013). El gran libro de Android. México: Alfaomega.




El SO operativo Android ha ganado un gran mercado en los últimos años, gracias a su portabilidad y facilidad de uso. Cada vez más tiene más usuarios y una gran ventaja es que el SO es de código abierto y por esto se puede adaptar a nuevos requerimientos de los usuarios.
Otra ventaja es que se puede usar en varios dispositivos como Smartphones, Tablets e incluso Smart Watch.

    FACTORES Y CARACTERÍSTICAS DE LA CALIDAD DEL SOFTWARE

    FACTORES Y CARACTERÍSTICAS DE LA CALIDAD DEL SOFTWARE

    Los factores de calidad que afectan a la calidad del software se dividen en dos grupos:
    • Los que miden directamente.
    • Los que se miden directamente.

    En cada caso debe presentarse una medición. Se debe comparar el software con algún conjunto de datos y obtener así algún indicio sobre la calidad.

    MANTENIBIIDAD

    (Asociación Española para la Calidad, 2016) Capacidad de un elemento, bajo determinadas condiciones de uso, para conservar, o ser restaurado a, un estado en el que pueda realizar la función requerida, cuando el mantenimiento se realiza bajo determinadas condiciones y usando procedimientos y recursos establecidos.
    (openstax CNX, 2016) El IEEE (19990) define mantenibilidad como: “La facilidad con la que un sistema o componente software puede ser modificado para corregir fallos, mejorar su funcionamiento u otros atributos o adaptarse a cambios en el entorno”.
    Esta definición está directamente conectada con la definición del IEEE para mantenimiento del software: “es el proceso de modificar un componente o sistema software después de su entrega para corregir fallos, mejorar su funcionamiento u otros atributos o adaptarlo a cambios en el entorno”.
    En consecuencia, la mantenibilidad es una característica de calidad del software relacionada con la facilidad de mantenimiento.
    A mayor mantenibilidad, menores costes de mantenimiento (y viceversa).

    PORTABILIDAD

    (EcuRed, 2016) Es la propiedad de un programa o una aplicación informática que le permite funcionar bajo diferentes sistemas. Cuando el programa informático es portable puede ser utilizado en diferentes tipos de equipos.
    (openstax CNX, 2016) Es el esfuerzo necesario para transferir el programa de un entorno hardware/software a otro entorno diferente.

    OPORTUNIDAD

    El vocablo oportunidad proviene del latín “Opprtunitas” cuyo significado es “delante de un puerto”, y se utilizaba para referirse al momento de llegar al puerto a salvo después de haber pasado una larga travesía en el mar.
    (Definición, 2016) Se denomina oportunidad a toda circunstancia en la cual existe la posibilidad de lograr algún tipo de mejora de índole económica, social, laboral, etc.
    Capacidad de un sistema de software de ser lanzado cuando los usuarios lo desean, o antes.
    Un gran producto software que aparece demasiado tarde puede no alcanzar su objetivo.

    DISPONIBILIDAD

    (Universidad de los Andes, 2016) Capacidad de que el sistema este total o parcialmente operativo al mismo tiempo que es requerido para manejar eficazmente las fallas que puedan afectar la disponibilidad del sistema.
    La disponibilidad de un sistema se basa en el concepto de confiabilidad mediante la adición de la noción de recuperación.
    La disponibilidad es una de las características de las arquitecturas empresariales que mide el grado con el que los recursos del sistema están disponibles para su uso por el usuario final a lo largo de un tiempo dado.

    FUNCIONABILIDAD

    ·         La funcionalidad debe lograr que el usuario pueda utilizar el software.
    ·         (Diccionario de la Lengua Española) Conjunto de características que hacen que algo sea práctico y utilitario.
    ·         (Navarro, 2016) El software deberá cubrir las funcionalidades que publica; en resumen, debe hacer lo que dice que hace.

    CORRECCIÓN

    ·         Debe ser capaz de darle mantenimiento al software.
    ·         (eumed.net, 2016) Grado en que un producto de software satisface sus especificaciones y consigue los objetivos de la misión encomendada por el usuario.

    CONFIABILIDAD

    ·         Se encarga de asegurar que los datos sean íntegros.
    ·         (Universidad de Belgrano, 2016) Es la probabilidad de operación libre de fallas de un programa de computadora en un entorno determinado y durante un tiempo específico.  La confiabilidad del software se encuentra en una etapa de formación de desarrollo  y es la característica de rendimiento más costosa de conseguir y difícil de conseguir y de garantizar. La naturaleza del proyecto ayuda para la formulación de estimaciones de costo y el esfuerzo que asegure la confiabilidad requerida.
    ·         Grado en el que se puede esperar que un producto de software lleve a cabo sus funciones esperadas con precisión requerida.

    EFICIENCIA

    ·         (Eumed.net, 2016) Sistema que hace bien lo que debe de hacer, lo hace a tiempo y no derrocha recursos.
    ·         Cantidad de recursos computacionales y de código requeridos por un producto de software para llevar a cabo las funciones encomendadas.

    USABILIDAD

    ·         (ChiapaneCode, 2016) Definido por la norma ISO 9241 como el grado en el que un producto de software puede ser utilizado por usuarios específicos para conseguir objetivos específicos con efectividad, eficiencia y satisfacción en un determinado contexto de uso.
    ·         Fácil de usar, que sea fácil de aprender a usar.
    ·         Es un nivel superior en donde no sólo un software debe hacer lo que dice que hace; también debe permitirnos hacerlo de forma adecuada, natural.

    ROBUSTEZ

    (Universidad de la República, 2016) Un programa es robusto si se comporta en forma razonable aún en circunstancias que no fueron anticipadas en la especificación de requerimientos.
    (Universidad de la República -Uruguay, 2016) Un programa es robusto si reacciona en forma adecuada frente a situaciones a priori imprevistas. Un programa robusto es también confiable y correcto.
    (Lenguajes y Ciencias de la Computación, 2016) Es la capacidad del producto software para poder funcionar incluso en condiciones fuera de lo normal.

    COMPATIBILIDAD

    (Lenguajes y Ciencias de la Computación, 2016) Es la facilidad de los programas para combinarse entre sí. También se puede ver como la posibilidad de usar los resultados de un programa como entrada a otro.
    La clave de la compatibilidad es la homogeneidad en el diseño y un consenso en las convenciones sobre estandarización para las comunicaciones entre programas; en definitiva, la reutilización de los formatos de bloques de información.


    Para que un sistema sea considerado de calidad debe cumplir todos los factores antes mencionados, debe brindar seguridad al usuario y evitar que personas no autorizadas tengan acceso a su información y lo perjudiquen.
    Un sistema debe ser portable y se debe poder acceder a él desde cualquier lugar. También debe ser eficiente y cumplir con los requerimientos del cliente y hacer lo que el cliente especifico que haga. Además debe tener la capacidad de ser mantenible, adaptarse a nuevos requerimientos o actualizaciones que el cliente requiera. 



    CALIDAD EN EL DESARROLLO DEL SOFTWARE

     CALIDAD EN EL DESARROLLO DEL SOFTWARE

    (Garzón Villar, Sampalo de la Torre, Leyva Cortés, & Prieto Tinoco , 2003) La calidad del software es una mezcla de distintos factores, se puede considerar que un software es de calidad si cumple con los siguientes objetivos:
    • Concordancia del software con los requerimientos: el cliente desea que el software satisfaga una serie de requisitos o metas iniciales.
    • Desarrollo coherente, aplicando correctamente los criterios de la ingeniería del software: se debe seguir una metodología correcta y apropiada al proyecto, si se quiere aumentar la calidad del resultado final.
    • Desarrollo de requerimientos implícitos al proyecto: siempre existe una serie de requerimientos que no especifica el cliente, pero que son deseables. Por ejemplo, que el software sea fácil (UNAM, 2016) de mantener, fácil de usar.
    Glass (1998), afirma que la calidad es importante, pero si el usuario no está satisfecho, nada más importa en realidad. De igual forma afirma que la calidad de un producto es una función de cuánto cambia el mundo para mejorar. Esta visión de la calidad afirma que si un software proporciona beneficio sustancial a sus usuarios finales, éstos están dispuestos a tolerar problemas ocasionales en aspectos como la confiabilidad y el desempeño.
    • Control de calidad: El control de la variación puede equipararse con el control de calidad. Esto involucra la serie de inspecciones, revisiones y pruebas empleadas a lo largo del proceso del software para garantizar que cada producto del trabajo satisfaga los requisitos que se le han asignado.
    • Garantía de la calidad: La garantía de la calidad consiste en un conjunto de funciones de auditoria e información que evalúan la efectividad y qué tan completa son las actividades de control de calidad. La meta del aseguramiento de la calidad es presentarle al gestor los datos necesarios para que esté informado acerca de la calidad del producto y por consiguiente que comprenda y confíe en que la calidad del producto está satisfaciendo las metas y objetivos.
    • Costo de la calidad: El costo de la calidad incluye todos los costos que se generan o que demandan el desarrollo de las actividades relacionadas con la calidad. Los estudios de costo de la calidad se llevan a cabo para ofrecer una línea base e identificar oportunidades que reduzcan el costo de calidad y proporcionan una base que sirva de comparación.
    • Garantía de la calidad del software: El control y la garantía de la calidad son actividades esenciales en cualquier negocio que elabora productos de consumo. En la actualidad,  toda compañía tiene mecanismos que garantizan la calidad en sus productos. 


    En mi opinión la calidad es un factor de vital importancia al momento de desarrollar un software, ya que si no existe calidad nuestro sistema será vulnerable a fallos y no brindará seguridad a los usuarios.
    Además que al no garantizar la calidad de un sistema desde el principio, implica costes en la mantenibilidad que se le tiene que dar cuando se detectan errores en el software y también en el personal que se contrata para verificar la calidad.