Norma ISO 25010

 La norma ISO es la encargada de la creación de estándares para asegurar la calidad, seguridad y eficiencia de productos y servicios.

La primera ISO se vino a desarrollar en el año 1991, con el pasar de los años y en mejora de la calidad siendo revisado y expandido se crea el ISO 9126, este es un modelo establecido 1977 por McCall y sus asociados.

En la actualidad podemos presenciar la norma ISO 22510 donde las empresas garantizan la calidad, la eficacia del servicio, el cumplimiento con las necesidades requeridas por el cliente. Para ello esta norma cuenta con unos conceptos claros, los cuales son: Funcionalidad, fiabilidad, usabilidad, eficiencia, mantenibilidad del software, portabilidad y calidad en uso o calidad visible final.  En pocas palabras se evalúa las características de un producto software, esto se realiza para determinar si logra satisfacer las necesidades del usuario.

Para que este modelo se pueda llevar a cabo se tienen en cuenta 8 características, las cuales tienen una subcaracteristica que se relacionan entre sí de la siguiente manera:

Proceso para el desarrollo de software complejos

Hay varios pasos a seguir para el desarrollo o creación de software complejos, claro está que es debido a que sus enfoques son diferentes pues son utilizados para diferentes actividades.

Sin embargo para el desarrollo de software complejo es necesario:

  1. Planificación: Como cualquier inicio de algo necesita una planificación, pues el desarrollo de software complejo no sería la excepción; es importante obtener los requisitos requeridos por el cliente, el análisis de estos, sus funcionalidades; todo lo anterior es conjunto entre los desarrolladores, el departamento de ventas, los estudios de mercado y, claro está, el contacto con el cliente.
  2. Implementación, pruebas y documentación: La implementación es parte del proceso que desarrollan los ingenieros de software, su función es programar el código en función   del proyecto de trabajo, el cual está en relación de las demandas del software, es acá donde se realizan las pruebas de caja blanca y caja negra; dichas pruebas son importantes para detectar a tiempo los posibles errores de software.
  3. Despliegue y mantenimiento: Cuando el código está aprobado empieza el despliegue, pues es en este momento ha sido aprobado su liberación y ha sido distribuido en el entorno de producción. Por otro lado el mantenimiento o mejora  de software  se da para solucionar un problema o ampliar la funcionalidad para un cliente.

Para las modificaciones y adaptaciones de acuerdo a las necesidades del software se pueden encontrar varios modelos como el de cascada y espiral.  Aunque  estos tienen sus pros y sus contras, se debe escoger el más adecuado de acuerdo a sus necesidades. Existen tres paradigmas de los modelos de desarrollo de software:

  • Paradigma Tradicional: Facilita un mayor control de la programación del desarrollo.
  •  Paradigma Orientado a Objetos: Se refiere al concepto de clase, al diseño y análisis.
  •  Paradigma de Desarrollo Ágil: Se enfoca en las personas y resultados, se enfoca en el valor para así construir el software

Trabajo Colaborativo

El trabajo colaborativo se puede confundir con el trabajo en equipo, pero existe una gran diferencia entre estos dos: Aunque los dos quieren alcanzar un objetivo en común, el trabajo en equipo busca la optimización de resultados   y por el contrario el trabajo colaborativo es compartir el conocimiento, mediante tareas individuales.

Con el trabajo desarrollado en clase, donde con mi equipo  nos hemos basado en el módulo de necesidades, hemos podido evidenciar de manera clara y concisa el trabajo colaborativo. Para empezar es necesario definir una persona que lidere dicho grupo, esta persona es elegida de acuerdo a todos sus conocimientos y experiencias. Como tareas, esta persona será la encargada de tener claro cada etapa o pasos a seguir para conseguir dicho resultado y así mismo se indican de acuerdo a las habilidades de cada integrante del grupo.

Más allá de cumplir con las tareas asignadas individualmente, cabe mencionar a modo personal  que todo el grupo debe tener claro a qué producto se quiere llegar, es decir que se tenga un propósito común, así mismo que los integrantes estén a total disposición y responsabilidad con los demás.

El trabajo colaborativo cuenta con aspectos diferenciadores de otras formas de organización grupal, las cuales a modo personal son:

  • Responsabilidad personal: Cada miembro del grupo tiene sus tareas individuales ya asignadas, por ende debe cumplir con estas y a sí mismo debe  aportar y contribuir para obtener  los logros deseados.
  • Liderazgo horizontal: Todos los integrantes intervienen, todos forman parte de la toma de decisiones y buscan la solución a posibles conflictos.
  • Comunicación: Para poder obtener los logros esperados es necesario que todos los miembros del grupo estén en la disposición de intercambios de información y materiales, la ayuda necesaria en caso tal que algún miembro así lo requiera, a su vez es necesario tener una retroalimentación o análisis todo con el fin de una mejora.
  • Pensamiento positivo: Ninguna idea puede ser mala, debe ser escuchada y en su caso puede servir de base para nuevas. Los errores siempre dejan un nuevo aprendizaje.
  • Objetivo: El objetivo debe ser claro para todos los integrantes de esta manera todos saben hacia qué lado van y como se podrá hacer de la mejor manera.

Primer acercamiento y desarrollo del trabajo final

Como bien sabemos nuestro proyecto final planteado en la materia de informática está basado con los últimos acontecimientos a nivel mundial debido a la pandemia y donde podemos evidenciar la falta de  articulación que tiene la información en Colombia, por ende se requiere de un sistema informático que permita  articular las necesidades de la comunidad con líneas de trabajo de los grupos, y a estos últimos con los investigadores.

Mi grupo es el encargado del módulo de necesidades de la comunidad. Nos damos a la tarea en primera instancia de considerar el modelo 4+1 para así poder implementar el diseño y la construcción de la arquitectura, lo cual responde a las diferentes roles que se van a llevar a cabo con el uso del software en el modelo de interés.

Al iniciar este primer acercamiento nos encontramos con la falta de documentación de la arquitectura de software por tal motivo, se decide implementar una contextualización de dicho tema.
Como lo mencionamos unos párrafos atrás, el modelo de referencia para llevar a cabo con nuestros objetivos planteados es 4+1 el cual comprende una serie de vistas arquitectónicas, donde cada vista se representa a un conjunto de interés de diferentes stakeholders del sistema.

  • Vista funcional o de casos de uso
  • Vista lógica
  • Vista de procesos
  • Vista de despliegue
  • Vista de implementación

Por otro lado gracias a este modelo se facilitará el desarrollo iterativo, donde la arquitectura se prototipa, se prueba, se mide, se analiza y para finalizar se refina en sucesivas interacciones. A si mismo este modelo nos  permite disminuir los riesgos que estén asociados a dicha arquitectura, logrando otros beneficios para el proyecto como la construcción en equipo, el entrenamiento, la familiarización con la arquitectura, la adquisición de herramientas, la ejecución de procedimientos, herramientas, entre otras.

Seguridad de la información

La seguridad de la información son las medidas preventivas y reactivas, las cuales permiten proteger la información, siendo una pieza fundamental para que las empresas puedan realizar sus operaciones sin asumir los riesgos que se puede generar por el uso de datos esenciales manejados para el funcionamiento de la misma.

Por otro lado, podemos encontrar como la seguridad de la información se encarga de encontrar el riesgo como lo mencionamos anteriormente y a su vez analizar, informar y encontrar la solución de manera rápida y efectiva.

La seguridad de la información se basa en:

  • Disponibilidad: Es la parte encargada de evitar las caídas del sistema, donde se pueda correr el riesgo de accesos fraudulentos. Para poderlo hacer es necesario tener la accesibilidad de toda la información
  • Confidencialidad: Solo el personal autorizado tendrá el derecho de conocer dicha información.
  • Integridad: Brindar la información correcta sin que esta contenga algún tipo de alteración.

 A sí mismo como encontramos las bases fundamentales para evitar el riesgo de dicha información cabe  mencionar que los componentes de riesgo de la seguridad de la información pueden ser:

  • Promotores: Falta de conocimiento y baja calidad de los datos
  • Vulnerabilidad: Debilidad de un sistema
  • Amenaza:  Incidente no deseado

Como conclusión podemos decir que la seguridad de la información es de vital importancia para todos, dado que en la actualidad se usa gran cantidad de datos importantes ya sea de la vida personal, estudiantil, laboral y que si en algún momento llegase a estar en riesgo es importante descubrirla, analizarla y  recuperarla para así evitar que esta esté en manos de personas no deseadas y cause problemas irremediables.  

Archimate

Archimate es un modelo de gran utilidad para la creación de los elementos necesarios en el ámbito de arquitectura empresarial permitiendo su correcta y acertada construcción, con la búsqueda de generar nuevos proyectos de alto impacto para la organización.

Archimate, es un lenguaje abierto e independiente, promocionado por el Open Group que permite gráficamente describir las capas de negocio, procesos, aplicaciones, datos e infraestructura de una empresa para describir su Arquitectura Empresarial. En múltiples ocasiones es difícil establecer un lenguaje común de comunicación al interior de nuestras empresas por lo que este es un buen modelo de aprovechamiento dentro de la empresa.

Se desarrolló en los Países Bajos por un equipo de proyecto de la Telemática en cooperación con varios holandeses socios de gobierno, la industria y el mundo académico. El proceso de creación se fue prolongando llegando así a tomar 35 años para el hombre y aproximadamente 4 millones de euros, hasta diciembre de 2004.

Archimate tiene un estilo de capas orientada al servicio de modelos de arquitectura, se puede decir que se distinguen 3 capas principales: negocio, aplicación y tecnología y así mismo estas se puedes subdividir en varias. Para ser más específicos explicaremos una a una.

Capa de negocio: Esta capa es la encargada de los procesos de negocios, servicios funciones y eventos ofreciendo servicios y productos externos al cliente. Estos son manejados por los actores empresarios y roles.

Capa de aplicación: apoya los componentes en el negocio con servicios de aplicación de software

Capa de tecnología: en esta capa es de vital importancia las funciones realizadas por el ordenador, hardware de comunicaciones y software del sistema, ofreciendo servicios de infraestructura necesarios para ejecutar sus debidas aplicaciones.

Estos son algunos de los beneficios de Archimate:

  • Es un lenguaje internacional, independiente del proveedor
  • Es un lenguaje simple y limpio
  • Fácil de combinar con métodos de desarrollo de Arquitectura Empresarial
  • Es soportado por múltiples herramientas de AE

Inteligencia Artificial

Para poder empezar hablar sobre inteligencia artificial, su uso y/o características es necesario tener claro su concepto, por ende:  La Inteligencia artificial es la combinación de algoritmos buscando como fin la ayuda de automatizar problemas en diferentes áreas, es decir cualquier dispositivo que perciba su entorno y tome acciones que maximicen sus posibilidades de éxito en algún objetivo.

Con el gran potencial que tiene la IA y con el desarrollo de la misma, cada día son más los intereses en los beneficios de estos avances tecnológicos. Existen muchas aplicaciones que van de lo más simple como los filtros de spam o categorización de correos electrónicos, hasta complejos sistemas de protección de fraude en las entidades bancarias y financieras que garantizan la seguridad de los usuarios. Sin duda alguna, la IA, al igual que otras muchas innovaciones tecnológicas, han llegado para quedarse y marcar una época.

La inteligencia artificial lleva décadas de estudio, es una ciencia experimental y cambiante y aunque muchas personas hablan de ellas, pocos saben de su funcionalidad, así que nos detendremos un momento para tener claridad de donde podemos encontrarla: 

● Asistentes inteligentes (como Siri y Alexa)

● Software de reconocimiento de imagen

● Mapeo de enfermedades y herramientas de predicción

● Fabricación y robots de drones.

● Recomendaciones de tratamiento de salud personalizadas y optimizadas

● Bots conversacionales para marketing y servicio al cliente

● Filtros de spam en el correo electrónico

● Herramientas de monitoreo de redes sociales para contenido peligroso o noticias falsas

● Recomendaciones de canciones o programas de televisión de Spotify y Netflix

Para finalizar podemos evidenciar que la inteligencia artificial está en nuestro diario vivir, pero a si mismo puede volverse una amenaza para varias personas dado que varias máquinas pueden reemplazarlos en sus trabajos diarios y para nadie es un secreto que la inteligencia artificial puede ser suficientemente fuerte para generar demasiadas preocupaciones.

Gold Plating

Luego de a ver realizando algunas lecturas en los diferentes blogs de mis compañeros, me llamo bastante la atención un escrito sobre el Gold plating realizado el día 13 de marzo por el compañero de clase de informática Edwar Rodriguez, decidi escribir e investigar un poco más sobre este tema porque no tenía algun conocimiento de ello. No quize generar contoversia sobre lo que escribio mi compañero, más adicional, decidi escribir y complemmentar un poco lo que el comenta sobre este proceso, que me parecio interesante.

El término gold-plating (traducido como “bañado en oro”) se utiliza comúnmente en gestión de proyectos como la práctica de añadir funcionalidades al producto entregado que no estaban incluidas inicialmente en el alcance del proyecto, se define como una (mala) práctica relativamente común en algunos proyectos, la cual se define a partir de esa tendencia de incorporar más funcionalidades u otros agregados a los entregables del proyecto, a pesar de no estar debidamente documentadas en los requisitos del mismo. Es lo que en el contexto local se conoce como “el ya que estamos”.

El Gold Plating, por lo tanto, NO es una práctica adecuada pues no solo no agrega valor, sino que produce un trabajo innecesario, incrementando el nivel de riesgo del proyecto sin justificación alguna. Además, los nuevos agregados requerirían tiempo para su desarrollo, aumentarían los costos y le robarían tiempo a aquellas actividades que sí están debidamente planificadas y que, por lo tanto, agregan valor al proyecto. Se puede implementar si es sugerido al cliente y aceptado por el mismo, pero cada cambio debe pasar por el proceso de control de cambios e impacto en el proyecto, y sean aprobados.

En mi opinión, hay también otros aspectos que normalmente no se tienen en cuenta al tratar de evitar el Gold Plating: la falta de información del equipo de trabajo sobre las tareas que debe realizar y, algo bastante frecuente en el sector IT, la falta de motivación de personas que se sienten capacitadas para realizar tareas más complejas de las que tienen asignadas.El Gold Plating también puede surgir por iniciativa de miembros del equipo que no están suficientemente informados acerca de las tareas que deben realizar y en algunos sectores, especialmente en el desarrollo del Software, también puede ser consecuencia de miembros del equipo que no pueden desarrollar todo su potencial en las tareas asignadas y que se sienten capacitados para realizar actividades de más complejidad.

Repositorios Git en la Nube

La computación en la nube, concepto conocido también bajo los términos servicios en la nube, informática en la nube, nube de cómputo o nube de conceptos, es un paradigma que permite ofrecer servicios de computación a través de Internet.

En este tipo de computación es todo lo que puede ofrecer un sistema informático como servicio de modo que los usuarios puedan acceder a los servicios disponibles en la nube de Internet. Un repositorio de código puede ser útil para múltiples propósitos en el ciclo de vida de una aplicación. Su misión principal es la de sincronizar e integrar el código desarrollado por un equipo en un producto o componente software, pero también nos permite albergar toda la documentación relativa al desarrollo, o gestionar las distintas entregas y la promoción de código.

Git es una aplicación que nos permite llevar un control de las versiones, correcciones, modificaciones, que se van trabajando en un proyecto. Esta lógica de control de versiones ayuda de gran manera al trabajo en equipo, asimismo si un proyecto cuenta con gran cantidad de archivos, esta herramienta ayuda a tener un mejor control sobre estos. GitHub o GitLab son servicios de alojamiento web que permiten alojar proyectos con el sistema de control de versiones Git. En la actualidad son uno de los servicios de este tipo más populares ya que permite almacenar proyectos públicos de forma gratuita.

Al alojar el código, podemos decidir si éste será público o su visibilidad estará limitada a unos usuarios determinados, que son los únicos que tendrán permiso para acceder al mismo y subir cambios. Estos navegadores son realmente rápido, y gracias a éllos podremos hacer pequeñas consultas o copiar porciones de código que nos puedan hacer falta en un momento determinado sin necesidad de bajarse todo el repositorio. Por supuesto, se puede navegar por cualquiera de las versiones del mismo, de modo que podemos ver el contenido de un fichero antes de que se dieran varias actualizaciones de cambios. Seleccionar un determinado commit, tag o rama es cuestión de pocos clicks.

Si a todo esto sumamos la automatización del ciclo de vida de desarrollo, incluyendo buenas prácticas con integración, entrega y despliegue continuo, se agilizarán las entregas de código, que es el mayor problema que vivimos hoy en día en el mundo digital. Estos son dos excelentes herramientas de control de versiones en línea. Usar Git como repositorio de código nos aporta mayores beneficios que usar cualquier otro tipo de repositorio. Además, aplicando un conjunto de buenas prácticas sobre el mismo, aumentaremos la calidad de nuestros productos software y facilitaremos bastante el día a día de los propios equipos.

Ingeniería de Sistemas y Software – Descripción de la Arquitectura

La norma ISO 42010:2011, se enfoca en la descripción de la arquitectura como una expresión de la arquitectura, sin imponer o especificar un método, modelo o técnica particular de descripción de arquitectura. La descripción de arquitectura se enmcarca en el proceso de diseño de arquitectura durante todo el ciclo de vida del producto y/o servicio de software o sistema de interés y se define como el “Proceso de concebir, definir, expresar, documentar, comunicar, certificar, mantener y mejorar una arquitectura a lo largo del ciclo de vida de un sistema”.

Arquitectura son aquellos conceptos o propiedades fundamentales de un sistema en su entorno, plasmados en sus elementos, relaciones y en los principios de su diseño y evolución. Puede considerarse como un modelo mental de un sistema. Al definirse la Arquitectura como “concepto” se refiere a la concepción o ideación y como “propiedad” que la “Arquitectura en sí misma es un atributo del sistema.

En este contexto, el sistema de interés es entendido como aquel que “configura hardware, software, datos, humanos, procesos, infraestructura, materiales y entidades”. La descripción de la arquitectura de un sistema es una expresión de su conceptualización y propiedades de comportamiento, composición y evolución en uno o varios contextos determinados.

Una descripción de arquitectura debe identificar el sistema de interés y ser especificado según las necesidades del proyecto y objetivo, incluyendo información suplementaria de ser requerido.

En una segunda parte, la norma incluye las especificaciones para los Puntos de vista aplicados en la Descripción de Arquitectura, partiendo de una vista definida como el “Producto de trabajo que muestra la arquitectura de un sistema conforme a la perspectiva de un conjunto de asuntos y aspectos del sistema”. Así pues, cada vista se rige por sólo un Punto de vista y es única para cada sistema en su contexto, y el Punto de Vista constituye la convención elegida para la vista de un sistema determinado. Finalmente, el Marco de trabajo de Arquitectura, entendido como las “convenciones, principios y prácticas para la descripción de arquitecturas” y el Lenguaje de Descripción de Arquitectura, constituyen un esquema común aplicable en los Puntos de Vista de sistemas esquematizados según los atributos y aspectos que le conciernen en una determinada Descripción de Arquitectura.

Los requisitos establecidos en la norma 42010 conforman un núcleo común para la Descripción de Arquitectura de sistemas y software que, además de ser una pauta en la creación, análisis y mantenimiento de Arquitecturas de sistemas, son criterios para la evaluación de conformidad de una Arquitectura, extendiendo su utilidad en el ciclo de vida del sistema.

Algunos de los principios fundamentales que se mencionaban en la norma o estándar son:

  • La arquitectura de un sistema se considera fundamental en el contexto de su entorno.
  • Una descripción de arquitectura documenta una arquitectura.
  • Las descripciones de arquitectura deben demostrar como la arquitectura responde a las necesidades.
Diseña un sitio como este con WordPress.com
Comenzar