Категории: Все - componentes - desventajas - desarrollo - estándares

по Raúl Toledo Reyes 3 лет назад

254

DISEÑOS

La ingeniería de software basada en componentes es un enfoque de desarrollo que se centra en crear sistemas a partir de componentes independientes bien definidos por sus interfaces.

DISEÑOS

DESARROLLO

EVOLUCION DE SOFTWARE

HMI (Interfaz Hombre-Máquina), donde sus gráficos han evolucionado a un concepto más minimalistas, con las siguientes características:

Mostrando sólo los parámetros necesarios para que el operario pueda realizar una lectura rápida sin distracciones.

Sin multitud de colores

Eliminando los destellos y parpadeos que funcionaban como indicadores en el caso de producirse eventos en el sistema.

Simplificando los entornos gráficos.

Se contará únicamente con aquella información, requerimientos necesarios y funcionalidades exclusivas de la empresa. Evitando así funciones innecesarias que no se utilizan cotidianamente.
La mayoría de las veces el Talón de Aquiles está en la incapacidad para lidiar con rapidez con los cambios sucesivos que sugiere el cliente de acuerdo a cómo evolucionan sus necesidades.
Existen cientos de software que se desarrollan con metodologías tradicionales de cascada (waterfall) y fracasan o sus resultados son mediocres.
A veces las soluciones no responden de forma satisfactoria a las necesidades reales.
El sistema es flexible.
Disminución de errores.
Sencillos e intuitivos y adaptados al caso concreto de la organización.
Proporciona comunicación y sincronización entre tareas.
Comportamiento temporal conocido.
Capacidad para priorizar las tareas.
El desarrollo de software no se detiene cuando se entrega, si no que continua a lo largo de la vida de este. Después de distribuir un sistema, inevitablemente debe modificarse con la finalidad de mantenerlo útil.

DESARROLLO DE SISTEMAS CRITICOS

Cajero automático: Nuestro proyecto está basado en un Desarrollo de Sistema Crítico, porque en nuestro sistema de cajero, el software y el hardware son dos cosas interdependientes. Sin hardware, nuestro sistema de software solo sería una idea de conocimiento humano para satisfacer necesidades bancarias. Mientras que sin el software, el hardware sólo es un conjunto de dispositivos electrónicos inertes colocado fuera de bancos o ciertas zonas específicas.
-Protección- El sistema es capaz de resistir ataques premeditados o accidentales, la protección debe cumplir.
-Seguridad- Evite consecuencias catastróficas sobre su entorno.
-Fiabilidad- Durante un determinado periodo de tiempo, el sistema funcione correctamente tal y como el usuario espera, debe poseer estas dos características:

Precisión- La información que se proporciona se hace cuando es requerida.

Corrección- La información sea proporcionada al cliente con el nivel de detalle preciso.

-Disponibilidad- El sistema esté activo y en funcionamiento y que sea capaz de proporcionar servicios útiles en todo momento.
3. Los operadores del sistema pueden provocar fallos en el sistema debido a un uso incorrecto del mismo.
2. El software del sistema puede fallar debido a errores en su especificación, diseño o implementación.
1. El hardware del sistema puede fallar debido a errores en su diseño.
Este tipo de sistemas deban ser altamente confiables en lo que se refiere a disponibilidad, fiabilidad, corrección, rendimiento, precisión, seguridad y protección.
Mantenimiento.- Cuando un sistema se encuentre en mantenimiento este se debe realizar mediante condiciones específicas y el sistema debe volver a su actividad normal en un plazo determinado de tiempo.
Confiabilidad.- Es una de las características más importantes que debe poseer este tipo de sistemas, ya que sin ello puede producirse una pérdida de confianza por parte del cliente, los costes económicos y de información de las pérdidas pueden ser enormes.
Un sistema es una colección intencionada de componentes interrelacionados que trabajan juntos para alcanzar un objetivo común. Estos sistemas pueden incluir software , hardware y ser utilizados por personas. Los sistemas técnicos basados en computadoras incluyen hardware y software , pero no consideran que los usuarios y los procesos operativos sean parte del sistema. Los sistemas socio-técnicos incluyen a los sistemas técnicos, así como los procesos operativos y las personas que interactúan con el sistema técnico. Los sistemas socio-técnicos se rigen por las políticas y las normas de una organización.

INGENIERIA DE SOFTWARE BASADA EN COMPONENTES

El Skype es un viejo conocido en el universo de las comunicaciones, pero fueron sus renovaciones las responsables por poner la aplicación en la lista de los “TOP 5” de mejores experiencias con UX Design de 2017. Utilizado por millones de personas alrededor del mundo, Skype puso la experiencia del usuario como prioridad, posibilitando obtener una aplicación más natural, práctico y repleto de nuevas funcionalidades. Todo eso permite facilitar el chat y proporcionar una apariencia mucho más moderna a la aplicación. Este tema trabaja directamente con el medio en que cada persona interactúa con una aplicación, software o programa. Está asociado directamente a la interacción entre el usuario y el dispositivo en cuestión.
Mayor calidad. Dado que un componente puede ser construido y luego optimizado continuamente por un experto u organización, la calidad de una aplicación basada en componentes mejorará con el paso del tiempo.
Simplifica el mantenimiento del sistema. Cuando existe un débil acoplamiento entre sus componentes, el desarrollador puede actualizar y/o adicionar componentes según sea requerido, sin afectar otras partes del sistema.
Simplifica las pruebas.- Permite que las pruebas sean ejecutadas probando cada uno de los componentes antes de probar el conjunto completo de componentes ensamblados.
• Genera mucho trabajo adicional. Cuando un sistema falla se pierde tiempo y coste dentro de la empresa. Exige una cierta habilidad en los analistas (es bastante difícil).
• Inconvenientes
• Genera mucho tiempo en el desarrollo del sistema - Modelo costoso –Requiere experiencia en la identificación de riesgos
Ventajas
El análisis del riesgo se hace de forma explícita y clara. Une los mejores elementos de los restantes modelos. - Reduce riesgos del proyecto - Incorpora objetivos de calidad - Integra el desarrollo con el mantenimiento.
La modularidad, la reusabilidad y componibilidad son características muy relevantes de la tecnología de programación basada en componentes, en las cuales coincide con la tecnología orientada a objetos de la que puede considerarse una evolución. No obstante en esta tecnología también se requiere robustez debido a que los componentes deben operar en entornos muchos más heterogéneos.
FUNDAMENTOS
Un proceso de desarrollo

que se engrana con la ingeniería de software basada en componentes. Usted necesita un proceso de desarrollo que permita la evolución de Requerimiento.

Middleware

El middleware para soporte de componentes maneja eficientemente los conflictos de bajo nivel y permite enfocarse en problemas relacionados con la aplicación.

Estándares de componentes

Definen, a un nivel mínimo, cómo deben especificarse las interfaces de componentes y cómo se comunican estos últimos

Componentes independientes

que se especifican por completo mediante sus interfaces

Un componente es una unidad de composición de aplicaciones software, que posee un conjunto de interfaces y un conjunto de requisitos, y que ha de poder ser desarrollado, adquirido, incorporado al sistema y compuesto con otros componentes de forma independiente, en tiempo y espacio

REUTILIZACION DEL SISTEMA

Ejemplo
Java, ha sido designado para hacer uso completo de los avances en redes distribuidas. Java es un lenguaje que trae una nueva dimensión a la reutilización de software también. Sin duda, la característica clave de Java que ayuda a la reutilización de software es su genuina orientación orientada a objetos. Pero Java introduce capacidades adicionales que soportan la reutilización:

que Java pueda ser reutilizado sin recompilación aún si el entorno ha cambiado.

• Java es portable: . La reutilización es mejorada debido a que la implementación no es más dependiente del hardware.

• Java es arquitectura neutral: la capacidad de reutilización es aumentada al tener una simple aplicación que es inmediatamente utilizable en múltiples plataformas.

Beneficios
Uso efectivo de especialistas.- En vez de hacer el mismo trabajo una y otra vez, los especialistas de aplicaciones pueden desarrollar un software reutilizable que encapsula su conocimiento
Reduce el riesgo de procesos.- El costo del software existente ya es conocido, considerando que los costes de desarrollo son siempre una cuestión de criterio.
Incrementa la dependencia.- Software reutilizado, que ha sido probado y comprobado en los sistemas de trabajo, debería ser más confiable que el nuevo software.
Características
Seguridad frente a fallos .- El usuario del componente debe conocer siempre cualquier fallo cuando éste ocurra.
Robustez • Su incorporación a muchos entornos diferentes no debe comprometer su corrección ni su eficiencia. • El diseñador del componente debe controlar completamente su conexión con las otras unidades externas.
Independencia .- Un componente sólo será reutilizable si es suficientemente independiente de cualquier aplicación particular.
Funcionalidad.- Es más probable que se reutilice un componente de software que exhiba unas prestaciones que se puedan aplicar en muchos contextos
Desventajas
En muchas empresas no existe plan de reutilización (No se considera prioritario)
Pobre soporte metodológico
Resistencia del personal
Mayor fiabilidad
Reducir los costos.
Reducir el tiempo de desarrollo.
Es el proceso de creación de sistemas de software a partir de un software existente, en lugar de tener que rediseñar desde el principio.
Reutilización de objetos y funciones

funciones Pueden reutilizarse los componentes de soft- ware que implementan una sola función, tal como una función matemática, o una clase de objeto

Reutilización de componentes

Los componentes de una aplicación, que varían en tamaño desde subsistemas hasta objetos individuales, pueden reutilizarse

Reutilización del sistema de aplicación

Todo un sistema de aplicación puede reuti- lizarse al incorporarlo sin cambios en otros sistemas o al configurar la aplicación para diferentes clientes

DISEÑOS

DISEÑO ARQUITECTONICO

Reutilización a gran escala: la arquitectura del sistema es la misma para sistemas con requerimientos similares.
Análisis del sistema: tienen un efecto profundo sobre si el sistema puede o no cubrir requerimientos críticos.
Comunicación entre participantes: puede usarse como enfoque para discusiones.
Arquitectura en grande: se ocupa de sistemas empresariales complejos.
Arquitectura en pequeño: se interesa por la arquitectura de programas individuales.
PATRON ARQUITECTONICO
Se puede considerar como una descripción abstracta estilizada de buena práctica, que se ensayó y puso a prueba en diferentes sistemas y entornos.

Ahorran tiempo.

Establecen un lenguaje común.

Ayudan a validar nuestro sistema.

Se interesa por entender cómo debe organizarse un sistema y cómo tiene que diseñarse la estructura global de ese sistema.
Es la primera etapa en el proceso de software, es un enlace entre la ingeniería, el diseño y la ingeniería de requerimientos.

ARQUITECTURA DE SISTEMAS DISTRIBUIDOS

ARQUITECTURA CENTRADA EN DATOS: Los procesos se comunican a través de un repositorio o medio común
ARQUITECTURA EN CAPAS: Un componente en una determinada capa que puede llamar a componentes en la capa inmediata interior
ARQUITECTURA BASADA EN OBJETOS: En esencia, cada objeto corresponde y estos componentes estan conectados
DESVENTAJAS
TOLERANCIA A FALLOS

Puede existir fallas operativas y de componentes

REDES

Existen problemas de transmision de datos muy comunes

SEGURIDAD

Se necesita de esquemas de seguridad muy robustos

Una Distribución interesante que puedo hacer uso de aplcaciones de manera reomata
En la economía, estos sistemad por lo general funcionan con miroprocesadores que tienen una relación de calidad/precio mas interesante y atractiva que una computadora centraizada
Tienen mayor poder de computo
La confiabilidad que facilita la repartición de la carga de trabajo entre las distintas computadoras con bases y sus ffunciones y capacidades
Es la arquitectura más citado cuando se discuten lo sistemas distribuidos. Es el modelo mas importante y sigue siendo el mas utilizado

DISEÑO DE INTERFACES DE USUARIO

Atractivo Visual

Cuando se trata de experiencia del usuario, nunca puede subestimarse la importancia del atractivo visual. Además de tener grandes funcionalidades, una buena interfaz es agradable a la vista.

Flexibilidad

Una buena interfaz también se caracteriza por permitir que el usuario restaure elementos y deshaga acciones.

Coherencia

Esta característica es la que hace intuitiva una interfaz, permitiéndole a la persona crear patrones de uso de manera sencilla y práctica

Concisión

Se trata de darle al usuario solo la información que necesita y pide.

Claridad

Una buena interfaz transmite la información de manera precisa para evitar que el usuario cometa errores durante la interacción

TIPOS DE INTERFACES
Software-Hardware

Dentro de la interfaz del usuario, esta es la que sirve de puente entre la máquina y las personas.

Hardware

Engloba todos aquellos elementos que permiten ingresar, procesar y entregar datos, como los famosos teclados y “ratones”, así como las pantallas.

Software

Es aquella que brinda información sobre los procesos y herramientas de control, la cual puede ser observada fácilmente por el usuario en la pantalla de su dispositivo

Es el medio que a través del cual el usuario interactúa con un dispositivo tecnológico

ARQUITECTURA DE APLICACIONES

VENTAJAS
En la actualidad, las principales arquitecturas de aplicaciones, basadas en las relaciones entre los servicios, son la arquitectura monolítica y N-tier (con conexión directa), los microservicios (sin acoplamiento) y las arquitecturas basadas en eventos y orientadas al servicio (de bajo acoplamiento).

BASADA EN EVENTOS

En un sistema como este, la captura, la comunicación, el procesamiento y la permanencia de los eventos son la estructura central de la solución. Esto difiere del modelo tradicional basado en solicitudes.

MICROSERVIDORES

no son solo un tipo de arquitectura, sino también un modo de abordar la escritura del software. Con ellos, las aplicaciones se dividen en sus elementos más pequeños, que son independientes entre sí. Cada uno de dichos elementos o procesos es un microservicio.

MONOLITICA

son pilas de aplicaciones únicas que contienen todas las funciones dentro de cada aplicación. Tienen conexión directa, tanto en la interacción entre los servicios como en la manera en que se desarrollan y distribuyen.

El desarrollo nativo de la nube es una forma de acelerar el diseño de aplicaciones nuevas, optimizar las actuales y proporcionar un desarrollo uniforme y una experiencia de gestión automatizada en las nubes privadas, públicas e híbridas.
Las arquitecturas modernas de aplicaciones suelen tener un bajo acoplamiento y utilizan microservicios e interfaces de programación de aplicaciones (API) para conectar los servicios, los cuales proporcionan la base para las aplicaciones nativas de la nube.
PATRONES
Puede vincularse con otros para crear arquitecturas de aplicaciones más generales. En lugar de volver a crear toda la infraestructura completa, puede usar los patrones de diseño actuales, lo cual además garantiza que todo funcione como es debido.
Los patrones de diseño de software pueden ayudarlo a diseñar una aplicación. Un patrón es la solución replicable a cierto problema.
CARACTERISTICAS
Otros lenguajes de programación conocidos son Ruby, Python, Swift, TypeScript, Java, PHP y SQL, entre otros. El lenguaje que se utilice para diseñar una aplicación dependerá del tipo de aplicación, los recursos de desarrollo disponibles y los requisitos.
JavaScript, combinado con HTML y CSS, es uno de los más populares para el desarrollo de aplicaciones web en la actualidad
Algunos de ellos se pueden utilizar para diseñar ciertos tipos de aplicaciones, como Swift para las aplicaciones móviles o JavaScript para el desarrollo del frontend.
Hay muchos lenguajes de programación que se utilizan para desarrollar los sistemas de software.
En una arquitectura de aplicaciones habrá servicios de frontend y de backend.

El desarrollo de backend implica proporcionar acceso a los datos, los servicios y otros sistemas actuales que permiten el funcionamiento de la aplicación.

El desarrollo de frontend se refiere a la experiencia del usuario con la aplicación

DEFINICION
La arquitectura le proporciona un plan y las prácticas recomendadas que debe seguir al momento de diseñar una aplicación, de modo que obtenga una aplicación bien estructurada.
Una arquitectura de aplicaciones describe los patrones y las técnicas que se utilizan para diseñar y desarrollar aplicaciones.