Procedimientos Recomendados para la Confiabilidad del Software

El objetivo de conseguir un software de calidad abarca todo el ciclo vital de desarrollo del programa. Se recomiendan los siguientes procedimientos para crear aplicaciones confiables:

1. Pensar en la confiabilidad:

Las aplicaciones confiables han de ser compatibles con operaciones confiables y necesitan también procesos de implementación confiables. Céntrese en el modo en que se proporciona el servicio y busque posibles problemas allí donde las alternativas de diseño o de procedimiento permitan reducir las causas de error.

2. Invertir en personal:

El personal de operaciones y los programadores deben conocer a fondo las prácticas de administración del ciclo de vida y de la arquitectura, poniendo especial atención en la prevención de los errores más comunes.
Cree una referencia cultural de equipo en la que la confiabilidad sea un aspecto crítico. Proporcione educación sobre los procedimientos de la compañía, las herramientas de programación, las tecnologías de aplicación y 
los conceptos de confiabilidad.

3. Eliminar los puntos con errores desde el diseño de aplicaciones:
Un sistema confiable es más fácil de mejorar que un sistema no confiable (con eventos de error ocultos y distribuidos por todo el programa), que es muy costoso cambiar.

4. Utilizar un sistema operativo consistente.

5. Proporcionar supervisión de confiabilidad continua:

Todas las aplicaciones críticas para una misión deben proporcionar datos de supervisión. El análisis de los datos recopilados desempeña un papel importante en la observación del estado, de los problemas actuales y de 
las tendencias de largo alcance de las aplicaciones críticas.

6. Invertir en procesos de diseño de software de calidad:

• Utilizar una metodología de ciclo vital de desarrollo
• Uso de revisiones de código y estándares de codificación
• Desarrollo de procedimientos de recuperación
• Uso de procedimientos de control de cambios probados

7. Utilizar pruebas inteligentes

Los procesos de prueba de control de calidad deberán proporcionar una respuesta a tres cuestiones importantes:

¿Están correctamente implementadas en la aplicación las funciones descritas en las especificaciones?

¿Satisface la aplicación las situaciones de usuario previstas sin producir errores?

¿Se ajusta el perfil de confiabilidad de la aplicación a los requisitos originales o los supera?

Cuando el nivel de calidad y confiabilidad no sea aceptable, deberá corregirse el software hasta que se alcance el nivel deseado.

8. Implementar cambios con cautela.

9. Prestar atención al presupuesto.

¿Qué es Calidad de Software?

Es la concordancia con los requerimientos funcionales y de rendimiento previamente establecidos, con los estándares de desarrollo debidamente documentados y con las características implícitas que se esperan de todo software desarrollado profesionalmente.

Existen 3 puntos importantes de la definición de calidad de software:
  1. Los requerimientos del software son los fundamentos desde los que se mide la calidad.
  2. Los estándares específicos definen un conjunto de criterios de desarrollo que guían la forma de aplicación de la ingeniería de software existen requerimientos implícitos que no se mencionan.
  3. Un producto de alta calidad requiere menos mantenimiento y facilita tanto el desarrollo como el mantenimiento de la productividad. Con la medición de la calidad se pueden lograr estos objetivos. En lo que se refiere al mantenimiento, la medición de la calidad del software ayuda a identificar problemas de confiabilidad y a mejorar las técnicas para identificar las necesidades de mantenimiento.
Confiabilidad

Es la probabilidad de operación libre de fallas de un programa de computadora en un entorno determinado y durante un tiempo específico.
El fallo es cualquier no concordancia con los requerimientos del software. Hay distintos grados de fallos, estos pueden ser simplemente desconcertantes o catastróficos.
La confiabilidad del software se encuentra en un etapa de formación de desarrollo y es la caracterísitca de rendimiento más costosa de conseguir y difícil de conseguir y de difícil de garantizar. La naturaleza del proyecto ayuda para la formulación de estimaciones de costo y el esfuerzo que asegure la confiabilidad requerida.
Los modelos de confiabilidad del software se usan para caracterizar y predecir el comportamiento importante para directores e ingenieros.
La generación de fallos depende del código desarrollado, tales como tamaño y las características del proceso de desarrollado tales como las tecnologías y herramientas de ingeniería de software usadas.
La eliminación de fallos depende del tiempo y del perfil operativo. Los modelos de confiabilidad del software son generalmente procesos aleatorios. 

Estos modelos se pueden dividir en 2 grandes categorías:
  1. modelos que predicen la confiabilidad como una función cronológica del tiempo
  2. modelos que predicen la confiabilidad como una función del tiempo de procesamiento transcurrido
Control de Calidad

El costo de corregir y detectar errores producidos en las primeras fases de desarrollo de software es mayor a medida que nos encontramos más alejados de éstas. A causa de esto, la propuesta de control de calidad es empujar las tareas relacionadas con la calidad desde las primeras fases del proyecto. Esto permite encontrar los errores en forma temprana sin que se sigan propagando en las siguientes fases.

Otro motivo para el control de calidad es que la prueba de software no puede garantizar que encuentre todos los errores. Los programadores profesionales pueden y deben producir software el cual esté libre de errores desde el comienzo. Esto puede ser llevado a cabo a través del control de calidad.

La garantía de calidad de software engloba:
  1. Métodos y herramientas de análisis, diseño, codificación y prueba 
  2. Revisiones y técnicas formales que se aplican en cada fase de la ingeniería de software
  3. Una estrategia de prueba multiescalada 
  4. El control de la documentación del software y de los cambios efectuados 
  5. Un procedimiento que asegure un ajuste a los estándares de desarrollo
  6. Mecanismos a medida y de información

¿Qué es Confiabilidad de Software?

La confiabilidad de software significa que un programa particular debe de seguir funcionando en la presencia de errores. Los errores pueden ser relacionados al diseño, a la implementación, a la programación  o el uso de errores. Así como los sistemas llegan a ser cada vez mas complejos, aumenta la probabilidad de errores. Como mencionamos, es increíblemente difícil demostrar que un sistema sea seguro. Software seguro debe de funcionar abajo de un ataque. Aunque casi todos los software tengan errores, la mayoría de los errores nunca serán revelados debajo de circunstancias normales. Un atacante busca esta debilidad para atacar un sistema.

Fuente: 
http://www.seguridad.us/privada/empresas/confiabilidad-de-software/

Lenguaje Python

Python es un lenguaje de programación de alto nivel que se utiliza para desarrollar aplicaciones de todo tipo. A diferencia de otros lenguajes como Java o .NET, se trata de un lenguaje interpretado, es decir, que no es necesario compilarlo para ejecutar las aplicaciones escritas en Python, sino que se ejecutan directamente por el ordenador utilizando un programa denominado interpretador, por lo que no es necesario “traducirlo” a lenguaje máquina.

Python es un lenguaje sencillo de leer y escribir debido a su alta similitud con el lenguaje humano. Además, se trata de un lenguaje multiplataforma de código abierto y, por lo tanto, gratuito, lo que permite desarrollar software sin límites. Con el paso del tiempo, Python ha ido ganando adeptos gracias a su sencillez y a sus amplias posibilidades, sobre todo en los últimos años, ya que facilita trabajar con inteligencia artificial, big data, machine learning y data science, entre muchos otros campos en auge. 

Python remonta su origen a principios de los años 90, cuando Guido Van Rossum, un trabajador del Centrum Wiskunde & Informatica (CWI), un centro de investigación holandés, tuvo la idea de desarrollar un nuevo lenguaje basándose en un proyecto anterior, el lenguaje de programación “ABC”, que él mismo había desarrollado junto a sus compañeros.

Su filosofía fue la misma desde el primer momento: crear un lenguaje de programación que fuera muy fácil de aprender, escribir y entender, sin que esto frenara su potencial para crear cualquier tipo de aplicación. En aquellos años, el hardware que había no permitía tal cosa, y es por eso por lo que Python ha resurgido durante los últimos años, porque el avance de la tecnología ha permitido alcanzar el objetivo inicial de este lenguaje de programación adelantado a su tiempo.

Python es un lenguaje de programación multiplataforma, algo que permite desarrollar aplicaciones en cualquier sistema operativo con una facilidad asombrosa. Una gran cantidad de tecnologías se llevan muy bien con Python debido a su sencillez y a su gran potencia para el tratamiento de datos, algo que sin duda ha hecho resurgir este lenguaje a nivel laboral, donde cada vez son más las empresas que solicitan expertos en Python.

Usos:

  • Data analytics y big data: El uso de Python está muy extendido en dos áreas que han estado, y estarán, en boca de todos: el análisis de datos y el big data. Su simplicidad y su gran número de bibliotecas de procesamiento de datos hacen que Python sea ideal a la hora de analizar y gestionar una gran cantidad de datos en tiempo real. Python está siendo utilizado en la actualidad por muchísimas empresas, tanto de forma directa, como indirecta. Analizar una gran cantidad de datos para transformarlos en información útil para el big data es una de las especialidades de Python. 

  • Data mining: La minería de datos o data mining es un proceso que permite analizar grandes bases de datos con el objetivo de predecir futuras tendencias. Se trata de un proceso complejo al que Python puede arrojar luz a través de la limpieza y organización de datos y del uso de algoritmos de aprendizaje automático que simplifica el análisis de datos.
  • Data science: Tras la creación de los motores numéricos como “Pandas” o “NumPy”, Python está desbancando MATLAB, un lenguaje utilizado por científicos a la hora de trabajar con un gran número de datos. La razón es la misma que en los anteriores apartados; la sencillez y la potencia para trabajar con un gran número de datos, unidos al gran número de bibliotecas existentes, hacen que Python sea ideal para este tipo de tareas. 
  • Inteligencia artificial: Seguro que durante los últimos años has oído hablar muchísimo de la inteligencia artificial (IA). Gran parte de su avance se debe a Python. Su facilidad de escritura y su robustez han convertido a Python en el aliado perfecto de la IA. Su capacidad de plasmar ideas complejas en pocas líneas, unidas al gran número de frameworks existentes, han hecho que Python sea uno de los lenguajes de programación que están impulsando a la IA.
  • Blockchain: La base de datos distribuida Blockchain, conocida mundialmente por ser la base sobre la que se sustentan las criptomonedas, también funciona muy bien junto a Python. Como lenguaje versátil, seguro y rápido, es muy útil para formar cadenas de bloques, e incluso permite a los desarrolladores crear una cadena de bloques sencilla en menos de 50 líneas de código, haciendo sencillo algo muy complejo.
  • Machine learning: El machine learning o aprendizaje automático es otra de las tecnologías que está cambiando el mundo tal y como lo conocemos. La robótica y la IA son ahora capaces de aprender por sí mismas a medida que van procesando más y más datos. De esta forma, obtienen información cada vez más relevante que les permite tomar las decisiones adecuadas. Por supuesto, Python es también muy eficaz en este campo, en el tratamiento de datos eficaz es esencial.
  • Desarrollo web: Python también permite desarrollar webs complejas en menos líneas de código, lo que permite que estas sean más ligeras y optimizadas. Django es uno de los frameworks de Python más populares de la actualidad, que puede ser utilizado para crear webs dinámicas y muy seguras. Python es también muy utilizado para hacer scraping, es decir, para obtener información de todo tipo de webs, tal y como lo hacen Netflix, Instagram o Pinterest.
  • Juegos y gráficos 3D: Python también posee una gran capacidad para manejar gráficos 3D gracias la gran cantidad de marcos de trabajo y herramientas existentes. PyGame, Blender o Arcade son algunos de los más conocidos. Uno de los juegos más populares desarrollado con Python es Battlefield 2, un juego de acción bélica lanzado en 2005 en el que el motor gráfico, las animaciones y sus distintas funcionalidades fueron desarrolladas con Python. 

¿Qué es Crystall Ball?

Oracle Crystal Ball, es un software que permite la utilización de modelos predictivos, previsión, simulación y optimización con el objetivo de identificar las variables críticas de un modelo específico, así como también evaluar escenarios basados en el comportamiento estadístico de las variables del mismo.

Para estas evaluaciones, Oracle Crystal Ball utiliza, entre otras, la técnica de simulación de Monte Carlo, el cual es empleada para estudiar modelos con variables que siguen un determinado comportamiento estadístico.

Entre los modelos que pueden ser evaluados utilizando Oracle Crystall Ball se incluyen: financieros, físicos y matemáticos entre otros.

Características principales de Oracle Crystal Ball
  • Hojas de cálculo: Permite elaborar modelos de prevención, simulación y optimización de riesgos.
  • Análisis de riesgo: Brinda una perspectiva extensiva y completa de los factores críticos que afectan las variables probabilísticas del modelo.
  • Suite de aplicaciones: Facilita un análisis exhaustivo que permita calcular los posibles resultados y determinar los factores que ayudarán a la evaluación del modelo a corto y largo plazo.
  • Decisiones acertadas: Ayuda en la toma de decisiones correctas y que se adapten a las condiciones actuales del mercado.
  • Software adaptable: Permite utilizar datos guardados y actuales de las hojas de cálculo, para la búsqueda de soluciones adaptadas a las restricciones y actualizaciones del mercado.